Repository: S-C-A-N/SCANsat Branch: dev Commit: 0d67371911e9 Files: 673 Total size: 2.7 MB Directory structure: gitextract_ygp_hmd4/ ├── .editorconfig ├── .github/ │ └── workflows/ │ ├── build.yml │ ├── create-release.yml │ ├── publish-to-spacedock.yml │ └── validate-cfg-files.yml ├── .gitignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── GameData/ │ └── SCANsat/ │ ├── Flags/ │ │ ├── Agents.cfg │ │ ├── SCANsat_Flag.dds │ │ └── SCANsat_Flag_Scaled.dds │ ├── Parts/ │ │ ├── BTDT/ │ │ │ ├── BTDT.cfg │ │ │ ├── BTDT.mu │ │ │ └── SCANsat.dds │ │ ├── MULTI/ │ │ │ ├── MULTI.cfg │ │ │ ├── MULTI.dds │ │ │ ├── MULTI.mu │ │ │ └── MULTI_DIFF.dds │ │ ├── MapTraq/ │ │ │ ├── MapTraq.cfg │ │ │ ├── MapTraq.mu │ │ │ └── SCANsat.dds │ │ ├── RADAR/ │ │ │ ├── Normal Map_NRM.dds │ │ │ ├── RADAR.cfg │ │ │ ├── RADAR.mu │ │ │ └── Texture Map.dds │ │ ├── SAR/ │ │ │ ├── Normals_NRM.dds │ │ │ ├── SAR.cfg │ │ │ ├── SAR.mu │ │ │ └── Tex Map.dds │ │ ├── scansat-btdt/ │ │ │ ├── scansat-btdt-1-e.dds │ │ │ ├── scansat-btdt-1-n.dds │ │ │ ├── scansat-btdt-1-s.dds │ │ │ ├── scansat-btdt-1.dds │ │ │ ├── scansat-exomars-1.cfg │ │ │ └── scansat-exomars-1.mu │ │ ├── scansat-multi/ │ │ │ ├── scansat-mirror-1-n.dds │ │ │ ├── scansat-mirror-1.dds │ │ │ ├── scansat-mirror-2-s.dds │ │ │ ├── scansat-multi-1-n.dds │ │ │ ├── scansat-multi-1.dds │ │ │ ├── scansat-multi-2-n.dds │ │ │ ├── scansat-multi-2.dds │ │ │ ├── scansat-multi-abi-1.cfg │ │ │ ├── scansat-multi-abi-1.mu │ │ │ ├── scansat-multi-foil-1-alt-n.dds │ │ │ ├── scansat-multi-foil-1-n.dds │ │ │ ├── scansat-multi-foil-1-s.dds │ │ │ ├── scansat-multi-foil-1-silver-s.dds │ │ │ ├── scansat-multi-foil-1-silver.dds │ │ │ ├── scansat-multi-foil-1.dds │ │ │ ├── scansat-multi-modis-1.cfg │ │ │ ├── scansat-multi-modis-1.mu │ │ │ ├── scansat-multi-msi-1.cfg │ │ │ └── scansat-multi-msi-1.mu │ │ ├── scansat-radar/ │ │ │ ├── scansat-radar-1-n.dds │ │ │ ├── scansat-radar-1.dds │ │ │ ├── scansat-radar-foil-1-n.dds │ │ │ ├── scansat-radar-foil-1-s.dds │ │ │ ├── scansat-radar-foil-1.dds │ │ │ ├── scansat-radar-poseidon-3b-1.cfg │ │ │ ├── scansat-radar-poseidon-3b-1.mu │ │ │ ├── scansat-radar-seasat-1.cfg │ │ │ └── scansat-radar-seasat-1.mu │ │ ├── scansat-recon/ │ │ │ ├── scansat-recon-1-e.dds │ │ │ ├── scansat-recon-1-n.dds │ │ │ ├── scansat-recon-1.dds │ │ │ ├── scansat-recon-ikonos-1.cfg │ │ │ ├── scansat-recon-ikonos-1.mu │ │ │ ├── scansat-recon-kh11-1.cfg │ │ │ ├── scansat-recon-kh11-1.mu │ │ │ ├── scansat-recon-reflect-1-n.dds │ │ │ ├── scansat-recon-reflect-1-s.dds │ │ │ ├── scansat-recon-reflect-1.dds │ │ │ ├── scansat-recon-worldview-3-1.cfg │ │ │ └── scansat-recon-worldview-3-1.mu │ │ ├── scansat-resources/ │ │ │ ├── scansat-mirror-1-n.dds │ │ │ ├── scansat-mirror-1-s.dds │ │ │ ├── scansat-mirror-1.dds │ │ │ ├── scansat-resources-1-n.dds │ │ │ ├── scansat-resources-1.dds │ │ │ ├── scansat-resources-crism-1.cfg │ │ │ ├── scansat-resources-crism-1.mu │ │ │ ├── scansat-resources-hyperion-1.cfg │ │ │ ├── scansat-resources-hyperion-1.mu │ │ │ ├── scansat-resources-mise-1.cfg │ │ │ └── scansat-resources-mise-1.mu │ │ └── scansat-sar/ │ │ ├── scansat-sar-1-n.dds │ │ ├── scansat-sar-1.dds │ │ ├── scansat-sar-2.dds │ │ ├── scansat-sar-paz-1.cfg │ │ ├── scansat-sar-paz-1.mu │ │ ├── scansat-sar-radarsat-2-1.cfg │ │ ├── scansat-sar-radarsat-2-1.mu │ │ ├── scansat-sar-skymed-1.mu │ │ ├── scansat-sar-tandem-l-1.cfg │ │ └── scansat-sar-tandem-l-1.mu │ ├── Patches/ │ │ ├── CommunityCategoryKit.cfg │ │ ├── CommunityResourcePack.cfg │ │ ├── Launchpad.cfg │ │ ├── RasterPropMonitor.cfg │ │ ├── StockScanners.cfg │ │ ├── Tags.cfg │ │ └── WarpPlugin.cfg │ ├── Resources/ │ │ ├── Contracts/ │ │ │ ├── ContractPackScanSatOfficial.cfg │ │ │ ├── Exceptional.cfg │ │ │ ├── Significant.cfg │ │ │ └── Trivial.cfg │ │ ├── KSPedia/ │ │ │ └── scansat_core.ksp │ │ ├── Localization/ │ │ │ ├── de/ │ │ │ │ ├── Contracts.cfg │ │ │ │ ├── Flags.cfg │ │ │ │ ├── Helptips.cfg │ │ │ │ ├── OtherText.cfg │ │ │ │ ├── Parts.cfg │ │ │ │ ├── Science.cfg │ │ │ │ ├── Tooltips.cfg │ │ │ │ └── Warnings.cfg │ │ │ ├── en-us/ │ │ │ │ ├── Contracts.cfg │ │ │ │ ├── Flags.cfg │ │ │ │ ├── Helptips.cfg │ │ │ │ ├── OtherText.cfg │ │ │ │ ├── Parts.cfg │ │ │ │ ├── Science.cfg │ │ │ │ ├── Tooltips.cfg │ │ │ │ └── Warnings.cfg │ │ │ ├── es-es/ │ │ │ │ ├── Contracts.cfg │ │ │ │ ├── Flags.cfg │ │ │ │ ├── Helptips.cfg │ │ │ │ ├── OtherText.cfg │ │ │ │ ├── Parts.cfg │ │ │ │ ├── Science.cfg │ │ │ │ ├── Tooltips.cfg │ │ │ │ └── Warnings.cfg │ │ │ ├── fr-fr/ │ │ │ │ ├── Contracts.cfg │ │ │ │ ├── Flags.cfg │ │ │ │ ├── Helptips.cfg │ │ │ │ ├── OtherText.cfg │ │ │ │ ├── Parts.cfg │ │ │ │ ├── Science.cfg │ │ │ │ ├── Tooltips.cfg │ │ │ │ └── Warnings.cfg │ │ │ ├── ja/ │ │ │ │ ├── Contracts.cfg │ │ │ │ ├── Flags.cfg │ │ │ │ ├── Helptips.cfg │ │ │ │ ├── OtherText.cfg │ │ │ │ ├── Parts.cfg │ │ │ │ ├── Science.cfg │ │ │ │ ├── Tooltips.cfg │ │ │ │ └── Warnings.cfg │ │ │ ├── pt-br/ │ │ │ │ ├── Contracts.cfg │ │ │ │ ├── Flags.cfg │ │ │ │ ├── Helptips.cfg │ │ │ │ ├── OtherText.cfg │ │ │ │ ├── Parts.cfg │ │ │ │ ├── Science.cfg │ │ │ │ ├── Tooltips.cfg │ │ │ │ └── Warnings.cfg │ │ │ ├── ru/ │ │ │ │ ├── Contracts.cfg │ │ │ │ ├── Flags.cfg │ │ │ │ ├── Helptips.cfg │ │ │ │ ├── OtherText.cfg │ │ │ │ ├── Parts.cfg │ │ │ │ ├── Science.cfg │ │ │ │ ├── Tooltips.cfg │ │ │ │ └── Warnings.cfg │ │ │ └── zh-cn/ │ │ │ ├── Contracts.cfg │ │ │ ├── Flags.cfg │ │ │ ├── Helptips.cfg │ │ │ ├── OtherText.cfg │ │ │ ├── Parts.cfg │ │ │ ├── Science.cfg │ │ │ ├── Tooltips.cfg │ │ │ └── Warnings.cfg │ │ ├── SCANcolors.cfg │ │ ├── SCANpalettes.cfg │ │ ├── ScienceDefs.cfg │ │ ├── scan_icons.scan │ │ ├── scan_prefabs.scan │ │ ├── scan_shaders.scan │ │ └── scan_unity_skin.scan │ └── SCANsat.version ├── LICENSE.txt ├── README.md ├── SCANmechjeb/ │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── SCANmechStarter.cs │ ├── SCANmechjeb.cs │ ├── SCANmechjeb.csproj │ └── SCANmechjebMainMenu.cs ├── SCANsat/ │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── SCAN_Color_Config.cs │ ├── SCAN_Data/ │ │ ├── SCANROC.cs │ │ ├── SCANanomaly.cs │ │ ├── SCANdata.cs │ │ ├── SCANexperimentType.cs │ │ ├── SCANresourceBody.cs │ │ ├── SCANresourceGlobal.cs │ │ ├── SCANterrainConfig.cs │ │ ├── SCANtype.cs │ │ └── SCANwaypoint.cs │ ├── SCAN_Map/ │ │ ├── SCANmap.cs │ │ ├── SCANmapExporter.cs │ │ ├── SCANmapLegend.cs │ │ ├── SCANmapProjection.cs │ │ └── SCANmapType.cs │ ├── SCAN_Palette_Config.cs │ ├── SCAN_Palettes/ │ │ ├── ColorBrewer.cs │ │ ├── FixedColorPalettes.cs │ │ ├── Include/ │ │ │ └── Original.cs │ │ ├── SCANPalette.cs │ │ ├── SCANPaletteGroup.cs │ │ ├── SCANPaletteKind.cs │ │ └── SCANPaletteType.cs │ ├── SCAN_PartModules/ │ │ ├── SCANRPMStorage.cs │ │ ├── SCANexperiment.cs │ │ ├── SCANresourceDisplay.cs │ │ ├── SCANresourceScanner.cs │ │ └── SCANsat.cs │ ├── SCAN_Platform/ │ │ ├── Extensions/ │ │ │ ├── Colors/ │ │ │ │ └── UnityEngine.Color_.cs │ │ │ ├── ConfigNodes/ │ │ │ │ └── ConfigExtensions.cs │ │ │ ├── MJExtensions.cs │ │ │ ├── Math/ │ │ │ │ └── UnityEngine.Mathf_.cs │ │ │ └── StringExtensions.cs │ │ ├── Logging.cs │ │ ├── SCAN_CLZF2.cs │ │ ├── SCAN_ConfigNodeStorage.cs │ │ └── SCAN_MBE.cs │ ├── SCAN_Reflection/ │ │ ├── SCANfinePrint.cs │ │ ├── SCANkopernicus.cs │ │ └── SCANparallaxContinued.cs │ ├── SCAN_Settings_Config.cs │ ├── SCAN_Toolbar/ │ │ ├── SCANappLauncher.cs │ │ ├── SCANtoolbar.cs │ │ └── SCANtoolbarwrapper.cs │ ├── SCAN_UI/ │ │ ├── SCANsatRPM.cs │ │ └── UI_Framework/ │ │ ├── SCANEdgeDetect.cs │ │ ├── SCANcolorUtil.cs │ │ ├── SCANicon.cs │ │ ├── SCANremoteView.cs │ │ └── SCANuiUtil.cs │ ├── SCAN_Unity/ │ │ ├── SCAN_TMP_InputField.cs │ │ ├── SCAN_TextMeshPro.cs │ │ ├── SCAN_UI_BigMap.cs │ │ ├── SCAN_UI_Color.cs │ │ ├── SCAN_UI_Instruments.cs │ │ ├── SCAN_UI_Loader.cs │ │ ├── SCAN_UI_MainMap.cs │ │ ├── SCAN_UI_Overlay.cs │ │ ├── SCAN_UI_Settings.cs │ │ └── SCAN_UI_ZoomMap.cs │ ├── SCANconfigLoader.cs │ ├── SCANcontroller.cs │ ├── SCANmainMenuLoader.cs │ ├── SCANquickload.cs │ ├── SCANsat.csproj │ └── SCANutil.cs ├── SCANsat.Unity/ │ ├── CanvasFader.cs │ ├── HSVPicker/ │ │ ├── Enums/ │ │ │ └── ColorValues.cs │ │ ├── Events/ │ │ │ ├── ColorChangedEvent.cs │ │ │ └── HSVChangedEvent.cs │ │ ├── LICENSE.txt │ │ ├── UI/ │ │ │ ├── ColorImage.cs │ │ │ ├── ColorInput.cs │ │ │ ├── ColorLabel.cs │ │ │ ├── ColorPicker.cs │ │ │ ├── ColorSlider.cs │ │ │ ├── ColorSliderImage.cs │ │ │ └── SVBoxSlider.cs │ │ └── UtilityScripts/ │ │ ├── BoxSlider.cs │ │ └── HSVUtil.cs │ ├── InputHandler.cs │ ├── Interfaces/ │ │ ├── ISCAN_BigMap.cs │ │ ├── ISCAN_Color.cs │ │ ├── ISCAN_Instruments.cs │ │ ├── ISCAN_MainMap.cs │ │ ├── ISCAN_Overlay.cs │ │ ├── ISCAN_Settings.cs │ │ ├── ISCAN_Toolbar.cs │ │ └── ISCAN_ZoomMap.cs │ ├── MapLabelInfo.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── SCAN_ColorPicker.cs │ ├── SCAN_DoubleButton.cs │ ├── SCAN_Toggle.cs │ ├── SCANsat.Unity.csproj │ ├── SettingsPage.cs │ ├── SimpleLabelInfo.cs │ ├── TextHandler.cs │ ├── TooltipHandler.cs │ └── Unity/ │ ├── SCAN_BackgroundElement.cs │ ├── SCAN_BigMap.cs │ ├── SCAN_ColorAltimetry.cs │ ├── SCAN_ColorBiome.cs │ ├── SCAN_ColorControl.cs │ ├── SCAN_ColorMap.cs │ ├── SCAN_ColorResource.cs │ ├── SCAN_ColorSlope.cs │ ├── SCAN_DropDown.cs │ ├── SCAN_DropDownElement.cs │ ├── SCAN_Instruments.cs │ ├── SCAN_MainMap.cs │ ├── SCAN_MapLabel.cs │ ├── SCAN_Overlay.cs │ ├── SCAN_PaletteButton.cs │ ├── SCAN_Popup.cs │ ├── SCAN_ResourceOverlay.cs │ ├── SCAN_Settings.cs │ ├── SCAN_SettingsBackground.cs │ ├── SCAN_SettingsData.cs │ ├── SCAN_SettingsGeneral.cs │ ├── SCAN_SettingsResource.cs │ ├── SCAN_SimpleLabel.cs │ ├── SCAN_Style.cs │ ├── SCAN_Toolbar.cs │ ├── SCAN_Tooltip.cs │ ├── SCAN_VesselInfo.cs │ └── SCAN_ZoomMap.cs ├── SCANsat.props ├── SCANsat.sln ├── SCANsat.version.props ├── SCANsat.version.props.versiontemplate ├── SCANsatkethane/ │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── SCANStarter.cs │ └── SCANsatkethane.cs └── Unity/ └── SCANsat/ ├── .gitignore ├── Assets/ │ ├── Builtin skin/ │ │ ├── Skin.guiskin │ │ ├── Skin.guiskin.meta │ │ ├── Sources/ │ │ │ ├── Arial Rounded Bold.ttf.meta │ │ │ ├── DropDownTex.png.meta │ │ │ ├── box.png.meta │ │ │ ├── builtin skin source.psd │ │ │ ├── builtin skin source.psd.meta │ │ │ ├── button active.png.meta │ │ │ ├── button hover.png.meta │ │ │ ├── button on hover.png.meta │ │ │ ├── button on.png.meta │ │ │ ├── button.png.meta │ │ │ ├── horizontal scrollbar thumb.png.meta │ │ │ ├── horizontal scrollbar.png.meta │ │ │ ├── horizontalslider.png.meta │ │ │ ├── slider thumb active.png.meta │ │ │ ├── slider thumb.png.meta │ │ │ ├── slidert humb hover.png.meta │ │ │ ├── source Photoshop file.psd │ │ │ ├── source Photoshop file.psd.meta │ │ │ ├── textfield hover.png.meta │ │ │ ├── textfield on.png.meta │ │ │ ├── textfield.png.meta │ │ │ ├── toggle active.png.meta │ │ │ ├── toggle active_border.png.meta │ │ │ ├── toggle hover.png.meta │ │ │ ├── toggle hover_border.png.meta │ │ │ ├── toggle on active.png.meta │ │ │ ├── toggle on hover.png.meta │ │ │ ├── toggle on.png.meta │ │ │ ├── toggle.png.meta │ │ │ ├── toggle_border.png.meta │ │ │ ├── tooltip.png.meta │ │ │ ├── vertical scrollbar thumb.png.meta │ │ │ ├── vertical scrollbar.png.meta │ │ │ ├── verticalslider.png.meta │ │ │ ├── window on.png.meta │ │ │ └── window.png.meta │ │ └── Sources.meta │ ├── Builtin skin.meta │ ├── Editor/ │ │ ├── Bundler.cs │ │ └── Bundler.cs.meta │ ├── Editor.meta │ ├── Fonts/ │ │ ├── Amaranth-Bold.ttf.meta │ │ ├── Amaranth-BoldItalic.ttf.meta │ │ ├── Amaranth-Italic.ttf.meta │ │ ├── Amaranth-Regular.ttf.meta │ │ ├── OpenSans-Bold.ttf.meta │ │ ├── OpenSans-BoldItalic.ttf.meta │ │ ├── OpenSans-ExtraBold.ttf.meta │ │ ├── OpenSans-ExtraBoldItalic.ttf.meta │ │ ├── OpenSans-Italic.ttf.meta │ │ ├── OpenSans-Light.ttf.meta │ │ ├── OpenSans-LightItalic.ttf.meta │ │ ├── OpenSans-Regular.ttf.meta │ │ ├── OpenSans-Semibold.ttf.meta │ │ └── OpenSans-SemiboldItalic.ttf.meta │ ├── Fonts.meta │ ├── HSVPicker/ │ │ ├── Picker 2.0.prefab │ │ ├── Picker 2.0.prefab.meta │ │ ├── PickerTest.unity │ │ └── PickerTest.unity.meta │ ├── HSVPicker.meta │ ├── Images/ │ │ ├── ANMarker.png.meta │ │ ├── APMarker.png.meta │ │ ├── AnomalyIcon.png.meta │ │ ├── AnomalyIconOutline.png.meta │ │ ├── AsteroidIcon.png.meta │ │ ├── BaseIcon.png.meta │ │ ├── DNMarker.png.meta │ │ ├── DebrisIcon.png.meta │ │ ├── DeployedScienceIcon.png.meta │ │ ├── EVAIcon.png.meta │ │ ├── Empty_Icon.png.meta │ │ ├── EncounterMarker.png.meta │ │ ├── ExitMarker.png.meta │ │ ├── FlagIcon.png.meta │ │ ├── KSP_Tooltip.png.meta │ │ ├── LanderIcon.png.meta │ │ ├── ManeuverMarker.png.meta │ │ ├── Map_Right_Icon.png.meta │ │ ├── MysteryIcon.png.meta │ │ ├── PEMarker.png.meta │ │ ├── PlaneIcon.png.meta │ │ ├── PlanetIcon.png.meta │ │ ├── PodIcon.png.meta │ │ ├── ProbeIcon.png.meta │ │ ├── RelayIcon.png.meta │ │ ├── RoverIcon.png.meta │ │ ├── SCAN_Asteroid_Icon.png.meta │ │ ├── SCAN_ColorToggle_Icon.png.meta │ │ ├── SCAN_Color_Icon.png.meta │ │ ├── SCAN_Flag_Icon.png.meta │ │ ├── SCAN_Grid_Icon.png.meta │ │ ├── SCAN_Instrument_Icon.png.meta │ │ ├── SCAN_Instrument_Icon_Large.png.meta │ │ ├── SCAN_Legend_Icon.png.meta │ │ ├── SCAN_LockClose.png.meta │ │ ├── SCAN_LockOpen.png.meta │ │ ├── SCAN_Map_Icons.png.meta │ │ ├── SCAN_MechJebIcon.png.meta │ │ ├── SCAN_Orbit_Icon.png.meta │ │ ├── SCAN_Overlay_Icon.png.meta │ │ ├── SCAN_Overlay_Icon_Large.png.meta │ │ ├── SCAN_Refresh_Icon.png.meta │ │ ├── SCAN_Resize_Icon.png.meta │ │ ├── SCAN_Resource_Icon.png.meta │ │ ├── SCAN_Screenshot_Icon.png.meta │ │ ├── SCAN_Settings_Icon.png.meta │ │ ├── SCAN_Settings_Icon_Large.png.meta │ │ ├── SCAN_TargetIcon.png.meta │ │ ├── SCAN_TerminatorIcon.png.meta │ │ ├── SCAN_Toggle.png.meta │ │ ├── SCAN_Toggle_Border.png.meta │ │ ├── SCAN_Toggle_Hover.png.meta │ │ ├── SCAN_Toggle_Hover_Border.png.meta │ │ ├── SCAN_Toggle_On_Hover_Border.png.meta │ │ ├── SCAN_WayPointIcon.png.meta │ │ ├── SCAN_WayPointIcon_Outline.png.meta │ │ ├── SCAN_ZoomInIcon.png.meta │ │ ├── SCAN_ZoomOutIcon.png.meta │ │ ├── SCAN_Zoom_Forget.png.meta │ │ ├── SCAN_Zoom_Map_Icon.png.meta │ │ ├── SCAN_Zoom_Map_Icon_Large.png.meta │ │ ├── SCAN_Zoom_Max.png.meta │ │ ├── SCAN_Zoom_Med.png.meta │ │ ├── SCAN_Zoom_Min.png.meta │ │ ├── SCAN_Zoom_Recall.png.meta │ │ ├── SCANsat_AppLauncherLarge_Icon.png.meta │ │ ├── SCANsat_AppLauncherSmall_Icon.png.meta │ │ ├── StationIcon.png.meta │ │ ├── UI_Sprite.spriteatlas │ │ ├── UI_Sprite.spriteatlas.meta │ │ ├── ZoomLock.png.meta │ │ └── ZoomReset.png.meta │ ├── Images.meta │ ├── KSPedia/ │ │ ├── Prefabs/ │ │ │ ├── SCANsat_Advanced.prefab │ │ │ ├── SCANsat_Advanced.prefab.meta │ │ │ ├── SCANsat_AltimetryMap.prefab │ │ │ ├── SCANsat_AltimetryMap.prefab.meta │ │ │ ├── SCANsat_Basic.prefab │ │ │ ├── SCANsat_Basic.prefab.meta │ │ │ ├── SCANsat_Big_Map.prefab │ │ │ ├── SCANsat_Big_Map.prefab.meta │ │ │ ├── SCANsat_Colors.prefab │ │ │ ├── SCANsat_Colors.prefab.meta │ │ │ ├── SCANsat_Colors_Biome.prefab │ │ │ ├── SCANsat_Colors_Biome.prefab.meta │ │ │ ├── SCANsat_Colors_Resources.prefab │ │ │ ├── SCANsat_Colors_Resources.prefab.meta │ │ │ ├── SCANsat_Colors_Slope.prefab │ │ │ ├── SCANsat_Colors_Slope.prefab.meta │ │ │ ├── SCANsat_Colors_Terrain.prefab │ │ │ ├── SCANsat_Colors_Terrain.prefab.meta │ │ │ ├── SCANsat_Features.prefab │ │ │ ├── SCANsat_Features.prefab.meta │ │ │ ├── SCANsat_Header.prefab │ │ │ ├── SCANsat_Header.prefab.meta │ │ │ ├── SCANsat_Intro.prefab │ │ │ ├── SCANsat_Intro.prefab.meta │ │ │ ├── SCANsat_Main_Map.prefab │ │ │ ├── SCANsat_Main_Map.prefab.meta │ │ │ ├── SCANsat_MultiMap.prefab │ │ │ ├── SCANsat_MultiMap.prefab.meta │ │ │ ├── SCANsat_Parts.prefab │ │ │ ├── SCANsat_Parts.prefab.meta │ │ │ ├── SCANsat_RPM.prefab │ │ │ ├── SCANsat_RPM.prefab.meta │ │ │ ├── SCANsat_ResourceMap.prefab │ │ │ ├── SCANsat_ResourceMap.prefab.meta │ │ │ ├── SCANsat_Resource_Overlay.prefab │ │ │ ├── SCANsat_Resource_Overlay.prefab.meta │ │ │ ├── SCANsat_Resource_Parts.prefab │ │ │ ├── SCANsat_Resource_Parts.prefab.meta │ │ │ ├── SCANsat_Resource_Settings.prefab │ │ │ ├── SCANsat_Resource_Settings.prefab.meta │ │ │ ├── SCANsat_Resource_Tools.prefab │ │ │ ├── SCANsat_Resource_Tools.prefab.meta │ │ │ ├── SCANsat_Resources.prefab │ │ │ ├── SCANsat_Resources.prefab.meta │ │ │ ├── SCANsat_VisualMap.prefab │ │ │ ├── SCANsat_VisualMap.prefab.meta │ │ │ ├── SCANsat_Zoom_Map.prefab │ │ │ ├── SCANsat_Zoom_Map.prefab.meta │ │ │ ├── Scanning_Advanced.prefab │ │ │ ├── Scanning_Advanced.prefab.meta │ │ │ ├── Scanning_Basic.prefab │ │ │ └── Scanning_Basic.prefab.meta │ │ └── Prefabs.meta │ ├── KSPedia.meta │ ├── Lib/ │ │ ├── PartTools.dll.meta │ │ └── PartToolsEditor.dll.meta │ ├── Lib.meta │ ├── Plugins/ │ │ ├── KSPAssets/ │ │ │ ├── KSPAssetCompiler.dll.meta │ │ │ ├── KSPAssets.dll.meta │ │ │ ├── ReadMe.txt │ │ │ └── ReadMe.txt.meta │ │ ├── KSPAssets.meta │ │ └── SCANsat.Unity.dll.meta │ ├── Plugins.meta │ ├── Prefabs/ │ │ ├── MainMap_Vessel.prefab │ │ ├── MainMap_Vessel.prefab.meta │ │ ├── Overlay_Resource.prefab │ │ ├── Overlay_Resource.prefab.meta │ │ ├── SCAN_Background.prefab │ │ ├── SCAN_Background.prefab.meta │ │ ├── SCAN_BackgroundElement.prefab │ │ ├── SCAN_BackgroundElement.prefab.meta │ │ ├── SCAN_BigMap.prefab │ │ ├── SCAN_BigMap.prefab.meta │ │ ├── SCAN_ColorBiome.prefab │ │ ├── SCAN_ColorBiome.prefab.meta │ │ ├── SCAN_ColorControl.prefab │ │ ├── SCAN_ColorControl.prefab.meta │ │ ├── SCAN_ColorResource.prefab │ │ ├── SCAN_ColorResource.prefab.meta │ │ ├── SCAN_ColorSlope.prefab │ │ ├── SCAN_ColorSlope.prefab.meta │ │ ├── SCAN_ColorTerrain.prefab │ │ ├── SCAN_ColorTerrain.prefab.meta │ │ ├── SCAN_Confirmation.prefab │ │ ├── SCAN_Confirmation.prefab.meta │ │ ├── SCAN_Data.prefab │ │ ├── SCAN_Data.prefab.meta │ │ ├── SCAN_DropDown.prefab │ │ ├── SCAN_DropDown.prefab.meta │ │ ├── SCAN_DropDownElement.prefab │ │ ├── SCAN_DropDownElement.prefab.meta │ │ ├── SCAN_General.prefab │ │ ├── SCAN_General.prefab.meta │ │ ├── SCAN_Ghost_Skin.prefab │ │ ├── SCAN_Ghost_Skin.prefab.meta │ │ ├── SCAN_Instruments.prefab │ │ ├── SCAN_Instruments.prefab.meta │ │ ├── SCAN_MainMap.prefab │ │ ├── SCAN_MainMap.prefab.meta │ │ ├── SCAN_MapLabel.prefab │ │ ├── SCAN_MapLabel.prefab.meta │ │ ├── SCAN_Overlay.prefab │ │ ├── SCAN_Overlay.prefab.meta │ │ ├── SCAN_PaletteButton.prefab │ │ ├── SCAN_PaletteButton.prefab.meta │ │ ├── SCAN_Resources.prefab │ │ ├── SCAN_Resources.prefab.meta │ │ ├── SCAN_Settings.prefab │ │ ├── SCAN_Settings.prefab.meta │ │ ├── SCAN_Settings_Old.prefab │ │ ├── SCAN_Settings_Old.prefab.meta │ │ ├── SCAN_Toolbar.prefab │ │ ├── SCAN_Toolbar.prefab.meta │ │ ├── SCAN_Tooltip.prefab │ │ ├── SCAN_Tooltip.prefab.meta │ │ ├── SCAN_ZoomMap.prefab │ │ └── SCAN_ZoomMap.prefab.meta │ ├── Prefabs.meta │ ├── SCANpedia.unity │ ├── SCANpedia.unity.meta │ ├── SCANsat.unity │ ├── SCANsat.unity.meta │ ├── Shaders/ │ │ ├── EdgeDetectX.shader │ │ ├── EdgeDetectX.shader.meta │ │ ├── GrayscaleEffect.shader │ │ └── GrayscaleEffect.shader.meta │ ├── Shaders.meta │ ├── SquadCore/ │ │ ├── KSPedia/ │ │ │ ├── Backgrounds/ │ │ │ │ ├── BackgroundBlack.png.meta │ │ │ │ ├── BackgroundBlue.png.meta │ │ │ │ ├── BackgroundBlueGrid.png.meta │ │ │ │ ├── BackgroundKSC.png.meta │ │ │ │ └── BackgroundWhite.png.meta │ │ │ └── Backgrounds.meta │ │ ├── KSPedia.meta │ │ ├── Shaders/ │ │ │ ├── Alpha.shader │ │ │ ├── Alpha.shader.meta │ │ │ ├── AlphaSpecular.shader │ │ │ ├── AlphaSpecular.shader.meta │ │ │ ├── Bumped.shader │ │ │ ├── Bumped.shader.meta │ │ │ ├── BumpedSpecular.shader │ │ │ ├── BumpedSpecular.shader.meta │ │ │ ├── Cutoff.shader │ │ │ ├── Cutoff.shader.meta │ │ │ ├── CutoffBumped.shader │ │ │ ├── CutoffBumped.shader.meta │ │ │ ├── Diffuse.shader │ │ │ ├── Diffuse.shader.meta │ │ │ ├── Emissive.shader │ │ │ ├── Emissive.shader.meta │ │ │ ├── EmissiveBumpedSpecular.shader │ │ │ ├── EmissiveBumpedSpecular.shader.meta │ │ │ ├── EmissiveSpecular.shader │ │ │ ├── EmissiveSpecular.shader.meta │ │ │ ├── KSPParticle AddSmooth.shader │ │ │ ├── KSPParticle AddSmooth.shader.meta │ │ │ ├── ParticleAdd.shader │ │ │ ├── ParticleAdd.shader.meta │ │ │ ├── ParticleAlpha.shader │ │ │ ├── ParticleAlpha.shader.meta │ │ │ ├── SolidColorAlpha.shader │ │ │ ├── SolidColorAlpha.shader.meta │ │ │ ├── Specular.shader │ │ │ ├── Specular.shader.meta │ │ │ ├── SpecularBumpTransparent.shader │ │ │ ├── SpecularBumpTransparent.shader.meta │ │ │ ├── SpecularTransparent.shader │ │ │ ├── SpecularTransparent.shader.meta │ │ │ ├── Unlit.shader │ │ │ ├── Unlit.shader.meta │ │ │ ├── UnlitTransparent.shader │ │ │ └── UnlitTransparent.shader.meta │ │ └── Shaders.meta │ ├── SquadCore.meta │ ├── XML/ │ │ ├── scan_ghost_bundle.xml │ │ ├── scan_ghost_bundle.xml.meta │ │ ├── scan_icons_bundle.xml │ │ ├── scan_icons_bundle.xml.meta │ │ ├── scan_images_bundle.xml │ │ ├── scan_images_bundle.xml.meta │ │ ├── scan_prefabs_bundle.xml │ │ ├── scan_prefabs_bundle.xml.meta │ │ ├── scan_shaders_bundle.xml │ │ ├── scan_shaders_bundle.xml.meta │ │ ├── scan_unity_skin_bundle.xml │ │ ├── scan_unity_skin_bundle.xml.meta │ │ ├── scansat_prefabs_bundle.xml │ │ ├── scansat_prefabs_bundle.xml.meta │ │ ├── unity_ghost_bundle.xml │ │ └── unity_ghost_bundle.xml.meta │ └── XML.meta ├── Packages/ │ ├── manifest.json │ └── packages-lock.json └── ProjectSettings/ ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── PackageManagerSettings.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset └── XRSettings.asset ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ [*.cs] indent_style = tab csharp_new_line_before_catch = true csharp_new_line_before_else = true csharp_new_line_before_open_brace = all csharp_preserve_single_line_blocks = true csharp_preserve_single_line_statements = true csharp_prefer_braces = true:warning csharp_indent_labels = one_less_than_current csharp_space_around_binary_operators = before_and_after csharp_using_directive_placement = outside_namespace:silent csharp_prefer_simple_using_statement = true:suggestion csharp_style_namespace_declarations = block_scoped:silent csharp_style_prefer_method_group_conversion = true:silent csharp_style_prefer_top_level_statements = true:silent csharp_style_prefer_primary_constructors = true:suggestion csharp_style_expression_bodied_methods = false:silent csharp_style_expression_bodied_constructors = false:silent csharp_style_expression_bodied_operators = false:silent csharp_style_expression_bodied_properties = true:silent csharp_style_expression_bodied_indexers = true:silent csharp_style_expression_bodied_accessors = true:silent csharp_style_expression_bodied_lambdas = true:silent csharp_style_expression_bodied_local_functions = false:silent csharp_style_throw_expression = true:suggestion csharp_style_prefer_null_check_over_type_check = true:suggestion csharp_prefer_simple_default_expression = true:suggestion csharp_style_prefer_local_over_anonymous_function = true:suggestion csharp_style_prefer_index_operator = true:suggestion csharp_style_prefer_range_operator = true:suggestion csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion csharp_style_prefer_tuple_swap = true:suggestion csharp_style_prefer_utf8_string_literals = true:suggestion csharp_style_inlined_variable_declaration = true:suggestion csharp_style_deconstructed_variable_declaration = true:suggestion csharp_style_unused_value_assignment_preference = discard_variable:suggestion csharp_style_unused_value_expression_statement_preference = discard_variable:silent csharp_prefer_static_local_function = true:suggestion csharp_prefer_static_anonymous_function = true:suggestion csharp_style_prefer_readonly_struct = true:suggestion csharp_style_prefer_readonly_struct_member = true:suggestion csharp_style_allow_embedded_statements_on_same_line_experimental = true:silent csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true:silent csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true:silent csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true:silent csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true:silent csharp_style_conditional_delegate_call = true:suggestion [*.{cs,vb}] #### Naming styles #### # Naming rules dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion dotnet_naming_rule.types_should_be_pascal_case.symbols = types dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case # Symbol specifications dotnet_naming_symbols.interface.applicable_kinds = interface dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.interface.required_modifiers = dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.types.required_modifiers = dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.non_field_members.required_modifiers = # Naming styles dotnet_naming_style.begins_with_i.required_prefix = I dotnet_naming_style.begins_with_i.required_suffix = dotnet_naming_style.begins_with_i.word_separator = dotnet_naming_style.begins_with_i.capitalization = pascal_case dotnet_naming_style.pascal_case.required_prefix = dotnet_naming_style.pascal_case.required_suffix = dotnet_naming_style.pascal_case.word_separator = dotnet_naming_style.pascal_case.capitalization = pascal_case dotnet_naming_style.pascal_case.required_prefix = dotnet_naming_style.pascal_case.required_suffix = dotnet_naming_style.pascal_case.word_separator = dotnet_naming_style.pascal_case.capitalization = pascal_case dotnet_style_operator_placement_when_wrapping = beginning_of_line tab_width = 4 indent_size = 4 end_of_line = crlf dotnet_style_coalesce_expression = false:suggestion dotnet_style_null_propagation = false:suggestion dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion dotnet_style_prefer_auto_properties = true:silent dotnet_style_object_initializer = true:suggestion dotnet_style_collection_initializer = true:suggestion dotnet_style_prefer_simplified_boolean_expressions = true:suggestion dotnet_style_prefer_conditional_expression_over_assignment = true:silent dotnet_style_prefer_conditional_expression_over_return = true:silent dotnet_style_explicit_tuple_names = true:suggestion dotnet_style_prefer_inferred_tuple_names = true:suggestion dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion dotnet_style_prefer_compound_assignment = true:suggestion dotnet_style_prefer_simplified_interpolation = true:suggestion dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion dotnet_style_namespace_match_folder = true:suggestion dotnet_style_readonly_field = true:suggestion dotnet_style_predefined_type_for_locals_parameters_members = true:silent dotnet_style_predefined_type_for_member_access = true:silent dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent dotnet_style_allow_statement_immediately_after_block_experimental = true:silent dotnet_style_allow_multiple_blank_lines_experimental = true:silent dotnet_code_quality_unused_parameters = all:suggestion [*.cfg] indent_style = tab tab_width = 2 ================================================ FILE: .github/workflows/build.yml ================================================ name: build on: push: branches: [ "dev" ] paths: - '**/*.cs' - '**/*.csproj' - '**/*.props' pull_request: paths: - '**/*.cs' - '**/*.csproj' - '**/*.props' workflow_dispatch: workflow_call: jobs: build: uses: KSPModdingLibs/KSPBuildTools/.github/workflows/build.yml@0.0.4 with: use-ckan: true ================================================ FILE: .github/workflows/create-release.yml ================================================ name: create-release on: workflow_dispatch: inputs: version-string: type: string required: true jobs: create-release: uses: KSPModdingLibs/KSPBuildTools/.github/workflows/create-release.yml@0.0.4 with: version-string: ${{ inputs.version-string }} use-ckan: true ================================================ FILE: .github/workflows/publish-to-spacedock.yml ================================================ name: publish-to-spacedock on: release: types: [released] jobs: publish-to-spacedock: uses: KSPModdingLibs/KSPBuildTools/.github/workflows/publish-to-spacedock.yml@0.0.4 with: spacedock-username: ${{ vars.SPACEDOCK_USERNAME }} mod-id: ${{ vars.SPACEDOCK_MOD_ID }} secrets: spacedock-password: ${{ secrets.SPACEDOCK_PASSWORD }} ================================================ FILE: .github/workflows/validate-cfg-files.yml ================================================ name: Validate CFG Files on: workflow_call: workflow_dispatch: pull_request: paths: - '**.cfg' push: branches: [ main ] paths: - '**.cfg' jobs: validate-cfg-files: name: Validate CFG Files runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: sparse-checkout: GameData - name: Validate config files uses: KSP-CKAN/KSPMMCfgParser@master ================================================ FILE: .gitignore ================================================ .vs/ bin/ obj/ *.user GameData/SCANsat/Plugins/SCAN* GameData/SCANsat/PluginData/Settings.cfg GameData/SCANsat/Parts/@thumbs/ Releases/ ================================================ FILE: CHANGELOG.md ================================================ # SCANsat Changelog ## Unreleased - Fixed benign yet annoying assembly loader error about SCANsat.Unity - Updated Russian localization (thanks @BalaurGD ) - Added Japanese localization (thanks @ThS45m ) - Improved performance when many parts are destroyed or other vessel changes occur on the same frame (e.g. during RUD) ## 21.1 - 2025-09-17 - Added Chinese localization (thanks @AmazingWood) - Fixed usages of .material in favor of .sharedMaterial (thanks @Gameslinx) - Fixed some incorrect .cfg syntax (thanks @HebaruSan) - Improved Russian localization (thanks @Sooll3) - Fixed missing vessel icons and visual map mode in RPM MFDs (thanks @vulkans22) - Fixed NRE when loading a sandbox game - Fixed NRE when loading a vessel with a running narrow band scanner - Fixed maps appearing too bright when Parallax Continued is installed - Fixed a memory leak in the applauncher - Added stock inventory and EVA construction support - Add CommunityCateogryKit support (thanks @pkmniako for the icon) - Fix tooltip bug when ContractConfigurator is installed (thanks @abel1502 for pinpointing the issue) - Remove "enhanced for ground activity" from orbital scanners - Moved all start/stop event buttons into the PAW group ## 20.4 - 2020-9-9 - Hotfix to prevent planetary overlay window from opening when it shouldn't ## 20.3 - 2020-9-4 - New resource overlay quick setting controls - Adjust low resource concentration cutoff for all maps - Quickly adjust resource color settings - Display small resource overlay legend on maps - Option to hide resources that are not present on a given celestial body from the resource selection menus - Zoom map resource overlay calculates local min and max resource concentration values - Fix numerous bugs related to custom resources and resource UI features - Fix bug causing big map data source to not update properly - Adjust part masses - Option to disable visual maps for troubleshooting - GameData/SCANsat/PluginData/Settings.cfg set VisibleMapsActive = False - Fix visual maps for new gas giants (KSP 1.10 and up) - Fix bug when trying to draw biome map for planets with no biomes - Add some missing localization fields for resource scanners ## 20.2 - 2020-7-07 - Fix memory leak related to visual maps - Add scanning coverage indicators to big map - Add function to allow the zoom map to remember the last used zoom level - Update French translations (don-vip) - Reduced memory usage by visual maps - Fixed several errors related to visual maps when using Kopernicus - Allow vessels with old scanner parts to be loaded in VAB/SPH - Fix error when PluginData folder for settings file has been deleted - Clarified surface-in-daylight requirement for certain scanners - Updated KSPedia entry to reflect newer features of big map, zoom map, and Breaking Ground surface feature detection ## 20.1 - 2020-6-17 - Fix big map body selection menu with some Kopernicus planet packs (also fixes a few settings menus) - Various adjustments to part tech tree position and scanner values - Properly hide old versions of parts - Minor UI bug fixes ## 20.0 - 2020-5-16 - Warning: Save files cannot be downgraded to a previous ## of SCANsat after updating to ## 20.0 or higher - Scanning part revamp - 15 new parts by Nertea - Multiple instruments for each scanner type - Old parts are soft-deprecated; they are still loaded but won't appear in the VAB/SPH part list - New visual scan mode - Low and high resolution RGB color visual map scans - New science results for high resolution visual map scans - Overhaul of scanner instrument types - Some scanners require the surface to be in daylight to function - New combination of scan types for each instrument - Resource scanning now handled mostly independently from stock resource scanning - All high resolution resource scans fall under a single scanner type - Updated contract types - Other improvements - Added more scanner information to scanner right-click part menus - Added more scanner information to VAB/SPH part list info - Bug fixes and other updates - Fix KSPedia entry for KSP 1.8 and above - Fix various Unity script issues - Fix RPM map display errors - Fix MechJeb landing site integration - Changes from version 19.3 - Fix KSPedia entry in KSP 1.9 - Minor part balance updates - Resource scanning updates - Fix Breaking Ground surface feature detection ## 19.3 - 2020-4-8 - Updated KSPedia entry - Fix MechJeb integration - Make low resolution resource scan less effective - Part texture and model updates - Minor part balance updates - Part attachment rule fixes - Some minor UI updates ## 19.2 - 2020-3-28 - Add all new scanner parts - Old parts soft-deprecated - Initial part balance - Tech tree - Part cost - Scanning variables - Fix contract configurator integration - Fix KSPedia ## 19.1 - 2020-2-20 - Fix compatibility with Kopernicus - Add new scanner info group in the right click menu of all scanner parts - Fix stock resource scanner modules - Fix scanning contracts (maybe?) ## 19.0 - 2020-1-29 - Warning: Save files cannot be downgraded to a previous ## of SCANsat after updating to version 19.0 or higher - Update for KSP 1.8.1 - Visual scanning mode - New visual scanner part (Nertea) - Visual map mode - Visual scan science data - Daylight scanner requirement - Some scanners require that the surface be in daylight to be scanned - Requirement can be disabled in the settings menu - Overhaul of resource scanning - All high resolution resources are scanned through a single scanner type - Existing data will be converted to the new system - Fix some Unity script initialization errors - Fix RPM map display errors ## 18.14 - 2019-10-28 - Update for KSP 1.8 - Fix big map control buttons - Fix ground track indicators - Fix BTDT anomaly viewer shaders ## 18.13 - 2019-8-21 - Fixed an error related to Breaking Ground surface features in Sandbox mode ## 18.12 - 2019-8-20 - Allow for specifying the color of the map view ground track indicators - Fix some bugs related to Breaking Ground surface feature displays - Auto refresh timer for the zoom map starts timing after the map has finished building, not before ## 18.11 - 2019-7-3 - Allow for detection of Breaking Ground DLC surface features - Use the BTDT scanner to detect surface features - Surface features displayed on the zoom map in the area surrounding the active vessel - Can be viewed in the instruments window - Breaking Ground DLC must be installed for this feature to function - Add auto-refresh toggle for the zoom map - Toggle between no refresh, 4 second refresh, and 8 second refresh - Add French translations - by don-vip - Fix a bug related to flags that was preventing the zoom map and big maps from functioning correctly - Fixed a few Chinese localization file language tags ## 18.10 - 2018-12-31 - Fix a bug that was preventing scanners with multiple sensor types from working correctly ## 18.9 - 2018-12-5 - Performance improvements for background scanning - Fix Metal Ore resource scanning support for Extraplanetary Launchpads - Allow for deeper layers of sub-moons in all celestial body menus ## 18.8 - 2018-10-25 - Update for KSP 1.5 - Additional Spanish translations by Fitiales ## 18.7 - 2018-7-27 - Update for KSP 1.4.5 - Fix lat/long display coordinates ## 18.6 - 2018-4-30 - Update for KSP 1.4.3 - Significant performance improvement for the background scanning algorithm - Particularly noticeable when many scanners are active and time warp is at maximum - Reduce garbage allocation - Particularly related to the information shown when the mouse is over a map window - Also reduced when the Background Scanning tab of the settings window is open - Fix a bug that caused increased garbage allocation when waypoint icons were turned on for the maps - Some UI related performance improvements - Fix some typos in science results localization files - Fix German language tags in localization files - Updates to Chinese translations ## 18.5 - 2018-3-14 - Update for KSP 1.4 - Update shaders and asset bundles to Unity 2017 - Fix a rounding in error in the scanning coverage that was blocking contract offers - Anomaly icons show as grey until they are scanned with the BTDT ## 18.4 - 2018-2-8 - Performance fixes for scanning coverage check ## 18.3 - 2018-2-7 - Complete Portuguese translations - Updates to localization files - Parts, manufacturer/flag and contract localization - Calculate scanning coverage based on approximation of actual spherical surface area instead of simple rectangular area - Affects contract completion and science data collection - Fix bugs related to some resources for the big map - Fix bugs in Overdrive compatibility - Fix long resource and planet names in drop down menus ## 18.2 - 2017-11-22 - Overhaul of all SCANsat contracts - Contracts now differ based on difficulty - Easy contracts only generate for home system bodies and ask for one scan - Medium and High difficulty contracts generate for non-home system bodies and ask for a group of scans - Contracts have several dependencies - Unlocking the required parts - Not having already finished all of the required scans for the target - Target bodies are selected based on your progression - Improvements made to slope maps - Slope maps now account for map scale or zoom factor - Significantly improved usefulness for the zoom map - Fix some potential bugs when survey contract waypoints are updated - Fix bug in background scanning toggles in the settings window - Some minor UI performance tweaks - Add a KSPedia button to the top of the settings window - It will try to open the SCANsat page, but this only works if KSPedia has already been opened at least once ## 18.1 - 2017-10-11 - Update for KSP 1.3.1 - Terrain color palettes defined in new config file - Custom color palettes can be added by editing the file or using MM patches - Fix bug with big map celestial body list - Fix bug with narrow band scanner requirement when more than one resource is in use - Slight change in how anomaly information is reported by the BTDT - Remove unneeded ASET RPM panel Module Manager patches - Fix SCANsat agency title ## 18.0 - 2017-07-8 - Update for KSP 1.3 - Complete UI overhaul: - All aspects of the SCANsat UI have been replaced with the new Unity UI - This results in a significant reduction in performance impact and garbage creation, particularly when several SCANsat windows are open at the same time - UI scaling is integrated with stock UI scaling (master scale) � separate scaling for SCANsat only is also available - All text is rendered with TextMesh Pro, resulting in clearer text, particularly at small and large scales, and better compatibility with other languages - New option is available to switch between KSP and the old, Unity style UI styling - New stock toolbar menu - In the flight scene, the stock toolbar button will now spawn a small menu with buttons for all of the SCANsat windows - Enable or disable this option in the settings window - New settings window - Features multiple pages for different groups of settings - Zoom map overhaul: - It now uses an orthographic map projection to eliminate distortion near the map center - This is similar to the polar map projection, but can be centered anywhere - Further separated from the big map - Menu to set the resource selection (if more than one is installed) - Menu to set the map type (altimetry, biome, slope) - Toggles for all of the map overlays - Three different map size options - Full map with top and bottom control bars - Medium map with only top control bar - Compact map with no control bar - Option to reset the map to the current vessel position - Option to lock the map to the current vessel position - Will re-center the map on the vessel position whenever it is refreshed, zoomed, etc� - Buttons to move the map center in all four directions - Fixes problems with the �Require Narrow Band Scanner� resource scanning requirement - Should function correctly with both stock scanning and SCANsat-style resource scanning - Localization: - Localization support for most aspects of SCANsat - Part descriptions, science results, part right-click menu fields, tooltips, settings window help tooltips, and some of the UI text - Planet names, biome names, and resources names are all localized - Some aspects of the UI, particularly the settings window, are not localized - The KSPedia entry is not localized - Spanish by Delthiago98 - Chinese by Summerfirefly - Russian by Ser and RarogCmex - German by h0yer - New Features: - Stock waypoint system integration - Big map and zoom map can be used to set stock waypoints - Click the waypoint button in the lower-right corner of the map to activate waypoint mode - Select a point on the map and left-click there to assign the waypoint location - Edit the waypoint name using the text input field - Click set to generate the waypoint - Optional MechJeb integration - MechJeb integration toggled through the settings window - Click the MJ button instead of set to use the waypoint as a MechJeb landing site - Requires MechJeb installed, and a functional and upgraded MechJeb core on the current vessel - Options for map generation speed - A slider in the settings window allows for three map speed options - 1 � One row of all map types will be drawn per frame - 2 � Two rows of all map types will be drawn per frame - 3 � Two to four rows of the maps will be drawn per frame, depending on the map type - Color Management Window updates - Integrated into the new settings window - Text input fields are available for most values with a slider - More biome options for the biome colors used and the white borders - New HSV color picker for all of the color management tabs - Uses a standard, saturation vs brightness (value) square color picker, with a hue slider to the right - Displays the current selection in RGB, HSV, and Hex color values - Allows for manual input of RGB values, using either 0-1, or 0-255 values - Updated KSPedia entry - Reflects all changes made for version 18 - Several new pages with information about the different map windows - Miscellaneous new features - Scanning width now properly accounts for latitude, resulting in scans of even width at all latitudes - New settings file; generated in the GameData/SCANsat/PluginData folder after first running KSP - Contains most of the options found in the settings window - Settings windows options for resetting specific sets of scanning data for an individual celestial body, or all bodies - Biome map legend - Displays all of the biome colors as sections on the map legend - The zoom map legend shows only the biomes present in the map window - Map legend tooltips - Displays altitude or biome name when the mouse is over the map legend - Day/night map terminator overlay for all maps - Toggled with the sun and moon icon - New part module specifically for handling science experiments - Module: SCANexperiment - Celestial body list on the big map is ordered by distance to the sun - The current body is displayed at the top of the list - Moons are grouped together with their parent - New anomaly icon, a question mark with an open circle at the bottom - The open circle denotes the anomaly position - Bug Fixes: - Fix some floating point errors that cause the big map to break at certain map sizes - Fix shader bugs preventing the BTDT anomaly readout in the Instruments window from working - Fix a science point exploit when collecting the same scan data from two different vessels - Fix a potential error with RPM maps with resource overlays - Fix errors in Module Manager patches for resource scanners used by other mods - Changes from version 17.9 - More KSPedia pages - Fix an error with setting the UI scale of the zoom map ## 16.11 - 2016-11-4 - Update for KSP 1.2.1 - Disable window dragging for big map and zoom map when in IVA - Most resource scanners now use the stock Narrow-Band for high resolution scanning - The "Require Narrow-Band" option in the resource settings is slightly broken by this - Disable that option if using lots of CRP resources ## 16.10 - 2016-10-24 - Update Toolbar wrapper - Fix Unity initialization issues - Fix error in ground track display - Fix hiding windows in KSC scene ## 16.9 - 2016-10-13 - Update for KSP 1.2 final - Update to new resource consumption system - Fix intermittent background scanning gaps - Only show the manual map size input field in the flight scene ## 16.8 - 2016-9-23 - Fix not loading background scanning vessels - Add support for displaying new vessel types - Detect new anomaly types - Garbage reduction and performance improvements - Primarily in the background scanning mechanism ## 16.7 - 2016-9-13 - Update for KSP 1.2 ## 16.6 - 2016-8-18 - Fix compatibility with Kerbalism ## 16.5 - 2016-8-10 - Fix bug in electricity usage that was preventing scanning ## 16.4 - 2016-8-9 - Update contracts for Contract Configurator 1.15+ (severedsolo) - Switch to using ModuleResource and RESOURCE nodes for all power consumption (NathanKell) - Calculate the local min and max terrain for RPM maps - Hidden map fill cheat option - Add "cheatMapFill = True" to the SCANcolors.cfg file - Fix potential Toolbar related errors (bssthu) ## 16.3 - 2016-6-27 - Adds new resource types and Module Manager scanner configs for KSP Interstellar Extended Version 1.9 - Deprecated unused He-3 and Thorium resource types - Updated for Mechjeb 2.5.8 ## 16.2 - 2016-6-21 - Update for KSP 1.1.3 - Updates and minor changes to KSPedia entry - Add terrain height multipliers for use with Module Manager when using planet rescaling mods (Sigma Dimensions) - Rename and clarify the background scanning toggle button - Clarify background scanning status in context menus and scanning indicators - Implement a silent science collection method (KOS support for not opening the results window) - Add new terrain color palettes and change some default palettes - Allow planetary resource configs to be loaded if no global config is defined - Some GUI performance and garbage creation optimizations ## 16.1 - 2016-5-2 - Update for KSP 1.1.2 - Update API for Kerbalism support - Fixed an error that prevented the UI from opening after exiting the Mission Control building ## 16.0 - 2016-4-19 - Update for KSP 1.1 final release - Update for MechJeb 2.5.7 - KSPedia Entry - 17 New KSPedia pages covering SCANsat basics and features - Add science experiment for low resolution resource scan (M700 scanner) - Adjust other science reward amounts - Add window scaling function - Adjust scale in the Settings window - Misc and Bug Fixes - Add target selection button to big map - Add new RPM storage module; Module Manager config edited to add this module to any part with an internal space - Make scanners easier to turn off when they run out of power - Fix error that prevented orbit lines from crossing the East/West border in zoom maps - Window reset button will now reset all window positions and scale - Fix bug in instruments window resource readout - Make sure new save files apply all SCANsat default values and options - Fixed potential error with ground tracks - Fixed potential error with .csv exporter ## 14.9 - 2016-3-6 - Add new zoom map buttons to small map, big map and toolbar - Improved zoom map functionality - When zoom map is first opened it targets the active vessel - Added re-sync to vessel button in the top-right corner - Added slope cutoff slider to color management window - Adjusts the cutoff between the two color pairs - Lower cutoff to make slope map better in the zoom map - Color Management window button removed from small map and big map in flight scene - Added Color Management window button to the top of the settings menu - Added GeoEnergy resource support for PathFinder - When a new planet is detected SCANsat tries to determine its highest elevation point - Used for planets that don't have a terrain config defined in the SCANcolors.cfg file; ie Kopernicus planets - Max elevation point used to set the max height used for SCANsat maps - Max elevation sometimes returns values too high; adjust values in the color management window - Some changes in how data is loaded from the save file; no end-user effect - Fixed error that prevented SCANsat contracts from generating before the player left the Kerbin system ## 14.8 - 2016-2-10 - Fix RPM and Kopernicus incompatibility - Add new CRP resources and configs ## 14.7 - 2016-1-16 -Fix Contract config error ## 14.6 - 2016-1-15 - Fix Kopernicus compatibility (Thanks ThomasKerman) - Allow mouse-over info and overlay tooltips to fall back to low resolution resource data in some cases - Add a warning when stock resource scanning is disabled without having Module Manager installed - Fixed some issues affecting scanner power usage and scanning altitude indicators - Allow for included contracts to be disabled through the ScanSatOfficial Contract Type (Thanks DBT85) - Fix a bug that was preventing loading of the color config file when additional planets are installed - Add MetalOre as a SCANsat resource and MetalOre scanner modules to EPL scanner parts ## 14.5 - 2015-12-22 - Misc and Bug Fixes - Fix some .csv export related issues - Allow for disabling the stock resource scan threshold - Fix ocean depth indicator - Fix multi spectral sensor normal map - Fix some potential issues when using multiple different sensors of the same type - Add new survey waypoints as they are generated ## 14.4 - 2015-11-14 - New export functions - Option to sse a true grey-scale color scheme - Option to export a .csv file with coordinates and terrain height for each pixel - Option to manually specify the big map width - Stock resource scan threshold - Active when stock resource scanning is disabled - Set a SCANsat resource scanning threshold level above which the stock resource scan will apply for each celestial body - Misc and Bug Fixes - Fix science data return on transmission failure - Zoom maps use variable terrain hieght ranges based on the local min and max terrain height - Add an ocean depth indicator to the instruments window - Add a distance-to-landing-target indicator on instruments window when within 15km - Fix drawing the terrain height behind the biome map - Fix some errors in ground track drawing ## 14.3 - 2015-11-10 - Update for KSP 1.0.5 - In-Game Help Function - Help section for Settings window, Resource Settings window, and Color Selection window - Activate help mode with the question mark button in the top right - Localization project - All help function strings are included in a config file - Local translations can be added to this file to replace the English text - Misc and Bug Fixes - Fix bug while switching vessels from the small map vessel list - Fix planetary overlay tooltips while in the tracking station - Fix a potential loading error - Fix bug generating terrain height maps on planets with PQS errors; prevents endless NRE spam - Fix some problems with the background terrain height map generator - Power usage works correctly up to 10000X time warp, instead of 1000X - Remove debug log messages during planetary overlay map generation - Change the default anomaly marker and close box icons to standard text ## 14.2 - 2015-8-29 - Performance and RAM usage improvements - Storage modules for each planet use less RAM - Planetary overlays use less RAM - Biome overlay texture size can be changed independently of resource size - Planetary overlays generated on a different thread when possible - This reduces or prevents the slight freeze or hiccup when generating a new overlay - Raster Prop Monitor - Additional functions added to RPM panels - The standard MFDs use the four buttons on the left for resource and anomaly/waypoint overlays - ALCOR pods also have additional functions where possible - Increased map rendering performance by reducing map texture size - Map texture size and resource overlay quality can be adjusted in the RPM configs - Prevent the non full-screen panels from drawing maps underneath opaque sections of the display (ie the left hand ALCOR panel) - A Module Manager patch is required for full ALCOR MFD functionality - Parts - Slight reduction in size of SAR and MultiSpectral scanners - Proper use of MODEL node scaling; fixes KIS inventory size problems (thanks Kerbas_ad_astra) - Slightly increased scanning width and altitude parameters for M700 (clamshell) resource scanner - Contract Configurator Contracts included - Based on a slightly modified version of severedsolo's SCANsatLite pack - SCAN agency and manufacturers group added - Big map and KSC map - Resource overlays now use the same quality settings as the planetary overlays - Resource mouse-over info now follows the same narrow-band scanner restrictions as planetary overlay tooltips - Slope added to mouse-over info for terrain scanned with high-resolution terrain scanner - Small map - Biome maps available on the small map - The vessel info readout will display the current biome (if scanned) for each vessel - The altitude readout for each vessel is now dependent on scanning coverage - Instruments UI - New rules for the altitude and slope readout - Below 1000m full height-above-terrain and slope info is given regardless of scanning coverage - Above 1000m altitude the readout is based on low or high resolution terrain scanning; slope is only given for high resolution scans - Color Management Window - Planet selection boxes available for terrain and resource color configs - Fix possible bugs created by adding and deleting mod planets - Misc and bug fixes - Resource overlay colors properly use the assigned abundance ranges - Added a resource overlay control window toolbar button - Update the active vessel in the instruments window - Various minor performance improvements - Various minor UI tweaks ## 14.1 - 2015-7-15 - Across the board performance improvement for map rendering - Fixed a bug causing performance drop for greyscale maps - Fixed a bug preventing landed resource scanners from working ## 14.0 - 2015-7-5 - Updated for KSP 1.0.4 - Updated for MechJeb 2.5.2 - Resource Scanning System Overhaul - Replaces or augments most aspects of the stock surface resource scanning system - New option available to disable stock scanning - Disables the orbital survey - Replaces the resource concentration readout from scanners with SCANsat modules - Replaces the resource map found on Narrow-Band scanners with a modified SCANsat zoom map - Right-click menu resource concentration readout dependent on SCANsat scanning coverage - Stock resource scanning data can be erased for each planet (does not affect resource biome scanning data) - Stock resource parts adapted for SCANsat resource scanning - Module Manager required for SCANsat resource scanning - M700 (clamshell) scanner used for low-resolution resource scanning; covers all resources - 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 - Narrow-band scanners used for high-resolution, individual resource scanning - Planetary map overlay - New window to control resource, terrain, and biome map overlays - Biome overlays limited to stock color scheme for now - Tooltips for overlays when the mouse cursor is over the planet - Overlay window buttons added to the big map and small map windows; also added to the Toolbar menu - Select between all available resources, terrain maps, and biome maps - Resource settings window - New window to control resource options and planetary overlay quality - Biome lock, instant scan, and narrow-band scanner options are the same as in previous versions - The instant scan option is automatically disabled when Disable Stock Resources is activated - Both SCANsat and stock resource scanning data for the current planet can be reset - Interpolation and map overlay size can be configured - Biome maps use twice the map height as resource maps (512*256 for resources; 1024*512 for biomes by default) - Coverage Transparency option shows scanned areas in grey if there are no resources present; useful for determining what areas have already been scanned - SCAN High Definition Camera - New part module to replace the stock hi def camera, found on the narrow-band scanner - Opens a modified SCANsat zoom window - Only active when stock resource scanning is disabled - Other Updates - SCANsat big map - Resource overlay now matches the planetary overlay more closely - Interpolation is used to generate the resource map overlay; this greatly speeds up big map rendering speed - Zoom map uses more accurate interpolation method for resource overlays - Biome maps can be generated without the white border - Add ground track display for scanning vessels while in map mode - Scanning width is displayed for the widest FOV - Width is only accurate at the equator - Terrain height map databases generated in the background - Maps generated once per game session for each planet - These maps are used to generate the small map and the terrain planetary overlay - Performance impact during map generation is negligible - Greatly speeds up small map rendering and terrain overlays - 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 - A resource selection drop down has been added to the zoom map - Can be used to change the seleceted resource or disable the overlay - Instrument window resource readout - Resource abundance at the current location is displayed on the instruments window - When more than one resource is present buttons along the side allow for switching the resource readout - Narrow-band scanner restrictions apply if that option is selected in the resource settings window - Bug Fixes and Misc Features - Waypoint location correct when waypoint coordinates are stored with nonsense values (ie. -120 S...) - Active vessel properly updates for the big map orbit display - Prevent pole scanning overlap at the north pole - Fixed slope calculation over water - Fix bug when applying terrain color config to non-clamped color scheme - Fix bug with orbit overlays in zoom map - Fix bug allowing scanners to continue scanning without power - Fix another bug with scanning near the poles - Fix a bug causing duplicate grid lines to be drawn on the space center map - Highlight active selection in drop down menus - Stop animations when they reach their endpoints - may prevent FAR from getting stuck recalculating the vessel surface - Various UI tweaks and updates - Updates from Version 13.4 - Fix ground tracks being displayed on the wrong planet - Fix bug in overlay control window while a planet's terrain map is being generated ## 12.1 - 2015-5-30 - Updated for MechJeb 2.5.1 - Added SCANsat sensor type and color configs for He-3 - SCANsat sensortype = 512 - Fix a bug while adding resource scanners in the editor - Add resource scanner action groups - Only work when the scanner is deployed - Fix MapTraq texture location ## 12 - 2015-5-3 - Updated for KSP 1.0.2 Parts: - All part textures converted to DDS format - Part textures reduced in size; total RAM saving of ~20MB - RADAR scanner moved to Basic Science tech node - Part drag and temperature properties adjusted Zoom Map: - Entirely new zoom map window - The window is a now a separate object, created by right-clicking somewhere on the big map - Can be dragged and re-sized independently of the big map - Window Controls - Zoom in and out buttons are available on the top row - Right click within the zoom map to zoom in and re-center the map - Left click to zoom out - Middle click, or Modifier Key (ALT) + Right-click to re-center without changing the zoom level - Zoom lever indicated along the top row; click the indicator to re-sync the zoom map with the big map - Overlay Options - Vessel orbit, waypoints, and anomaly locations can be toggled independently of their settings on the big map - Resource overlays will be shown in the zoom map - Landing Waypoint Selection - The target selection icon in the upper-left can be selected to activate target selection mode - Click anywhere in the zoom map to select a target site - 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 - Targets are persistent; one can be selected for each planet - click within the zoom window, but outside of the map itselft to cancel target selection and clear any existing targets - MechJeb Landing Guidance - When MechJeb is installed the target selection mode can be switched to interact with the MechJeb Landing Guidance Module - A MechJeb core must be on your current vessel and the Landing Guidance Module must be unlocked in the R&D center Stock Resource Integration: - The new stock resource system has been integrated into SCANsat - Multiple modes of operation are available - Default Mode - When scanning a planet using the stock Orbital Survey Scanner instrument all SCANsat resource maps for that planet will be filled in - These are available for display on the big map - The biome lock is active, giving only rough estimates of resource abundance until surface surveys are conducted - 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 - SCANsat Mode - In this mode SCANsat map overlays are decoupled from the stock scanning system - All resources must be scanned using normal SCANsat methods to be shown on the map overlay FinePrint Waypoint Integration: - Waypoints generated by FinePrint contracts can be displayed on SCANsat maps - A new waypoint icon is available on the big map and zoom map - The waypoint name is shown when the mouse-cursor is over it - The SCANsat Instruments Window displays the name of a waypoint when your current vessel is within range - Also works with custom waypoints added through nightingale's Waypoint Manager Color Management Updates: - Color options for slope, biome and resource maps are now available - An HSV color selection wheel is available for custom color selection - Click the mouse on the color wheel to select a color hue and saturation level - Adjust the value (brightness) slider to the right - Slope maps use two sets of colors, for high and low slope values - Biome map end-point colors can be adjusted - Stock biome map colors can be used in place of SCANsat colors - The terrain transparency for biome maps can be adjusted - Resource end-point colors can be adjusted - Resource cut-off values can be adjusted for each planet - Resource overlay transparency can be adjusted External Color Config File: - All color options are saved to an external file - GameData/SCANsat/Resources/SCANcolors.cfg - Each tab in the Color Management Window has a save option, this will update the values in the config file - Terrain and Resource color options are saved for each planet; values for addon planets can be added as well - Values in the config file serve as default values - New save files will use these values - Existing save files can reset color values to these defaults using the Color Management Window Bug Fixes and Miscellaneous Updates: - Docking, un-docking, decoupling, breaking your vessel etc... while active SCANsat sensors are onboard will not result in spurious sensor activity anymore - Includes a fixed Active Texture Management config file to prevent SCANsat icons from being altered - Window positions made persistent - The big map position is saved and will remain persistent through different game sessions - Other window positions are only persistent during a single game session - Fixed a bug with data resets in the tracking center - Fixed Instruments Window slope calculation at high latitudes - Instruments Window now displays terrain altitude while the vessel is on the surface - Various UI tweaks and fixes - Remove Community Tech Tree support Updates From Version 11.6: - Updates to Zoom Map resource overlay restriction - Less frequent checks for suitable vessels in orbit - Fix bug when checking parts with multiple narrow-band scanner modules - Fix MechJeb integration - Fix Blizzy toolbar icons ## 10 - 2015-1-29 User Interface: - Complete replacement of SCANsat user interface - Stock App Launcher Button included - Toggles the SCANsat small map, which can be used to open all other windows - Toggles the KSC map in the Space Center or Tracking Station scenes - Can be toggled on/off in the settings menu - Does not replace Blizzy78's Toolbar buttons - New SCANsat Big Map - Text buttons replaced with drop down menus and icon toggles - Maps for different planets can be selected at any time - Replaced longitude/latitude texture grid overlay with simple line drawing overlay - New KSC and Tracking Station window - Fixed-size version of the big map - Improvements to big map elevation data caching - Reduced memory usage - Faster map rendering when switching projection types - New Color Management window - Used to change color palettes for elevation maps - Used to set various terrain settings - All settings are saved for each planet - Improved SCAN instruments window - Altitude above terrain is shown correctly while in time warp - Localized slope is indicated based on a 3X3 grid centered 5m around the vessel Resources: - Resource overlay and selection is controlled entirely through the big map - Resource selection is handled through a drop down menu found along the top of the map - Resource overlays are toggled by the resource icon on the lower left of the map - Updated to support Regolith 1.4 - Regolith Biome lock settings can be toggled in the SCANsat settings window - SCANsatKethane not functional - ORSX support removed Code Base: - Significant internal code changes and rearrangement - Anything not relying entirely on the public API methods in SCANUtil will likely break Miscellaneous and Bug Fixes: - Maps exported to GameData/SCANsat/PluginData folder; the location where they should have been - Science results text added courtesy of Olympic1 - Uranium resource name changed to Uraninite to support the Community Resource Pack - SETI Rebalance project compatibility added for Community Tech Tree - Prevent scanning coverage from temporarily reporting 100%, which disrupted some SCANsat contracts - From v9; Fixed automatic camera movement while the KSC map was active in the tracking station - From v9; Fix potential error with stock toolbar when changing scenes ## 8.1 - 2014-12-19 - Updated for KSP 0.90 - Fixes for biome related issues due to 0.90 changes - Fixes for orbit renderer in early career mode; no orbit overlay on 1st tier tracking station - All parts use .mbm textures - Community Tech Tree support added - All parts rebalanced for cost and tech tree position ## 8 - 2014-10-8 - Updated for KSP 0.25 Resource Scanning: - Planetary resource overlay for big map - Supports ORSX resources - All resources types can be scanned in the background; no need to remain in control of a vessel while scanning - All resource scanning data is persistent; no different from standard SCANsat sensors - Resource types controlled through the SCANsat settings menu - Resources scanner types defined through included config file - Support for Modular Kolonization System and Karbonite are provided in their respective packages - ORSX resources - Resources displayed on the big map - Overlay colors can be defined in the included resource scanner config file Parts: - MapTraq deprecated - Part still exists but is not available in the VAB/SPH - Part functionality is completely removed - Module Manager configs for adding the MapTraq SCANsat module should be removed (having the module shouldn't hurt though) - Scanning altitude indicator is present for all SCANsat scanners, including resource scanners - Displayed in the right-click context menu - Improved Multi-Spectral scanner - Improved clickability - More efficient model; 60% reduction in triangle count - Rescaled the BTDT to be much smaller - Part cost balancing BackEnd Changes: - Background scanning will function in every scene where time passes - Flight, Map, Tracking Station and Space Center - Can be turned off from the SCANsat settings menu - SCANsat parts not required for background scanning during flight - SCANsat parts not required for toolbar icons and functional maps - Maps and menus don't work outside of the flight/map scenes - Persistent scanning data storage has been altered - Requires a one-time, automatic conversion from the old to the new method - 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 - ModStatistics removed Bug Fixes: - Science can be gathered from all planets - Reduced science return for planets without terrain/biomes - Active scanners no longer play through their animation on startup; they start fully deployed - Toolbar icons fallback to place holder textures if the default SCANsat icons are moved/altered/deleted - Prevent small map from opening improperly in non-toolbar version - Prevent debug spam on EVA science collection - Improved support for command pods/cockpits using Raster Prop Monitor - Possibly prevent problems such as issue #63 ## 6.1 - 2014-07-19 - Update for KSP v 0.24 - Folder structure significantly changed; you must delete any old SCANsat installations - SCANsatRPM integrated into standard SCANsat - You must delete any SCANsatRPM folders; do not install SCANsatRPM from any source - ModStatistics Added - Some minor bug fixes - SCANsat flag added - Initial part cost balancing ## 6.0 - 2014-05-17 (frozen by tg) * Update for KSP version 0.23.5. This version of SCANsat now requires KSP 0.23.5. Major Changes: + [NEW] Big Map Caching. When not scanning, rendering of the Big Map is much, much faster. [Thanks! DMagic!] * [KNOWN ISSUE] Sometimes the cache is not properly updated, resulting in strange looking Big Maps. Use the map resize button ( [\\], right hand size), resize the map a bit. This will reset the cache, and fix whatever is wrong. + [NEW] [OPTIONAL] Toolbar support. Strongly suggested, because the experience is better and more consistent with the Toolbar. [thanks DMagic!] - [REMOVED] Removed the old expanding/contracting floating SCANsat button. Replaced instead with either a Toolbar toolbar or with nothing, but maps become visible upon starting a scan. [Thanks Dmagic!] + [DOCS] New README docuemntation is in Markdown format, see: https://github.com/S-C-A-N/SCANsat [tg] + [DOCS] New documentation in the form of imgur albums, see: https://scansat.imgur.com/ [tg] + [INFO] Future releases can be found here: https://github.com/S-C-A-N/SCANsat/releases/latest [tg] + [INFO] Source code can be found here: https://github.com/S-C-A-N/SCANsat [tg] Minor Changes: + [NEW] Added support for showing the vessel icons for Asteroids in orbit around the same mainBody. [tg] + [NEW] Include SCANsatRPM by default in packaging. [tg] + [NEW] S.C.A.N. logo [thanks K3 | Chris!] - [REMOVED] Non-animated parts no longer show an 'Extend' option in EDITOR. [DMagic] + [COMPATABILITY] "Change access modifiers to allow for more control from RPM". [thanks Dmagic!] + [BUGFIX] The Multispectral scanner should now be easier to highlight and click. [tg] + [BUGFIX] Scanning high inclinations with wide-enough FOV scanners (ie, Multi, RADAR, but not SAR) will no longer reveal the opposite polar region. [thanks DMagic!] [example orbit]: Minmus 250.000x250.000km @ 91.0 degrees Internal (Developer) Changes: The following changes are only important for SCANsat or other module developers: + [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] + [dev] Support for changing what you define as 'sea level'. Compiled to be default (ie, 0). [tg] - [dev] Removed all unused declerations [tg] + [dev] Abstracted some lat/long functions to lambdas. [tg] + [dev] switched to Windows line endings. [tg] - [dev] removed windows commands in .csproj and .sln. [tg] + [dev] added unix commands. [tg] + [dev] added debugging and profiling support. Includes dummy executable. [tg] + [dev] [requires] that the SCANsat.dll be put directly in place (ie, GameData\SCANsat\.) for debugging to work [tg] ## 5 - 2013-12-18 - Update for KSP version 0.23. This version of SCANsat now requires KSP 0.23. - Fixes for minor incompatibilities with Unity 4.2.2. - Fixes for science changes in 0.23. Unfortunately, it's still necessary to analyze multiple times to get the full amount of science. - Removed the deprecated slope scanner part from the distribution. This breaks savefile compatibility for savefiles that still use this part. If this is an issue, simply keep the "Scanner 4" directory from the existing SCANsat installation. - Replaced models for altimetry and biome sensors with much better ones made by Milkshakefiend. Original forum thread: http://forum.kerbalspaceprogram.com/threads/49233-WIP-Parts-from-my-garden-shed-SCANsat-Antennae Note: This breaks savegame compatibility in the sense that affected parts look different and may be attached badly. If this is an issue, simply don't overwrite the existing parts when updating, or copy them back after the update. - Parts with animations can be extended and retracted in the editor. This doesn't affect their state at launch. - The big map should not open outside the screen anymore. (SirJodelstein) - Added a button to reset window positions to settings panel. (Lalwcat) - Fixed a bug that could sometimes prevent power consumption from being turned off during high time warp. - Biome maps now use the proper API function to determine the biome at a given location, which has been fixed in 0.23 to not spam debug output anymore. - Action names are configurable in the part config file. Included parts have been updated. (OrtwinS) - The instruments window got its own close button. (DMagic) ## 4 - 2013-11-10 - Ground track should not fail anymore on certain escape trajectories. - The SAR sensor has been replaced with a multispectral sensor, and the high resolution altimetry sensor has been replaced with a SAR sensor. (Naming change that doesn't affect gameplay.) - All sensors had their minimum, maximum, and optimal altitudes as well as their fields of view adjusted slightly. These parameters are now configurable in the part.cfg files. - A sensor's field of view degrades linearly below the optimal altitude, and remains constant between optimal and maximum altitude. Parameters are scaled based on planet radius and SoI size, so you can still map Gilly. - The sensor changes affect the save format. Existing saves should still work, but sensors will use a default set of parameters until the vessels they're on become active for the first time after the update. - To balance the now greater need to set up a reasonable orbit for mapping, the temporal resolution of the scanning process is now adaptive and will increase during time warp to reduce spottiness of the resulting tracks. - Turning off sensors no longer closes the SCANsat UI, but the small map and vessel list as well as map overlays are only displayed when some device on board can provide that information. - If you run out of power, the minimap shows static and a lot less information is displayed in most windows. (OrtwinS) - Flags on the big map have their own toggle button now. (Thourion) - The minimap shows the area covered by the active sensors on your current vessel as a percentage. - The "Forget Map" button has been relocated to a new settings window. A new button "Reset all data" is also available that resets all data for all celestials. - The anomaly marker and the close widget character are now configurable in the new settings window. (drtedastro) - Scanning can be restricted to the SoI your current vessel is in with the "Scan all active celestials" option in the new settings window. - Scanning can also be disabled for individual celestials. For your convenience, completion is shown as a percentage for each celestial. (Includes Altimetry, Biome, and Anomaly scans.) - The temporal resolution of scanning while time warp is active can be configured in the new settings window. Higher resolution means more locations along a satellite's orbit are sampled. - Some sensors had experimental instrument readouts added that can be enabled via a button. Vessels equipped with a MapTraq device can also access some of this information if it has previously been recorded. The BTDT's instrument display reacts to the scroll wheel, although that's only really relevant at the KSC... - If a part has an animation set via the animationName property, the plugin will attempt to play it for activation and deactivation of the part. - Dragging the minimized main window doesn't maximize it anymore. (Thourion) - If the main window is minimized or maximized close to the edge of the screen, it will try to stay at that edge. (Thourion) - A colour legend is available for height maps. (OrtwinS) - Parts have been moved around in the tech tree a bit. - Science data can now be collected from parts for applicable fields, based on how much terrain of the planet the vessel is currently in orbit around has been covered. This science data must be transmitted using a suitable communications device like other science experiments; however, recovery is not possible at this time. (OrtinS, Draft, BananaDealer) ## 3 - 2013-11-02 - Map overlays are rendered in a more efficient way. (DMagic, OrtwinS) - The polar orthographic projection doesn't choke on the antimeridian anymore. (DMagic) - Greyscale mode changes more colors to barrier free colors. - The big map is now resizable and its size and position are saved in the persistance file. - Map markers now use the stock KSP icons, if applicable. (Sochin) - More text has black outlines now to make it more readable. - Map markers and the ground track are now visible in the zoom box. (Ortwins) - Polar projection now displays handy S and N markers. (Thourion, OrtwinS) - All parts now consume electrical charge. The amounts are not finalized yet but can be configured in the part.cfg files. - Slope detection has been folded into altimetry. (OrtwinS) - Existing slope sensors have become broken, and a small explosive charge has been activated remotely for your convenience. You can trigger it via the right-click menu to get rid of the part on existing vessels. - If there are maneuver nodes on the active orbit during the time span for which the ground track is rendered, the first maneuver node's position will be indicated on the ground track along with the ground track for one period of the resulting orbit. - The GUI style should not flip between Unity and KSP style. (BananaDealer) - Rendered maps are not exported automatically anymore. Instead, there's a button in the big map window that exports the current map without any of the overlays. Exported images are still saved in the same location. (MOARdV) - Flags are now visible on the map. - Double clicking a ship name in the small window now switches to that ship. - The vessel list in the small window can now be toggled, and the window can be minimized to an icon only. (OrtwinS) ## 2 - 2013-10-31 - BTDT scanner now correctly works when the vessel is below 2000m above ground, instead of when the anomaly is below 2000m above sea level. (DMagic) - Main UI now correctly shows the altitude of the vessel above ground, instead of the terrain elevation above sea level below the vessel. - Big map mouseover text now displays latitude and longitude in the correct order. (DMagic) - Geographical coordinates are now displayed in DMS. (Sochin, GhostChaser) - Left-clicking inside the zoom box now zooms back out. (OrtwinS) - Big map now shows a projection of the active vessel's current orbit from one orbital period in the past to one orbital period in the future. (Sochin) - Big map now shows predicted equatorial crossings for the next few dozen orbits. - Big map can now be rendered using the Kavrayskiy VII projection. (OrtwinS) - Big map can now be rendered using a Polar Orthographic projection. (OrtwinS) - A red scanning line indicates big map rendering progress. (Thourion) - When using greyscale, text labels are displayed in cyan and orange. (sharpspoonful) - Text labels on maps now have a black outline. (OrtwinS) - The UI doesn't go AWOL anymore if you switch vessels in map view. (Tutman, DMagic) - The small map doesn't paint elevations <-1500m red in greyscale mode anymore. - Areas not covered by all active sensors on your active vessel now appear darker on the small map. - There's a switchable dot line grid on the big map. (OrtwinS) - Map markers can be toggled in big map. (DMagic, OrtwinS) - The zoom box acquired a close button. (Ralathon, DMagic, OrtwinS) ================================================ FILE: CONTRIBUTING.md ================================================ # Environment Setup Create a `SCANsat.props.user` file in the root directory using the template below. Set the `` property to the KSP install you wish to develop on. This file should be excluded via .gitignore and not committed. This is used by [KSPBuildTools](https://github.com/kspmoddingLibs/kspbuildTools/). ```xml C:\Program Files (x86)\Steam\steamapps\common\KSP Stripped ``` Using CKAN, install MechJeb2 in your development instance (because `SCANmechjeb` depends on it). # Compiling the mod You should now be able to open `SCANsat.sln` and build it. The compiled DLLs should be copied to `GameData/SCANsat/Plugins` automatically. These should be excluded from .gitignore and never committed. You 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. ## Notes on HSVPicker `SCANsat.Unity` contains code derived from https://github.com/judah4/HSV-Color-Picker-Unity/. This library or something derived from it seems to also have been added to KSP itself at some point. This can lead to compilation issues because there are conflicting names depending on the `using` statements in effect. All of the types from this library in the SCANsat codebase should be in a SCANsat namespace. Disambiguating `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: ```cs using ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues; ``` # Unity Project SCANsat uses several Unity assetbundles which contain shaders, icons, and UI prefabs. The `SCANsat.Unity` assembly contains the scripts that are embedded in these prefabs. This assembly is loaded by KSP and is also a dependency in the Unity project. After compiling the SCANsat mod, copy `SCANsat.Unity.dll` from the `GameData/SCANsat/Plugins` directory to `Unity/SCANsat/Assets/Plugins`. Then open the project with Unity 2019.4.18f1. Next, select `Scansat->Build All Bundles`. This will dump a bunch of files into `Unity/SCANsat/AssetBundles`. Copy the 4 that have a `.scan` file extension into `GameData/SCANsat/Resources`. # Future work, bugs, caveats, etc I do not currently know how to compile the KSPedia bundles, and it looks like there are some missing image files. The 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. Still need to set up versioning with KSPBuildTools and the github workflows. ================================================ FILE: GameData/SCANsat/Flags/Agents.cfg ================================================ AGENT { name = #autoLOC_SCANsat_Agents_Name title = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_Agents_Description logoURL = SCANsat/Flags/SCANsat_Flag logoScaledURL = SCANsat/Flags/SCANsat_Flag_Scaled mentality = Scientific mentality = Pioneer } ================================================ FILE: GameData/SCANsat/Parts/BTDT/BTDT.cfg ================================================ PART { name = SCANsat_Scanner32 module = Part author = damny MODEL { model = SCANsat/Parts/BTDT/BTDT scale = 0.5, 0.5, 0.5 } // attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision] attachRules = 0,1,0,0,0 node_attach = 0.0, 0.05, 0.0, 0.0, -1.0, 0.0, 0 TechRequired = Unresearcheable entryCost = 25000 cost = 13000 category = none subcategory = 0 title = #autoLOC_SCANsat_BTDT_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_BTDT_Description mass = 0.03 dragModelType = default angularDrag = 1 bulkheadProfiles = srf crashTolerance = 12 maxTemp = 1200 emissiveConstant = 0.95 thermalMassModifier = 4.0 MODULE { name = SCANsat sensorType = 32 //2^5 fov = 1 min_alt = 0 max_alt = 2000 best_alt = 0 scanName = BTDT RESOURCE { name = ElectricCharge rate = 0.1 } } } ================================================ FILE: GameData/SCANsat/Parts/MULTI/MULTI.cfg ================================================ PART { name = SCANsat_Scanner24 module = Part author = damny MODEL { model = SCANsat/Parts/MULTI/MULTI scale = 0.2, 0.2, 0.2 } // attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision] attachRules = 0,1,0,0,0 node_attach = 0.0, -0.018, 0.0, 0.0, -1.0, 0.0, 0 TechRequired = Unresearcheable entryCost = 20000 cost = 9000 category = none subcategory = 0 title = #autoLOC_SCANsat_Multi_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_Multi_Description mass = 0.03 dragModelType = default angularDrag = 2 bulkheadProfiles = srf crashTolerance = 7 maxTemp = 1200 emissiveConstant = 0.95 thermalMassModifier = 4.0 MODULE { name = SCANsat sensorType = 24 //2^3 + 2^4 fov = 4 min_alt = 5000 max_alt = 500000 best_alt = 250000 scanName = Multispectral animationName = Multi_Antenna requireLight = True RESOURCE { name = ElectricCharge rate = 1 } } MODULE { name = SCANexperiment experimentType = SCANsatBiomeAnomaly } } ================================================ FILE: GameData/SCANsat/Parts/MapTraq/MapTraq.cfg ================================================ PART { name = SCANsat_Tracker module = Part author = damny MODEL { model = SCANsat/Parts/MapTraq/MapTraq texture = SCANsat, SCANsat/Parts/BTDT/SCANsat position = 0, 0, 0 rotation = 0, 0, 0 scale = 1, 1, 1 } scale = 1 rescaleFactor = 1 // attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision] attachRules = 0,1,0,0,0 node_attach = 0.0, 0.05, 0.0, 0.0, -1.0, 0.0, 0 TechHidden = True TechRequired = Unresearcheable entryCost = 0 cost = 2500 category = none subcategory = 0 title = SCAN MapTraq® manufacturer = SCAN: Scientific Committee on Advanced Navigation description = 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. mass = 0.03 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.2 angularDrag = 2 crashTolerance = 7 maxTemp = 3600 MODULE { name = SCANsat sensorType = 0 fov = 0 min_alt = 0 max_alt = 0 best_alt = 0 scanName = Eyeball Scan RESOURCE { name = ElectricCharge rate = 0.05 } } } ================================================ FILE: GameData/SCANsat/Parts/RADAR/RADAR.cfg ================================================ PART { name = SCANsat_Scanner module = Part author = damny MODEL { model = SCANsat/Parts/RADAR/RADAR scale = 2, 2, 2 } // attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision] attachRules = 0,1,0,0,0 // node_attach: [x, y, z, up x, up y, up z] node_attach = 0.0, -0.11, 0.0, 0.0, -1.0, 0.0, 0 TechRequired = Unresearcheable entryCost = 10000 cost = 3500 category = none subcategory = 0 title = #autoLOC_SCANsat_Radar_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_Radar_Description mass = 0.03 dragModelType = default angularDrag = 2 bulkheadProfiles = srf crashTolerance = 7 maxTemp = 1200 emissiveConstant = 0.95 thermalMassModifier = 4.0 MODULE { name = SCANsat sensorType = 1 //2^0 fov = 5 min_alt = 5000 max_alt = 500000 best_alt = 5000 scanName = RADAR animationName = Collapse_Antenna requireLight = False RESOURCE { name = ElectricCharge rate = 0.1 } } MODULE { name = SCANexperiment experimentType = SCANsatAltimetryLoRes } } ================================================ FILE: GameData/SCANsat/Parts/SAR/SAR.cfg ================================================ PART { name = SCANsat_Scanner2 module = Part author = damny MODEL { model = SCANsat/Parts/SAR/SAR scale = 1.5, 1.5, 1.5 } // attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision] attachRules = 0,1,0,0,0 node_attach = 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0 TechRequired = Unresearcheable entryCost = 45000 cost = 25000 category = none subcategory = 0 title = #autoLOC_SCANsat_SAR_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_SAR_Description mass = 0.03 dragModelType = default angularDrag = 2 bulkheadProfiles = srf crashTolerance = 7 maxTemp = 1200 emissiveConstant = 0.95 thermalMassModifier = 4.0 MODULE { name = SCANsat sensorType = 2 //2^1 fov = 2 min_alt = 5000 max_alt = 800000 best_alt = 750000 scanName = SAR animationName = Antenna requireLight = False RESOURCE { name = ElectricCharge rate = 1.5 } } MODULE { name = SCANexperiment experimentType = SCANsatAltimetryHiRes } } ================================================ FILE: GameData/SCANsat/Parts/scansat-btdt/scansat-exomars-1.cfg ================================================ // SCANSAT Expansion // Been There Done That: based on ExoMars rover mast PART { name = scansat-exomars-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-btdt/scansat-exomars-1 scale = 0.5, 0.5, 0.5 } rescaleFactor = 1.0 // attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,0,0 node_attach = 0.0,-0.1,0.075,0.0,-1.0,0.0,0 TechRequired = fieldScience entryCost = 25000 cost = 13000 category = Science subcategory = 0 title = #autoLOC_SCANsat_BTDT_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_BTDT_Exo_Description mass = 0.02 dragModelType = default angularDrag = 1 crashTolerance = 12 maxTemp = 1200 emissiveConstant = 0.95 thermalMassModifier = 4.0 bulkheadProfiles = srf tags = scansat exomars payload image anomaly map scan MODULE { name = SCANsat sensorType = 32 //2^5 fov = 1 min_alt = 0 max_alt = 2000 best_alt = 0 scanName = BTDT requireLight = False animationName = Deploy RESOURCE { name = ElectricCharge rate = 0.1 } } MODULE { name = ModulePartVariants useMultipleDragCubes = false baseVariant = Shroud VARIANT { name = Bare displayName = Bare primaryColor = #999999 GAMEOBJECTS { EMCameraMLIBare = true EMCameraMLI = false EMBasePitch = false EMBasePitchBare = true EMBaseBare = true EMBase = false EMCameraBare = true EMCamera = false EMDoor = false } } VARIANT { name = Shroud displayName = Shrouded primaryColor = #ffffff GAMEOBJECTS { EMCameraMLIBare = false EMCameraMLI = true EMBasePitch = true EMBasePitchBare = false EMBaseBare = false EMBase = true EMCameraBare = false EMCamera = true EMDoor = true } } } MODULE { name = ModuleCargoPart packedVolume = 10 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-multi/scansat-multi-abi-1.cfg ================================================ // SCANSAT Expansion // Medium-tech multispectral scanner: based on ABI (Advanced Baseline Imager) from GOES-R PART { name = scansat-multi-abi-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-multi/scansat-multi-abi-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 0.75 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,1,1 node_attach = -0.1,-0.1,0.25,0.0,0.0,-1.0,1 TechRequired = spaceExploration entryCost = 13000 cost = 10000 category = Science subcategory = 0 title = #autoLOC_SCANsat_Multi_MSR_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_Multi_MSR_Description mass = 0.125 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf tags = scansat abi goes satellite payload image map multi biome scan visual color image low resource MODULE { name = SCANsat sensorType = 140 //2^2 + 2^3 + 2^7 fov = 1.5 min_alt = 70000 max_alt = 400000 best_alt = 300000 requireLight = True scanName = Multispectral animationName = Deploy RESOURCE { name = ElectricCharge rate = 1 } } MODULE { name = SCANexperiment experimentType = SCANsatBiomeAnomaly } MODULE { name = ModulePartVariants useMultipleDragCubes = false baseVariant = Gold VARIANT { name = Bare displayName = Bare primaryColor = #999999 GAMEOBJECTS { ABIMetal = true ABIFoil = false ABIFoil_Silver = false } } VARIANT { name = Gold displayName = Gold Insulation primaryColor = #ffd700 GAMEOBJECTS { ABIMetal = false ABIFoil = true ABIFoil_Silver = false } } VARIANT { name = Silver displayName = Silver Insulation primaryColor = #888888 GAMEOBJECTS { ABIMetal = false ABIFoil = false ABIFoil_Silver = true } } } MODULE { name = ModuleCargoPart packedVolume = 360 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-multi/scansat-multi-modis-1.cfg ================================================ // SCANSAT Expansion // Low-tech multispectral scanner: based on MODIS (MODerate resolution Imaging Spectrometer) from Terra/Aqua satellites PART { name = scansat-multi-modis-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-multi/scansat-multi-modis-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 0.5 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,1,1 node_attach = -0.022,0.031,0.314,-0.0,0.0,-1.0,1 TechRequired = basicScience entryCost = 7500 cost = 3000 category = Science subcategory = 0 title = #autoLOC_SCANsat_Multi_MS1_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_Multi_MS1_Description mass = 0.075 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf tags = scansat terra aqua modis satellite payload image map multi biome scan visual color image low MODULE { name = SCANsat sensorType = 12 //2^2 + 2^3 fov = 3 min_alt = 20000 max_alt = 250000 best_alt = 70000 requireLight = True scanName = Multispectral animationName = Deploy RESOURCE { name = ElectricCharge rate = 0.75 } } MODULE { name = SCANexperiment experimentType = SCANsatBiomeAnomaly } MODULE { name = ModulePartVariants useMultipleDragCubes = false baseVariant = Gold VARIANT { name = Bare displayName = Bare primaryColor = #999999 GAMEOBJECTS { MODIS_Metal = true MODIS_Foil = false MODIS_Foil_Silver = false } } VARIANT { name = Gold displayName = Gold Insulation primaryColor = #ffd700 GAMEOBJECTS { MODIS_Metal = false MODIS_Foil = true MODIS_Foil_Silver = false } } VARIANT { name = Silver displayName = Silver Insulation primaryColor = #888888 GAMEOBJECTS { MODIS_Metal = false MODIS_Foil = false MODIS_Foil_Silver = true } } } MODULE { name = ModuleCargoPart packedVolume = 100 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-multi/scansat-multi-msi-1.cfg ================================================ // SCANSAT Expansion // High-tech multispectral scanner: based on MSI (Multi Spectral Imager) from Sentinel 2A/2B PART { name = scansat-multi-msi-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-multi/scansat-multi-msi-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 0.9 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,1,1 node_attach = 0.0,0.054,0.512,0.0,0.0,-1.0,1 TechRequired = advUnmanned entryCost = 35000 cost = 15000 category = Science subcategory = 0 title = #autoLOC_SCANsat_Multi_MS2A_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_Multi_MS2A_Description mass = 0.25 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf tags = scansat sentinel msi satellite payload image map multi biome scan visual color image low resource MODULE { name = SCANsat sensorType = 140 //2^2 + 2^3 + 2^7 fov = 4 min_alt = 100000 max_alt = 750000 best_alt = 500000 requireLight = True scanName = Multispectral animationName = Deploy RESOURCE { name = ElectricCharge rate = 1.5 } } MODULE { name = SCANexperiment experimentType = SCANsatBiomeAnomaly } MODULE { name = ModulePartVariants useMultipleDragCubes = false baseVariant = Gold VARIANT { name = Bare displayName = Bare primaryColor = #999999 GAMEOBJECTS { MSI_Metal = true MSI_Foil = false MSI_Foil_Silver = false } } VARIANT { name = Gold displayName = Gold Insulation primaryColor = #ffd700 GAMEOBJECTS { MSI_Metal = false MSI_Foil = true MSI_Foil_Silver = false } } VARIANT { name = Silver displayName = Silver Insulation primaryColor = #888888 GAMEOBJECTS { MSI_Metal = false MSI_Foil = false MSI_Foil_Silver = true } } } MODULE { name = ModuleCargoPart packedVolume = 1800 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-radar/scansat-radar-poseidon-3b-1.cfg ================================================ // SCANSAT Expansion // Radar Altimeter: based on Poseidon-3B radar altimeter on JASON-3 PART { name = scansat-radar-poseidon-3b-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-radar/scansat-radar-poseidon-3b-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 0.9 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,1,1 node_attach = 0.0,-0.166,0,0.0,-1.0,0.0,1 TechRequired = basicScience entryCost = 5500 cost = 3300 category = Science subcategory = 0 title = #autoLOC_SCANsat_Radar3B_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_Radar3B_Description mass = 0.075 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf tags = scansat scan jason poseidon satellite payload image map elevation dem radar altimeter radar MODULE { name = SCANsat sensorType = 1 //2^0 fov = 1.5 min_alt = 5000 max_alt = 250000 best_alt = 70000 requireLight = False scanName = RADAR RESOURCE { name = ElectricCharge rate = 1 } } MODULE { name = SCANexperiment experimentType = SCANsatAltimetryLoRes } MODULE { name = ModuleCargoPart packedVolume = 400 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-radar/scansat-radar-seasat-1.cfg ================================================ // SCANSAT Expansion // Low-tech SAR: based on SeaSat L-band SAR antenna PART { name = scansat-radar-seasat-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-radar/scansat-radar-seasat-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 0.75 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,0,1 node_attach = 0.043,-0.14,0.0,0.0,0.0,-1.0,1 TechRequired = electrics entryCost = 6500 cost = 5500 category = Science subcategory = 0 title = #autoLOC_SCANsat_RadarEO_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_RadarEO_Description mass = 0.125 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf tags = scansat scan seasat satellite payload image map elevation dem radar MODULE { name = SCANsat sensorType = 1 //2^0 fov = 3.5 min_alt = 50000 max_alt = 500000 best_alt = 100000 requireLight = False scanName = RADAR animationName = Deploy RESOURCE { name = ElectricCharge rate = 1 } } MODULE { name = SCANexperiment experimentType = SCANsatAltimetryLoRes } MODULE { name = ModuleCargoPart packedVolume = 1800 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-recon/scansat-recon-ikonos-1.cfg ================================================ // SCANSAT Expansion // Low Tech High Res Imager: based on IKONOS-1 satellite PART { name = scansat-recon-ikonos-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-recon/scansat-recon-ikonos-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 1.0 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 1,1,0,1,1 node_attach = 0.0,-0.213,0,0.0,-1.0,0.0,0 node_stack_bottom = 0.0,-0.213,0,0.0,-1.0,0.0,0 TechRequired = precisionEngineering entryCost = 12500 cost = 7500 category = Science subcategory = 0 title = #autoLOC_SCANsat_VS1_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_VS1_Description mass = 0.05 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf, size0 tags = scansat scan ikonos optic high resolution visual satellite observation spy satellite payload image map MODULE { name = SCANsat sensorType = 64 //2^6 fov = 1.5 min_alt = 20000 max_alt = 250000 best_alt = 70000 requireLight = True scanName = Visual animationName = Deploy RESOURCE { name = ElectricCharge rate = 0.75 } } MODULE { name = SCANexperiment experimentType = SCANsatVisual } MODULE { name = ModuleCargoPart packedVolume = 150 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-recon/scansat-recon-kh11-1.cfg ================================================ // SCANSAT Expansion // High Tech High Res Imager: based on KH-11 Kennan satellite PART { name = scansat-recon-kh11-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-recon/scansat-recon-kh11-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 0.98 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 1,1,0,1,1 node_attach = 0.0,-1.571,0,0.0,-1.0,0.0,1 node_stack_bottom = 0.0,-1.571,0,0.0,-1.0,0.0,1 TechRequired = largeUnmanned entryCost = 35500 cost = 25000 category = Science subcategory = 0 title = #autoLOC_SCANsat_VS11_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_VS11_Description mass = 1.75 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf, size1p5 tags = scansat scan kennan kh keyhole big bird optic high resolution visual satellite observation spy satellite payload image map anomaly MODULE { name = SCANsat sensorType = 80 //2^6 + 2^4 fov = 4 min_alt = 100000 max_alt = 1000000 best_alt = 200000 requireLight = True scanName = Visual animationName = Deploy RESOURCE { name = ElectricCharge rate = 2 } } MODULE { name = SCANexperiment experimentType = SCANsatVisual } MODULE { name = ModuleCargoPart stackableQuantity = 1 packedVolume = -1 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-recon/scansat-recon-worldview-3-1.cfg ================================================ // SCANSAT Expansion // Medium Tech High Res Imager: based on Worldview-3 satellite PART { name = scansat-recon-worldview-3-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-recon/scansat-recon-worldview-3-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 1.0 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 1,1,0,1,1 node_attach = 0.0,-0.849,0,0.0,-1.0,0.0,1 node_stack_bottom = 0.0,-0.849,0,0.0,-1.0,0.0,1 TechRequired = unmannedTech entryCost = 25500 cost = 18400 category = Science subcategory = 0 title = #autoLOC_SCANsat_VS3_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_VS3_Description mass = 0.3 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = size1, srf tags = scansat scan worldview optic high resolution visual satellite observation spy satellite payload image map anomaly MODULE { name = SCANsat sensorType = 80 //2^6 + 2^4 fov = 2.5 min_alt = 70000 max_alt = 500000 best_alt = 350000 requireLight = True scanName = Visual animationName = Deploy RESOURCE { name = ElectricCharge rate = 1.5 } } MODULE { name = SCANexperiment experimentType = SCANsatVisual } MODULE { name = ModuleCargoPart stackableQuantity = 1 packedVolume = -1 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-resources/scansat-resources-crism-1.cfg ================================================ // SCANSAT Expansion // Low Tech Resource Scanner: based on Compact Reconnaissance Imaging Spectrometer for Mars from Mars Reconnaisance Orbiter PART { name = scansat-resources-crism-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-resources/scansat-resources-crism-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 1.0 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,1,1 node_attach = 0.0,-0.085,0,0.0,-1.0,0.0,1 TechRequired = advExploration entryCost = 5500 cost = 15000 category = Science subcategory = 0 title = #autoLOC_SCANsat_R_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_R_Description mass = 0.1 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf tags = scansat crism compact mro satellite payload image map resource scan ore MODULE { name = SCANsat sensorType = 256 //2^8 fov = 1 min_alt = 20000 max_alt = 250000 best_alt = 70000 requireLight = True scanName = Resource animationName = Deploy RESOURCE { name = ElectricCharge rate = 1.75 } } MODULE { name = SCANresourceDisplay ResourceName = Ore } MODULE { name = ModuleKerbNetAccess MinimumFoV = 25 MaximumFoV = 45 AnomalyDetection = 0 RequiresAnimation = False DISPLAY_MODES { Mode = Resources,#autoLOC_900321 //#autoLOC_900321 = Resources } } MODULE { name = SCANexperiment experimentType = SCANsatResources } MODULE { name = ModuleCargoPart packedVolume = 60 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-resources/scansat-resources-hyperion-1.cfg ================================================ // SCANSAT Expansion // High Tech Resource Scanner: based on Hyperion instrument on EO-1 satellite PART { name = scansat-resources-hyperion-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-resources/scansat-resources-hyperion-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 1.0 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,1,1 node_attach = 0.0,-0.512,0,0.0,-1.0,0.0,1 TechRequired = experimentalScience entryCost = 45500 cost = 17500 category = Science subcategory = 0 title = #autoLOC_SCANsat_RX_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_RX_Description mass = 0.5 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf tags = scansat hyperion eo1 satellite payload image map resource scan ore MODULE { name = SCANsat sensorType = 256 //2^8 fov = 3 min_alt = 100000 max_alt = 750000 best_alt = 500000 requireLight = True scanName = Resource animationName = Deploy RESOURCE { name = ElectricCharge rate = 1.25 } } MODULE { name = SCANresourceDisplay ResourceName = Ore } MODULE { name = ModuleKerbNetAccess MinimumFoV = 5 MaximumFoV = 90 AnomalyDetection = 0 RequiresAnimation = False DISPLAY_MODES { Mode = Resources,#autoLOC_900321 //#autoLOC_900321 = Resources } } MODULE { name = SCANexperiment experimentType = SCANsatResources } MODULE { name = ModuleCargoPart packedVolume = 450 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-resources/scansat-resources-mise-1.cfg ================================================ // SCANSAT Expansion // Medium Tech Resource Scanner: based on MISE for Europa Clipper PART { name = scansat-resources-mise-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-resources/scansat-resources-mise-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 1.0 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,1,1 node_attach = 0.0,-0.20,0,0.0,-1.0,0.0,1 TechRequired = scienceTech entryCost = 15500 cost = 15000 category = Science subcategory = 0 title = #autoLOC_SCANsat_R2_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_R2_Description mass = 0.275 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf tags = scansat mise clipper europa satellite payload image map resource scan ore MODULE { name = SCANsat sensorType = 256 //2^8 fov = 2.5 min_alt = 70000 max_alt = 500000 best_alt = 250000 requireLight = True scanName = Resource animationName = Deploy RESOURCE { name = ElectricCharge rate = 1.5 } } MODULE { name = SCANresourceDisplay ResourceName = Ore } MODULE { name = ModuleKerbNetAccess MinimumFoV = 15 MaximumFoV = 70 AnomalyDetection = 0 RequiresAnimation = False DISPLAY_MODES { Mode = Resources,#autoLOC_900321 //#autoLOC_900321 = Resources } } MODULE { name = SCANexperiment experimentType = SCANsatResources } MODULE { name = ModuleCargoPart packedVolume = 180 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-sar/scansat-sar-paz-1.cfg ================================================ // SCANSAT Expansion // Low Tech SAR: based on PAZ X-band SAR antenna PART { name = scansat-sar-paz-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-sar/scansat-sar-paz-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 1.0 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,1,1 node_attach = 0,0.035,0,0.0,1.0,0.0,1 TechRequired = advElectrics entryCost = 6500 cost = 8000 category = Science subcategory = 0 title = #autoLOC_SCANsat_SARX_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_SARX_Description mass = 0.18 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf tags = scansat scan paz x satellite payload image map elevation dem radar sar synthetic radar MODULE { name = SCANsat sensorType = 2 //2^1 fov = 1.5 min_alt = 70000 max_alt = 500000 best_alt = 250000 requireLight = False scanName = SAR RESOURCE { name = ElectricCharge rate = 2 } } MODULE { name = SCANexperiment experimentType = SCANsatAltimetryHiRes } MODULE { name = ModuleCargoPart packedVolume = 110 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-sar/scansat-sar-radarsat-2-1.cfg ================================================ // SCANSAT Expansion // Medium Tech SAR: based on RADARSAT-2 C-band SAR antenna PART { name = scansat-sar-radarsat-2-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-sar/scansat-sar-radarsat-2-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 1.0 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,0,1 node_attach = 0,0.024,0,0.0,1.0,0.0,1 TechRequired = largeElectrics entryCost = 25500 cost = 9800 category = Science subcategory = 0 title = #autoLOC_SCANsat_SARC_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_SARC_Description mass = 0.4 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf tags = scansat scan radarsat c satellite payload image map elevation dem radar sar synthetic radar MODULE { name = SCANsat sensorType = 2 //2^1 fov = 3 min_alt = 500000 max_alt = 750000 best_alt = 700000 requireLight = False scanName = SAR animationName = Deploy RESOURCE { name = ElectricCharge rate = 2.5 } } MODULE { name = SCANexperiment experimentType = SCANsatAltimetryHiRes } MODULE { name = ModuleCargoPart stackableQuantity = 1 packedVolume = -1 } } ================================================ FILE: GameData/SCANsat/Parts/scansat-sar/scansat-sar-tandem-l-1.cfg ================================================ // SCANSAT Expansion // High Tech SAR: based on TANDEM-L L-band SAR antenna PART { name = scansat-sar-tandem-l-1 module = Part author = Nertea (Chris Adderley) MODEL { model = SCANsat/Parts/scansat-sar/scansat-sar-tandem-l-1 scale = 1.0, 1.0, 1.0 } rescaleFactor = 1.0 // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 0,1,0,0,1 node_attach = 0.329,0.026,0,0.0,-1.0,0.0,1 TechRequired = experimentalElectrics entryCost = 55000 cost = 54000 category = Science subcategory = 0 title = #autoLOC_SCANsat_SARL_Title manufacturer = #autoLOC_SCANsat_Agents_Title description = #autoLOC_SCANsat_SARL_Description mass = 0.8 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.3 angularDrag = 2 crashTolerance = 6 maxTemp = 1200 // = 2900 breakingForce = 50 breakingTorque = 50 bulkheadProfiles = srf tags = scansat scan tandem l satellite payload image map elevation dem radar sar synthetic radar MODULE { name = SCANsat sensorType = 10 //2^1 + 2^3 fov = 4 min_alt = 250000 max_alt = 1000000 best_alt = 500000 requireLight = False scanName = SAR animationName = Deploy RESOURCE { name = ElectricCharge rate = 4.5 } } MODULE { name = SCANexperiment experimentType = SCANsatAltimetryHiRes } MODULE { name = ModuleCargoPart stackableQuantity = 1 packedVolume = -1 } } ================================================ FILE: GameData/SCANsat/Patches/CommunityCategoryKit.cfg ================================================ @CCKExtraFilterConfig { Item { name = SCANsat tag = scansat usedByMod = SCANsat normalIcon = SCANsat/Icons/SCANsat_CCK_Icon_N selectedIcon = SCANsat/Icons/SCANsat_CCK_Icon_S } } ================================================ FILE: GameData/SCANsat/Patches/CommunityResourcePack.cfg ================================================ @PART[SurfaceScanner|OrbitalScanner|scansat-resources*]:FOR[SCANsat]:NEEDS[CommunityResourcePack] { MODULE { name = SCANresourceDisplay ResourceName = MetallicOre } MODULE { name = SCANresourceDisplay ResourceName = Minerals } MODULE { name = SCANresourceDisplay ResourceName = Substrate } MODULE { name = SCANresourceDisplay ResourceName = Uraninite } MODULE { name = SCANresourceDisplay ResourceName = Water } MODULE { name = SCANresourceDisplay ResourceName = Hydrates } MODULE { name = SCANresourceDisplay ResourceName = Silicates } MODULE { name = SCANresourceDisplay ResourceName = Gypsum } MODULE { name = SCANresourceDisplay ResourceName = RareMetals } MODULE { name = SCANresourceDisplay ResourceName = ExoticMinerals } MODULE { name = SCANresourceDisplay ResourceName = Dirt } } ================================================ FILE: GameData/SCANsat/Patches/Launchpad.cfg ================================================ @PART[OMD|scansat-resources*|OrbitalScanner|SurfaceScanner]:FOR[SCANsat]:NEEDS[Launchpad] { MODULE { name = SCANresourceDisplay ResourceName = MetalOre } } ================================================ FILE: GameData/SCANsat/Patches/RasterPropMonitor.cfg ================================================ //These patches add additional functionality to the SCANsat pages in stock and ALCOR MFDs @PART[*]:HAS[@INTERNAL[*]]:FOR[SCANsat]:NEEDS[RasterPropMonitor] { MODULE { name = SCANRPMStorage } } @PROP[kOSTerminal]:FOR[SCANsat]:NEEDS[RasterPropMonitor,ASET] { @MODULE[RasterPropMonitor] { @PAGE[pALCORMapOrbit50x18] { @BACKGROUNDHANDLER[JSISCANsatRPM] { buttonHome = 4 buttonRight = 6 buttonR9 = 5 mapDivider = 2 resourceInterpolation = 4 } } @PAGE[pALCORMapLanding50x18] { @BACKGROUNDHANDLER[JSISCANsatRPM] { buttonHome = 4 buttonRight = 6 buttonR9 = 5 mapDivider = 2 resourceInterpolation = 4 } } } } ================================================ FILE: GameData/SCANsat/Patches/StockScanners.cfg ================================================ @PART[SurveyScanner]:FOR[SCANsat] { MODULE { name = ModuleSCANresourceScanner sensorType = 128 fov = 3 min_alt = 15000 max_alt = 7500000 best_alt = 500000 scanName = Resource Scan RESOURCE { name = ElectricCharge rate = 0.5 } } } @PART[OrbitalScanner]:FOR[SCANsat] { MODULE { name = ModuleSCANresourceScanner sensorType = 256 fov = 2 min_alt = 10000 max_alt = 500000 best_alt = 150000 scanName = Ore Scan RESOURCE { name = ElectricCharge rate = 2 } } MODULE { name = SCANresourceDisplay ResourceName = Ore } } @PART[SurfaceScanner]:FOR[SCANsat] { MODULE { name = SCANresourceDisplay ResourceName = Ore } } ================================================ FILE: GameData/SCANsat/Patches/Tags.cfg ================================================ @PART:HAS[@MODULE[ModuleSCANresourceScanner]&~tags[*scansat*]&~category[none]]:LAST[SCANsat] { &tags = @tags ^= :$: scansat: } @PART:HAS[@MODULE[SCANresourceDisplay]&~tags[*scansat*]&~category[none]]:LAST[SCANsat] { &tags = @tags ^= :$: scansat: } @PART:HAS[@MODULE[SCANsat]&~tags[*scansat*]&~category[none]]:LAST[SCANsat] { &tags = @tags ^= :$: scansat: } ================================================ FILE: GameData/SCANsat/Patches/WarpPlugin.cfg ================================================ // These resources are specific to WarpPlugin @PART[OrbitalScanner|scansat-resources*]:FOR[SCANsat]:NEEDS[WarpPlugin,CommunityResourcePack] { MODULE { name = SCANresourceDisplay ResourceName = Alumina } MODULE { name = SCANresourceDisplay ResourceName = Borate } MODULE { name = SCANresourceDisplay ResourceName = Monazite } MODULE { name = SCANresourceDisplay ResourceName = SaltWater } MODULE { name = SCANresourceDisplay ResourceName = SolarWind } } ================================================ FILE: GameData/SCANsat/Resources/Contracts/ContractPackScanSatOfficial.cfg ================================================ CONTRACT_GROUP { // Name of the contract group name = ScanSatOfficial displayName = ScanSat Official agent = #autoLOC_SCANsat_Agents_Name minVersion = 1.15.0 maxSimultaneous = 10 DATA { type = List requiredValue = false homeBodies = AllBodies().Where(cb => ((cb.IsHomeWorld() || cb.Parent().IsHomeWorld()) && cb.HasSurface())) nonHomeBodies = AllBodies().Where(cb => cb.HasSurface() && cb != HomeWorld() && cb.Parent() != HomeWorld()) p2Bodies = OrbitedBodies().Where(cb => cb.HasSurface()) p3Bodies = ReachedBodies().Where(cb => cb.HasSurface() && cb != HomeWorld() && cb.Parent() != HomeWorld()) p4Bodies = NextUnreachedBodies(2).Where(cb => (cb.HasSurface() && cb != HomeWorld() && cb.Parent() != HomeWorld())) } } ================================================ FILE: GameData/SCANsat/Resources/Contracts/Exceptional.cfg ================================================ CONTRACT_TYPE { name = SCAN_Exceptional title = #autoLOC_SCANsat_exceptional0001 genericTitle = #autoLOC_SCANsat_exceptional0002 group = ScanSatOfficial topic = Science subject = Kerbal agent = #autoLOC_SCANsat_Agents_Name notes = #autoLOC_SCANsat_exceptional0003 synopsis = #autoLOC_SCANsat_exceptional0004 completedMessage = #autoLOC_SCANsat_exceptional0005 minExpiry = 1 maxExpiry = 7 deadline = Random(300, 500) * @/targetBodyValid3.Multiplier() cancellable = true declinable = true autoAccept = false targetBody = @/targetBodyValid3 // Contract rewards rewardScience = 0 rewardReputation = 1 rewardFunds = Random(60000, 80000.0) failureReputation = 1 failureFunds = Random(1000, 10000.0) advanceFunds = Random(10000, 20000.0) prestige = Exceptional DATA_EXPAND { type = CelestialBody targetBody3 = @ScanSatOfficial:nonHomeBodies } DATA { type = CelestialBody requiredValue = true uniquenessCheck = CONTRACT_ALL targetBodyValid3 = @/targetBody3 } DATA { type = List requiredValue = false targetBodyList3 = @ScanSatOfficial:p3Bodies targetBodyList4 = @ScanSatOfficial:p4Bodies } PARAMETER { name = SCANsatCoverage_1 type = SCANsatCoverage targetBody = @/targetBodyValid3 coverage = 95 scanType = AltimetryHiRes } PARAMETER { name = SCANsatCoverage_2 type = SCANsatCoverage targetBody = @/targetBodyValid3 coverage = 95 scanType = ResourceHiRes } PARAMETER { name = SCANsatCoverage_3 type = SCANsatCoverage targetBody = @/targetBodyValid3 coverage = 95 scanType = VisualHiRes } REQUIREMENT { name = AnyCoverage type = Any REQUIREMENT { name = SCANsatCoverage_1 type = SCANsatCoverage targetBody = @/targetBodyValid3 minCoverage = 0.0 maxCoverage = 90 scanType = AltimetryHiRes title = #autoLOC_SCANsat_exceptional0006 } REQUIREMENT { name = SCANsatCoverage_2 type = SCANsatCoverage targetBody = @/targetBodyValid3 minCoverage = 0.0 maxCoverage = 90 scanType = ResourceHiRes title = #autoLOC_SCANsat_exceptional0007 } REQUIREMENT { name = SCANsatCoverage_3 type = SCANsatCoverage targetBody = @/targetBodyValid3 minCoverage = 0.0 maxCoverage = 90 scanType = VisualHiRes title = #autoLOC_SCANsat_exceptional0009 } } REQUIREMENT { name = Expression_1 type = Expression title = #autoLOC_SCANsat_exceptional0008 expression = (@/targetBodyList3.Contains(@/targetBodyValid3) || @/targetBodyList4.Contains(@/targetBodyValid3)) == true } REQUIREMENT { name = Orbit type = Orbit targetBody = HomeWorld() } REQUIREMENT { name = PartUnlocked_1 type = PartUnlocked part = scansat-sar-paz-1 } REQUIREMENT { name = PartUnlocked_2 type = PartUnlocked part = scansat-resources-crism-1 } REQUIREMENT { name = PartUnlocked_3 type = PartUnlocked part = scansat-recon-ikonos-1 } } ================================================ FILE: GameData/SCANsat/Resources/Contracts/Significant.cfg ================================================ CONTRACT_TYPE { name = SCAN_Significant title = #autoLOC_SCANsat_significant_0001 genericTitle = #autoLOC_SCANsat_significant_0002 group = ScanSatOfficial topic = Science subject = Kerbal agent = #autoLOC_SCANsat_Agents_Name notes = #autoLOC_SCANsat_significant_0003 synopsis = #autoLOC_SCANsat_significant_0004 completedMessage = #autoLOC_SCANsat_significant_0005 minExpiry = 1 maxExpiry = 7 deadline = Random(300, 500) * @/targetBodyValid2.Multiplier() cancellable = true declinable = true autoAccept = false targetBody = @/targetBodyValid2 // Contract rewards rewardScience = 0 rewardReputation = 1 rewardFunds = Random(50000, 70000.0) failureReputation = 1 failureFunds = Random(1000, 10000.0) advanceFunds = Random(5000, 15000.0) prestige = Significant DATA_EXPAND { type = CelestialBody targetBody2 = @ScanSatOfficial:nonHomeBodies } DATA { type = CelestialBody requiredValue = true uniquenessCheck = CONTRACT_ALL targetBodyValid2 = @/targetBody2 } DATA { type = List requiredValue = false targetBodyList2 = @ScanSatOfficial:p2Bodies } PARAMETER { name = SCANsatCoverage_1 type = SCANsatCoverage targetBody = @/targetBodyValid2 coverage = 85 scanType = AltimetryLoRes } PARAMETER { name = SCANsatCoverage_2 type = SCANsatCoverage targetBody = @/targetBodyValid2 coverage = 85 scanType = VisualLoRes } PARAMETER { name = SCANsatCoverage_3 type = SCANsatCoverage targetBody = @/targetBodyValid2 coverage = 85 scanType = ResourceLoRes } REQUIREMENT { name = AnyCoverage type = Any REQUIREMENT { name = SCANsatCoverage_1 type = SCANsatCoverage targetBody = @/targetBodyValid2 minCoverage = 0.0 maxCoverage = 80 scanType = AltimetryLoRes title = #autoLOC_SCANsat_significant_0006 } REQUIREMENT { name = SCANsatCoverage_2 type = SCANsatCoverage targetBody = @/targetBodyValid2 minCoverage = 0.0 maxCoverage = 80 scanType = VisualLoRes title = #autoLOC_SCANsat_significant_0007 } REQUIREMENT { name = SCANsatCoverage_3 type = SCANsatCoverage targetBody = @/targetBodyValid2 minCoverage = 0.0 maxCoverage = 80 scanType = ResourceLoRes title = #autoLOC_SCANsat_significant_0008 } } REQUIREMENT { name = Expression_1 type = Expression title = #autoLOC_SCANsat_significant_0009 expression = @/targetBodyList2.Contains(@/targetBodyValid2) == true } REQUIREMENT { name = Orbit type = Orbit targetBody = HomeWorld() } REQUIREMENT { name = PartUnlocked_1 type = PartUnlocked part = scansat-radar-poseidon-3b-1 } REQUIREMENT { name = PartUnlocked_2 type = PartUnlocked part = scansat-multi-modis-1 } REQUIREMENT { name = PartUnlocked_3 type = PartUnlocked part = scansat-multi-abi-1 } } ================================================ FILE: GameData/SCANsat/Resources/Contracts/Trivial.cfg ================================================ CONTRACT_TYPE { name = SCAN_Trivial title = #autoLOC_SCANsat_trivial_0001 genericTitle = #autoLOC_SCANsat_trivial_0002 group = ScanSatOfficial topic = Science subject = Kerbal agent = #autoLOC_SCANsat_Agents_Name notes = #autoLOC_SCANsat_trivial_0003 synopsis = #autoLOC_SCANsat_trivial_0004 completedMessage = #autoLOC_SCANsat_trivial_0005 minExpiry = 1 maxExpiry = 7 deadline = Random(300, 500) * @/targetBodyValid1.Multiplier() cancellable = true declinable = true autoAccept = false targetBody = @/targetBodyValid1 // Contract rewards rewardScience = 0 rewardReputation = 1 rewardFunds = Random(40000, 60000.0) failureReputation = 1 failureFunds = Random(1000, 10000.0) advanceFunds = Random(2000, 10000.0) prestige = Trivial DATA_EXPAND { type = CelestialBody targetBody1 = @ScanSatOfficial:homeBodies } DATA_EXPAND { type = string scanString1 = [ "AltimetryLoRes", "Biome", "AltimetryHiRes", "ResourceLoRes", "ResourceHiRes","VisualHiRes" ] } DATA { type = string uniquenessCheck = CONTRACT_ALL scanReadString1 = @/scanString1 == "AltimetryLoRes" ? "a Low Resolution Altimetry" : @/scanString1 == "Biome" ? "a Multispectral" : @/scanString1 == "AltimetryHiRes" ? "a High Resolution Altimetry" : @/scanString1 == "ResourceLoRes" ? "a Low Resolution Resource" : @/scanString1 == "ResourceHiRes" ? "a High Resolution Resource" : "a High Resolution Visual" } DATA { type = CelestialBody requiredValue = true title = #autoLOC_SCANsat_trivial_0006 uniquenessCheck = CONTRACT_ALL targetBodyValid1 = @/targetBody1 } PARAMETER { name = SCANsatCoverage type = SCANsatCoverage targetBody = @/targetBodyValid1 coverage = 75 scanType = @/scanString1 } REQUIREMENT { name = SCANsatCoverage type = SCANsatCoverage targetBody = @/targetBodyValid1 minCoverage = 0.0 maxCoverage = 70 scanType = @/scanString1 title = #autoLOC_SCANsat_trivial_0007 } REQUIREMENT { name = Orbit type = Orbit targetBody = HomeWorld() } REQUIREMENT { name = PartUnlocked type = PartUnlocked part = @/scanString1 == "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 == "ResourceHiRes" ? scansat-resources-crism-1 : scansat-recon-ikonos-1 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/de/Contracts.cfg ================================================ Localization { de-de { // *** Exceptional *** #autoLOC_SCANsat_exceptional0001 = Do a group of high resolution SCANsat surveys of @/targetBodyValid3. #autoLOC_SCANsat_exceptional0002 = Do a group of high resolution SCANsat surveys of @/targetBodyValid3. #autoLOC_SCANsat_exceptional0003 = Scanning can take place while the vessel is not loaded. #autoLOC_SCANsat_exceptional0004 = Perform several high resolution scans of @/targetBodyValid3 #autoLOC_SCANsat_exceptional0005 = We now have a detailed map and survey for the surface of @/targetBodyValid3 #autoLOC_SCANsat_exceptional0006 = Must have less than a 90% high resolution altimetry scan of the target body. #autoLOC_SCANsat_exceptional0007 = Must have less than a 90% ore scan of the target body. #autoLOC_SCANsat_exceptional0008 = Must have orbited the target body, or the target body must be next on the list. // *** Significant *** #autoLOC_SCANsat_significant_0001 = Do a group of SCANsat surveys of @/targetBodyValid2. #autoLOC_SCANsat_significant_0002 = Do a group of SCANsat surveys of @/targetBodyValid2. #autoLOC_SCANsat_significant_0003 = Scanning can take place while the vessel is not loaded. #autoLOC_SCANsat_significant_0004 = Perform several scans of @/targetBodyValid2 #autoLOC_SCANsat_significant_0005 = Excellent work, these scans will provide much valuable data for our survey teams. #autoLOC_SCANsat_significant_0006 = Must have less than an 80% low resolution altimetry scan of the target body. #autoLOC_SCANsat_significant_0007 = Must have less than an 80% biome scan of the target body. #autoLOC_SCANsat_significant_0008 = Must have less than an 80% M700 resources scan of the target body. #autoLOC_SCANsat_significant_0009 = Must have orbited the target body. // *** Trivial *** #autoLOC_SCANsat_trivial_0001 = Conduct @/scanReadString1 SCANsat survey of @/targetBodyValid1. #autoLOC_SCANsat_trivial_0002 = Conduct @/scanReadString1 SCANsat survey of @/targetBodyValid1. #autoLOC_SCANsat_trivial_0003 = Scanning can take place while the vessel is not loaded. #autoLOC_SCANsat_trivial_0004 = Perform a simple scan of @/targetBodyValid1 #autoLOC_SCANsat_trivial_0005 = Excellent work, this simple survey will give our experts much to study. #autoLOC_SCANsat_trivial_0006 = Target is part of home system. #autoLOC_SCANsat_trivial_0007 = Must have scanned less than 70% of the target body. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/de/Flags.cfg ================================================ Localization { de-de { #autoLOC_SCANsat_Agents_Name = SCAN #autoLOC_SCANsat_Agents_Title = SCAN: Scientific Committee on Advanced Navigation #autoLOC_SCANsat_Agents_Description = The SCAN agency is dedicated to mapping and surveying every planet in the solar system. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/de/Helptips.cfg ================================================ Localization { de-de { #autoLOC_SCANsat_settingsHelpScanningToggle = Gesamtes SCANsat-Scanning umschalten. #autoLOC_SCANsat_settingsHelpBackground = Hintergrund-Scanning auf gewählten\nHimmelskörpern umschalten. #autoLOC_SCANsat_settingsHelpTimeWarp = 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. #autoLOC_SCANsat_settingsHelpGroundTracks = Zeigt in der Kartenansicht den Scan-Bereich. #autoLOC_SCANsat_settingsHelpGroundTracksActive = Der Scan-Bereich kann nur auf das\nAktive Vehikel oder alle angewandt werden. #autoLOC_SCANsat_settingsHelpStockUIStyle = Schaltet das UI zwischen\nStandard-KSP-Style und Unity-Style um. #autoLOC_SCANsat_settingsHelpOverlayTooltips = Zeigt Tooltips zur Mausposition auf der Overlay-Karte an.\nDiese Tooltips beinhalten Cursor-Koordinaten, Geländehöhe, Geländeneigung, Biomname und Ressourcen-Verfügbarkeit. #autoLOC_SCANsat_settingsHelpWindowTooltips = Zeigt Tooltips zu Fensterkarten-Buttons an.\nDiese dienen hauptsächlich dem Identifizieren von Buttons mit Icons. #autoLOC_SCANsat_settingsHelpLegendTooltips = Zeigt Tooltips zur Kartenlegende.\nAusschalten deaktiviert ebenso die Biomkartenlegende. #autoLOC_SCANsat_settingsHelpStockToolbar = Nutze die Standard-Toolbar.\nKann gleichzeitig mit Blizzy78's Toolbar angewandt werden. #autoLOC_SCANsat_settingsHelpToolbarMenu = Nutze ein Pop-Out-Menü, an Stelle der Standard-Toolbar um alle verfügbaren Fenster an zu zeigen. #autoLOC_SCANsat_settingsHelpMechJeb = Die SCANsat Zoom-Karte nutzen, um Wegpunkte zu wählen und MechJeb-Landeplätze aus zu suchen. #autoLOC_SCANsat_settingsHelpMechJebLoad = Lädt einen gespeicherten MechJeb-Landeplatz.\nDies funktioniert nur in aktiven Vehikeln mit einem gültigen MechJeb-Modul. #autoLOC_SCANsat_settingsHelpMapGenSpeed = Einstellung der Kartengenerierungsgeschwindigkeit aller SCANsat-Karten.\nNiedrigere Werte reduzieren CPU-Auslastung und möglicherweise Leistungseinbrüche beim Generieren von Karten. #autoLOC_SCANsat_settingsHelpResetWindows = Zurücksetzen aller Fensterpositionen und deren Skalierung.\nNutze dies, falls etwaige Fenster aus dem sichtbaren Bereich verschoben wurden oder gänzlich fehlen. #autoLOC_SCANsat_settingsHelpResetPlanetData = 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! #autoLOC_SCANsat_settingsHelpResetAllData = 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! #autoLOC_SCANsat_settingsHelpVesselsSensorsPasses = 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. #autoLOC_SCANsat_settingsHelpGreyScale = 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. #autoLOC_SCANsat_settingsHelpExportCSV = 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. #autoLOC_SCANsat_settingsHelpSetMapWidth = 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. #autoLOC_SCANsat_settingsHelpWindowScale = Stellt alle SCANsat Fensterskalierungen ein. #autoLOC_SCANsat_settingsHelpFillPlanet = Füllt die gewälten SCANsat-Daten des momentan Himmelskörpers auf. #autoLOC_SCANsat_settingsHelpFillAll = Füllt die gewälten SCANsat-Daten ALLER Himmelskörpers auf. #autoLOC_SCANsat_resourceSettingsHelpBiomeLock = Umgeht die Notwendigkeit vorhergehender Standard-Oberflächen-Biom-Scans.\nDie SCANsat-Anzeigen werden die Ressourcen mit voller Präzision anzeigen, ohne vorhergehende Biom-Scans. #autoLOC_SCANsat_resourceSettingsHelpInstant = 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. #autoLOC_SCANsat_resourceSettingsHelpNarrowBand = 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. #autoLOC_SCANsat_resourceSettingsHelpDisableStock = 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. #autoLOC_SCANsat_resourceSettingsHelpResetStockResource = 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! #autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource = 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! #autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation = Ä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. #autoLOC_SCANsat_resourceSettingsHelpOverlayHeight = Ä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. #autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight = Ä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. #autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency = Generiert einen grauen Hintergrund für die planetare Resourcen-Overlay-Karte\nWird verwendet um Bereiche zu verdeutlichen, welche gescannt \nwurden, jedoch keine Resourcen enthalten. #autoLOC_SCANsat_resourceSettingsHelpScanThreshold = 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. #autoLOC_SCANsat_colorTerrainHelpMin = Definiert die untere Höhenbegrenzung der Geländefarbpalette.\nAlles unterhalb dieser Höhe wird mit dem niedrigsten Farbwert dargestellt. #autoLOC_SCANsat_colorTerrainHelpMax = Definiert die obere Höhenbegrenzung der Geländefarbpalette.\nAlles oberhalb dieser Höhe wird mit dem höchsten Farbwert dargestellt. #autoLOC_SCANsat_colorTerrainHelpClampToggle = 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. #autoLOC_SCANsat_colorTerrainHelpClamp = 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. #autoLOC_SCANsat_colorTerrainHelpReverse = Invertiert die Reihenfolge der\nmomentan gewählten Palette. #autoLOC_SCANsat_colorTerrainHelpDiscrete = Zeichnet die Karte nur an Hand der Farben der gewählten Palette,\nohne diese weich zu interpolieren. #autoLOC_SCANsat_colorTerrainHelpPaletteSize = Ändert die Anzahl an Farben,\nin der momentan gewählten Palette. #autoLOC_SCANsat_colorBiomeHelpStock = Nutze das Standardfarbschema auf\nSCANsat-Biomkarten. #autoLOC_SCANsat_colorBiomeHelpWhiteBorder = Zeichnet eine weiße Grenzlinie zwischen den Biomen.\nDies gilt jedoch nicht für die planetare Overlay-Biomkarte. #autoLOC_SCANsat_colorBiomeHelpTransparency = Ä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. #autoLOC_SCANsat_colorPickerHelpLow = Der obere Farbraum zeigt die aktualisierte Auswahl an Farben des unteren Farbspektrums an.\nDer untere Farbraum zeigt die momentan aktive Farbe. #autoLOC_SCANsat_colorPickerHelpHigh = Der obere Farbraum zeigt die aktualisierte Auswahl an Farben des oberen Farbspektrums an.\nDer untere Farbraum zeigt die momentan aktive Farbe. #autoLOC_SCANsat_colorResourceHelpMin = 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. #autoLOC_SCANsat_colorResourceHelpMax = 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. #autoLOC_SCANsat_colorResourceHelpTransparency = 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. #autoLOC_SCANsat_colorResourceHelpApply = Bestätigt die eingegebenen Werte nur für den momentan gewählten Himmelskörper. #autoLOC_SCANsat_colorResourceHelpApplyAll = Bestätigt die eingegebenen Werte der gewählten Resource für alle Himmelskörper. #autoLOC_SCANsat_colorResourceHelpDefault = Setzt nur ausgewählte Resourcen und Himmelskörper auf Standardwerte zurück. #autoLOC_SCANsat_colorResourceHelpDefaultAll = Setzt ausgewählte Resourcen auf ALLEN Himmelskörpern zurück. #autoLOC_SCANsat_colorHelpSaveToConfig = 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. #autoLOC_SCANsat_colorSlopeHelpCutoff = Ändert den Grenzwert zwischen den beiden ausgewählten Farbpaaren für Geländeneigung. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/de/OtherText.cfg ================================================ Localization { de-de { #autoLOC_SCANsat_Analyze = Daten Analysieren #autoLOC_SCANsat_StartScan = Scan Starten #autoLOC_SCANsat_StopScan = Scan Stoppen #autoLOC_SCANsat_ToggleScan = Scan Ein/Aus #autoLOC_SCANsat_Extend = Ausfahren #autoLOC_SCANsat_Retract = Einfahren #autoLOC_SCANsat_Unknown = Unbekannt #autoLOC_SCANsat_All_Disabled = Alle Scans Deaktiviert #autoLOC_SCANsat_Disabled = Scans Deaktiviert #autoLOC_SCANsat_TooLow = Zu Niedrig #autoLOC_SCANsat_SubOptimal = Sub-Optimal #autoLOC_SCANsat_Ideal = Ideal #autoLOC_SCANsat_TooHigh = Zu Hoch #autoLOC_SCANsat_NoData = Keine Daten #autoLOC_SCANsat_Abundance = Ausbeute #autoLOC_SCANsat_Surface = Oberfläche #autoLOC_SCANsat_AltitudeMin = Höhe (min): <<1>>km\n #autoLOC_SCANsat_AltitudeBest = Höhe (ideal): <<1>>km\n #autoLOC_SCANsat_AltitudeMax = Höhe (max): <<1>>km\n #autoLOC_SCANsat_FOV = Sichtwinkel: <<1>> #autoLOC_SCANsat_MapProjection = Projektion #autoLOC_SCANsat_MapType = Kertentyp #autoLOC_SCANsat_MapResource = Ressource #autoLOC_SCANsat_MapBody = Himmelskörper #autoLOC_SCANsat_GeneralSettings = Allgemeine Einstellungen #autoLOC_SCANsat_BackgroundSettings = Hintergrund-Einstellungen #autoLOC_SCANsat_ResourceSettings = Ressourcen-Einstellungen #autoLOC_SCANsat_DataManagement = Daten-Management #autoLOC_SCANsat_ColorManagement = Farb-Management } } ================================================ FILE: GameData/SCANsat/Resources/Localization/de/Parts.cfg ================================================ Localization { de-de { #autoLOC_SCANsat_BTDT_Title = SCAN Been There Done That® #autoLOC_SCANsat_BTDT_Description = 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. #autoLOC_SCANsat_Multi_Title = SCAN Multispectral Sensor #autoLOC_SCANsat_Multi_Description = 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. #autoLOC_SCANsat_Radar_Title = SCAN RADAR Altimetry Sensor #autoLOC_SCANsat_Radar_Description = 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. #autoLOC_SCANsat_SAR_Title = SCAN SCAN SAR Altimetry Sensor #autoLOC_SCANsat_SAR_Description = 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. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/de/Science.cfg ================================================ Localization { de-de { #autoLOC_SCANsat_Science_Lo_Title = Altimetrie-Scan mir geringer Auflösung #autoLOC_SCANsat_Science_Lo_Default1 = Niedrigauflösende Altimetrie-Daten analysiert. #autoLOC_SCANsat_Science_Lo_Default2 = "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!" #autoLOC_SCANsat_Science_Lo_Sun = Du wunderst Dich, ob der Sensor möglicherweise eine Fehlfunktion hat. #autoLOC_SCANsat_Science_Lo_Moho = Nun, wenigstens lassen diese niedrig auflösenden Daten Moho halbwegs cool aussehen. Nicht gerade gigantische Lavaseen, aber trotzdem irgendwie cool. #autoLOC_SCANsat_Science_Lo_Eve = 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.) #autoLOC_SCANsat_Science_Lo_Gilly = 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. #autoLOC_SCANsat_Science_Lo_Kerbin = 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. #autoLOC_SCANsat_Science_Lo_Mun = 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. #autoLOC_SCANsat_Science_Lo_Minmus = 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. #autoLOC_SCANsat_Science_Lo_Duna = 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. #autoLOC_SCANsat_Science_Lo_Ike = 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. #autoLOC_SCANsat_Science_Lo_Dres = 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!" #autoLOC_SCANsat_Science_Lo_Jool = Altimetrie, welche Altimetrie? Es ist ein Gasriese, Kerbalskinder! Lasst uns einfach irgendeine zufällige nummer auswählen und es gut sein lassen. #autoLOC_SCANsat_Science_Lo_Laythe = Der Sensor scheint nicht in der Lage zu sein das Wasser zu penetrieren. #autoLOC_SCANsat_Science_Lo_Vall = 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. #autoLOC_SCANsat_Science_Lo_Tylo = 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. #autoLOC_SCANsat_Science_Lo_Bop = 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. #autoLOC_SCANsat_Science_Lo_Pol = 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. #autoLOC_SCANsat_Science_Lo_Eeloo = Die Wissenschaftler auf Kerbin haben lange Zeit auf diese Daten gewartet. Zweifelsohne wird es jede Menge Partys und Kekse für alle geben. #autoLOC_SCANsat_Science_Hi_Title = Hochauflösender Altimetrie-Scan #autoLOC_SCANsat_Science_Hi_Default1 = Hochauflösende Altimetriedaten analysiert. #autoLOC_SCANsat_Science_Hi_Default2 = "Der Hochauflösende Altimetrie-Scan ist definitiv besser als der niedrigauflösende. SCAN hat wieder einmal seine Scan-Künste unter Beweis gestellt." #autoLOC_SCANsat_Science_Hi_Sun = Dir wird klar, daß Du einen Haufen Geld hättest sparen können, wenn Du dem niedrig auflösenden Scanner vertraut hättest. #autoLOC_SCANsat_Science_Hi_Moho = 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! #autoLOC_SCANsat_Science_Hi_Eve = 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. #autoLOC_SCANsat_Science_Hi_Gilly = Gilly erscheint selbst in hoher Auflösung irgendwie mit geringer Auflösung. Dies ist eine ernsthaft deformierte Oberfläche. #autoLOC_SCANsat_Science_Hi_Kerbin = 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. #autoLOC_SCANsat_Science_Hi_Mun = "Ha! Kein langweilig grauer Mond mehr. Seht Euch einfach all die bunten Farben des Scans an! Nun können wir wirklich einen Hauptlandeplatz bestimmen. #autoLOC_SCANsat_Science_Hi_Minmus = Wow, Minmus ist nicht nur echt, er hat eine recht aufregende Topographie! Du kannst es kaum erwarten in einer der flachen Gebiete zu landen. #autoLOC_SCANsat_Science_Hi_Duna = Diese hochauflösenden Daten sind atemberaubend. Du beginnst damit, die Hügel und Täler zu analysieren, ausschau haltend nach einem guten Landeplatz. #autoLOC_SCANsat_Science_Hi_Ike = 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. #autoLOC_SCANsat_Science_Hi_Dres = Dies... sind einige wirklich ernst zu nehmende Gebirge. Du bist froh darüber diese Daten zu analysieren, an Stelle einen dieser Berge zu erklimmen. #autoLOC_SCANsat_Science_Hi_Jool = Jool scheint trotz hochauflösendem Scan keine Oberfläche zu haben. Soviel zu dieser Theorie. Wenigstens haben wir noch die Zuschussgelder. #autoLOC_SCANsat_Science_Hi_Laythe = Die Karte zeigt hauptsächlich negative höhenangaben. Du ziehst es in Betracht Laythe trocken zu legen, um seine Gebirge erklimmen zu können. #autoLOC_SCANsat_Science_Hi_Vall = 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. #autoLOC_SCANsat_Science_Hi_Tylo = 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. #autoLOC_SCANsat_Science_Hi_Bop = 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. #autoLOC_SCANsat_Science_Hi_Pol = 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? #autoLOC_SCANsat_Science_Hi_Eeloo = 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! #autoLOC_SCANsat_Science_Multi_Title = Multispektrale Analyse #autoLOC_SCANsat_Science_Multi_Default1 = Multispektrale Sensordaten analysiert. #autoLOC_SCANsat_Science_Multi_Default2 = "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!" #autoLOC_SCANsat_Science_Multi_Sun1 = Das abhandensein biometrischer Daten überrascht Dich. #autoLOC_SCANsat_Science_Multi_Sun2 = Du wunderst Dich, warum keine Pole auf der Biomkarte sichbar sind. #autoLOC_SCANsat_Science_Multi_Moho = Beim Grübeln über die Daten wunderst Du Dich, ob das schwer erfassbare und Sagenumwobene Lavaseebiom auffindbar ist. #autoLOC_SCANsat_Science_Multi_Eve = 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! #autoLOC_SCANsat_Science_Multi_Gilly = 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. #autoLOC_SCANsat_Science_Multi_Kerbin = 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. #autoLOC_SCANsat_Science_Multi_Mun = 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. #autoLOC_SCANsat_Science_Multi_Minmus = 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. #autoLOC_SCANsat_Science_Multi_Duna = 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... #autoLOC_SCANsat_Science_Multi_Ike = 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. #autoLOC_SCANsat_Science_Multi_Dres = 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. #autoLOC_SCANsat_Science_Multi_Jool1 = Das Abhandensein biometrischer Daten überrascht Dich. #autoLOC_SCANsat_Science_Multi_Jool2 = Du wunderst Dich, warum auf der Biomkarte keine Pole zu sehen sind. #autoLOC_SCANsat_Science_Multi_Laythe = Du möchtest jedes mal, wenn der Biom-Scanner eine Landmasse entdeckt, eine kleine Party feiern. #autoLOC_SCANsat_Science_Multi_Vall = Recht eindeutige Daten: Pole, Hochland, Mittelebene und Tiefebene. Mal was anderes. Nun lasset uns Kekse verspeisen! #autoLOC_SCANsat_Science_Multi_Tylo = 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. #autoLOC_SCANsat_Science_Multi_Bop = 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! #autoLOC_SCANsat_Science_Multi_Pol = 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. #autoLOC_SCANsat_Science_Multi_Eeloo = 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. #autoLOC_SCANsat_Science_Resource_Title = Resourcen-Scan #autoLOC_SCANsat_Science_Resource_Default1 = Niederauflösende Ressourcen-Daten analysiert. #autoLOC_SCANsat_Science_Resource_Default2 = "Wir empfangen nun Resourcen-Daten; diese Informationen sehen deutlich besser aus als die von den Vorgängern..." #autoLOC_SCANsat_Science_Resource_Sun = Die Sonne mag möglicherweise nicht der idealste Ort sein, um nach Ressourcen zu scannen. #autoLOC_SCANsat_Science_Resource_Moho = 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. #autoLOC_SCANsat_Science_Resource_Eve = 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. #autoLOC_SCANsat_Science_Resource_Gilly = Die ersten Ressourcen-Scans von Gilly sehen interessant aus; es ist beinahe wie Asteroidenbergbau. #autoLOC_SCANsat_Science_Resource_Kerbin = 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. #autoLOC_SCANsat_Science_Resource_Mun = Diese Ressourcen-Daten geben uns den ersten guten Blick darauf, wie brauchbar der Mond für Bergbauzwecke sein könnte. #autoLOC_SCANsat_Science_Resource_Minmus = Endlich haben wir ein paar Resourcen-Daten über Minmus, eines jeden Kerbonauten erste Wahl in Sachen Bergbau. #autoLOC_SCANsat_Science_Resource_Duna = This resource data brings us one step closer to reliving all of our favorite lines from that recent hit Kerbal movie. #autoLOC_SCANsat_Science_Resource_Ike = Ike mag zwar nicht gerade der Interessanteste aller planetarer Kandidaten sein, das macht die Ressourcen-Daten allerdings nicht weniger brauchbar. #autoLOC_SCANsat_Science_Resource_Dres = Wir könnten genau so gut einige der näheren Asteroiden auf Ressourcen untersuchen; wer würde sich schon gerne mit Dres abgeben. #autoLOC_SCANsat_Science_Resource_Jool = Hmm, vielleicht ist ja ein Gasriese nicht gerade der idealste Ort um nach Ressourcen zu suchen. #autoLOC_SCANsat_Science_Resource_Laythe = 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. #autoLOC_SCANsat_Science_Resource_Vall = Ressourcen-Scans vom eisigen Vall ergeben jede Menge guter Daten. #autoLOC_SCANsat_Science_Resource_Tylo = Wir wollen beim unheimlich aussehenden Tylo nicht unsere Nase rümpfen, wir nehmen alle Ressourcen-Daten die wir kriegen können. #autoLOC_SCANsat_Science_Resource_Bop = 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. #autoLOC_SCANsat_Science_Resource_Pol = Zusätzlich zu Pollen und klumpigen Dingen scheint Pol einige recht interessante Ressourcen zu enthalten. #autoLOC_SCANsat_Science_Resource_Eeloo = 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. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/de/Tooltips.cfg ================================================ Localization { de-de { #autoLOC_SCANsat_mainMapToggle = Karte #autoLOC_SCANsat_bigMapToggle = Große Karte #autoLOC_SCANsat_zoomMapToggle = Zoom Karte #autoLOC_SCANsat_overlayToggle = Planetares Overlay #autoLOC_SCANsat_instrumentsToggle = Instrumentenanzeige #autoLOC_SCANsat_settingsToggle = Einstellungen #autoLOC_SCANsat_mainMapColor = Kartenfarbe #autoLOC_SCANsat_mainMapTerminator = Tag/Nacht Terminator #autoLOC_SCANsat_mainMapType = Umschalten Gelände/Biom #autoLOC_SCANsat_mainMapMinimize = Ein-/Ausblenden Fahrzeuginfo #autoLOC_SCANsat_mainMapStatus = Scanner-Statusanzeige #autoLOC_SCANsat_mainMapPercentage = Vollständigkeit des aktuellen Scans #autoLOC_SCANsat_bigMapRefresh = Karte Auffrischen #autoLOC_SCANsat_bigMapColor = Kartenfarbe #autoLOC_SCANsat_bigMapTerminator = Tag/Nacht Terminator #autoLOC_SCANsat_bigMapGrid = Gitternetz Overlay #autoLOC_SCANsat_bigMapOrbit = Orbit Overlay #autoLOC_SCANsat_bigMapWaypoints = Wegpunkte #autoLOC_SCANsat_bigMapAnomaly = Anomalien #autoLOC_SCANsat_bigMapFlags = Flaggen #autoLOC_SCANsat_bigMapLegend = Kartenlegende #autoLOC_SCANsat_bigMapResource = Resourcen-Overlay #autoLOC_SCANsat_bigMapExport = Karte auf Festplatte exportieren #autoLOC_SCANsat_overlayRefresh = Karte Auffrischen #autoLOC_SCANsat_insNextResource = Nächste Resource #autoLOC_SCANsat_insPreviousResource = Vorherige Resource #autoLOC_SCANsat_zoomVesselSync = Auf Vehikel Synchronisieren #autoLOC_SCANsat_zoomVesselLock = Position auf Vehikel Einrasten #autoLOC_SCANsat_zoomMapRefresh = Karte Auffrischen #autoLOC_SCANsat_zoomMapWindowState = Fenstergröße Umschalten #autoLOC_SCANsat_zoomMapIn = Vergrößern #autoLOC_SCANsat_zoomMapOut = Verkleinern #autoLOC_SCANsat_zoomMapLeft = Nach Links Verschieben #autoLOC_SCANsat_zoomMapRight = Nach Rechts Verschieben #autoLOC_SCANsat_zoomMapUp = Nach Oben Verschieben #autoLOC_SCANsat_zoomMapDown = Nach Unten Verschieben #autoLOC_SCANsat_zoomMapIcons = Karten-Icons #autoLOC_SCANsat_waypointToggle = Wegpunkt Auswählen #autoLOC_SCANsat_waypointSet = Wegpunkt Erstellen #autoLOC_SCANsat_waypointCancel = Wegpunkt Abbrechen #autoLOC_SCANsat_waypointMechJeb = MechJeb Landezieleingabe #autoLOC_SCANsat_waypointNameRefresh = Wegpunkt Zurücksetzen } } ================================================ FILE: GameData/SCANsat/Resources/Localization/de/Warnings.cfg ================================================ Localization { de-de { #autoLOC_SCANsat_Warning_DataResetCurrent = Lösche die <<1>>-Karte von <<2>>? #autoLOC_SCANsat_Warning_DataResetAll = Lösche <<1>> von ALLEN Himmelskörpern? #autoLOC_SCANsat_Warning_StockResourceResetCurrent = Lösche Standard-Ressourcen-Daten von <<1>>? #autoLOC_SCANsat_Warning_StockResourceResetAll = Lösche Standard-Ressourcen-Daten ALLER Himmelskörper? #autoLOC_SCANsat_Warning_MapFillCurrent = Fülle die <<1>>-Karte von <<2>> auf? #autoLOC_SCANsat_Warning_MapFillAll = Fülle die <<1>>-Karte aller Himmelskörper auf? #autoLOC_SCANsat_Warning_ModuleManagerResource = Warnung!\nModule Manager wird für SCANsat-Funktionalität benötigt. #autoLOC_SCANsat_Warning_SaveToConfig = Bereits existierende Datei überschreiben? } } ================================================ FILE: GameData/SCANsat/Resources/Localization/en-us/Contracts.cfg ================================================ Localization { en-us { // *** Exceptional *** #autoLOC_SCANsat_exceptional0001 = Do a group of high resolution SCANsat surveys of @/targetBodyValid3. #autoLOC_SCANsat_exceptional0002 = Do a group of high resolution SCANsat surveys of @/targetBodyValid3. #autoLOC_SCANsat_exceptional0003 = Scanning can take place while the vessel is not loaded. #autoLOC_SCANsat_exceptional0004 = Perform several high resolution scans of @/targetBodyValid3 #autoLOC_SCANsat_exceptional0005 = We now have a detailed map and survey for the surface of @/targetBodyValid3 #autoLOC_SCANsat_exceptional0006 = Must have less than a 90% high resolution altimetry scan of the target body. #autoLOC_SCANsat_exceptional0007 = Must have less than a 90% high resolution resources scan of the target body. #autoLOC_SCANsat_exceptional0008 = Must have orbited the target body, or the target body must be next on the list. #autoLOC_SCANsat_exceptional0009 = Must have less than a 90% high resolution visual scan of the target body. // *** Significant *** #autoLOC_SCANsat_significant_0001 = Do a group of SCANsat surveys of @/targetBodyValid2. #autoLOC_SCANsat_significant_0002 = Do a group of SCANsat surveys of @/targetBodyValid2. #autoLOC_SCANsat_significant_0003 = Scanning can take place while the vessel is not loaded. #autoLOC_SCANsat_significant_0004 = Perform several low resolution scans of @/targetBodyValid2 #autoLOC_SCANsat_significant_0005 = Excellent work, these scans will provide much valuable data for our survey teams. #autoLOC_SCANsat_significant_0006 = Must have less than an 80% low resolution altimetry scan of the target body. #autoLOC_SCANsat_significant_0007 = Must have less than an 80% low resolution visual scan of the target body. #autoLOC_SCANsat_significant_0008 = Must have less than an 80% low resolution resources scan of the target body. #autoLOC_SCANsat_significant_0009 = Must have orbited the target body. // *** Trivial *** #autoLOC_SCANsat_trivial_0001 = Conduct @/scanReadString1 SCANsat survey of @/targetBodyValid1. #autoLOC_SCANsat_trivial_0002 = Conduct @/scanReadString1 SCANsat survey of @/targetBodyValid1. #autoLOC_SCANsat_trivial_0003 = Scanning can take place while the vessel is not loaded. #autoLOC_SCANsat_trivial_0004 = Perform a simple scan of @/targetBodyValid1 #autoLOC_SCANsat_trivial_0005 = Excellent work, this simple survey will give our experts much to study. #autoLOC_SCANsat_trivial_0006 = Target is part of home system. #autoLOC_SCANsat_trivial_0007 = Must have scanned less than 70% of the target body. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/en-us/Flags.cfg ================================================ Localization { en-us { #autoLOC_SCANsat_Agents_Name = SCAN #autoLOC_SCANsat_Agents_Title = SCAN: Scientific Committee on Advanced Navigation #autoLOC_SCANsat_Agents_Description = The SCAN agency is dedicated to mapping and surveying every planet in the solar system. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/en-us/Helptips.cfg ================================================ Localization { en-us { #autoLOC_SCANsat_settingsHelpScanningToggle = Toggle all SCANsat scanning. #autoLOC_SCANsat_settingsHelpBackground = Toggle background scanning on\nselected celestial bodies. #autoLOC_SCANsat_settingsHelpTimeWarp = Adjust the scanning frequency during TimeWarp.\nHigher settings result in fewer gaps in the maps\nbut may have a performance impact at high TimeWarp. #autoLOC_SCANsat_settingsHelpGroundTracks = Display a visible indicator of\nscanning activity in map mode. #autoLOC_SCANsat_settingsHelpGroundTracksActive = The ground track indicator can be limited\nto only be displayed for the active vessel. #autoLOC_SCANsat_settingsHelpStockUIStyle = Switch between stock KSP-style UI elements and Unity-style elements. #autoLOC_SCANsat_settingsHelpOverlayTooltips = 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. #autoLOC_SCANsat_settingsHelpWindowTooltips = Display tooltips on some map window buttons.\nThese are primarily used to identify icon buttons. #autoLOC_SCANsat_settingsHelpLegendTooltips = Display tooltips on the map legend.\nDisabling will also disable biome map legends. #autoLOC_SCANsat_settingsHelpWindowTooltips = Requires the surface be in\ndaylight for certain scanner types. #autoLOC_SCANsat_settingsHelpDaylightCheck = Some scanners will require an\narea to be in daylight to function correctly. #autoLOC_SCANsat_settingsHelpStockToolbar = Use the stock toolbar.\nCan be used concurrently with the Blizzy78 Toolbar. #autoLOC_SCANsat_settingsHelpToolbarMenu = Use a pop-out menu for the stock toolbar to show all available windows. #autoLOC_SCANsat_settingsHelpMechJeb = The SCANsat zoom map and big map waypoint selection modes\ncan be used to select a MechJeb landing site. #autoLOC_SCANsat_settingsHelpMechJebLoad = Load a saved MechJeb landing target.\nThis only works while in the flight scene with a valid MechJeb vessel. #autoLOC_SCANsat_settingsHelpMapGenSpeed = Adjust all SCANsat map generation speeds.\nLower values will save CPU resources and may reduce the\nperformance impact of generating maps. #autoLOC_SCANsat_settingsHelpResetWindows = 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. #autoLOC_SCANsat_settingsHelpResetPlanetData = Resets the selected SCANsat data for the current celestial body.\nA confirmation window will open before activating.\nCannot be reversed. #autoLOC_SCANsat_settingsHelpResetAllData = Resets the selected SCANsat data for all celestial bodies.\nA confirmation window will open before activating.\nCannot be reversed. #autoLOC_SCANsat_settingsHelpVesselsSensorsPasses = 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. #autoLOC_SCANsat_settingsHelpGreyScale = 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. #autoLOC_SCANsat_settingsHelpExportCSV = 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. #autoLOC_SCANsat_settingsHelpSetMapWidth = 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. #autoLOC_SCANsat_settingsHelpWindowScale = Adjust all SCANsat window scales. #autoLOC_SCANsat_settingsHelpFillPlanet = Fill in the selected SCANsat data for the current celestial body. #autoLOC_SCANsat_settingsHelpOverlayHideZero = 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. #autoLOC_SCANsat_settingsHelpFillAll = Fill in the selected SCANsat data for all celestial bodies. #autoLOC_SCANsat_resourceSettingsHelpBiomeLock = 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. #autoLOC_SCANsat_resourceSettingsHelpInstant = 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. #autoLOC_SCANsat_resourceSettingsHelpNarrowBand = 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. #autoLOC_SCANsat_resourceSettingsHelpDisableStock = 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. #autoLOC_SCANsat_resourceSettingsHelpResetStockResource = 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. #autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayHeight = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency = 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. #autoLOC_SCANsat_resourceSettingsHelpScanThreshold = 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. #autoLOC_SCANsat_colorTerrainHelpMin = Defines the low altitude cutoff for the terrain color palette.\nAnything below this altitude will be shown with the lowest color. #autoLOC_SCANsat_colorTerrainHelpMax = Defines the high altitude cutoff for the terrain color palette.\nAnything above this altitude will be shown with the highest color. #autoLOC_SCANsat_colorTerrainHelpClampToggle = 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. #autoLOC_SCANsat_colorTerrainHelpClamp = 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. #autoLOC_SCANsat_colorTerrainHelpReverse = Reverses the order of the currently\nselected color palette. #autoLOC_SCANsat_colorTerrainHelpDiscrete = Draws the map using only the specific colors defined by each palette,\ninstead of smoothly interpolating between them. #autoLOC_SCANsat_colorTerrainHelpPaletteSize = Adjust the number of colors available\nin the currently selected color palette. #autoLOC_SCANsat_colorBiomeHelpStock = Use the stock biome color scheme for\nSCANsat biome maps. #autoLOC_SCANsat_colorBiomeHelpWhiteBorder = Draw a white border between biomes.\nDoes not apply to the planetary overlay biome maps. #autoLOC_SCANsat_colorBiomeHelpTransparency = Adjust the transparency of biome maps.\nTerrain elevation is shown behind the biome maps.\nSet to 0% to disable terrain drawing. #autoLOC_SCANsat_colorPickerHelpLow = 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. #autoLOC_SCANsat_colorPickerHelpHigh = 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. #autoLOC_SCANsat_colorResourceHelpMin = 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. #autoLOC_SCANsat_colorResourceHelpMax = 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. #autoLOC_SCANsat_colorResourceHelpTransparency = 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. #autoLOC_SCANsat_colorResourceHelpApply = Applies the current values for the\nselected resource and celestial body only. #autoLOC_SCANsat_colorResourceHelpApplyAll = Applies the current values for the\nselected resource for all celestial bodies. #autoLOC_SCANsat_colorResourceHelpDefault = Reverts to the default values for the\nselected resource and celestial body only. #autoLOC_SCANsat_colorResourceHelpDefaultAll = Reverts to the default values for the\nselected resource for all celestial bodies. #autoLOC_SCANsat_colorHelpSaveToConfig = 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. #autoLOC_SCANsat_colorSlopeHelpCutoff = Adjust the cutoff level between\nthe two selected slope color pairs. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/en-us/OtherText.cfg ================================================ Localization { en-us { #autoLOC_SCANsat_Analyze = Analyze Data #autoLOC_SCANsat_StartScan = Start Scan #autoLOC_SCANsat_StopScan = Stop Scan #autoLOC_SCANsat_ToggleScan = Toggle Scan #autoLOC_SCANsat_Extend = Extend #autoLOC_SCANsat_Retract = Retract #autoLOC_SCANsat_Unknown = Unknown #autoLOC_SCANsat_All_Disabled = All Scanning Disabled #autoLOC_SCANsat_Disabled = Scanning Disabled #autoLOC_SCANsat_TooLow = Too Low #autoLOC_SCANsat_SubOptimal = Sub-Optimal #autoLOC_SCANsat_Ideal = Ideal #autoLOC_SCANsat_TooHigh = Too High #autoLOC_SCANsat_NoData = No Data #autoLOC_SCANsat_Abundance = Abundance #autoLOC_SCANsat_Surface = Surf #autoLOC_SCANsat_AltitudeMin = Altitude ( min): <<1>>km\n #autoLOC_SCANsat_AltitudeBest = Altitude (best): <<1>>km\n #autoLOC_SCANsat_AltitudeMax = Altitude ( max): <<1>>km\n #autoLOC_SCANsat_Types = SCAN Types: #autoLOC_SCANsat_Daylight = Requires Daylight: <<1>> #autoLOC_SCANsat_FOV = FOV: <<1>> #autoLOC_SCANsat_MapProjection = Projection #autoLOC_SCANsat_MapType = Map Type #autoLOC_SCANsat_MapResource = Resource #autoLOC_SCANsat_MapBody = Celestial Body #autoLOC_SCANsat_GeneralSettings = General Settings #autoLOC_SCANsat_BackgroundSettings = Background Settings #autoLOC_SCANsat_ResourceSettings = Resource Settings #autoLOC_SCANsat_DataManagement = Data Management #autoLOC_SCANsat_ColorManagement = Color Management #autoLOC_SCANsat_ScanInfo = SCAN Sensor #autoLOC_SCANsat_ScanInfoStatus = SCAN Status #autoLOC_SCANsat_ScanInfoAltitude = SCAN Altitude #autoLOC_SCANsat_ScanInfoType = SCAN Type #autoLOC_SCANsat_ScanInfoFOV = SCAN FOV #autoLOC_SCANsat_ScanInfoPower = SCAN Power #autoLOC_SCANsat_ScanInfoDaylight = Surface In Daylight #autoLOC_SCANsat_ScanResourceDisplay = SCAN Resources } } ================================================ FILE: GameData/SCANsat/Resources/Localization/en-us/Parts.cfg ================================================ Localization { en-us { #autoLOC_SCANsat_BTDT_Title = SCAN Been There Done That® #autoLOC_SCANsat_BTDT_Description = 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. #autoLOC_SCANsat_BTDT_Exo_Description = This model of scanning device contains a set of passive and active sensors designed to quickly hone in on interesting features located nearby. #autoLOC_SCANsat_Multi_Title = SCAN Multispectral Sensor #autoLOC_SCANsat_Multi_Description = 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. #autoLOC_SCANsat_Radar_Title = SCAN RADAR Altimetry Sensor #autoLOC_SCANsat_Radar_Description = 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. #autoLOC_SCANsat_SAR_Title = SCAN SCAN SAR Altimetry Sensor #autoLOC_SCANsat_SAR_Description = 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. #autoLOC_SCANsat_Radar3B_Title = R-3B Radar Altimeter #autoLOC_SCANsat_Radar3B_Description = 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. #autoLOC_SCANsat_RadarEO_Title = R-EO-1 Radar Antenna #autoLOC_SCANsat_RadarEO_Description = 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. #autoLOC_SCANsat_SARX_Title = SAR-X Antenna #autoLOC_SCANsat_SARX_Description = 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. #autoLOC_SCANsat_SARC_Title = SAR-C Antenna #autoLOC_SCANsat_SARC_Description = 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. #autoLOC_SCANsat_SARL_Title = SAR-L Antenna #autoLOC_SCANsat_SARL_Description = 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. #autoLOC_SCANsat_Multi_MS1_Title = MS-1 Multispectral Scanner #autoLOC_SCANsat_Multi_MS1_Description = 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. #autoLOC_SCANsat_Multi_MSR_Title = MS-R Enhanced Multispectral Scanner #autoLOC_SCANsat_Multi_MSR_Description = 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. #autoLOC_SCANsat_Multi_MS2A_Title = MS-2A Advanced Multispectral Scanner #autoLOC_SCANsat_Multi_MS2A_Description = 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. #autoLOC_SCANsat_VS1_Title = VS-1 High Resolution Imager #autoLOC_SCANsat_VS1_Description = 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. #autoLOC_SCANsat_VS3_Title = VS-3 Advanced High Resolution Imager #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. #autoLOC_SCANsat_VS11_Title = VS-11 Classified Reconnaissance Imager #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. #autoLOC_SCANsat_R_Title = SCAN-R Resource Mapper #autoLOC_SCANsat_R_Description = 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. #autoLOC_SCANsat_R2_Title = SCAN-R2 Advanced Resource Mapper #autoLOC_SCANsat_R2_Description = 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. #autoLOC_SCANsat_RX_Title = SCAN-RX Hyperspectral Resource Mapper #autoLOC_SCANsat_RX_Description = 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. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/en-us/Science.cfg ================================================ Localization { en-us { #autoLOC_SCANsat_Science_Lo_Title = Low Resolution Altimetry Scan #autoLOC_SCANsat_Science_Lo_Default1 = Analyzed low resolution altimetry data. #autoLOC_SCANsat_Science_Lo_Default2 = "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!" #autoLOC_SCANsat_Science_Lo_Sun = You wonder if the sensor is malfunctioning. #autoLOC_SCANsat_Science_Lo_Moho = Well, at least this low resolution data makes Moho look kind of cool. Not quite giant lakes of lava, but still cool. #autoLOC_SCANsat_Science_Lo_Eve = 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.) #autoLOC_SCANsat_Science_Lo_Gilly = 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. #autoLOC_SCANsat_Science_Lo_Kerbin = 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. #autoLOC_SCANsat_Science_Lo_Mun = 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. #autoLOC_SCANsat_Science_Lo_Minmus = 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. #autoLOC_SCANsat_Science_Lo_Duna = 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. #autoLOC_SCANsat_Science_Lo_Ike = As you pore over the data you are struck by how similar Ike appears to the Mun. You wonder about their comparative surface geology. #autoLOC_SCANsat_Science_Lo_Dres = 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". #autoLOC_SCANsat_Science_Lo_Jool = Altimetry, what altimetry? It's a gas giant for Kerbal's sake. Let's just pick a number at random and call it good. #autoLOC_SCANsat_Science_Lo_Laythe = The sensor seems unable to penetrate the water. #autoLOC_SCANsat_Science_Lo_Vall = Well, here it is: "The data you Vall been waiting for! Hahahahaha! Hahaha. Ha. Ha? What, SOMEONE has to find that funny." #autoLOC_SCANsat_Science_Lo_Tylo = 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. #autoLOC_SCANsat_Science_Lo_Bop = 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. #autoLOC_SCANsat_Science_Lo_Pol = 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. #autoLOC_SCANsat_Science_Lo_Eeloo = 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. #autoLOC_SCANsat_Science_Hi_Title = High Resolution Altimetry Scan #autoLOC_SCANsat_Science_Hi_Default1 = Analyzed high resolution altimetry data. #autoLOC_SCANsat_Science_Hi_Default2 = "The High Resolution Altimetry Scan definitely is better then the low resolution one. SCAN has once again proven their scanning skills." #autoLOC_SCANsat_Science_Hi_Sun = You realize that you could have saved some money if you had trusted the low resolution sensor in the first place. #autoLOC_SCANsat_Science_Hi_Moho = Finally, the awesomeness has returned to Moho! It may not be giant flowing rivers of lava, but this data is spectacular! #autoLOC_SCANsat_Science_Hi_Eve = 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. #autoLOC_SCANsat_Science_Hi_Gilly = Even in super-high resolution Gilly somehow seems to be in low resolution. That is one seriously lumpy surface. #autoLOC_SCANsat_Science_Hi_Kerbin = 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. #autoLOC_SCANsat_Science_Hi_Mun = "Hah! No more boring grey moon. Just look at all the colors in that scan! Now we can really pinpoint a prime landing site." #autoLOC_SCANsat_Science_Hi_Minmus = Wow, not only is Minmus real, it has some amazing topography! You can't wait to land in one of those flat areas. #autoLOC_SCANsat_Science_Hi_Duna = This high resolution data is amazing. You begin analyzing the hills and valleys, searching for the perfect landing spot. #autoLOC_SCANsat_Science_Hi_Ike = 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. #autoLOC_SCANsat_Science_Hi_Dres = Those... are some serious mountains. You are glad to be analysing this data, rather than trying to climb up some of those hills. #autoLOC_SCANsat_Science_Hi_Jool = 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! #autoLOC_SCANsat_Science_Hi_Laythe = The map shows mostly negative heights. You consider draining Laythe just so you can climb its mountains. #autoLOC_SCANsat_Science_Hi_Vall = The data from the high resolution scanner confirms that the surface of Vall is, indeed, "crinkly". Guess Gene owes you fifty funds. #autoLOC_SCANsat_Science_Hi_Tylo = 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. #autoLOC_SCANsat_Science_Hi_Bop = 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. #autoLOC_SCANsat_Science_Hi_Pol = 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? #autoLOC_SCANsat_Science_Hi_Eeloo = 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. #autoLOC_SCANsat_Science_Multi_Title = Multispectral Analysis #autoLOC_SCANsat_Science_Multi_Default1 = Analyzed multispectral sensor data. #autoLOC_SCANsat_Science_Multi_Default2 = "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!" #autoLOC_SCANsat_Science_Multi_Sun1 = You are surprised by the lack of biometric data. #autoLOC_SCANsat_Science_Multi_Sun2 = you wonder why there are no poles visible on the biome map. #autoLOC_SCANsat_Science_Multi_Moho = As you pore through the data you wonder if you will find the elusive lava lake biome that so many scientists had speculated about. #autoLOC_SCANsat_Science_Multi_Eve = 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! #autoLOC_SCANsat_Science_Multi_Gilly = 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. #autoLOC_SCANsat_Science_Multi_Kerbin = 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. #autoLOC_SCANsat_Science_Multi_Mun = Huh, never knew the moon had biomes. Wonder which one the cheese is in. And if there are any other snacks there as well. #autoLOC_SCANsat_Science_Multi_Minmus = 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. #autoLOC_SCANsat_Science_Multi_Duna = 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. #autoLOC_SCANsat_Science_Multi_Ike = 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. #autoLOC_SCANsat_Science_Multi_Dres = 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! #autoLOC_SCANsat_Science_Multi_Jool1 = You are surprised by the lack of biometric data. #autoLOC_SCANsat_Science_Multi_Jool2 = You wonder why there are no poles visible on the biome map. #autoLOC_SCANsat_Science_Multi_Laythe = You want to throw a party every time the sensor detects a land biome. #autoLOC_SCANsat_Science_Multi_Vall = Pretty straightforward data: Poles, Highlands, Midlands, and Lowlands. That's a wrap. Now let's have some snacks! #autoLOC_SCANsat_Science_Multi_Tylo = 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. #autoLOC_SCANsat_Science_Multi_Bop = 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! #autoLOC_SCANsat_Science_Multi_Pol = 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. #autoLOC_SCANsat_Science_Multi_Eeloo = 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. #autoLOC_SCANsat_Science_Resource_Title = Resources Scan #autoLOC_SCANsat_Science_Resource_Default1 = Analyzed low resolution resource data. #autoLOC_SCANsat_Science_Resource_Default2 = "We are receiving resource sensor data now; this information looks way better than what we were getting from that other group..." #autoLOC_SCANsat_Science_Resource_Sun = Perhaps the sun is not the best place to find surface resources. #autoLOC_SCANsat_Science_Resource_Moho = 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. #autoLOC_SCANsat_Science_Resource_Eve = 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. #autoLOC_SCANsat_Science_Resource_Gilly = Initial resource scans of Gilly look interesting; it's almost like asteroid mining. #autoLOC_SCANsat_Science_Resource_Kerbin = 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. #autoLOC_SCANsat_Science_Resource_Mun = This resource data gives us our first good look at how suitable the Mun may be for mining purposes. #autoLOC_SCANsat_Science_Resource_Minmus = At last, we have some resource data on Minmus, every Kerbonaut's first choice for a starter mining facility. #autoLOC_SCANsat_Science_Resource_Duna = This resource data brings us one step closer to reliving all of our favorite lines from that recent hit Kerbal movie. #autoLOC_SCANsat_Science_Resource_Ike = Ike may not be the solar system's most interesting celestial body, but that doesn't make this resource data any less useful. #autoLOC_SCANsat_Science_Resource_Dres = We might as well just search some of the nearby asteroids for resources; who would ever want to bother with Dres. #autoLOC_SCANsat_Science_Resource_Jool = Hmm, maybe a gas giant isn't the best place to go looking for surface resources... #autoLOC_SCANsat_Science_Resource_Laythe = 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. #autoLOC_SCANsat_Science_Resource_Vall = Resource scans of icy Vall provide lots of interesting data. #autoLOC_SCANsat_Science_Resource_Tylo = We'll take any resource information we can get on scary looking Tylo. #autoLOC_SCANsat_Science_Resource_Bop = 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. #autoLOC_SCANsat_Science_Resource_Pol = In addition to pollen grains and strange lumpy things, Pol appears to have some interesting resource deposits. #autoLOC_SCANsat_Science_Resource_Eeloo = 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. #autoLOC_SCANsat_Science_Visual_Title = Visual Scan #autoLOC_SCANsat_Science_Visual_Default1 = Analyzed high resolution visual data. #autoLOC_SCANsat_Science_Visual_Default2 = "The SCAN team has done it again. They've found even more for us to look at on each celestial body." #autoLOC_SCANsat_Science_Visual_Sun = On second thought, pointing our delicate telescopes directly at the sun maybe isn't the best idea. #autoLOC_SCANsat_Science_Visual_Moho = This high quality visual data scan of Moho reveals an enormous amount of... dirt... and maybe some lava. #autoLOC_SCANsat_Science_Visual_Eve = We're not quite sure what makes Eve so purple, but it certainly makes for some pretty maps. #autoLOC_SCANsat_Science_Visual_Gilly = 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. #autoLOC_SCANsat_Science_Visual_Kerbin = 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. #autoLOC_SCANsat_Science_Visual_Mun = It's like craters within craters withing craters. #autoLOC_SCANsat_Science_Visual_Minmus = 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! #autoLOC_SCANsat_Science_Visual_Duna = This visual map confirms that the red planet is indeed very red. #autoLOC_SCANsat_Science_Visual_Ike = Duna's lonely moon Ike looks a lot like the Mun, if only the Mun had no craters and was really boring. #autoLOC_SCANsat_Science_Visual_Dres = This visual scan data set proves once and for all that Dres is really a thing... who knew? #autoLOC_SCANsat_Science_Visual_Jool = All those pretty green swirls must be hiding something really interesting. #autoLOC_SCANsat_Science_Visual_Laythe = 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.... #autoLOC_SCANsat_Science_Visual_Vall = This map kind of makes you want to go ice skating. #autoLOC_SCANsat_Science_Visual_Tylo = This new visual data set reveals all kinds of interesting... well, actually, Tylo looks a little bit boring from orbit. #autoLOC_SCANsat_Science_Visual_Bop = Well that all looks quite terrifying. Maybe we should just stick to making maps from orbit, no need to get too close. #autoLOC_SCANsat_Science_Visual_Pol = New visual scanning data shows that Pol really does look like pollen. #autoLOC_SCANsat_Science_Visual_Eeloo = All those streaks and cracks on the surface of Eeloo make for a really interesting map. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/en-us/Tooltips.cfg ================================================ Localization { en-us { #autoLOC_SCANsat_mainMapToggle = Main Map #autoLOC_SCANsat_bigMapToggle = Big Map #autoLOC_SCANsat_zoomMapToggle = Zoom Map #autoLOC_SCANsat_overlayToggle = Planetary Overlay #autoLOC_SCANsat_instrumentsToggle = Instruments Readout #autoLOC_SCANsat_settingsToggle = Settings #autoLOC_SCANsat_mainMapColor = Map Color #autoLOC_SCANsat_mainMapTerminator = Map Day/Night Terminator #autoLOC_SCANsat_mainMapType = Terrain/Biome Toggle #autoLOC_SCANsat_mainMapMinimize = Show/Hide Vessel Info #autoLOC_SCANsat_mainMapStatus = Scanner Status Indicators #autoLOC_SCANsat_mainMapPercentage = Active Scanner Completion Percentage #autoLOC_SCANsat_bigMapRefresh = Map Refresh #autoLOC_SCANsat_bigMapColor = Map Color #autoLOC_SCANsat_bigMapTerminator = Map Day/Night Terminator #autoLOC_SCANsat_bigMapGrid = Grid Overlay #autoLOC_SCANsat_bigMapOrbit = Orbit Overlay #autoLOC_SCANsat_bigMapWaypoints = Waypoints #autoLOC_SCANsat_bigMapAnomaly = Anomalies #autoLOC_SCANsat_bigMapFlags = Flags #autoLOC_SCANsat_bigMapLegend = Map Legend #autoLOC_SCANsat_bigMapResource = Resource Overlay #autoLOC_SCANsat_bigMapExport = Export Map To Disk #autoLOC_SCANsat_resourceCutoffMinus = Decrease Resource Cutoff #autoLOC_SCANsat_resourceCutoffPlus = Increase Resource Cutoff #autoLOC_SCANsat_resourceSettings = Open Resource Color Settings #autoLOC_SCANsat_overlayRefresh = Map Refresh #autoLOC_SCANsat_insNextResource = Next Resource #autoLOC_SCANsat_insPreviousResource = Previous Resource #autoLOC_SCANsat_insNextAnomaly = Next Surface Feature #autoLOC_SCANsat_zoomVesselSync = Sync Current Vessel #autoLOC_SCANsat_zoomVesselLock = Lock Position To Vessel #autoLOC_SCANsat_zoomLevelPersist = Remember The Last Zoom Level #autoLOC_SCANsat_zoomAutoRefresh = Auto Refresh #autoLOC_SCANsat_zoomMapRefresh = Map Refresh #autoLOC_SCANsat_zoomMapWindowState = Toggle Window Size #autoLOC_SCANsat_zoomMapIn = Zoom In #autoLOC_SCANsat_zoomMapOut = Zoom Out #autoLOC_SCANsat_zoomMapLeft = Shift Left #autoLOC_SCANsat_zoomMapRight = Shift Right #autoLOC_SCANsat_zoomMapUp = Shift Up #autoLOC_SCANsat_zoomMapDown = Shift Down #autoLOC_SCANsat_zoomMapIcons = Map Icons #autoLOC_SCANsat_waypointToggle = Waypoint Selector #autoLOC_SCANsat_waypointSet = Create Waypoint #autoLOC_SCANsat_waypointCancel = Cancel Waypoint #autoLOC_SCANsat_waypointMechJeb = Set MechJeb Landing Target #autoLOC_SCANsat_waypointNameRefresh = Reset Waypoint } } ================================================ FILE: GameData/SCANsat/Resources/Localization/en-us/Warnings.cfg ================================================ Localization { en-us { #autoLOC_SCANsat_Warning_DataResetCurrent = Erase <<1>> map for <<2>>? #autoLOC_SCANsat_Warning_DataResetAll = Erase <<1>> for all celestial bodies? #autoLOC_SCANsat_Warning_StockResourceResetCurrent = Erase stock resource data for <<1>>? #autoLOC_SCANsat_Warning_StockResourceResetAll = Erase stock resource data for all celestial bodies? #autoLOC_SCANsat_Warning_MapFillCurrent = Fill in <<1>> map for <<2>>? #autoLOC_SCANsat_Warning_MapFillAll = Fill in <<1>> for all celestial bodies? #autoLOC_SCANsat_Warning_ModuleManagerResource = Warning\nModule Manager is required for all SCANsat resource scanning functions. #autoLOC_SCANsat_Warning_SaveToConfig = Overwrite existing config file on disk? } } ================================================ FILE: GameData/SCANsat/Resources/Localization/es-es/Contracts.cfg ================================================ Localization { es-es { // *** Exceptional *** #autoLOC_SCANsat_exceptional0001 = Haz un grupo de estudios SCANsat de alta resolución de @/targetBodyValid3. #autoLOC_SCANsat_exceptional0002 = Haz un grupo de estudios SCANsat de alta resolución de @/targetBodyValid3. #autoLOC_SCANsat_exceptional0003 = El escaneo puede tener lugar mientras la nave no está cargada. #autoLOC_SCANsat_exceptional0004 = Realice varios escaneos de alta resolución de @/targetBodyValid3 #autoLOC_SCANsat_exceptional0005 = Ahora tenemos un mapa detallado y el reconocimiento de la superficie de @/targetBodyValid3 #autoLOC_SCANsat_exceptional0006 = Debe tener un escaneo altimétrico de alta resolución de menos del 90% del cuerpo objetivo. #autoLOC_SCANsat_exceptional0007 = Debe tener menos del 90% de escaneo de mineral del cuerpo objetivo. #autoLOC_SCANsat_exceptional0008 = Debe haber estado en órbita alrededor del cuerpo objetivo, o el cuerpo objetivo debe ser el siguiente en la lista. // *** Significant *** #autoLOC_SCANsat_significant_0001 = Haz un grupo de estudios SCANsat de @/targetBodyValid2. #autoLOC_SCANsat_significant_0002 = Haz un grupo de estudios SCANsat de @/targetBodyValid2. #autoLOC_SCANsat_significant_0003 = El escaneo puede tener lugar mientras la nave no está cargada. #autoLOC_SCANsat_significant_0004 = Realice varios escaneos de @/targetBodyValid2 #autoLOC_SCANsat_significant_0005 = Excelente trabajo, estos escaneos proporcionarán datos muy valiosos para nuestros equipos de estudios. #autoLOC_SCANsat_significant_0006 = Debe tener menos de un 80% de escaneo altimétrico de baja resolución del cuerpo objetivo. #autoLOC_SCANsat_significant_0007 = Debe tener menos del 80% de exploración del bioma del cuerpo objetivo. #autoLOC_SCANsat_significant_0008 = Debe tener menos de un 80% de exploración de recursos M700 del cuerpo objetivo. #autoLOC_SCANsat_significant_0009 = Debe haber estado en órbita alrededor del cuerpo objetivo. // *** Trivial *** #autoLOC_SCANsat_trivial_0001 = Llevar a cabo un estudio SCANsat @/scanReadString1 de @/targetBodyValid1. #autoLOC_SCANsat_trivial_0002 = Llevar a cabo un estudio SCANsat @/scanReadString1 de @/targetBodyValid1. #autoLOC_SCANsat_trivial_0003 = El escaneo puede tener lugar mientras la nave no está cargada. #autoLOC_SCANsat_trivial_0004 = Realice un escaneo simple de @/targetBodyValid1 #autoLOC_SCANsat_trivial_0005 = Excelente trabajo, esta simple encuesta les dará a nuestros expertos mucho para estudiar. #autoLOC_SCANsat_trivial_0006 = El objativo es parte del sistema hogareño. #autoLOC_SCANsat_trivial_0007 = Debe haber escaneado menos del 70% del cuerpo objetivo. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/es-es/Flags.cfg ================================================ Localization { es-es { #autoLOC_SCANsat_Agents_Name = SCAN #autoLOC_SCANsat_Agents_Title = SCAN: Comité Científico de Navegación Avanzada #autoLOC_SCANsat_Agents_Description = La agencia de SCAN se dedica a mapear y examinar todos los planetas del sistema solar. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/es-es/Helptips.cfg ================================================ Localization { es-es { #autoLOC_SCANsat_settingsHelpScanningToggle = Activa/Desactiva todos los escaneos de SCANsat. #autoLOC_SCANsat_settingsHelpBackground = Activa/Desactiva escaneo en segundo plano en\ncuerpos celestes seleccionados. #autoLOC_SCANsat_settingsHelpTimeWarp = 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. #autoLOC_SCANsat_settingsHelpGroundTracks = Mostrar un indicador visual de\nla actividad de escaneo durante la vista de mapa. #autoLOC_SCANsat_settingsHelpGroundTracksActive = El indicador del seguimiento desde base\npuede ser limitado a solo mostrar la nave activa. #autoLOC_SCANsat_settingsHelpStockUIStyle = Cambiar elementos de la UI entre el estilo de KSP base y el estilo de Unity. #autoLOC_SCANsat_settingsHelpOverlayTooltips = 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. #autoLOC_SCANsat_settingsHelpWindowTooltips = Mostrar tooltips en algunos botones de la vista de mapa.\nEstos son principalmente usados para identificar íconos de botones #autoLOC_SCANsat_settingsHelpLegendTooltips = Mostrar tooltips en la leyenda del mapa.\nInhabilitar esto tambien ocultara la leyenda del mapa de bioma. #autoLOC_SCANsat_settingsHelpStockToolbar = Usar la barra de herramientas base.\nPuede usarse al mismo tiempo con la barra de herramientas de Blizzy78. #autoLOC_SCANsat_settingsHelpToolbarMenu = Usa un menú emergente para la barra de herramietnas base para mostrar todas las ventanas disponibles. #autoLOC_SCANsat_settingsHelpMechJeb = 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. #autoLOC_SCANsat_settingsHelpMechJebLoad = Cargar un punto de aterrizaje guardado de MechJeb.\nEsto solo funciona en la escena de vuelo con una nave válida con Mechjeb. #autoLOC_SCANsat_settingsHelpMapGenSpeed = 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. #autoLOC_SCANsat_settingsHelpResetWindows = Reiniciar la escala y posición de todas las ventanas.\nUsa esto si una ventana se movió fuera\ncompletamente o si no son visibles. #autoLOC_SCANsat_settingsHelpResetPlanetData = Reinicia los datos de SCANsat para el cuerpo celeste actual.\nUna ventana de confirmación se abrira antes de\nactivarse. No puede revertirse. #autoLOC_SCANsat_settingsHelpResetAllData = Reinicia los datos de SCANsat para todos los cuerpos celestes.\nUna ventana de confirmación se abrira antes de activarse.\nNo puede revertirse. #autoLOC_SCANsat_settingsHelpVesselsSensorsPasses = 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. #autoLOC_SCANsat_settingsHelpGreyScale = 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 #autoLOC_SCANsat_settingsHelpExportCSV = 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. #autoLOC_SCANsat_settingsHelpSetMapWidth = 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. #autoLOC_SCANsat_settingsHelpWindowScale = Ajusta todas las escalas de las ventanas de SCANsat. #autoLOC_SCANsat_settingsHelpFillPlanet = Llena los datos de SCANsat para el cuerpo celeste actual. #autoLOC_SCANsat_settingsHelpFillAll = Llena los datos de SCANsat para todos los cuerpos celestes. #autoLOC_SCANsat_resourceSettingsHelpBiomeLock = 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. #autoLOC_SCANsat_resourceSettingsHelpInstant = 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. #autoLOC_SCANsat_resourceSettingsHelpNarrowBand = 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. #autoLOC_SCANsat_resourceSettingsHelpDisableStock = 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. #autoLOC_SCANsat_resourceSettingsHelpResetStockResource = 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. #autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayHeight = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency = 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. #autoLOC_SCANsat_resourceSettingsHelpScanThreshold = 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. #autoLOC_SCANsat_colorTerrainHelpMin = 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. #autoLOC_SCANsat_colorTerrainHelpMax = 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. #autoLOC_SCANsat_colorTerrainHelpClampToggle = 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. #autoLOC_SCANsat_colorTerrainHelpClamp = 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. #autoLOC_SCANsat_colorTerrainHelpReverse = Revierte el orden de la paleta\nde colores actualmente seleccionada. #autoLOC_SCANsat_colorTerrainHelpDiscrete = Dibuja el mapa usando solo los colores especificados en la paleta,\nen vez de interpolarlos gradualmente. #autoLOC_SCANsat_colorTerrainHelpPaletteSize = Ajusta el número de colores disponible\nen la paleta de colores actuales. #autoLOC_SCANsat_colorBiomeHelpStock = Usa el esquema de colores base para\nlos mapas de bioma de SCANsat. #autoLOC_SCANsat_colorBiomeHelpWhiteBorder = Dibuja una frontera blanca entre biomas.\nNo aplica a la sobreposición de mapas de biomas. #autoLOC_SCANsat_colorBiomeHelpTransparency = 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. #autoLOC_SCANsat_colorPickerHelpLow = 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. #autoLOC_SCANsat_colorPickerHelpHigh = 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. #autoLOC_SCANsat_colorResourceHelpMin = 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. #autoLOC_SCANsat_colorResourceHelpMax = 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. #autoLOC_SCANsat_colorResourceHelpTransparency = 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. #autoLOC_SCANsat_colorResourceHelpApply = Aplica los valores actuales para el\nrecurso y cuerpo celeste seleccionado. #autoLOC_SCANsat_colorResourceHelpApplyAll = Aplica los valores actuales para todos\nlos recursos y cuerpos celestes. #autoLOC_SCANsat_colorResourceHelpDefault = Revierte los valores de fábrica para el\nrecurso y cuerpo celeste seleccionado. #autoLOC_SCANsat_colorResourceHelpDefaultAll = Revierte los valores de fábrica para el\nrecurso seleccionado para todos los cuerpos celestes. #autoLOC_SCANsat_colorHelpSaveToConfig = 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. #autoLOC_SCANsat_colorSlopeHelpCutoff = Ajusta el nivel de corte entre\nentre los 2 pares de colores seleccionados. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/es-es/OtherText.cfg ================================================ Localization { es-es { #autoLOC_SCANsat_Analyze = Analizar datos #autoLOC_SCANsat_StartScan = Empezar Escaneo #autoLOC_SCANsat_StopScan = Terminar Escaneo #autoLOC_SCANsat_ToggleScan = Cambiar Escaneo #autoLOC_SCANsat_Extend = Extender #autoLOC_SCANsat_Retract = Retractar #autoLOC_SCANsat_Unknown = Desconocido #autoLOC_SCANsat_All_Disabled = Todo el Escaneo Desabilitado #autoLOC_SCANsat_Disabled = Escaneo Desabilitado #autoLOC_SCANsat_TooLow = Muy Bajo #autoLOC_SCANsat_SubOptimal = Sub-Óptimo #autoLOC_SCANsat_Ideal = Ideal #autoLOC_SCANsat_TooHigh = Muy Alto #autoLOC_SCANsat_NoData = Sin datos #autoLOC_SCANsat_Abundance = Abundancia #autoLOC_SCANsat_Surface = Superf #autoLOC_SCANsat_AltitudeMin = Altitud ( mín): <<1>>km\n #autoLOC_SCANsat_AltitudeBest = Altitud (ideal): <<1>>km\n #autoLOC_SCANsat_AltitudeMax = Altitud ( máx): <<1>>km\n #autoLOC_SCANsat_FOV = FOV: <<1>> #autoLOC_SCANsat_MapProjection = Proyección del Mapa #autoLOC_SCANsat_MapType = Tipo de Mapa #autoLOC_SCANsat_MapResource = Recurso #autoLOC_SCANsat_MapBody = Cuerpo celestial #autoLOC_SCANsat_GeneralSettings = Ajustes Generales #autoLOC_SCANsat_BackgroundSettings = Ajustes de Fondo #autoLOC_SCANsat_ResourceSettings = Ajustes de Recurso #autoLOC_SCANsat_DataManagement = Gestión de datos #autoLOC_SCANsat_ColorManagement = Gestión del color } } ================================================ FILE: GameData/SCANsat/Resources/Localization/es-es/Parts.cfg ================================================ Localization { es-es { #autoLOC_SCANsat_BTDT_Title = SCAN Estuve Allí e Hice Eso® #autoLOC_SCANsat_BTDT_Description = 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. #autoLOC_SCANsat_Multi_Title = SCAN Sensor Multispectral #autoLOC_SCANsat_Multi_Description = 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. #autoLOC_SCANsat_Radar_Title = SCAN RADAR Sensor de altimetría #autoLOC_SCANsat_Radar_Description = 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. #autoLOC_SCANsat_SAR_Title = SCAN SCAN SAR Sensor de altimetría #autoLOC_SCANsat_SAR_Description = 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. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/es-es/Science.cfg ================================================ Localization { es-es { #autoLOC_SCANsat_Science_Lo_Title = Scáner de Altimetría de Baja Resolucion #autoLOC_SCANsat_Science_Lo_Default1 = Se analizaron los datos de altimetría de baja resolución. #autoLOC_SCANsat_Science_Lo_Default2 = "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!" #autoLOC_SCANsat_Science_Lo_Sun = Te pregutnas si el sensor está funcionando mal. #autoLOC_SCANsat_Science_Lo_Moho = Bueno, al menos estos datos de baja resolucion hacen parecer genial a Moho. No son lagos gigantes de lava, pero genial sin duda. #autoLOC_SCANsat_Science_Lo_Eve = 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) #autoLOC_SCANsat_Science_Lo_Gilly = 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. #autoLOC_SCANsat_Science_Lo_Kerbin = 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á. #autoLOC_SCANsat_Science_Lo_Mun = 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. #autoLOC_SCANsat_Science_Lo_Minmus = 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. #autoLOC_SCANsat_Science_Lo_Duna = 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. #autoLOC_SCANsat_Science_Lo_Ike = 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. #autoLOC_SCANsat_Science_Lo_Dres = 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!". #autoLOC_SCANsat_Science_Lo_Jool = ¿Altimetría, que altimetría? Es un gigante gaseoso por el amor de Kerbal. Solo escojamos un número aleatorio y listo. #autoLOC_SCANsat_Science_Lo_Laythe = El sensor parece incapaz de penetrar el agua. #autoLOC_SCANsat_Science_Lo_Vall = 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." #autoLOC_SCANsat_Science_Lo_Tylo = 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. #autoLOC_SCANsat_Science_Lo_Bop = 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. #autoLOC_SCANsat_Science_Lo_Pol = 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. #autoLOC_SCANsat_Science_Lo_Eeloo = 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. #autoLOC_SCANsat_Science_Hi_Title = Scáner de Altimetría de Alta Resolución #autoLOC_SCANsat_Science_Hi_Default1 = Se analizaron los datos de altimetría de alta resolución. #autoLOC_SCANsat_Science_Hi_Default2 = "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." #autoLOC_SCANsat_Science_Hi_Sun = Te das cuenta que hubieras ahorrado dinero si le hubieses creido al escáner de baja resolución en primer lugar. #autoLOC_SCANsat_Science_Hi_Moho = ¡Finalmente, lo asombroso ah regresado a Moho! Quizás no sean ríos gigantes de lava, pero estos datos son espectaculares! #autoLOC_SCANsat_Science_Hi_Eve = 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. #autoLOC_SCANsat_Science_Hi_Gilly = Incluso en super alta resolución parece que Gilly estuviera en baja resolución. Esa es una superficie realmente grumosa. #autoLOC_SCANsat_Science_Hi_Kerbin = 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. #autoLOC_SCANsat_Science_Hi_Mun = "¡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." #autoLOC_SCANsat_Science_Hi_Minmus = Wow, no solo Minmus es real, ¡Tiene una toporafía sorprendente! No puedes esperar para aterrizar en una de esas grandes llanuras. #autoLOC_SCANsat_Science_Hi_Duna = Estos datos de alta resolución son asombrosos. Empiezas a analirzar las colinas y valles, buscando por el punto de aterrizaje perfecto. #autoLOC_SCANsat_Science_Hi_Ike = 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. #autoLOC_SCANsat_Science_Hi_Dres = Esas... son unas montañas algo misteriosas. Estás contento de estar analizando estos datos, en vez de tratar de colinas. #autoLOC_SCANsat_Science_Hi_Jool = 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! #autoLOC_SCANsat_Science_Hi_Laythe = El mapa muestra mayormente alturas negativas. consideras drenar Laythe para poder escalar una de esas montañas. #autoLOC_SCANsat_Science_Hi_Vall = Los datos del escáner de alta resolucion muestra que la superficie de Vall es, en efecto, "crujiente". Supongo que Gene te debe dinero. #autoLOC_SCANsat_Science_Hi_Tylo = 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. #autoLOC_SCANsat_Science_Hi_Bop = 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. #autoLOC_SCANsat_Science_Hi_Pol = 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? #autoLOC_SCANsat_Science_Hi_Eeloo = 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. #autoLOC_SCANsat_Science_Multi_Title = Análisis de Multiespectro #autoLOC_SCANsat_Science_Multi_Default1 = Se analizaron los datos del sensor de Multiespectro. #autoLOC_SCANsat_Science_Multi_Default2 = "¿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!" #autoLOC_SCANsat_Science_Multi_Sun1 = Te sorprende la falta de datos biométricos. #autoLOC_SCANsat_Science_Multi_Sun2 = Te preguntas por que los polos no son visibles en el mapa. #autoLOC_SCANsat_Science_Multi_Moho = Mientras revisas los datos, te preguntas si encontrarás el elusivo bioma de el "Lago de Lava" el cual muchos científicos han especualado. #autoLOC_SCANsat_Science_Multi_Eve = 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! #autoLOC_SCANsat_Science_Multi_Gilly = 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. #autoLOC_SCANsat_Science_Multi_Kerbin = 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. #autoLOC_SCANsat_Science_Multi_Mun = 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. #autoLOC_SCANsat_Science_Multi_Minmus = 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í. #autoLOC_SCANsat_Science_Multi_Duna = 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. #autoLOC_SCANsat_Science_Multi_Ike = 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. #autoLOC_SCANsat_Science_Multi_Dres = 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! #autoLOC_SCANsat_Science_Multi_Jool1 = Te sorprende la falta de datos biométricos. #autoLOC_SCANsat_Science_Multi_Jool2 = Te preguntas por que no se ven los polos en el mapa. #autoLOC_SCANsat_Science_Multi_Laythe = Quieres lanzar una fiesta cada vez que el sensor detecta un bioma de tierra. #autoLOC_SCANsat_Science_Multi_Vall = Datos muy sencillos: Polos, Tierras altas, Tierras medias, y Tierras bajas. Listo, ahora vamos a por unos snacks. #autoLOC_SCANsat_Science_Multi_Tylo = Te sorprende la diversidad de biomas en el reporte. No solomente es genial mirar hacia arriba desde Tylo, tambien es genial mirar hacia abajo. #autoLOC_SCANsat_Science_Multi_Bop = 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! #autoLOC_SCANsat_Science_Multi_Pol = 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. #autoLOC_SCANsat_Science_Multi_Eeloo = Es sorprendente tener datos de biomas de un planeta tan lejos de Kerbin. Te quedas mirando sorprendido al reporte mientras los datos van llegando. #autoLOC_SCANsat_Science_Resource_Title = Scáner de Recursos #autoLOC_SCANsat_Science_Resource_Default1 = Se analizaron los datos de baja resolucion de recursos. #autoLOC_SCANsat_Science_Resource_Default2 = "Estamos recibiendo ahora los datos de recursos; esta informacion luce mucho mejor de lo que estábamos recibiendo del otro grupo..." #autoLOC_SCANsat_Science_Resource_Sun = Quizás el sol no es el mejor lugar para buscar recursos en la superficie. #autoLOC_SCANsat_Science_Resource_Moho = Finalmente tenemos algo de informacion sobre los recursos de la superficie de Moho, ahora solo tenemos que saber por que alguien quisiera aterrizar ahí. #autoLOC_SCANsat_Science_Resource_Eve = 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. #autoLOC_SCANsat_Science_Resource_Gilly = El escáner de recursos inicial de Gilly luce bien; es casi como minar asteroides. #autoLOC_SCANsat_Science_Resource_Kerbin = 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. #autoLOC_SCANsat_Science_Resource_Mun = Estos datos de recursos nos dan nuestra primera mirada a que tan apropiada es Mun para minar. #autoLOC_SCANsat_Science_Resource_Minmus = Al menos, tenemos algunos datos de recursos en Minmus, primera opción de todo Kerbonauta para empezar sus instalaciones mineras. #autoLOC_SCANsat_Science_Resource_Duna = 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. #autoLOC_SCANsat_Science_Resource_Ike = Quizas Ike no sea el cuerpo celeste más interesante del sistema solar, pero eso no hace estos datos de recursos menos útiles. #autoLOC_SCANsat_Science_Resource_Dres = Podriamos mejor buscar recursos en los asteroides próximos; quien si quiera se molestaría con Dres. #autoLOC_SCANsat_Science_Resource_Jool = Hmm, quizás un gigante gaseoso no sea el mejor lugar para ir a buscar recursos en la superficie... #autoLOC_SCANsat_Science_Resource_Laythe = Bueno, hay un monton de buenos datos, pero muy poca area de preciada tierra donde podamos aterrizar y tomar ventaja de los recursos. #autoLOC_SCANsat_Science_Resource_Vall = Escáner de recursos de la helada Vall provee datos interesantes. #autoLOC_SCANsat_Science_Resource_Tylo = Tomaremos cualquier informacion de recursos que podamos del aterrador Tylo. #autoLOC_SCANsat_Science_Resource_Bop = 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. #autoLOC_SCANsat_Science_Resource_Pol = Ademas de granos de polen y cosas muy grumosas, parece que Pol tiene unos depósitos de recursos interesantes. #autoLOC_SCANsat_Science_Resource_Eeloo = 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á. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/es-es/Tooltips.cfg ================================================ Localization { es-es { #autoLOC_SCANsat_mainMapToggle = Mapa Principal #autoLOC_SCANsat_bigMapToggle = Mapa Grande #autoLOC_SCANsat_zoomMapToggle = Mapa con Zoom #autoLOC_SCANsat_overlayToggle = Sobreposición Planetaria #autoLOC_SCANsat_instrumentsToggle = Instrumentos de Lectura #autoLOC_SCANsat_settingsToggle = Ajustes #autoLOC_SCANsat_mainMapColor = Color de Mapa #autoLOC_SCANsat_mainMapTerminator = Terminador de Día/Noche del Mapa #autoLOC_SCANsat_mainMapType = Cambiar Terreno/Bioma #autoLOC_SCANsat_mainMapMinimize = Mostrar/ocultar informacion de la nave #autoLOC_SCANsat_mainMapStatus = Indicadores del Estado del Scáner #autoLOC_SCANsat_mainMapPercentage = Porcentaje de Terminación del Escáner Activo #autoLOC_SCANsat_bigMapRefresh = Refrescar Mapa #autoLOC_SCANsat_bigMapColor = Color de Mapa #autoLOC_SCANsat_bigMapTerminator = Terminador de Día/Noche del Mapa #autoLOC_SCANsat_bigMapGrid = Sobreposición de Cuadrícula #autoLOC_SCANsat_bigMapOrbit = Sobreposición de Órbita #autoLOC_SCANsat_bigMapWaypoints = Waypoints #autoLOC_SCANsat_bigMapAnomaly = Anomalias #autoLOC_SCANsat_bigMapFlags = Banderas #autoLOC_SCANsat_bigMapLegend = Map Leyenda #autoLOC_SCANsat_bigMapResource = Sobreposición de Recursos #autoLOC_SCANsat_bigMapExport = Exporta Mapa al Disco #autoLOC_SCANsat_overlayRefresh = Refrescar Mapa #autoLOC_SCANsat_insNextResource = Siguiente Recurso #autoLOC_SCANsat_insPreviousResource = Anterior Recurso #autoLOC_SCANsat_zoomVesselSync = Sincronizar Nave Actual #autoLOC_SCANsat_zoomVesselLock = Mantener Posición en la Nave #autoLOC_SCANsat_zoomMapRefresh = Refrescar Mapa #autoLOC_SCANsat_zoomMapWindowState = Cambiar Camaño de Mapa #autoLOC_SCANsat_zoomMapIn = Aumentar Zoom #autoLOC_SCANsat_zoomMapOut = Reducir Zoom #autoLOC_SCANsat_zoomMapLeft = Cambiar a la Izquierda #autoLOC_SCANsat_zoomMapRight = Cambiar a la Derecha #autoLOC_SCANsat_zoomMapUp = Cambiar Arriba #autoLOC_SCANsat_zoomMapDown = Cambiar Abajo #autoLOC_SCANsat_zoomMapIcons = Íconos del Mapa #autoLOC_SCANsat_waypointToggle = Seleccionador de Waypoints #autoLOC_SCANsat_waypointSet = Crear Waypoint #autoLOC_SCANsat_waypointCancel = Cancelar Waypoint #autoLOC_SCANsat_waypointMechJeb = Establer MechJeb Aterrizaje en Objetivo #autoLOC_SCANsat_waypointNameRefresh = Reiniciar Waypoint } } ================================================ FILE: GameData/SCANsat/Resources/Localization/es-es/Warnings.cfg ================================================ Localization { es-es { #autoLOC_SCANsat_Warning_DataResetCurrent = ¿Borrar <<1>> para mapa <<2>>? #autoLOC_SCANsat_Warning_DataResetAll = ¿Borrar <<1>> para todos los cuerpos celestes? #autoLOC_SCANsat_Warning_StockResourceResetCurrent = ¿Borrar datos de recursos del juego base para <<1>>? #autoLOC_SCANsat_Warning_StockResourceResetAll = ¿Borrar datos de recursos del juego base para todos los cuerpos celestes? #autoLOC_SCANsat_Warning_MapFillCurrent = ¿Llenar <<1>> para mapa <<2>>? #autoLOC_SCANsat_Warning_MapFillAll = ¿Llenar <<1>> para todos los cuerpos celestes? #autoLOC_SCANsat_Warning_ModuleManagerResource = Advertencia\nModule Manager es requerido para todas las funciones de escaneo de recursos de SCANsat. #autoLOC_SCANsat_Warning_SaveToConfig = ¿Sobrescribir archivo de configuración existente en el disco? } } ================================================ FILE: GameData/SCANsat/Resources/Localization/fr-fr/Contracts.cfg ================================================ Localization { fr-fr { // *** Exceptional *** #autoLOC_SCANsat_exceptional0001 = Effectuer un groupe de relevés SCANsat haute résolution de @/targetBodyValid3. #autoLOC_SCANsat_exceptional0002 = Effectuer un groupe de relevés SCANsat haute résolution de @/targetBodyValid3. #autoLOC_SCANsat_exceptional0003 = Le scan peut avoir lieu lorsque le vaisseau n'est pas chargé. #autoLOC_SCANsat_exceptional0004 = Effectuer plusieurs scans haute résolution de @/targetBodyValid3 #autoLOC_SCANsat_exceptional0005 = Nous avons maintenant une carte et un relevé détaillé de la surface de @/targetBodyValid3 #autoLOC_SCANsat_exceptional0006 = Doit avoir moins de 90 % de relevés altimétriques haute résolution du corps cible. #autoLOC_SCANsat_exceptional0007 = Doit avoir moins de 90 % de relevés de minerai du corps cible. #autoLOC_SCANsat_exceptional0008 = Doit avoir orbité autour du corps cible, ou le corps cible doit être le prochain sur la liste. #autoLOC_SCANsat_exceptional0009 = Doit avoir moins de 90% de relevés visuels haute résolution du corps cible. // *** Significant *** #autoLOC_SCANsat_significant_0001 = Effectuer un groupe de relevés SCANsat de @/targetBodyValid2. #autoLOC_SCANsat_significant_0002 = Effectuer un groupe de relevés SCANsat de @/targetBodyValid2. #autoLOC_SCANsat_significant_0003 = Le scan peut avoir lieu lorsque le vaisseau n'est pas chargé. #autoLOC_SCANsat_significant_0004 = Effectuer plusieurs scans de @/targetBodyValid2 #autoLOC_SCANsat_significant_0005 = Excellent travail, ces scans fourniront des données très précieuses pour nos équipes. #autoLOC_SCANsat_significant_0006 = Doit avoir moins de 80 % de relevés altimétriques basse résolution du corps cible. #autoLOC_SCANsat_significant_0007 = Doit avoir moins de 80 % du biome du corps cible. #autoLOC_SCANsat_significant_0008 = Doit avoir moins de 80 % de relevés des ressources M700 du corps cible. #autoLOC_SCANsat_significant_0009 = Doit avoir orbité autour du corps cible. // *** Trivial *** #autoLOC_SCANsat_trivial_0001 = Effectuer @/scanReadString1 relevé SCANsat de @/targetBodyValid1. #autoLOC_SCANsat_trivial_0002 = Effectuer @/scanReadString1 relevé SCANsat de @/targetBodyValid1. #autoLOC_SCANsat_trivial_0003 = Le scan peut avoir lieu lorsque le vaisseau n'est pas chargé. #autoLOC_SCANsat_trivial_0004 = Effectuer un scan de @/targetBodyValid1 #autoLOC_SCANsat_trivial_0005 = Excellent travail, ce relevé donnera à nos experts beaucoup à étudier. #autoLOC_SCANsat_trivial_0006 = La cible fait partie de notre système. #autoLOC_SCANsat_trivial_0007 = Doit avoir scanné moins de 70 % du corps cible. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/fr-fr/Flags.cfg ================================================ Localization { fr-fr { #autoLOC_SCANsat_Agents_Name = SCAN #autoLOC_SCANsat_Agents_Title = SCAN: Comité Scientifique de Navigation Avancée #autoLOC_SCANsat_Agents_Description = L'agence SCAN se consacre à la cartographie et à l'étude de toutes les planètes du système solaire. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/fr-fr/Helptips.cfg ================================================ Localization { fr-fr { #autoLOC_SCANsat_settingsHelpScanningToggle = Basculer tous les scanners SCANsat. #autoLOC_SCANsat_settingsHelpBackground = Basculer le scan en arrière-plan\nsur les corps célestes sélectionnés. #autoLOC_SCANsat_settingsHelpTimeWarp = 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. #autoLOC_SCANsat_settingsHelpGroundTracks = Afficher un indicateur visible de\nl'activité de scan en mode carte. #autoLOC_SCANsat_settingsHelpGroundTracksActive = L'indicateur de suivi au sol peut être limité\npour n'être affiché que pour le vaisseau actif. #autoLOC_SCANsat_settingsHelpStockUIStyle = Basculer entre les éléments UI de type KSP et les éléments de type Unity. #autoLOC_SCANsat_settingsHelpOverlayTooltips = 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. #autoLOC_SCANsat_settingsHelpWindowTooltips = 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. #autoLOC_SCANsat_settingsHelpLegendTooltips = Afficher des infobulles sur la légende de la carte.\nCela activera également les légendes des cartes de biome. #autoLOC_SCANsat_settingsHelpWindowTooltips = Requiert que la surface soit à la lumière\ndu jour pour certains types de scanners. #autoLOC_SCANsat_settingsHelpDaylightCheck = Certains scanners exigent qu'une zone soit\nà la lumière du jour pour fonctionner correctement. #autoLOC_SCANsat_settingsHelpStockToolbar = Utiliser la barre d'outils de base.\nPeut être utilisée en même temps que la barre d'outils Blizzy78. #autoLOC_SCANsat_settingsHelpToolbarMenu = Utiliser un menu contextuel pour la barre d'outils de base pour afficher toutes les fenêtres disponibles. #autoLOC_SCANsat_settingsHelpMechJeb = 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. #autoLOC_SCANsat_settingsHelpMechJebLoad = Charger une cible d'atterrissage MechJeb.\nNe fonctionne que sur la scène de vol avec un vaisseau MechJeb valide. #autoLOC_SCANsat_settingsHelpMapGenSpeed = 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. #autoLOC_SCANsat_settingsHelpResetWindows = 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. #autoLOC_SCANsat_settingsHelpResetPlanetData = 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é. #autoLOC_SCANsat_settingsHelpResetAllData = 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é. #autoLOC_SCANsat_settingsHelpVesselsSensorsPasses = 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. #autoLOC_SCANsat_settingsHelpGreyScale = 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. #autoLOC_SCANsat_settingsHelpExportCSV = 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. #autoLOC_SCANsat_settingsHelpSetMapWidth = 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. #autoLOC_SCANsat_settingsHelpWindowScale = Ajuster toutes les échelles des fenêtres SCANsat. #autoLOC_SCANsat_settingsHelpFillPlanet = Remplir les données SCANsat sélectionnées pour le corps céleste actuel. #autoLOC_SCANsat_settingsHelpFillAll = Remplir les données SCANsat sélectionnées pour tous les corps célestes. #autoLOC_SCANsat_resourceSettingsHelpBiomeLock = 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. #autoLOC_SCANsat_resourceSettingsHelpInstant = 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é. #autoLOC_SCANsat_resourceSettingsHelpNarrowBand = 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. #autoLOC_SCANsat_resourceSettingsHelpDisableStock = 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. #autoLOC_SCANsat_resourceSettingsHelpResetStockResource = 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é. #autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource = 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é. #autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayHeight = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency = 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. #autoLOC_SCANsat_resourceSettingsHelpScanThreshold = 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. #autoLOC_SCANsat_colorTerrainHelpMin = 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. #autoLOC_SCANsat_colorTerrainHelpMax = 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. #autoLOC_SCANsat_colorTerrainHelpClampToggle = 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. #autoLOC_SCANsat_colorTerrainHelpClamp = 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. #autoLOC_SCANsat_colorTerrainHelpReverse = Inverse l'ordre de la palette de couleurs sélectionnée. #autoLOC_SCANsat_colorTerrainHelpDiscrete = Dessine la carte en utilisant uniquement les couleurs spécifiques définies par chaque palette,\nau lieu de les interpoler entre elles. #autoLOC_SCANsat_colorTerrainHelpPaletteSize = Ajustez le nombre de couleurs disponibles\ndans la palette de couleurs sélectionnée. #autoLOC_SCANsat_colorBiomeHelpStock = Utilisez le schéma de couleurs du biome de base\npour les cartes du biome de SCANsat. #autoLOC_SCANsat_colorBiomeHelpWhiteBorder = Dessiner une bordure blanche entre les biomes.\nNe s'applique pas aux cartes de superposition planétaire des biomes. #autoLOC_SCANsat_colorBiomeHelpTransparency = 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. #autoLOC_SCANsat_colorPickerHelpLow = 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. #autoLOC_SCANsat_colorPickerHelpHigh = 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. #autoLOC_SCANsat_colorResourceHelpMin = 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. #autoLOC_SCANsat_colorResourceHelpMax = 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. #autoLOC_SCANsat_colorResourceHelpTransparency = 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. #autoLOC_SCANsat_colorResourceHelpApply = Applique les valeurs actuelles pour\nla ressource et le corps céleste sélectionnés uniquement. #autoLOC_SCANsat_colorResourceHelpApplyAll = Applique les valeurs actuelles pour\nla ressource sélectionnée et tous les corps célestes. #autoLOC_SCANsat_colorResourceHelpDefault = Revient aux valeurs par défaut pour\nla ressource et le corps céleste sélectionnés uniquement. #autoLOC_SCANsat_colorResourceHelpDefaultAll = Revient aux valeurs par défaut pour\nla ressource sélectionnée et tous les corps célestes. #autoLOC_SCANsat_colorHelpSaveToConfig = 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. #autoLOC_SCANsat_colorSlopeHelpCutoff = Ajustez le niveau de coupure entre\nles deux paires de couleurs de pente sélectionnées. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/fr-fr/OtherText.cfg ================================================ Localization { fr-fr { #autoLOC_SCANsat_Analyze = Analyser les données #autoLOC_SCANsat_StartScan = Démarrer le scan #autoLOC_SCANsat_StopScan = Arrêter le scan #autoLOC_SCANsat_ToggleScan = Basculer le scan #autoLOC_SCANsat_Extend = Étendre #autoLOC_SCANsat_Retract = Rétracter #autoLOC_SCANsat_Unknown = Inconnu #autoLOC_SCANsat_All_Disabled = Tous les scanners désactivés #autoLOC_SCANsat_Disabled = Scanner désactivé #autoLOC_SCANsat_TooLow = Trop bas #autoLOC_SCANsat_SubOptimal = Sous-optimal #autoLOC_SCANsat_Ideal = Idéal #autoLOC_SCANsat_TooHigh = Trop haut #autoLOC_SCANsat_NoData = Aucune donnée #autoLOC_SCANsat_Abundance = Abondance #autoLOC_SCANsat_Surface = Surf #autoLOC_SCANsat_AltitudeMin = Altitude ( min): <<1>>km\n #autoLOC_SCANsat_AltitudeBest = Altitude (opti): <<1>>km\n #autoLOC_SCANsat_AltitudeMax = Altitude ( max): <<1>>km\n #autoLOC_SCANsat_Types = Types SCAN: #autoLOC_SCANsat_Daylight = Requiert lumière du jour: <<1>> #autoLOC_SCANsat_FOV = FOV: <<1>> #autoLOC_SCANsat_MapProjection = Projection #autoLOC_SCANsat_MapType = Type de carte #autoLOC_SCANsat_MapResource = Ressource #autoLOC_SCANsat_MapBody = Corps céleste #autoLOC_SCANsat_GeneralSettings = Paramètres généraux #autoLOC_SCANsat_BackgroundSettings = Paramètres d'arrière-plan #autoLOC_SCANsat_ResourceSettings = Paramètres de ressources #autoLOC_SCANsat_DataManagement = Gestion des données #autoLOC_SCANsat_ColorManagement = Gestion des couleurs #autoLOC_SCANsat_ScanInfo = Capteur SCAN #autoLOC_SCANsat_ScanInfoStatus = Statut SCAN #autoLOC_SCANsat_ScanInfoAltitude = Altitude SCAN #autoLOC_SCANsat_ScanInfoType = Type SCAN #autoLOC_SCANsat_ScanInfoFOV = FOV SCAN #autoLOC_SCANsat_ScanInfoPower = Énergie SCAN #autoLOC_SCANsat_ScanInfoDaylight = En plein jour } } ================================================ FILE: GameData/SCANsat/Resources/Localization/fr-fr/Parts.cfg ================================================ Localization { fr-fr { #autoLOC_SCANsat_BTDT_Title = SCAN Je suis déjà passé par là® #autoLOC_SCANsat_BTDT_Description = 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. #autoLOC_SCANsat_BTDT_Exo_Description = 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é. #autoLOC_SCANsat_Multi_Title = Capteur multispectral SCAN #autoLOC_SCANsat_Multi_Description = 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. #autoLOC_SCANsat_Radar_Title = Capteur altimétrique SCAN RADAR #autoLOC_SCANsat_Radar_Description = 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. #autoLOC_SCANsat_SAR_Title = Capteur altimétrique SCAN SCAN SAR #autoLOC_SCANsat_SAR_Description = 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. #autoLOC_SCANsat_Radar3B_Title = Altimètre radar R-3B #autoLOC_SCANsat_Radar3B_Description = 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. #autoLOC_SCANsat_RadarEO_Title = Antenne radar R-EO-1 #autoLOC_SCANsat_RadarEO_Description = 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. #autoLOC_SCANsat_SARX_Title = Antenne SAR-X #autoLOC_SCANsat_SARX_Description = 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. #autoLOC_SCANsat_SARC_Title = Antenne SAR-C #autoLOC_SCANsat_SARC_Description = 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. #autoLOC_SCANsat_SARL_Title = Antenne SAR-L #autoLOC_SCANsat_SARL_Description = 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. #autoLOC_SCANsat_Multi_MS1_Title = Scanner multispectral MS-1 #autoLOC_SCANsat_Multi_MS1_Description = 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. #autoLOC_SCANsat_Multi_MSR_Title = Scanner multispectral amélioré MS-R #autoLOC_SCANsat_Multi_MSR_Description = 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. #autoLOC_SCANsat_Multi_MS2A_Title = Scanner multispectral avancé MS-2A #autoLOC_SCANsat_Multi_MS2A_Description = 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. #autoLOC_SCANsat_VS1_Title = Imageur haute résolution VS-1 #autoLOC_SCANsat_VS1_Description = 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. #autoLOC_SCANsat_VS3_Title = Imageur haute résolution avancé VS-3 #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. #autoLOC_SCANsat_VS11_Title = Imageur de reconnaissance classifié VS-11 #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. #autoLOC_SCANsat_R_Title = Imageur de ressources SCAN-R #autoLOC_SCANsat_R_Description = 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. #autoLOC_SCANsat_R2_Title = Imageur de ressources avancé SCAN-R2 #autoLOC_SCANsat_R2_Description = 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. #autoLOC_SCANsat_RX_Title = Imageur de ressources hyperspectral SCAN-RX #autoLOC_SCANsat_RX_Description = 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. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/fr-fr/Science.cfg ================================================ Localization { fr-fr { #autoLOC_SCANsat_Science_Lo_Title = Scan altimétrique basse résolution #autoLOC_SCANsat_Science_Lo_Default1 = Analyse des données altimétriques à basse résolution. #autoLOC_SCANsat_Science_Lo_Default2 = "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 !" #autoLOC_SCANsat_Science_Lo_Sun = Vous vous demandez si le capteur fonctionne mal. #autoLOC_SCANsat_Science_Lo_Moho = 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. #autoLOC_SCANsat_Science_Lo_Eve = 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.) #autoLOC_SCANsat_Science_Lo_Gilly = 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. #autoLOC_SCANsat_Science_Lo_Kerbin = 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à. #autoLOC_SCANsat_Science_Lo_Mun = 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. #autoLOC_SCANsat_Science_Lo_Minmus = 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. #autoLOC_SCANsat_Science_Lo_Duna = 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. #autoLOC_SCANsat_Science_Lo_Ike = 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. #autoLOC_SCANsat_Science_Lo_Dres = 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". #autoLOC_SCANsat_Science_Lo_Jool = 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. #autoLOC_SCANsat_Science_Lo_Laythe = Le capteur semble incapable de pénétrer dans l'eau. #autoLOC_SCANsat_Science_Lo_Vall = Eh bien, les voilà : "Ces données, ça Vall faire ! Hahahahahahahaha ! Hahahaha. Ha. Ha ? Quoi, QUELQU'UN doit trouver ça drôle." #autoLOC_SCANsat_Science_Lo_Tylo = 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. #autoLOC_SCANsat_Science_Lo_Bop = 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. #autoLOC_SCANsat_Science_Lo_Pol = 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. #autoLOC_SCANsat_Science_Lo_Eeloo = 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à. #autoLOC_SCANsat_Science_Hi_Title = Scan altimétrique haute résolution #autoLOC_SCANsat_Science_Hi_Default1 = Analyse des données altimétriques à haute résolution. #autoLOC_SCANsat_Science_Hi_Default2 = "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." #autoLOC_SCANsat_Science_Hi_Sun = Vous réalisez que vous auriez pu économiser de l'argent si vous aviez fait confiance au capteur basse résolution en premier lieu. #autoLOC_SCANsat_Science_Hi_Moho = 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 ! #autoLOC_SCANsat_Science_Hi_Eve = 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. #autoLOC_SCANsat_Science_Hi_Gilly = Même en super haute résolution, Gilly semble être en basse résolution. C'est une surface sérieusement grumeleuse. #autoLOC_SCANsat_Science_Hi_Kerbin = 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. #autoLOC_SCANsat_Science_Hi_Mun = "Ah ! Plus de lune grise ennuyeuse. Regardez toutes les couleurs de ce relevé ! Maintenant, on peut vraiment localiser un site d'atterrissage de choix." #autoLOC_SCANsat_Science_Hi_Minmus = 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. #autoLOC_SCANsat_Science_Hi_Duna = 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. #autoLOC_SCANsat_Science_Hi_Ike = 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. #autoLOC_SCANsat_Science_Hi_Dres = 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. #autoLOC_SCANsat_Science_Hi_Jool = 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 ! #autoLOC_SCANsat_Science_Hi_Laythe = La carte montre surtout des hauteurs négatives. Vous envisagez de drainer Laythe juste pour pouvoir escalader ses montagnes. #autoLOC_SCANsat_Science_Hi_Vall = 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. #autoLOC_SCANsat_Science_Hi_Tylo = 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. #autoLOC_SCANsat_Science_Hi_Bop = 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. #autoLOC_SCANsat_Science_Hi_Pol = 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 ? #autoLOC_SCANsat_Science_Hi_Eeloo = 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. #autoLOC_SCANsat_Science_Multi_Title = Analyse multispectrale #autoLOC_SCANsat_Science_Multi_Default1 = Analyse des données de capteurs multispectrales. #autoLOC_SCANsat_Science_Multi_Default2 = "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 !" #autoLOC_SCANsat_Science_Multi_Sun1 = Vous êtes surpris par le manque de données biométriques. #autoLOC_SCANsat_Science_Multi_Sun2 = Vous vous demandez pourquoi il n'y a pas de pôles visibles sur la carte du biome. #autoLOC_SCANsat_Science_Multi_Moho = 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é. #autoLOC_SCANsat_Science_Multi_Eve = 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 ! #autoLOC_SCANsat_Science_Multi_Gilly = 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. #autoLOC_SCANsat_Science_Multi_Kerbin = 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é. #autoLOC_SCANsat_Science_Multi_Mun = 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. #autoLOC_SCANsat_Science_Multi_Minmus = 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. #autoLOC_SCANsat_Science_Multi_Duna = 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. #autoLOC_SCANsat_Science_Multi_Ike = 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. #autoLOC_SCANsat_Science_Multi_Dres = 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 ! #autoLOC_SCANsat_Science_Multi_Jool1 = Vous êtes surpris par le manque de données biométriques. #autoLOC_SCANsat_Science_Multi_Jool2 = Vous vous demandez pourquoi il n'y a pas de pôles visibles sur la carte du biome. #autoLOC_SCANsat_Science_Multi_Laythe = Vous voulez organiser une fête chaque fois que le capteur détecte un biome terrestre. #autoLOC_SCANsat_Science_Multi_Vall = Des données assez simples : Poles, hautes terres, moyennes terres et basses terres. C'est dans la boîte. Maintenant, allons manger quelque chose ! #autoLOC_SCANsat_Science_Multi_Tylo = 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. #autoLOC_SCANsat_Science_Multi_Bop = 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 ! #autoLOC_SCANsat_Science_Multi_Pol = 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. #autoLOC_SCANsat_Science_Multi_Eeloo = 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. #autoLOC_SCANsat_Science_Resource_Title = Scan des ressources #autoLOC_SCANsat_Science_Resource_Default1 = Analyse des données sur les ressources à faible résolution. #autoLOC_SCANsat_Science_Resource_Default2 = "Nous recevons des données des capteurs de ressources maintenant ; cette information semble bien meilleure que celle que nous obtenions de cet autre groupe..." #autoLOC_SCANsat_Science_Resource_Sun = Le soleil n'est peut-être pas le meilleur endroit pour trouver des ressources en surface. #autoLOC_SCANsat_Science_Resource_Moho = 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. #autoLOC_SCANsat_Science_Resource_Eve = 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. #autoLOC_SCANsat_Science_Resource_Gilly = Les premières analyses des ressources de Gilly semblent intéressantes ; c'est presque comme l'exploitation des astéroïdes. #autoLOC_SCANsat_Science_Resource_Kerbin = 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. #autoLOC_SCANsat_Science_Resource_Mun = Ces données sur les ressources nous donnent un premier bon aperçu du potentiel de l'exploitation minière de la Mune. #autoLOC_SCANsat_Science_Resource_Minmus = Enfin, nous avons quelques données de ressources sur Minmus, le premier choix de chaque Kerbonaute pour démarrer une installation minière. #autoLOC_SCANsat_Science_Resource_Duna = 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. #autoLOC_SCANsat_Science_Resource_Ike = 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. #autoLOC_SCANsat_Science_Resource_Dres = Autant chercher des ressources dans les astéroïdes voisins ; qui voudrait réellement s'occuper de Dres ? #autoLOC_SCANsat_Science_Resource_Jool = Hmm, peut-être qu'un géant gazier n'est pas le meilleur endroit pour aller à la recherche de ressources de surface.... #autoLOC_SCANsat_Science_Resource_Laythe = 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. #autoLOC_SCANsat_Science_Resource_Vall = L'analyse des ressources de la glaciale Vall fournit de nombreuses données intéressantes. #autoLOC_SCANsat_Science_Resource_Tylo = Nous prendrons toutes les informations que nous pourrons avoir sur l'effrayant Tylo. #autoLOC_SCANsat_Science_Resource_Bop = 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. #autoLOC_SCANsat_Science_Resource_Pol = En plus des grains de pollen et d'étranges grumeaux, Pol semble avoir des dépôts de ressources intéressants. #autoLOC_SCANsat_Science_Resource_Eeloo = 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à. #autoLOC_SCANsat_Science_Visual_Title = Scan visuel #autoLOC_SCANsat_Science_Visual_Default1 = Analyse des données visuelles à haute résolution. #autoLOC_SCANsat_Science_Visual_Default2 = "L'équipe SCAN a encore une fois réussi. Ils ont trouvé encore plus de choses à regarder sur chaque corps céleste." #autoLOC_SCANsat_Science_Visual_Sun = À bien y réfléchir, pointer nos délicats télescopes directement vers le soleil n'est peut-être pas la meilleure idée. #autoLOC_SCANsat_Science_Visual_Moho = 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. #autoLOC_SCANsat_Science_Visual_Eve = Nous ne savons pas exactement ce qui rend Eve si violette, mais cela fait certainement de jolies cartes. #autoLOC_SCANsat_Science_Visual_Gilly = 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. #autoLOC_SCANsat_Science_Visual_Kerbin = 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. #autoLOC_SCANsat_Science_Visual_Mun = C'est comme des cratères dans des cratères dans des cratères. #autoLOC_SCANsat_Science_Visual_Minmus = 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 ! #autoLOC_SCANsat_Science_Visual_Duna = Cette carte visuelle confirme que la planète rouge est effectivement très rouge. #autoLOC_SCANsat_Science_Visual_Ike = La lune solitaire de Duna, Ike, ressemble beaucoup à la Mune, seulement si la Mune n'avait pas de cratères et était vraiment ennuyeuse. #autoLOC_SCANsat_Science_Visual_Dres = Cet ensemble de données visuelles prouve une fois pour toutes que Dres est vraiment une chose... qui l'aurait cru ? #autoLOC_SCANsat_Science_Visual_Jool = Tous ces jolis tourbillons verts doivent cacher quelque chose de vraiment intéressant. #autoLOC_SCANsat_Science_Visual_Laythe = 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... #autoLOC_SCANsat_Science_Visual_Vall = Cette carte donne en quelque sorte envie de faire du patin à glace. #autoLOC_SCANsat_Science_Visual_Tylo = 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. #autoLOC_SCANsat_Science_Visual_Bop = 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. #autoLOC_SCANsat_Science_Visual_Pol = De nouvelles données visuelles montrent que Pol ressemble vraiment à du pollen. #autoLOC_SCANsat_Science_Visual_Eeloo = Toutes ces stries et fissures à la surface d'Eeloo en font une carte vraiment intéressante. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/fr-fr/Tooltips.cfg ================================================ Localization { fr-fr { #autoLOC_SCANsat_mainMapToggle = Carte principale #autoLOC_SCANsat_bigMapToggle = Grande carte #autoLOC_SCANsat_zoomMapToggle = Zoom Carte #autoLOC_SCANsat_overlayToggle = Superposition planétaire #autoLOC_SCANsat_instrumentsToggle = Lecture des instruments #autoLOC_SCANsat_settingsToggle = Paramètres #autoLOC_SCANsat_mainMapColor = Couleur de la carte #autoLOC_SCANsat_mainMapTerminator = Terminateur jour/nuit sur la carte #autoLOC_SCANsat_mainMapType = Basculement Terrain/Biome #autoLOC_SCANsat_mainMapMinimize = Afficher/masquer les informations sur le vaisseau #autoLOC_SCANsat_mainMapStatus = Indicateurs d'état du scanner #autoLOC_SCANsat_mainMapPercentage = Pourcentage d'achèvement du scanner actif #autoLOC_SCANsat_bigMapRefresh = Rafraîchissement de la carte #autoLOC_SCANsat_bigMapColor = Couleur de la carte #autoLOC_SCANsat_bigMapTerminator = Terminateur jour/nuit sur la carte #autoLOC_SCANsat_bigMapGrid = Grille superposée #autoLOC_SCANsat_bigMapOrbit = Orbite superposée #autoLOC_SCANsat_bigMapWaypoints = Points de cheminement #autoLOC_SCANsat_bigMapAnomaly = Anomalies #autoLOC_SCANsat_bigMapFlags = Drapeaux #autoLOC_SCANsat_bigMapLegend = Légende de la carte #autoLOC_SCANsat_bigMapResource = Superposition de ressources #autoLOC_SCANsat_bigMapExport = Exporter la carte sur disque #autoLOC_SCANsat_overlayRefresh = Rafraîchissement de la carte #autoLOC_SCANsat_insNextResource = Ressource suivante #autoLOC_SCANsat_insPreviousResource = Ressource précédente #autoLOC_SCANsat_insNextAnomaly = Particularité de surface suivante #autoLOC_SCANsat_zoomVesselSync = Synchroniser le vaisseau courant #autoLOC_SCANsat_zoomVesselLock = Verrouiller la position au vaisseau #autoLOC_SCANsat_zoomAutoRefresh = Rafraîchissement auto #autoLOC_SCANsat_zoomMapRefresh = Rafraîchissement de la carte #autoLOC_SCANsat_zoomMapWindowState = Basculer la taille de la fenêtre #autoLOC_SCANsat_zoomMapIn = Zoom avant #autoLOC_SCANsat_zoomMapOut = Zoom arrière #autoLOC_SCANsat_zoomMapLeft = Shift gauche #autoLOC_SCANsat_zoomMapRight = Shift droit #autoLOC_SCANsat_zoomMapUp = Shift haut #autoLOC_SCANsat_zoomMapDown = Shift bas #autoLOC_SCANsat_zoomMapIcons = Icônes de la carte #autoLOC_SCANsat_waypointToggle = Sélecteur de points de cheminement #autoLOC_SCANsat_waypointSet = Créer un point de cheminement #autoLOC_SCANsat_waypointCancel = Annuler le point de cheminement #autoLOC_SCANsat_waypointMechJeb = Définir la cible d'atterrissage MechJeb #autoLOC_SCANsat_waypointNameRefresh = Réinitialiser le point de cheminement } } ================================================ FILE: GameData/SCANsat/Resources/Localization/fr-fr/Warnings.cfg ================================================ Localization { fr-fr { #autoLOC_SCANsat_Warning_DataResetCurrent = Effacer <<1>> carte pour <<2>> ? #autoLOC_SCANsat_Warning_DataResetAll = Effacer <<1>> pour tous les corps célestes ? #autoLOC_SCANsat_Warning_StockResourceResetCurrent = Effacer les données sur les ressources brutes pour <<1>> ? #autoLOC_SCANsat_Warning_StockResourceResetAll = Effacer les données sur les ressources brutes pour tous les corps célestes ? #autoLOC_SCANsat_Warning_MapFillCurrent = Remplir <<1>> carte pour <<2>> ? #autoLOC_SCANsat_Warning_MapFillAll = Remplir <<1>> pour tous les corps célestes ? #autoLOC_SCANsat_Warning_ModuleManagerResource = Avertissement\nModule Manager est requis pour toutes les fonctions d'analyse des ressources de SCANsat. #autoLOC_SCANsat_Warning_SaveToConfig = Écraser le fichier de configuration existant sur le disque ? } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ja/Contracts.cfg ================================================ Localization { ja { // *** Exceptional *** #autoLOC_SCANsat_exceptional0001 = @/targetBodyValid3 に対して高解像度のSCANsat調査をグループで実施してください。 #autoLOC_SCANsat_exceptional0002 = @/targetBodyValid3 に対して高解像度のSCANsat調査をグループで実施してください。 #autoLOC_SCANsat_exceptional0003 = スキャンは宇宙機が読み込まれていない状態でも実行できます。 #autoLOC_SCANsat_exceptional0004 = @/targetBodyValid3 に対して複数回の高解像度スキャンを実施してください。 #autoLOC_SCANsat_exceptional0005 = @/targetBodyValid3 の表面について、詳細な地図と調査データを取得しました。 #autoLOC_SCANsat_exceptional0006 = 対象天体の高解像度地形スキャン率が90%未満である必要があります。 #autoLOC_SCANsat_exceptional0007 = 対象天体の高解像度資源スキャン率が90%未満である必要があります。 #autoLOC_SCANsat_exceptional0008 = 対象天体を周回しているか、もしくはその天体が次のターゲットである必要があります。 #autoLOC_SCANsat_exceptional0009 = 対象天体の高解像度視覚スキャン率が90%未満である必要があります。 // *** Significant *** #autoLOC_SCANsat_significant_0001 = @/targetBodyValid2 に対してSCANsat調査をグループで実施してください。 #autoLOC_SCANsat_significant_0002 = @/targetBodyValid2 に対してSCANsat調査をグループで実施してください。 #autoLOC_SCANsat_significant_0003 = スキャンは宇宙機が読み込まれていない状態でも実行できます。 #autoLOC_SCANsat_significant_0004 = @/targetBodyValid2 に対して複数回の低解像度スキャンを実施してください。 #autoLOC_SCANsat_significant_0005 = 素晴らしい成果です。このスキャンは我々の調査チームにとって非常に貴重なデータとなるでしょう。 #autoLOC_SCANsat_significant_0006 = 対象天体の低解像度地形スキャン率が80%未満である必要があります。 #autoLOC_SCANsat_significant_0007 = 対象天体の低解像度視覚スキャン率が80%未満である必要があります。 #autoLOC_SCANsat_significant_0008 = 対象天体の低解像度資源スキャン率が80%未満である必要があります。 #autoLOC_SCANsat_significant_0009 = 対象天体を周回している必要があります。 // *** Trivial *** #autoLOC_SCANsat_trivial_0001 = @/targetBodyValid1 に対して @/scanReadString1 SCANsat 調査を実施してください。 #autoLOC_SCANsat_trivial_0002 = @/targetBodyValid1 に対して @/scanReadString1 SCANsat 調査を実施してください。 #autoLOC_SCANsat_trivial_0003 = スキャンは宇宙機が読み込まれていない状態でも実行できます。 #autoLOC_SCANsat_trivial_0004 = @/targetBodyValid1 に対して簡単なスキャンを行ってください。 #autoLOC_SCANsat_trivial_0005 = よくやりました。この簡単な調査でも専門家にとっては多くの研究材料となります。 #autoLOC_SCANsat_trivial_0006 = ターゲットは母星系に属する天体です。 #autoLOC_SCANsat_trivial_0007 = 対象天体のスキャン完了率が70%未満である必要があります。 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ja/Flags.cfg ================================================ Localization { ja { #autoLOC_SCANsat_Agents_Name = SCAN #autoLOC_SCANsat_Agents_Title = SCAN: 先進的航法に関する科学委員会 #autoLOC_SCANsat_Agents_Description = SCAN機関は太陽系の全惑星のマッピングと調査に専念しています。 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ja/Helptips.cfg ================================================ Localization { ja { #autoLOC_SCANsat_settingsHelpScanningToggle = すべてのSCANsatスキャンを切り替えます。 #autoLOC_SCANsat_settingsHelpBackground = 選択した天体でのバックグラウンドスキャンを切り替えます。 #autoLOC_SCANsat_settingsHelpTimeWarp = 時間加速中のスキャン頻度を調整します。\n設定値を高くするとマップの欠損が少なくなりますが、\n高い時間加速ではパフォーマンスに影響が出る可能性があります。 #autoLOC_SCANsat_settingsHelpGroundTracks = マップモードでスキャン活動の\n視覚的なインジケータを表示します。 #autoLOC_SCANsat_settingsHelpGroundTracksActive = 地上軌跡インジケータは\nアクティブな宇宙船に対してのみ表示するように制限できます。 #autoLOC_SCANsat_settingsHelpStockUIStyle = 標準KSPスタイルのUI要素とUnityスタイルの要素を切り替えます。 #autoLOC_SCANsat_settingsHelpOverlayTooltips = 惑星オーバーレイマップが有効な場合、現在のマウス位置にツールチップを表示します。\nこれらのツールチップには、スキャン範囲に応じて、カーソル座標、地形高度、傾斜、バイオーム名、\n資源量が含​​まれます。 #autoLOC_SCANsat_settingsHelpWindowTooltips = 一部のマップウィンドウボタンにツールチップを表示します。\nこれらは主にアイコンボタンを識別するために使用されます。 #autoLOC_SCANsat_settingsHelpLegendTooltips = マップ凡例にツールチップを表示します。\n無効にするとバイオームマップ凡例も無効になります。 #autoLOC_SCANsat_settingsHelpWindowTooltips = 特定のスキャナータイプでは、表面が\n日光に照らされている必要があります。 #autoLOC_SCANsat_settingsHelpDaylightCheck = 一部のスキャナーは、正しく機能するために\nエリアが日光下にある必要があります。 #autoLOC_SCANsat_settingsHelpStockToolbar = 標準ツールバーを使用します。\nBlizzy78ツールバーと同時に使用できます。 #autoLOC_SCANsat_settingsHelpToolbarMenu = 標準ツールバーにポップアウトメニューを使用して、利用可能なすべてのウィンドウを表示します。 #autoLOC_SCANsat_settingsHelpMechJeb = SCANsatのズームマップとビッグマップのウェイポイント選択モードを\n使用して、MechJebの着陸地点を選択できます。 #autoLOC_SCANsat_settingsHelpMechJebLoad = 保存されたMechJebの着陸目標をロードします。\nこれは、有効なMechJeb搭載機で飛行シーンにいる場合にのみ機能します。 #autoLOC_SCANsat_settingsHelpMapGenSpeed = すべてのSCANsatマップ生成速度を調整します。\n値を低くするとCPUリソースを節約し、マップ生成の\nパフォーマンスへの影響を軽減できる場合があります。 #autoLOC_SCANsat_settingsHelpResetWindows = すべてのウィンドウの位置とスケールをリセットします。\nウィンドウが画面外に完全にドラッグされた場合や、\nウィンドウが表示されない場合に使用します。 #autoLOC_SCANsat_settingsHelpResetPlanetData = 現在の天体について選択したSCANsatデータをリセットします。\n有効にする前に確認ウィンドウが開きます。\n元に戻すことはできません。 #autoLOC_SCANsat_settingsHelpResetAllData = すべての天体について選択したSCANsatデータをリセットします。\n有効にする前に確認ウィンドウが開きます。\n元に戻すことはできません。 #autoLOC_SCANsat_settingsHelpVesselsSensorsPasses = 現在アクティブなSCANsatセンサーに関する情報。\n宇宙船はアクティブなセンサーを持つ宇宙船の数を示します。\nセンサーはセンサーの総数を示します。\n複数のセンサータイプを持つ機器は個々のセンサーをそれぞれカウントします。\nパスは毎秒実行されるセンサー更新の数を示します。\nこの値は時間加速解像度の設定に影響されます。 #autoLOC_SCANsat_settingsHelpGreyScale = 白黒のSCANsatマップに真のグレースケールカラースペクトルを使用します。\n高度マップのピクセルは黒と白の間で補間されます。\n各天体の最小および最大地形高度が制限を定義します。 #autoLOC_SCANsat_settingsHelpExportCSV = ビッグマップのエクスポートボタンを使用するときに、マップテクスチャと一緒に.csvファイルをエクスポートします。\nファイルには、各ピクセルの座標と地形高度が含まれます。\nピクセルは左から右、上から下にラベル付けされます。 #autoLOC_SCANsat_settingsHelpSetMapWidth = SCANsatビッグマップテクスチャの幅の正確な値を入力します。\n値は幅550~8192ピクセルに制限されます。\n設定ボタンを押して値を適用します。 #autoLOC_SCANsat_settingsHelpWindowScale = すべてのSCANsatウィンドウのスケールを調整します。 #autoLOC_SCANsat_settingsHelpFillPlanet = 現在の天体について選択したSCANsatデータを補完します。 #autoLOC_SCANsat_settingsHelpOverlayHideZero = 現在の天体に資源が存在しない場合、UIから資源を非表示にします。\nそれ以外の場合、資源は標準スキャン閾値レベルに達した後に非表示になります。 #autoLOC_SCANsat_settingsHelpFillAll = すべての天体について選択したSCANsatデータを補完します。 #autoLOC_SCANsat_resourceSettingsHelpBiomeLock = 標準の地表バイオームスキャンの要件を回避します。\nSCANsatディスプレイは、地表バイオームスキャンの有無にかかわらず、\n資源量の完全な精度を表示します。 #autoLOC_SCANsat_resourceSettingsHelpInstant = デフォルトでは、標準M700資源スキャナーの軌道調査がすべてのSCANsat資源マップを補完します。\nこれは無効にでき、すべての資源スキャンに標準SCANsat方式が必要になります。\n標準資源スキャンが無効になっている場合は自動的に無効になります。 #autoLOC_SCANsat_resourceSettingsHelpNarrowBand = 多くのSCANsat機能では、完全に正確な資源量データを得るために、\n現在の宇宙船に搭載されているか、天体の軌道上にある狭帯域資源スキャナーが必要です。\nこれを無効にすると、これらの制限を回避できます。 #autoLOC_SCANsat_resourceSettingsHelpDisableStock = すべての標準資源スキャン機能を無効にします。\nすべての資源データにはSCANsatスキャン方式が必要になります。\nいくつかの標準資源機能をSCANsatツールに置き換えます。\nこれらには、右クリックでの読み取り値や惑星オーバーレイマップが含まれます。 #autoLOC_SCANsat_resourceSettingsHelpResetStockResource = 現在の天体の標準資源スキャン範囲をリセットします。\nすべての変更を有効にするには、リロードまたはシーンの変更が必要になる場合があります。\n有効にする前に確認ウィンドウが開きます。\n元に戻すことはできません。 #autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource = すべての天体の標準資源スキャン範囲をリセットします。\nすべての変更を有効にするには、リロードまたはシーンの変更が必要になる場合があります。\n有効にする前に確認ウィンドウが開きます。\n元に戻すことはできません。 #autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation = 惑星オーバーレイおよびビッグマップ資源オーバーレイの構築に使用される\n資源量測定の数を変更します。\n値を小さくするとマップの精度が向上します。\n値が低いとマップの生成が遅くなります。 #autoLOC_SCANsat_resourceSettingsHelpOverlayHeight = 惑星オーバーレイおよびビッグマップ資源オーバーレイの構築に使用される\nテクスチャサイズ(マップ幅は高さの2倍)を変更します。\n値を大きくするとマップの品質と精度が向上します。\n値が高いとマップの生成が遅くなります。 #autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight = 惑星オーバーレイバイオームマップの構築に使用される\nテクスチャサイズ(マップ幅は高さの2倍)を変更します。値を大きくすると\nマップの品質と精度が向上します。\n値が高いとマップの生成が遅くなります。 #autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency = 惑星オーバーレイ資源マップに灰色の背景を作成します。\n天体のどの部分がスキャンされたが資源を含んでいないかを\n明確にするために使用されます。 #autoLOC_SCANsat_resourceSettingsHelpScanThreshold = SCANsatセンサーでスキャンした後、天体に標準資源スキャンを適用するために使用される閾値レベル。\nこれは、契約や他のアドオンが標準資源スキャンを実行する必要がある場合に便利です。\nテキストボックスに0~100の値を設定し、設定ボタンをクリックします。\nすべての天体がすぐにチェックされます。\n天体はロード時またはシーン変更時にもチェックされます。\n変更を有効にするにはリロードが必要な場合があります。 #autoLOC_SCANsat_colorTerrainHelpMin = 地形カラーパレットの低高度カットオフを定義します。\nこの高度より下はすべて最低色で表示されます。 #autoLOC_SCANsat_colorTerrainHelpMax = 地形カラーパレットの高高度カットオフを定義します。\nこの高度より上はすべて最高色で表示されます。 #autoLOC_SCANsat_colorTerrainHelpClampToggle = 低高度値と高高度値の間のカットオフを定義するために使用されます。\nこれは特に海洋惑星で陸と海の明確な区別を定義するのに役立ちます。 #autoLOC_SCANsat_colorTerrainHelpClamp = クランプ高度カットオフを定義します。\nカットオフより下は、選択したカラーパレットの最初の2色で表されます。\nカットオフより上は、残りの色で表されます。 #autoLOC_SCANsat_colorTerrainHelpReverse = 現在選択されている\nカラーパレットの順序を逆にします。 #autoLOC_SCANsat_colorTerrainHelpDiscrete = 各パレットで定義された特定の色のみを使用してマップを描画します。\n色間を滑らかに補間する代わりに使用します。 #autoLOC_SCANsat_colorTerrainHelpPaletteSize = 現在選択されているカラーパレットで\n利用可能な色数を調整します。 #autoLOC_SCANsat_colorBiomeHelpStock = SCANsatバイオームマップに\n標準バイオーム配色を使用します。 #autoLOC_SCANsat_colorBiomeHelpWhiteBorder = バイオーム間に白い境界線を描画します。\n惑星オーバーレイバイオームマップには適用されません。 #autoLOC_SCANsat_colorBiomeHelpTransparency = バイオームマップの透明度を調整します。\n地形の標高がバイオームマップの背後に表示されます。\n地形描画を無効にするには0%に設定します。 #autoLOC_SCANsat_colorPickerHelpLow = 上部のカラースウォッチはこのカラースペクトルの\n下限の更新された色選択を示します。\n下部のカラースウォッチは現在アクティブな色を示します。 #autoLOC_SCANsat_colorPickerHelpHigh = 上部のカラースウォッチはこのカラースペクトルの\n上限の更新された色選択を示します。\n下部のカラースウォッチは現在アクティブな色を示します。 #autoLOC_SCANsat_colorResourceHelpMin = 選択した天体の資源濃度の下限カットオフ。\nこのレベルの資源鉱床は、現在の資源オーバーレイカラー\nスペクトルの下限を使用して表示されます。\nこの値より下の資源鉱床は表示されません。 #autoLOC_SCANsat_colorResourceHelpMax = 選択した天体の資源濃度の上限カットオフ。\nこの値より上の資源鉱床は、現在の資源オーバーレイカラー\nスペクトルの上限を使用して表示されます。 #autoLOC_SCANsat_colorResourceHelpTransparency = 資源オーバーレイの透明度レベルを定義します。\n増加させると、下にある地形、傾斜、またはバイオームマップがより多く表示されるようになります。\nこれは惑星オーバーレイ資源マップ上の資源鉱床の透明度にも影響します。 #autoLOC_SCANsat_colorResourceHelpApply = 現在の値を、選択した資源と\n天体にのみ適用します。 #autoLOC_SCANsat_colorResourceHelpApplyAll = 現在の値を、選択した資源について\nすべての天体に適用します。 #autoLOC_SCANsat_colorResourceHelpDefault = 選択した資源と天体についてのみ\nデフォルト値に戻します。 #autoLOC_SCANsat_colorResourceHelpDefaultAll = 選択した資源について、すべての天体の\nデフォルト値に戻します。 #autoLOC_SCANsat_colorHelpSaveToConfig = すべてのカラー設定値をSCANsat/Resourcesフォルダ内の\n設定ファイルに保存します。\nこれらの値は新しいセーブデータや「デフォルトに戻す」ボタンの\nデフォルト値として機能します。\nこのセーブファイルに適用するために値を設定ファイルに保存する必要はありません。 #autoLOC_SCANsat_colorSlopeHelpCutoff = 選択した2つの傾斜カラーペア間の\nカットオフレベルを調整します。 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ja/OtherText.cfg ================================================ Localization { ja { #autoLOC_SCANsat_Analyze = データ分析 #autoLOC_SCANsat_StartScan = スキャン開始 #autoLOC_SCANsat_StopScan = スキャン停止 #autoLOC_SCANsat_ToggleScan = スキャン切替 #autoLOC_SCANsat_Extend = 展開 #autoLOC_SCANsat_Retract = 格納 #autoLOC_SCANsat_Unknown = 不明 #autoLOC_SCANsat_All_Disabled = 全スキャン無効 #autoLOC_SCANsat_Disabled = スキャン無効 #autoLOC_SCANsat_TooLow = 低すぎる #autoLOC_SCANsat_SubOptimal = 次善 #autoLOC_SCANsat_Ideal = 理想的 #autoLOC_SCANsat_TooHigh = 高すぎる #autoLOC_SCANsat_NoData = データなし #autoLOC_SCANsat_Abundance = 存在量 #autoLOC_SCANsat_Surface = 地表 #autoLOC_SCANsat_AltitudeMin = 高度 (最小): <<1>>km\n #autoLOC_SCANsat_AltitudeBest = 高度 (最適): <<1>>km\n #autoLOC_SCANsat_AltitudeMax = 高度 (最大): <<1>>km\n #autoLOC_SCANsat_Types = スキャンタイプ: #autoLOC_SCANsat_Daylight = 日照必要: <<1>> #autoLOC_SCANsat_FOV = FOV: <<1>> #autoLOC_SCANsat_MapProjection = 地図投影法 #autoLOC_SCANsat_MapType = マップタイプ #autoLOC_SCANsat_MapResource = 資源 #autoLOC_SCANsat_MapBody = 天体 #autoLOC_SCANsat_GeneralSettings = 一般設定 #autoLOC_SCANsat_BackgroundSettings = バックグラウンド設定 #autoLOC_SCANsat_ResourceSettings = 資源設定 #autoLOC_SCANsat_DataManagement = データ管理 #autoLOC_SCANsat_ColorManagement = カラー管理 #autoLOC_SCANsat_ScanInfo = SCANセンサー #autoLOC_SCANsat_ScanInfoStatus = SCANステータス #autoLOC_SCANsat_ScanInfoAltitude = SCAN高度 #autoLOC_SCANsat_ScanInfoType = SCANタイプ #autoLOC_SCANsat_ScanInfoFOV = SCAN FOV #autoLOC_SCANsat_ScanInfoPower = SCAN電力 #autoLOC_SCANsat_ScanInfoDaylight = 地表の日照状況 #autoLOC_SCANsat_ScanResourceDisplay = SCAN資源 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ja/Parts.cfg ================================================ Localization { ja { #autoLOC_SCANsat_BTDT_Title = SCAN BTDT® (走破済みセンサー) #autoLOC_SCANsat_BTDT_Description = この小型センサーは近くの異常を自動的に識別できます。非常に短い距離と非常に低い高度でのみ機能するため、主に訪問済みで識別された異常を追跡するのに役立ちます。 #autoLOC_SCANsat_BTDT_Exo_Description = このモデルのスキャン装置には、近くにある興味深い特徴に素早く焦点を合わせるように設計されたパッシブセンサーとアクティブセンサーのセットが含まれています。 #autoLOC_SCANsat_Multi_Title = SCAN マルチスペクトルセンサー #autoLOC_SCANsat_Multi_Description = このマルチチャンネルセンサーは、いくつかの赤外線、可視光、およびレーダー帯域にわたる放射線を検出します。これにより、地形タイプとバイオームを区別する能力が得られます。また、地上の構造物などの異常も検出できます。 #autoLOC_SCANsat_Radar_Title = SCAN レーダー高度計センサー #autoLOC_SCANsat_Radar_Description = SCANがお届けする高性能レーダー高度計センサーです。これはこのセンサーファミリーのエントリーレベルモデルであり、通常はおもちゃのロケットやラジコン飛行機とセットで販売されています。フォーカスグループテストで対象者の95%がロケットエンジンの排気管にダクトテープで貼り付けようとしたことが判明した後、この改良された新モデルはさらに使いやすくなりました。 #autoLOC_SCANsat_SAR_Title = SCAN SAR高度計センサー #autoLOC_SCANsat_SAR_Description = この合成開口レーダーセンサーは、飛行経路を利用してはるかに大きなアンテナをシミュレートします。これにより、より高い解像度で地形の標高を検出できます。欠点は、視野が比較的小さく、より高い高度でより良く機能することです。 #autoLOC_SCANsat_Radar3B_Title = R-3B レーダー高度計 #autoLOC_SCANsat_Radar3B_Description = 高精度レーダー高度計は、衛星直下の非常に狭い範囲で基本的な高度データを収集できます。適度な電力を消費し、日照下および非日照下の両方で機能します。 #autoLOC_SCANsat_RadarEO_Title = R-EO-1 レーダーアンテナ #autoLOC_SCANsat_RadarEO_Description = このエントリーレベルのLバンドレーダー高度計は、低軌道から中程度の範囲で低解像度の高度データを収集します。適度な電力を消費し、日照下および非日照下の両方で機能します。 #autoLOC_SCANsat_SARX_Title = SAR-X アンテナ #autoLOC_SCANsat_SARX_Description = 基本的な合成開口レーダー機器で、レーダー信号を送信し、ピング中の衛星の動きを利用して、はるかに大きなディッシュで受信するのを合成します。低軌道から非常に狭い幅で高解像度の高度データを効果的に取得します。大量の電力を消費しますが、日照下および非日照下の両方で機能します。 #autoLOC_SCANsat_SARC_Title = SAR-C アンテナ #autoLOC_SCANsat_SARC_Description = 高度な合成開口レーダー機器で、より多くの電力を消費してより広い範囲で、より高い高度から動作します。中軌道から高解像度の高度データを効果的に取得しますが、非常に狭い動作範囲に制限されます。大量の電力を消費し、日照下および非日照下の両方で機能します。 #autoLOC_SCANsat_SARL_Title = SAR-L アンテナ #autoLOC_SCANsat_SARL_Description = 最も高度な合成開口レーダー機器で、巨大なアンテナを使用して複数の偏波のレーダーエネルギーを送受信します。高軌道から広範囲の地形をマッピングでき、受信データの性質が豊富なためバイオームもマッピングできます。非常に大量の電力を消費し、日照下および非日照下の両方で機能します。 #autoLOC_SCANsat_Multi_MS1_Title = MS-1 マルチスペクトルスキャナー #autoLOC_SCANsat_Multi_MS1_Description = この低解像度マルチスペクトルスキャナーは、ターゲットの表面から反射された光を観測して、低詳細のカラーマップとバイオームマップを提供します。このスキャナーモデルのエントリーレベルのコンポーネントのため、効果的に動作するには低軌道に配置する必要があり、資源を検出できません。少量の電力を消費し、日照下でのみ動作します。 #autoLOC_SCANsat_Multi_MSR_Title = MS-R 改良型マルチスペクトルスキャナー #autoLOC_SCANsat_Multi_MSR_Description = 改良型マルチスペクトルスキャナーは真の万能型で、惑星の表面から反射された光を観測し、低詳細のカラー画像とバイオームマップを提供します。地表資源さえも検出できます。改良された光学系と電子機器により、エントリーレベル製品と比較して高軌道で効果的な動作が可能ですが、狭い範囲でのみです。少量の電力を消費し、日照下でのみ動作します。 #autoLOC_SCANsat_Multi_MS2A_Title = MS-2A 高度マルチスペクトルスキャナー #autoLOC_SCANsat_Multi_MS2A_Description = いくつかのスペクトルチャンネルで光波長を調べることにより、高度なスキャナーモデルは低詳細のカラー画像、バイオームマップ、資源分布を生成します。少量の電力を消費し、日照下でのみ動作します。 #autoLOC_SCANsat_VS1_Title = VS-1 高解像度イメージャー #autoLOC_SCANsat_VS1_Description = このエントリーレベルの観測望遠鏡は、美しい高詳細のカラー画像を生成します - 低軌道からのみ。少量の電力を消費し、日照下でのみ機能します。 #autoLOC_SCANsat_VS3_Title = VS-3 高度高解像度イメージャー #autoLOC_SCANsat_VS3_Description = カーバル非政府高解像度観測の頂点であるこの大型で高価なイメージャーは、高詳細のカラー画像を生成し、独自の地表特徴を識別できます。少量の電力を消費し、日照下でのみ機能します。 #autoLOC_SCANsat_VS11_Title = VS-11 機密偵察イメージャー #autoLOC_SCANsat_VS11_Description = *編集済み*は、高度*編集済み*から*編集済み*まで、*編集済み*ごとに*編集済み*のターゲットを観測できます。このような驚くべき*編集済み*は、*編集済み*が*編集済み* *編集済み*と推測するに至りました。中程度の電力を消費し、日照下でのみ機能します。 #autoLOC_SCANsat_R_Title = SCAN-R 資源マッパー #autoLOC_SCANsat_R_Description = 低軌道高度で良好に機能するエントリーレベルの資源マッピング機器ですが、非常に狭い幅でしかスキャンしません。適度な電力を消費し、日照下でのみ機能します。 #autoLOC_SCANsat_R2_Title = SCAN-R2 高度資源マッパー #autoLOC_SCANsat_R2_Description = 高軌道から有用な資源を評価できるミドルテク資源イメージャーです。適度な電力を消費し、日照下でのみ機能します。 #autoLOC_SCANsat_RX_Title = SCAN-RX ハイパースペクトル資源マッパー #autoLOC_SCANsat_RX_Description = 数百チャンネルのデータを取得し、高軌道から有用な資源分布を評価するハイテク資源イメージャーです。少量の電力を消費し、日照下でのみ機能します。 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ja/Science.cfg ================================================ Localization { ja { #autoLOC_SCANsat_Science_Lo_Title = 低解像度高度計スキャン #autoLOC_SCANsat_Science_Lo_Default1 = 低解像度高度計データを分析しました。 #autoLOC_SCANsat_Science_Lo_Default2 = 「レーダー高度計センサーが報告しています。どうやったのか分かりませんが、強力な信号を受信し、データを取得しています。これはおやつで祝うべきですね!」 #autoLOC_SCANsat_Science_Lo_Sun = センサーが故障しているのではないかと考えます。 #autoLOC_SCANsat_Science_Lo_Moho = まあ、少なくともこの低解像度データのおかげでMohoは少しかっこよく見えます。巨大な溶岩の湖とまではいきませんが、それでもクールです。 #autoLOC_SCANsat_Science_Lo_Eve = スキャナーから返された粗く不鮮明な高度推定値を見つめ、代わりに高解像度スキャナーを送っていればよかったのにと思います。まあいいでしょう、もっとロケットを打ち上げる絶好の理由になります!(まるで理由が必要だったかのように。) #autoLOC_SCANsat_Science_Lo_Gilly = あなたの低解像度スキャンは既に知っていたことを裏付けました:Gillyは宇宙に浮かぶただのゴツゴツした岩です。少なくとも報告書を見て目を疲れさせる必要はありません。 #autoLOC_SCANsat_Science_Lo_Kerbin = この惑星表面の低解像度データでさえ驚くほど有用です。この技術をMunやそれ以遠に展開するのが待ちきれません。 #autoLOC_SCANsat_Science_Lo_Mun = データは眼下に広がる風景の大まかな特徴を示しています。高解像度スキャンの方が役立つでしょうが、このデータを使えばおそらく適切な着陸地点を見つけることができるでしょう。 #autoLOC_SCANsat_Science_Lo_Minmus = カーバル天文学会の連中が正しかったことをしぶしぶ認めます:Minmusは本当に月でした。自分の目で高度計スキャンを見るまでは信じられなかったでしょう。 #autoLOC_SCANsat_Science_Lo_Duna = この低解像度データは少し粗く歪んでいますが、Dunaの適切な着陸地点を探す上で依然として非常に貴重です。突如として、長期的なDunaミッションが現実的な見通しとなりました。 #autoLOC_SCANsat_Science_Lo_Ike = データを詳細に調べると、IkeがMunにどれほど似ているかに驚かされます。それらの比較表面地質学について考えます。 #autoLOC_SCANsat_Science_Lo_Dres = 低解像度スキャナーを使っても、Dresにはいくつかの顕著な山があることは明らかです。「あの丘には金がある」と確信しているので、資源スキャンの結果が待ちきれません。 #autoLOC_SCANsat_Science_Lo_Jool = 高度計?何の高度計です?カーバルのためにも、これはガス巨人です。ランダムに数字を選んで、それでよしとしましょう。 #autoLOC_SCANsat_Science_Lo_Laythe = センサーは水を透過できないようです。 #autoLOC_SCANsat_Science_Lo_Vall = さて、これです:「Vall(バル)たちが待っていたデータだ!ハハハハハ!ハハハ。ハ。ハ?何だって、誰か面白いと思ってくれるはずだ。」 #autoLOC_SCANsat_Science_Lo_Tylo = Laythe、Vall、Joolを頭上に見る地表からの眺めがどのようなものかはまだわかりませんが、このデータは着陸地点を見つけてそれを確かめるのに役立つでしょう。 #autoLOC_SCANsat_Science_Lo_Bop = さて、低解像度の高度計データが入手できたので、それをまとめてKSCに送り返すことにしました。バッテリーに残っている電力で全てを送信し、同時に基本システムを稼働させ続けるのに十分であることを願うばかりです。 #autoLOC_SCANsat_Science_Lo_Pol = 低解像度スキャンは、Polが確かに巨大な花粉粒のように見えることを確認しました。高解像度スキャンにアップグレードし、電子顕微鏡の分野を進歩させるまで、この類似性が本当にどれほど強いかという疑問は残るでしょう。 #autoLOC_SCANsat_Science_Lo_Eeloo = Kerbinの科学者たちはこのデータを長い間待っていました。それが届けば、間違いなく全員でお祝いとおやつが振る舞われるでしょう。 #autoLOC_SCANsat_Science_Hi_Title = 高解像度高度計スキャン #autoLOC_SCANsat_Science_Hi_Default1 = 高解像度高度計データを分析しました。 #autoLOC_SCANsat_Science_Hi_Default2 = 「高解像度高度計スキャンは、低解像度のものより間違いなく優れています。SCANは再びそのスキャン技術を証明しました。」 #autoLOC_SCANsat_Science_Hi_Sun = 最初から低解像度センサーを信頼していれば、いくらかお金を節約できたことに気づきます。 #autoLOC_SCANsat_Science_Hi_Moho = ついに、Mohoに素晴らしさが戻ってきました!巨大な流れる溶岩の川ではないかもしれませんが、このデータは壮観です! #autoLOC_SCANsat_Science_Hi_Eve = 高解像度センサーは霞んだ紫色の雰囲気をうまく切り裂き、表面の微細な詳細を区別することができます。KSCの科学者たちは安心するでしょう。 #autoLOC_SCANsat_Science_Hi_Gilly = 超高解像度でも、Gillyはどういうわけか低解像度に見えます。それは本当にゴツゴツした表面です。 #autoLOC_SCANsat_Science_Hi_Kerbin = 新しい高解像度技術が提供するデータの色すべてに魅了されます。突然、ミッションコントロールがあなたを昏睡状態から覚まし、あなたは急いで口の端からよだれを拭います。 #autoLOC_SCANsat_Science_Hi_Mun = 「はっ!もう退屈な灰色の月じゃない。このスキャンの色を見てください!これで本当に最高の着陸地点を特定できます。」 #autoLOC_SCANsat_Science_Hi_Minmus = わあ、Minmusは実在するだけでなく、驚くべき地形を持っています!あの平らな場所の一つに着陸するのが待ちきれません。 #autoLOC_SCANsat_Science_Hi_Duna = この高解像度データは素晴らしいです。丘と谷を分析し始め、完璧な着陸地点を探します。 #autoLOC_SCANsat_Science_Hi_Ike = データは大きな傾斜した丘とクレーターの存在を確認しています。うまくいけば、KSCのアナリストがこれを使って適切な着陸場所を見つけることができるでしょう。 #autoLOC_SCANsat_Science_Hi_Dres = あれは…かなりの山々です。あの丘のいくつかを登ろうとするより、このデータを分析できてよかったと思います。 #autoLOC_SCANsat_Science_Hi_Jool = 高解像度でもJoolには表面がないようです。あの理論はそこまででした。少なくともまだ助成金はあります! #autoLOC_SCANsat_Science_Hi_Laythe = マップは主に負の高さを示しています。Laytheの山に登るためだけに、水を抜くことを考えます。 #autoLOC_SCANsat_Science_Hi_Vall = 高解像度スキャナーからのデータは、Vallの表面が確かに「しわくちゃ」であることを確認しています。ジーンはあなたに50資金を借りているようですね。 #autoLOC_SCANsat_Science_Hi_Tylo = TyloはJoolの衛星の中で最初に発見されたかもしれませんが、このデータはまるで初めて月を発見したかのような気分にさせてくれます。 #autoLOC_SCANsat_Science_Hi_Bop = わあ、あの色を見てください。そのデータが何を意味するのか全く分かりませんが、この高解像度データがKSCの皆を感動させることは確かです。 #autoLOC_SCANsat_Science_Hi_Pol = このような高品質データがあっても、適切な着陸地点を見つけるのは依然として困難です。一体どうやってこの月はできたのでしょう? #autoLOC_SCANsat_Science_Hi_Eeloo = SAR高度計センサーのデータを調べると、表面の亀裂や裂け目が際立って詳細にわかります。あの潜在的な着陸地点の数々を見てください。 #autoLOC_SCANsat_Science_Multi_Title = マルチスペクトル分析 #autoLOC_SCANsat_Science_Multi_Default1 = マルチスペクトルセンサーデータを分析しました。 #autoLOC_SCANsat_Science_Multi_Default2 = 「うわー、今どうやってこのデータを受信してるんだ?あのSCANのエンジニアたちは本当に自分たちが何をしているか分かっている。そうでなければ、自分たちが何をしているか全く分かっていないかのどちらかだ。いずれにせよ、おやつの時間だ!」 #autoLOC_SCANsat_Science_Multi_Sun1 = バイオームデータがないことに驚きます。 #autoLOC_SCANsat_Science_Multi_Sun2 = バイオームマップに極が見えないのはなぜだろうかと思います。 #autoLOC_SCANsat_Science_Multi_Moho = データを精査しながら、多くの科学者が推測してきた、あの捉えどころのない溶岩湖バイオームを見つけられるだろうかと考えます。 #autoLOC_SCANsat_Science_Multi_Eve = Eveのバイオームマップの複雑に渦巻く線は、ラーヴァランプや絞り染めのシャツを思い出させます。ああ、あの頃はよかった。次のEveへの宇宙船にはディスコボールを必須搭載だ! #autoLOC_SCANsat_Science_Multi_Gilly = あれだけ目を細めても、あの天文学者たちはここのバイオームを見ることができませんでした。はっ!間抜けな天文学者め!科学に1点、えーっと…科学に0点だ。 #autoLOC_SCANsat_Science_Multi_Kerbin = このバイオームデータは本当に驚くべきものです。センサーが設置された日に、特に散らかりやすいスナック菓子を一箱食べたことを覚えているので、それがパンくず耐性であることを願うばかりです。 #autoLOC_SCANsat_Science_Multi_Mun = ふむ、月にもバイオームがあったなんて知らなかった。チーズはどのバイオームにあるんだろうか。そして、そこにも他に何かおやつがあるんだろうか。 #autoLOC_SCANsat_Science_Multi_Minmus = データを精査しながら、「グレイターフラッツ」という名前がいかに適切かについて考えます。こんな名前を考え出す奴は、この辺にいるエンジニアと違って、相当頭のいいカーバルに違いない。 #autoLOC_SCANsat_Science_Multi_Duna = あの甘美な、甘美な科学データをすべて収集するのに最適な場所を探して、バイオームデータをくまなく調べます。うーん、科学…そしておやつ。 #autoLOC_SCANsat_Science_Multi_Ike = Ikeから返ってくるデータを精査すると、そのバイオームの多様性に驚かされます。結局のところ、ただの月ですから。そこに眠る科学データを手に入れるのが待ちきれません。 #autoLOC_SCANsat_Science_Multi_Dres = 極地、チェック。高地、チェック。中地、チェック。低地、チェック。尾根、チェック。衝突噴出物、チェック。衝突クレーター、チェック。峡谷、チェック。全部揃ったと思います。スキャナーを止めておやつにしましょう! #autoLOC_SCANsat_Science_Multi_Jool1 = バイオームデータがないことに驚きます。 #autoLOC_SCANsat_Science_Multi_Jool2 = バイオームマップに極が見えないのはなぜだろうかと思います。 #autoLOC_SCANsat_Science_Multi_Laythe = センサーが陸地バイオームを検出するたびにパーティーを開きたくなります。 #autoLOC_SCANsat_Science_Multi_Vall = かなり単純なデータです:極地、高地、中地、そして低地。これで完了です。さあ、おやつにしましょう! #autoLOC_SCANsat_Science_Multi_Tylo = レポートにあるバイオームの多様性に感銘を受けます。Tyloは見上げるだけでなく、見下ろすのもクールです。 #autoLOC_SCANsat_Science_Multi_Bop = このBopのバイオームに関する詳細な分析は、この小さな月に対する我々の理解を、期待をはるかに超えて深めるでしょう。素晴らしい一日でした。みんなでおやつだ! #autoLOC_SCANsat_Science_Multi_Pol = Polから送られてくるバイオームデータを見ていると、花粉粒にもバイオームがあるのではないかと考え始めます。しかし、もし活動家たちがその考えに取り憑かれたらどうなるかを知っているので、すぐにその考えを打ち消します。 #autoLOC_SCANsat_Science_Multi_Eeloo = Kerbinからこれほど遠い惑星の詳細なバイオームデータが得られるとは驚きです。データが送られてくるレポートを畏敬の念を持って見つめます。 #autoLOC_SCANsat_Science_Resource_Title = 資源スキャン #autoLOC_SCANsat_Science_Resource_Default1 = 低解像度資源データを分析しました。 #autoLOC_SCANsat_Science_Resource_Default2 = 「現在、資源センサーのデータを受信しています。この情報は、あの別のグループから得ていたものよりずっと良さそうです…」 #autoLOC_SCANsat_Science_Resource_Sun = おそらく、太陽は地表資源を見つけるのに最適な場所ではないでしょう。 #autoLOC_SCANsat_Science_Resource_Moho = ついにMohoの地表資源に関する情報をいくつか入手しましたが、あとはなぜ誰かがそこに着陸したいのかを理解する必要があります。 #autoLOC_SCANsat_Science_Resource_Eve = Eveの地表資源に関する多くの良いデータを得ています。これは、惑星から脱出する方法を考え出す必要があるときに非常に役立つでしょう。 #autoLOC_SCANsat_Science_Resource_Gilly = Gillyの初期資源スキャンは興味深いものです。まるで小惑星採掘のようです。 #autoLOC_SCANsat_Science_Resource_Kerbin = ついにKerbinの資源に関するデータをいくつか入手しました。なぜなら、誰もが知っているように、自分の惑星に関する基本情報が欲しいなら、高価で複雑な衛星を軌道に送るに勝るものはないからです。 #autoLOC_SCANsat_Science_Resource_Mun = この資源データは、Munが採掘目的にどれほど適しているかを初めて具体的に示してくれます。 #autoLOC_SCANsat_Science_Resource_Minmus = ついに、すべてのカーボノートが最初の採掘施設として選ぶMinmusの資源データをいくつか入手しました。 #autoLOC_SCANsat_Science_Resource_Duna = この資源データは、最近ヒットしたあのカーバル映画のお気に入りのセリフを追体験するのに一歩近づけてくれます。 #autoLOC_SCANsat_Science_Resource_Ike = Ikeは太陽系で最も興味深い天体ではないかもしれませんが、だからといってこの資源データが役に立たないわけではありません。 #autoLOC_SCANsat_Science_Resource_Dres = 近くの小惑星で資源を探した方がましです。一体誰がDresなんかに関わりたがるでしょうか。 #autoLOC_SCANsat_Science_Resource_Jool = うーん、ガス巨人は地表資源を探すのに最適な場所ではないかもしれませんね… #autoLOC_SCANsat_Science_Resource_Laythe = まあ、ここにはたくさんの良いデータがありますが、実際に着陸して資源を活用できる地表の面積はごくわずかです。 #autoLOC_SCANsat_Science_Resource_Vall = 氷に覆われたVallの資源スキャンは、多くの興味深いデータを提供します。 #autoLOC_SCANsat_Science_Resource_Tylo = 恐ろしげなTyloについては、どんな資源情報でも手に入れたいものです。 #autoLOC_SCANsat_Science_Resource_Bop = Bopは資源を探す場所を決める際に誰もが最初に選ぶ場所ではないかもしれませんが、このデータはいつか役に立つかもしれません。 #autoLOC_SCANsat_Science_Resource_Pol = 花粉粒や奇妙なゴツゴツしたものに加えて、Polには興味深い資源鉱床があるようです。 #autoLOC_SCANsat_Science_Resource_Eeloo = はるばるEelooまで来たのですから、いっそのことここを露天掘りし尽くして、その先にあるものへと進みましょう。 #autoLOC_SCANsat_Science_Visual_Title = 視覚スキャン #autoLOC_SCANsat_Science_Visual_Default1 = 高解像度視覚データを分析しました。 #autoLOC_SCANsat_Science_Visual_Default2 = 「SCANチームはまたやってくれました。各天体で私たちが見るべきものをさらに見つけてくれました。」 #autoLOC_SCANsat_Science_Visual_Sun = 考え直してみると、私たちのデリケートな望遠鏡を直接太陽に向けるのは、あまり良い考えではないかもしれません。 #autoLOC_SCANsat_Science_Visual_Moho = このMohoの高品質視覚データスキャンは、莫大な量の…土…そしておそらくいくらかの溶岩を明らかにしています。 #autoLOC_SCANsat_Science_Visual_Eve = 何がEveをあんなに紫色にしているのかはよくわかりませんが、確かにきれいなマップができます。 #autoLOC_SCANsat_Science_Visual_Gilly = このGillyの高品質視覚スキャンは、Gillyの低品質視覚スキャンによく似ています。どうやらここにはあまり見るべきものがないようです。 #autoLOC_SCANsat_Science_Visual_Kerbin = ついに私たちの母星の表面の良い地図を手に入れることができますが、地表にはカーバルがいないようなので、驚くほど役に立たないでしょう。 #autoLOC_SCANsat_Science_Visual_Mun = クレーターの中にクレーター、そのまた中にクレーターがあるようなものです。 #autoLOC_SCANsat_Science_Visual_Minmus = まあ、アイスクリームかもしれません…表面はアイスクリームによく似ています…確かめる唯一の方法は、そこへ降りて味見を始めることです! #autoLOC_SCANsat_Science_Visual_Duna = この視覚マップは、赤い惑星が本当に非常に赤いことを確認しています。 #autoLOC_SCANsat_Science_Visual_Ike = Dunaの孤独な月IkeはMunによく似ていますが、もしMunにクレーターがなく、本当に退屈だったら、という感じです。 #autoLOC_SCANsat_Science_Visual_Dres = この視覚スキャンデータセットは、Dresが本当に存在することをきっぱりと証明しています…誰が知っていたでしょう? #autoLOC_SCANsat_Science_Visual_Jool = あのきれいな緑色の渦巻きは、何か本当に面白いものを隠しているに違いありません。 #autoLOC_SCANsat_Science_Visual_Laythe = あの島を独り占めすることも、あるいはあの島も…あの島も、もしかしたらあそこにあるあの島も。ああ、待って、もしかしたらあの島、それか…。 #autoLOC_SCANsat_Science_Visual_Vall = この地図はなんだかアイススケートに行きたくさせます。 #autoLOC_SCANsat_Science_Visual_Tylo = この新しい視覚データセットは、あらゆる種類の興味深いものを明らかにしています…まあ、実際には、Tyloは軌道から見ると少し退屈に見えます。 #autoLOC_SCANsat_Science_Visual_Bop = うーん、それはすべてかなり恐ろしそうに見えます。もしかしたら、軌道上から地図を作るだけに留めて、あまり近づかない方がいいかもしれません。 #autoLOC_SCANsat_Science_Visual_Pol = 新しい視覚スキャンデータは、Polが本当に花粉のように見えることを示しています。 #autoLOC_SCANsat_Science_Visual_Eeloo = Eelooの表面にあるあの筋や亀裂はすべて、本当に興味深い地図を作り出しています。 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ja/Tooltips.cfg ================================================ Localization { ja { #autoLOC_SCANsat_mainMapToggle = メインマップ #autoLOC_SCANsat_bigMapToggle = ビッグマップ #autoLOC_SCANsat_zoomMapToggle = ズームマップ #autoLOC_SCANsat_overlayToggle = 惑星オーバーレイ #autoLOC_SCANsat_instrumentsToggle = 計器表示 #autoLOC_SCANsat_settingsToggle = 設定 #autoLOC_SCANsat_mainMapColor = マップカラー #autoLOC_SCANsat_mainMapTerminator = マップ 昼夜境界線 #autoLOC_SCANsat_mainMapType = 地形/バイオーム切替 #autoLOC_SCANsat_mainMapMinimize = 機体情報 表示/非表示 #autoLOC_SCANsat_mainMapStatus = スキャナー状況インジケーター #autoLOC_SCANsat_mainMapPercentage = アクティブスキャナー完了率 #autoLOC_SCANsat_bigMapRefresh = マップ更新 #autoLOC_SCANsat_bigMapColor = マップカラー #autoLOC_SCANsat_bigMapTerminator = マップ 昼夜境界線 #autoLOC_SCANsat_bigMapGrid = グリッドオーバーレイ #autoLOC_SCANsat_bigMapOrbit = 軌道オーバーレイ #autoLOC_SCANsat_bigMapWaypoints = ウェイポイント #autoLOC_SCANsat_bigMapAnomaly = アノマリー #autoLOC_SCANsat_bigMapFlags = 旗 #autoLOC_SCANsat_bigMapLegend = マップ凡例 #autoLOC_SCANsat_bigMapResource = 資源オーバーレイ #autoLOC_SCANsat_bigMapExport = マップをディスクにエクスポート #autoLOC_SCANsat_resourceCutoffMinus = 資源カットオフ減少 #autoLOC_SCANsat_resourceCutoffPlus = 資源カットオフ増加 #autoLOC_SCANsat_resourceSettings = 資源カラー設定を開く #autoLOC_SCANsat_overlayRefresh = マップ更新 #autoLOC_SCANsat_insNextResource = 次の資源 #autoLOC_SCANsat_insPreviousResource = 前の資源 #autoLOC_SCANsat_insNextAnomaly = 次の地表特徴物 #autoLOC_SCANsat_zoomVesselSync = 現在の機体と同期 #autoLOC_SCANsat_zoomVesselLock = 位置を機体に固定 #autoLOC_SCANsat_zoomLevelPersist = 前回のズームレベルを記憶 #autoLOC_SCANsat_zoomAutoRefresh = 自動更新 #autoLOC_SCANsat_zoomMapRefresh = マップ更新 #autoLOC_SCANsat_zoomMapWindowState = ウィンドウサイズ切替 #autoLOC_SCANsat_zoomMapIn = ズームイン #autoLOC_SCANsat_zoomMapOut = ズームアウト #autoLOC_SCANsat_zoomMapLeft = 左に移動 #autoLOC_SCANsat_zoomMapRight = 右に移動 #autoLOC_SCANsat_zoomMapUp = 上に移動 #autoLOC_SCANsat_zoomMapDown = 下に移動 #autoLOC_SCANsat_zoomMapIcons = マップアイコン #autoLOC_SCANsat_waypointToggle = ウェイポイントセレクター #autoLOC_SCANsat_waypointSet = ウェイポイント作成 #autoLOC_SCANsat_waypointCancel = ウェイポイントキャンセル #autoLOC_SCANsat_waypointMechJeb = MechJeb着陸目標設定 #autoLOC_SCANsat_waypointNameRefresh = ウェイポイントリセット } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ja/Warnings.cfg ================================================ Localization { ja { #autoLOC_SCANsat_Warning_DataResetCurrent = <<1>>の地図を<<2>>のために消しますか? #autoLOC_SCANsat_Warning_DataResetAll = すべての天体の<<1>>を消去しますか? #autoLOC_SCANsat_Warning_StockResourceResetCurrent = <<1>>の標準資源データを消去しますか? #autoLOC_SCANsat_Warning_StockResourceResetAll = すべての天体の標準資源データを消去しますか? #autoLOC_SCANsat_Warning_MapFillCurrent = <<1>>を<<2>>の地図に記入しますか? #autoLOC_SCANsat_Warning_MapFillAll = すべての天体を<<1>>に記入しますか? #autoLOC_SCANsat_Warning_ModuleManagerResource = 警告\nすべてのSCANsat資源スキャン機能にはModule Managerが必要です。 #autoLOC_SCANsat_Warning_SaveToConfig = ディスク上の既存の設定ファイルを上書きしますか? } } ================================================ FILE: GameData/SCANsat/Resources/Localization/pt-br/Contracts.cfg ================================================ Localization { pt-br { // *** Exceptional *** #autoLOC_SCANsat_exceptional0001 = Conduza um levantamento de pesquisas SCANsat de alta resolução em @/targetBodyValid3. #autoLOC_SCANsat_exceptional0002 = Conduza um levantamento de pesquisas SCANsat de alta resolução em @/targetBodyValid3. #autoLOC_SCANsat_exceptional0003 = A digitalização pode ocorrer enquanto o nave não estiver carregada. #autoLOC_SCANsat_exceptional0004 = Execute várias varreduras de alta resolução em @/targetBodyValid3 #autoLOC_SCANsat_exceptional0005 = Agora temos um mapa topográfico detalhado para a superfície em @/targetBodyValid3 #autoLOC_SCANsat_exceptional0006 = Necessário menos de 90% de varredura altimétrica de alta resolução do alvo. #autoLOC_SCANsat_exceptional0007 = Necessário menos de 90% de varredura de minério de alta resolução do alvo. #autoLOC_SCANsat_exceptional0008 = Necessário ter orbitado o alvo, ou o alvo deve ser o próximo na lista. // *** Significant *** #autoLOC_SCANsat_significant_0001 = Conduza um levantamento de pesquisas SCANsat em @/targetBodyValid2. #autoLOC_SCANsat_significant_0002 = Conduza um levantamento de pesquisas SCANsat em @/targetBodyValid2. #autoLOC_SCANsat_significant_0003 = A digitalização pode ocorrer enquanto o nave não estiver carregada. #autoLOC_SCANsat_significant_0004 = Execute várias varreduras em @/targetBodyValid2 #autoLOC_SCANsat_significant_0005 = Excelente trabalho, essas varreduras fornecerão dados valiosos para nossas equipes de pesquisa. #autoLOC_SCANsat_significant_0006 = Necessário menos de 80% de varredura altimétrica de baixa resolução do alvo. #autoLOC_SCANsat_significant_0007 = Necessário menos de 80% de varredura de bioma do alvo. #autoLOC_SCANsat_significant_0008 = Necessário menos de 80% de varredura de recursos M700 do alvo. #autoLOC_SCANsat_significant_0009 = Necessário ter orbitado o alvo. // *** Trivial *** #autoLOC_SCANsat_trivial_0001 = Conduza uma pesquisa SCANsat de @/scanReadString1 em @/targetBodyValid1. #autoLOC_SCANsat_trivial_0002 = Conduza uma pesquisa SCANsat de @/scanReadString1 em @/targetBodyValid1. #autoLOC_SCANsat_trivial_0003 = A digitalização pode ocorrer enquanto o nave não estiver carregada. #autoLOC_SCANsat_trivial_0004 = Conduza uma varredura simples em @/targetBodyValid1 #autoLOC_SCANsat_trivial_0005 = Excelente trabalho, esta simples pesquisa dará muito material de estudo aos nossos especialistas. #autoLOC_SCANsat_trivial_0006 = O alvo é parte do sistema doméstico. #autoLOC_SCANsat_trivial_0007 = Necessário ter escaneado menos de 70% do alvo. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/pt-br/Flags.cfg ================================================ Localization { pt-br { #autoLOC_SCANsat_Agents_Name = SCAN #autoLOC_SCANsat_Agents_Title = SCAN: Comitê Científico de Navegação Avançada #autoLOC_SCANsat_Agents_Description = A agência SCAN dedica-se a mapear e pesquisar todos os planetas no sistema solar. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/pt-br/Helptips.cfg ================================================ Localization { pt-br { #autoLOC_SCANsat_settingsHelpScanningToggle = Alternar toda a varredura SCANsat. #autoLOC_SCANsat_settingsHelpBackground = Alternar varredura de fundo em corpos celestes selecionados. #autoLOC_SCANsat_settingsHelpTimeWarp = 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. #autoLOC_SCANsat_settingsHelpGroundTracks = Exibe um indicador visível da atividade de varredura no modo de mapa. #autoLOC_SCANsat_settingsHelpGroundTracksActive = O indicador de aterrissagem pode ser limitado para\nser exibido apenas pela nave ativa. #autoLOC_SCANsat_settingsHelpStockUIStyle = Alternar entre elementos de UI no estilo KSP e elementos no estilo Unity. #autoLOC_SCANsat_settingsHelpOverlayTooltips = 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. #autoLOC_SCANsat_settingsHelpWindowTooltips = Exibe dicas de ferramentas em alguns botões da janela do mapa.\nEstes são usados principalmente para identificar ícones de botões. #autoLOC_SCANsat_settingsHelpLegendTooltips = Exibe dicas de ferramentas na legenda do mapa.\nTambém desativará as legendas do mapa do bioma. #autoLOC_SCANsat_settingsHelpStockToolbar = Use a barra de ferramentas suspensa.\nPode ser usado simultaneamente com a barra de ferramentas Blizzy78. #autoLOC_SCANsat_settingsHelpToolbarMenu = Use um menu suspenso para que a barra de ferramentas suspensa\nmostre todas as janelas disponíveis. #autoLOC_SCANsat_settingsHelpMechJeb = 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. #autoLOC_SCANsat_settingsHelpMechJebLoad = Carregue um alvo de destino MechJeb salvo.\nSomente funciona durante a cena do voo com uma nave MechJeb válida. #autoLOC_SCANsat_settingsHelpMapGenSpeed = 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. #autoLOC_SCANsat_settingsHelpResetWindows = 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. #autoLOC_SCANsat_settingsHelpResetPlanetData = 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. #autoLOC_SCANsat_settingsHelpResetAllData = 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. #autoLOC_SCANsat_settingsHelpVesselsSensorsPasses = 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. #autoLOC_SCANsat_settingsHelpGreyScale = 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. #autoLOC_SCANsat_settingsHelpExportCSV = 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. #autoLOC_SCANsat_settingsHelpSetMapWidth = 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. #autoLOC_SCANsat_settingsHelpWindowScale = Ajuste todas as escalas de janela SCANsat. #autoLOC_SCANsat_settingsHelpFillPlanet = Preencha os dados SCANsat selecionados para o corpo celeste atual. #autoLOC_SCANsat_settingsHelpFillAll = Preencha os dados SCANsat selecionados para todos os corpos celestes. #autoLOC_SCANsat_resourceSettingsHelpBiomeLock = 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. #autoLOC_SCANsat_resourceSettingsHelpInstant = 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. #autoLOC_SCANsat_resourceSettingsHelpNarrowBand = 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. #autoLOC_SCANsat_resourceSettingsHelpDisableStock = 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. #autoLOC_SCANsat_resourceSettingsHelpResetStockResource = 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. #autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayHeight = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency = 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. #autoLOC_SCANsat_resourceSettingsHelpScanThreshold = 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. #autoLOC_SCANsat_colorTerrainHelpMin = 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. #autoLOC_SCANsat_colorTerrainHelpMax = 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. #autoLOC_SCANsat_colorTerrainHelpClampToggle = 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. #autoLOC_SCANsat_colorTerrainHelpClamp = 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. #autoLOC_SCANsat_colorTerrainHelpReverse = Inverte a ordem da paleta de cores atualmente selecionada. #autoLOC_SCANsat_colorTerrainHelpDiscrete = Desenha o mapa usando apenas as cores específicas definidas por cada paleta,\nem vez de interpolar suavemente entre elas. #autoLOC_SCANsat_colorTerrainHelpPaletteSize = Ajuste o número de cores disponíveis\nna paleta de cores atualmente selecionada. #autoLOC_SCANsat_colorBiomeHelpStock = Use o esquema de cores do bioma do estoque para o mapa SCANsat de biomas. #autoLOC_SCANsat_colorBiomeHelpWhiteBorder = Desenhe uma borda branca entre os biomas.\nNão se aplica aos mapas de bioma de sobreposição planetária. #autoLOC_SCANsat_colorBiomeHelpTransparency = 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. #autoLOC_SCANsat_colorPickerHelpLow = 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. #autoLOC_SCANsat_colorPickerHelpHigh = 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. #autoLOC_SCANsat_colorResourceHelpMin = 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. #autoLOC_SCANsat_colorResourceHelpMax = 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. #autoLOC_SCANsat_colorResourceHelpTransparency = 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. #autoLOC_SCANsat_colorResourceHelpApply = Aplica os valores atuais para o recurso selecionado\naplicado apenas ao corpo celeste selecionado. #autoLOC_SCANsat_colorResourceHelpApplyAll = Aplica os valores atuais para o recurso selecionado\naplicado para todos os corpos celestes. #autoLOC_SCANsat_colorResourceHelpDefault = Reverte o recurso selecionado para os valores padrão\naplicado apenas ao corpo celeste selecionado. #autoLOC_SCANsat_colorResourceHelpDefaultAll = Reverte o recurso selecionado para os valores padrão\naplicado para todos os corpos celestes. #autoLOC_SCANsat_colorHelpSaveToConfig = 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. #autoLOC_SCANsat_colorSlopeHelpCutoff = Ajusta o nível de corte entre os dois pares de cores de inclinação selecionados. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/pt-br/OtherText.cfg ================================================ Localization { pt-br { #autoLOC_SCANsat_Analyze = Analisar Dados #autoLOC_SCANsat_StartScan = Iniciar Varredura #autoLOC_SCANsat_StopScan = Finalizar Varredura #autoLOC_SCANsat_ToggleScan = Alterar Varredura #autoLOC_SCANsat_Extend = Estender #autoLOC_SCANsat_Retract = Retrair #autoLOC_SCANsat_Unknown = Desconhecido #autoLOC_SCANsat_All_Disabled = Desabilitar Escâneres #autoLOC_SCANsat_Disabled = Desabilitar Escâner #autoLOC_SCANsat_TooLow = Muito Baixo #autoLOC_SCANsat_SubOptimal = Sub-Optimum #autoLOC_SCANsat_Ideal = Ideal #autoLOC_SCANsat_TooHigh = Muito Alto #autoLOC_SCANsat_NoData = Sem Dados #autoLOC_SCANsat_Abundance = Abundante #autoLOC_SCANsat_Surface = Superfície #autoLOC_SCANsat_AltitudeMin = Altitude ( min ): <<1>>km\n #autoLOC_SCANsat_AltitudeBest = Altitude (ideal): <<1>>km\n #autoLOC_SCANsat_AltitudeMax = Altitude ( max ): <<1>>km\n #autoLOC_SCANsat_FOV = FOV: <<1>> #autoLOC_SCANsat_MapProjection = Projeção #autoLOC_SCANsat_MapType = Mapa #autoLOC_SCANsat_MapResource = Recurso #autoLOC_SCANsat_MapBody = Corpo Celeste #autoLOC_SCANsat_GeneralSettings = Configurações Gerais #autoLOC_SCANsat_BackgroundSettings = Configurações de Fundo #autoLOC_SCANsat_ResourceSettings = Configurações de Recursos #autoLOC_SCANsat_DataManagement = Gestão de Dados #autoLOC_SCANsat_ColorManagement = Gestão de Cores } } ================================================ FILE: GameData/SCANsat/Resources/Localization/pt-br/Parts.cfg ================================================ Localization { pt-br { #autoLOC_SCANsat_BTDT_Title = SCAN Já Foi Feito Isso® #autoLOC_SCANsat_BTDT_Description = 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. #autoLOC_SCANsat_Multi_Title = SCAN Sensor Multispectral #autoLOC_SCANsat_Multi_Description = 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. #autoLOC_SCANsat_Radar_Title = SCAN RADAR Sensor Altimétrico #autoLOC_SCANsat_Radar_Description = 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. #autoLOC_SCANsat_SAR_Title = SCAN SAR Sensor Altimétrico #autoLOC_SCANsat_SAR_Description = 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. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/pt-br/Science.cfg ================================================ Localization { pt-br { #autoLOC_SCANsat_Science_Lo_Title = Varredura de Altimetria de Baixa Resolução #autoLOC_SCANsat_Science_Lo_Default1 = Dados de altimetria de baixa resolução foram analisados. #autoLOC_SCANsat_Science_Lo_Default2 = "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!" #autoLOC_SCANsat_Science_Lo_Sun = Você se pergunta se o sensor está funcionando mal. #autoLOC_SCANsat_Science_Lo_Moho = Bem, pelo menos, esses dados de baixa resolução tornam Moho ótimo. Há lagos gigantes de lava, mas ótimos sem dúvida. #autoLOC_SCANsat_Science_Lo_Eve = 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) #autoLOC_SCANsat_Science_Lo_Gilly = 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. #autoLOC_SCANsat_Science_Lo_Kerbin = 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. #autoLOC_SCANsat_Science_Lo_Mun = 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. #autoLOC_SCANsat_Science_Lo_Minmus = 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. #autoLOC_SCANsat_Science_Lo_Duna = 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. #autoLOC_SCANsat_Science_Lo_Ike = 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. #autoLOC_SCANsat_Science_Lo_Dres = 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!" #autoLOC_SCANsat_Science_Lo_Jool = Altimetria, o que é altimetria? É um gigante gasoso pelo amor de Kerbal. Apenas escolha um número aleatório e é isso mesmo. #autoLOC_SCANsat_Science_Lo_Laythe = O sensor parece incapaz de penetrar na água. #autoLOC_SCANsat_Science_Lo_Vall = Bem, aqui está: "Os dados Vall-liosos que todos estavam esperando". Pelo menos, ALGUÉM poderia achar que foi engraçado." #autoLOC_SCANsat_Science_Lo_Tylo = 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. #autoLOC_SCANsat_Science_Lo_Bop = 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. #autoLOC_SCANsat_Science_Lo_Pol = 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. #autoLOC_SCANsat_Science_Lo_Eeloo = 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. #autoLOC_SCANsat_Science_Hi_Title = Varredura de Altimetria de Alta Resolução #autoLOC_SCANsat_Science_Hi_Default1 = Dados de altimetria de alta resolução analisados. #autoLOC_SCANsat_Science_Hi_Default2 = "A varredura de altimetria de alta resolução é melhor que a de baixa resolução. SCAN já comprovou suas habilidades de digitalização". #autoLOC_SCANsat_Science_Hi_Sun = Você percebe que poderia ter economizado algum dinheiro se tivesse confiado no sensor de baixa resolução em primeiro lugar. #autoLOC_SCANsat_Science_Hi_Moho = Finalmente, a grandeza retornou a Moho! Pode não ser gigantes rios de lava fluindo, mas esses dados são espetaculares! #autoLOC_SCANsat_Science_Hi_Eve = 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. #autoLOC_SCANsat_Science_Hi_Gilly = Mesmo em resolução super-alta, Gilly parece estar com baixa resolução. Essa é uma superfície seriamente grosseira. #autoLOC_SCANsat_Science_Hi_Kerbin = 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. #autoLOC_SCANsat_Science_Hi_Mun = "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". #autoLOC_SCANsat_Science_Hi_Minmus = Uau, não só Minmus é real, tem uma topografia incrível! Você não pode esperar para pousar em uma dessas áreas planas. #autoLOC_SCANsat_Science_Hi_Duna = Este dado de alta resolução é incrível. Você começa a analisar as colinas e os vales, buscando o ponto de pouso perfeito. #autoLOC_SCANsat_Science_Hi_Ike = 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. #autoLOC_SCANsat_Science_Hi_Dres = Aqueles... são algumas montanhas sérias. Você está contente por analisar esses dados, ao invés de tentar escalar algumas dessas colinas. #autoLOC_SCANsat_Science_Hi_Jool = 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! #autoLOC_SCANsat_Science_Hi_Laythe = O mapa mostra a maioria das alturas negativas. Você considera drenar Laythe apenas para que possa escalar suas montanhas. #autoLOC_SCANsat_Science_Hi_Vall = Os dados do escaner de alta resolução confirmam que a superfície de Vall é, de fato, "enrrugado". Guess Gene deve-lhe cinquenta fundos. #autoLOC_SCANsat_Science_Hi_Tylo = 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. #autoLOC_SCANsat_Science_Hi_Bop = 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. #autoLOC_SCANsat_Science_Hi_Pol = 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? #autoLOC_SCANsat_Science_Hi_Eeloo = 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. #autoLOC_SCANsat_Science_Multi_Title = Análise de Multispectrum #autoLOC_SCANsat_Science_Multi_Default1 = Os dados do sensor Multispectrum foram analisados. #autoLOC_SCANsat_Science_Multi_Default2 = "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!" #autoLOC_SCANsat_Science_Multi_Sun1 = Você está surpreso com a falta de dados biométricos. #autoLOC_SCANsat_Science_Multi_Sun2 = Você se pergunta por que os pólos não estão visíveis no mapa. #autoLOC_SCANsat_Science_Multi_Moho = Ao analisar os dados, você se pergunta se encontrará o insólito bioma "Lago de Lava" que muitos cientistas especularam. #autoLOC_SCANsat_Science_Multi_Eve = 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! #autoLOC_SCANsat_Science_Multi_Gilly = 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. #autoLOC_SCANsat_Science_Multi_Kerbin = 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. #autoLOC_SCANsat_Science_Multi_Mun = Haha, eu nunca soube que a lua Mun tinha biomas. Pergunto-me onde estará o queijo. E se há outros Salgadinhos lá também. #autoLOC_SCANsat_Science_Multi_Minmus = 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. #autoLOC_SCANsat_Science_Multi_Duna = 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. #autoLOC_SCANsat_Science_Multi_Ike = 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á. #autoLOC_SCANsat_Science_Multi_Dres = 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! #autoLOC_SCANsat_Science_Multi_Jool1 = Você está surpreso com a falta de dados biométricos. #autoLOC_SCANsat_Science_Multi_Jool2 = Você se pergunta por que os pólos não estão visíveis no mapa. #autoLOC_SCANsat_Science_Multi_Laythe = Você quer fazer uma festa toda vez que o sensor detecta um bioma terrestre. #autoLOC_SCANsat_Science_Multi_Vall = Dados muito simples: Polos, Terras Altas, Terras Médias e Terras Baixas. Ok, agora vamos pegar alguns lanches. #autoLOC_SCANsat_Science_Multi_Tylo = Você está surpreso com a diversidade de biomas no relatório. Não só é ótimo procurar Tylo, também é ótimo olhar para baixo. #autoLOC_SCANsat_Science_Multi_Bop = Esta análise detalhada dos biomas de Bop aumentará nosso entendimento além do que esperado. Ah, foi um ótimo dia. Salgadinhos para todos! #autoLOC_SCANsat_Science_Multi_Pol = 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. #autoLOC_SCANsat_Science_Multi_Eeloo = É 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. #autoLOC_SCANsat_Science_Resource_Title = Varredura de Recursos #autoLOC_SCANsat_Science_Resource_Default1 = Analisados dados de baixa resolução de recursos. #autoLOC_SCANsat_Science_Resource_Default2 = "Agora estamos recebendo dados de recursos - esta informação parece muito melhor do que o que estávamos recebendo do outro grupo ..." #autoLOC_SCANsat_Science_Resource_Sun = Talvez o sol não seja o melhor lugar para procurar recursos na superfície. #autoLOC_SCANsat_Science_Resource_Moho = Finalmente, temos algumas informações sobre os recursos de superfície do Moho, agora precisamos saber por que alguém queria pousar lá. #autoLOC_SCANsat_Science_Resource_Eve = 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. #autoLOC_SCANsat_Science_Resource_Gilly = O escaner de recursos inicial de Gilly parece ser bom; É quase como os asteróides minerais. #autoLOC_SCANsat_Science_Resource_Kerbin = 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. #autoLOC_SCANsat_Science_Resource_Mun = Estes dados de recursos nos dão nosso primeiro vislumbre de quanto Mun é apropriado para minerar. #autoLOC_SCANsat_Science_Resource_Minmus = Pelo menos temos alguns dados de recursos no Minmus, a primeira escolha de Kerbonauta para começar a mineração. #autoLOC_SCANsat_Science_Resource_Duna = Este dado de recursos nos aproxima um pouco da revitalização de todas as nossas linhas favoritas no último filme Kerbalexitosa do ano. #autoLOC_SCANsat_Science_Resource_Ike = Talvez Ike não seja o corpo celestial mais interessante do sistema solar, mas isso não torna esses dados de recursos menos úteis. #autoLOC_SCANsat_Science_Resource_Dres = Podemos pesquisar melhor os recursos nos asteróides nas proximidades; Quem incomodaria mesmo com os Drs. #autoLOC_SCANsat_Science_Resource_Jool = Hmm, talvez um gigante gasoso não seja o melhor lugar para procurar recursos de superfície ... #autoLOC_SCANsat_Science_Resource_Laythe = Bem, há muitos bons dados, mas muito pouca área de terra preciosa onde podemos pousar e aproveitar os recursos. #autoLOC_SCANsat_Science_Resource_Vall = O escaner de recursos Vall Frost fornece dados interessantes. #autoLOC_SCANsat_Science_Resource_Tylo = Tomaremos qualquer informação de recurso do terrível Tylo. #autoLOC_SCANsat_Science_Resource_Bop = 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. #autoLOC_SCANsat_Science_Resource_Pol = Além dos grãos de pólen e das coisas muito grumosas, parece que a Pol possui alguns depósitos de recursos interessantes. #autoLOC_SCANsat_Science_Resource_Eeloo = Agora que fizemos todo o caminho até Eeloo, poderiamos minerar a esvaziar o lugar e então prosseguir para o que está além. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/pt-br/Tooltips.cfg ================================================ Localization { pt-br { #autoLOC_SCANsat_mainMapToggle = Mapa Principal #autoLOC_SCANsat_bigMapToggle = Mapa Grande #autoLOC_SCANsat_zoomMapToggle = Mapa Detalhado #autoLOC_SCANsat_overlayToggle = Superposição Planetária #autoLOC_SCANsat_instrumentsToggle = Ferramentas de Leitura #autoLOC_SCANsat_settingsToggle = Configurações #autoLOC_SCANsat_mainMapColor = Cor do Mapa #autoLOC_SCANsat_mainMapTerminator = Mapa de Transição Dia/Noite #autoLOC_SCANsat_mainMapType = Alternar Terreno/Bioma #autoLOC_SCANsat_mainMapMimimize = Mostrar/Ocultar Informações da Nave #autoLOC_SCANsat_mainMapStatus = Indicadores de Estatus dos Escâneres #autoLOC_SCANsat_mainMapPercentage = Porcentagem Escaneada #autoLOC_SCANsat_bigMapRefresh = Atualizar Mapa #autoLOC_SCANsat_bigMapColor = Cores do Mapa #autoLOC_SCANsat_bigMapTerminator = Mapa de Transição Dia/Noite #autoLOC_SCANsat_bigMapGrid = Sobreposição da Grade #autoLOC_SCANsat_bigMapOrbit = Sobreposição de Órbita #autoLOC_SCANsat_bigMapWaypoints = Ponto Fixos #autoLOC_SCANsat_bigMapAnomaly = Anomalias #autoLOC_SCANsat_bigMapFlags = Bandeiras #autoLOC_SCANsat_bigMapLegend = Legenda do Mapa #autoLOC_SCANsat_bigMapResource = Sobreposição de Recursos #autoLOC_SCANsat_bigMapExport = Exportar Mapa #autoLOC_SCANsat_overlayRefresh = Atualizar Mapa #autoLOC_SCANsat_insNextResource = Próximo #autoLOC_SCANsat_insPreviousResource = Anterior #autoLOC_SCANsat_zoomVesselSync = Sincronizar Nave Atual #autoLOC_SCANsat_zoomVesselLock = Travar na Posição da Nave #autoLOC_SCANsat_zoomMapRefresh = Atualizar Mapa #autoLOC_SCANsat_zoomMapWindowState = Alternar Tamanho da Janela #autoLOC_SCANsat_zoomMapIn = Ampliar Zoom #autoLOC_SCANsat_zoomMapOut = Reduzir Zoom #autoLOC_SCANsat_zoomMapLeft = Mover para a Esquerda #autoLOC_SCANsat_zoomMapRight = Mover para a Direita #autoLOC_SCANsat_zoomMapUp = Mover para Cima #autoLOC_SCANsat_zoomMapDown = Mover para Baixo #autoLOC_SCANsat_zoomMapIcons = Ícones do Mapa #autoLOC_SCANsat_waypointToggle = Seletor de Marcadores #autoLOC_SCANsat_waypointSet = Criar Marcador #autoLOC_SCANsat_waypointCancel = Cancelar Marcador #autoLOC_SCANsat_waypointMechJeb = Marcar Alvo de Pouso no MechJeb #autoLOC_SCANsat_waypointNameRefresh = Reiniciar Marcador } } ================================================ FILE: GameData/SCANsat/Resources/Localization/pt-br/Warnings.cfg ================================================ Localization { pt-br { #autoLOC_SCANsat_Warning_DataResetCurrent = Eliminar <<1>> para o mapa <<2>>? #autoLOC_SCANsat_Warning_DataResetAll = Eliminar <<1>> para todos os corpos celestes? #autoLOC_SCANsat_Warning_StockResourceResetCurrent = Apagar dados do recurso da base definida para <<1>>? #autoLOC_SCANsat_Warning_StockResourceResetAll = Apagar os estoques de recursos da base de dados para todos os corpos celestes? #autoLOC_SCANsat_Warning_MapFillCurrent = Preencha <<1>> para o mapa <<2>>? #autoLOC_SCANsat_Warning_MapFillAll = Preencha <<1>> para todos os corpos celestes? #autoLOC_SCANsat_Warning_ModuleManagerResource = Aviso\nModule Manager é necessário para todas as funções de digitalização de recurso SCANsat. #autoLOC_SCANsat_Warning_SaveToConfig = Substituir o arquivo de configuração existente no disco? } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ru/Contracts.cfg ================================================ Localization { ru //Tanslation made by RarogCmex { // *** Exceptional *** #autoLOC_SCANsat_exceptional0001 = Сделайте группу сканирований высокого разрешения методом SCANsat на @/targetBodyValid3. #autoLOC_SCANsat_exceptional0002 = Сделайте группу сканирований высокого разрешения методом SCANsat на @/targetBodyValid3. #autoLOC_SCANsat_exceptional0003 = Сканирование может происходить только когда судно не управляется игроком явно (не загружено). #autoLOC_SCANsat_exceptional0004 = Выполните несколько сканирований высокого разрешения на @/targetBodyValid3 #autoLOC_SCANsat_exceptional0005 = Мы получили детализированную карту и рельеф поверхности @/targetBodyValid3 #autoLOC_SCANsat_exceptional0006 = Должно быть менее 90% альтиметрического сканирования поверхности цели с высоким разрешением. #autoLOC_SCANsat_exceptional0007 = Должно быть менее 90% сканирования руды на поверхности цели. #autoLOC_SCANsat_exceptional0008 = Должно быть на орбите цели, или цель должна быть следующей в списке. #autoLOC_SCANsat_exceptional0009 = Должно быть менее 90% визуального сканирования поверхности цели с высоким разрешением // *** Significant *** #autoLOC_SCANsat_significant_0001 = Сделайте группу сканирований методом SCANsat на @/targetBodyValid2. #autoLOC_SCANsat_significant_0002 = Сделайте группу сканирований методом SCANsat на @/targetBodyValid2. #autoLOC_SCANsat_significant_0003 = Сканирование может происходить только когда судно не управляется игроком явно (не загружено игроком). #autoLOC_SCANsat_significant_0004 = Выполните несколько сканирований @/targetBodyValid2 #autoLOC_SCANsat_significant_0005 = Отличная работа, эти сканирования предоставят много ценных данных для наших исследовательских групп. #autoLOC_SCANsat_significant_0006 = Должно быть менее 80% альтиметрического сканирования цели с низким разрешением. #autoLOC_SCANsat_significant_0007 = Должно быть менее 80% сканирования биома целевого тела. #autoLOC_SCANsat_significant_0008 = Должно быть менее 80% ресурсов сканирования целевого тела. #autoLOC_SCANsat_significant_0009 = Должно быть на орбите цели. // *** Trivial *** #autoLOC_SCANsat_trivial_0001 = Выполните @/scanReadString1 обзор методом SCANsat @/targetBodyValid1. #autoLOC_SCANsat_trivial_0002 = Выполните @/scanReadString1 обзор методом SCANsat @/targetBodyValid1. #autoLOC_SCANsat_trivial_0003 = Сканирование может происходить только когда судно не управляется игроком явно (не загружено игроком). #autoLOC_SCANsat_trivial_0004 = Выполните простое сканирование @/targetBodyValid1 #autoLOC_SCANsat_trivial_0005 = Отличная работа, этот простой обзор даст нашим специалистам многое для изучения. #autoLOC_SCANsat_trivial_0006 = Цель-часть домашней системы. #autoLOC_SCANsat_trivial_0007 = Должно быть просканировано менее 70% цели. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ru/Flags.cfg ================================================ Localization { ru { #autoLOC_SCANsat_Agents_Name = ПКПН #autoLOC_SCANsat_Agents_Title = НКПН: Научный Комитет по Передовой Навигации #autoLOC_SCANsat_Agents_Description = НКПН занимается картографированием и геодезической съёмкой любых планет в солнечной системе. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ru/Helptips.cfg ================================================ Localization { ru { #autoLOC_SCANsat_settingsHelpScanningToggle = Включить/выключить сканирование. #autoLOC_SCANsat_settingsHelpBackground = Включить/выключить фоновое\nсканирование выбранных тел. #autoLOC_SCANsat_settingsHelpTimeWarp = Изменить частоту сканирования при ускорении\nвремени. Большие значения создают меньше пропусков\nна карте, однако могут повлиять на быстродействие. #autoLOC_SCANsat_settingsHelpGroundTracks = Отображать индикатор процесса\nсканирования в режиме карты. #autoLOC_SCANsat_settingsHelpGroundTracksActive = Показывать поверхностную траекторию\nтолько для активного корабля. #autoLOC_SCANsat_settingsHelpStockUIStyle = Переключить вид интерфейса между обычным KSP и стилем Unity. #autoLOC_SCANsat_settingsHelpOverlayTooltips = Отображать подсказки для текущего положения мыши при включенной карте планетарного оверлея.\nЭти подсказки содержат координаты курсора, высоту и наклон поверхности, название биома и количество ресурсов в зависимости от покрытия. #autoLOC_SCANsat_settingsHelpWindowTooltips = Отображать подсказки на некоторых кнопках.\nИспользуется в основном для определения назначения кнопок. #autoLOC_SCANsat_settingsHelpLegendTooltips = Отображать подсказки для легенды карты.\nОтключаются вместе с легендой карты биомов. #autoLOC_SCANsat_settingsHelpWindowTooltips = Для работы сканеров определенных типов\nтребуется освещенность поверхности. #autoLOC_SCANsat_settingsHelpDaylightCheck = Для корректной работы некоторых сканеров\nтребуется чтобы поверхность была освещенна. #autoLOC_SCANsat_settingsHelpStockToolbar = Использовать панель\nинструментов игры. Также может быть использована панель Blizzy78. #autoLOC_SCANsat_settingsHelpToolbarMenu = Использовать раскрывающееся меню для стоковой панели инструментов, показывающее все доступные окна. #autoLOC_SCANsat_settingsHelpMechJeb = Использовать режим выбора вэйпоинтов Детальной и Большой\nкарт SCANsat для выбора зон посадки MechJeb. #autoLOC_SCANsat_settingsHelpMechJebLoad = Загрузить зону посадки, сохранённую\nиз MechJeb. Работает только для полётной сцены и корабля с MechJeb. #autoLOC_SCANsat_settingsHelpMapGenSpeed = Изменить все скорости генерации карт.\nМеньшие значения экономят ресурсы процессора\nи помогают улучшить производительность. #autoLOC_SCANsat_settingsHelpResetWindows = Восстановить позиции и масштаб всех\nокон. Используйте в случае, если окно было скрыто за\nпределами экрана или какие-то окна не видны. #autoLOC_SCANsat_settingsHelpResetPlanetData = Восстановить по-умолчанию все значения для текущего тела.\nПеред выполнением будет запрошено подтверждение.\nДействие необратимо. #autoLOC_SCANsat_settingsHelpResetAllData = Восстановить по-умолчанию значения для всех тел.\nПеред выполнением будет запрошено подтверждение.\nДействие необратимо. #autoLOC_SCANsat_settingsHelpVesselsSensorsPasses = Информация обо всех активных сенсорах SCANsat.\n"Vessels" - количество кораблей с активными сенсорами.\n"Sensors" - общее количество сенсоров;\nдля инструментов с несколькими сенсорами учитывается каждый отдельный сенсор.\n"Passes" - число обновлений сенсора, производимое за секунду.\nНа это значение влияет настройка "Разрешение ускорения времени". #autoLOC_SCANsat_settingsHelpGreyScale = Использовать спектр оттенков серого для чёрно-белых карт SCANsat.\nПиксели на карте высот будут интерполированы между чёрным и белым;\nПределы определяются минимальными и максимальными значениями высот для каждого тела. #autoLOC_SCANsat_settingsHelpExportCSV = Экспортировать файл .csv вместе с текстурой карты при нажатии на кнопку "Export"\nБольшой карты. Файл будет содержать координаты и высоты для каждого\nпикселя. Пиксели обозначаются слева направо и сверху вниз. #autoLOC_SCANsat_settingsHelpSetMapWidth = Введите точное значение для ширины текстуры Большой карты.\nЗначения ограничены от 550 до 8192 пикселей.\nНажмите кнопку "Set", чтобы применить. #autoLOC_SCANsat_settingsHelpWindowScale = Изменить масштаб всех окон SCANsat. #autoLOC_SCANsat_settingsHelpFillPlanet = Заполнить все данные SCANsat для текущего небесного тела. #autoLOC_SCANsat_settingsHelpOverlayHideZero = Скрыть ресурсы из пользовательского интерфейса, если на текущем небесном теле таковых нет.\nВ противном случае ресурсы будут скрыты после достижения порогового уровня сканирования запасов. #autoLOC_SCANsat_settingsHelpFillAll = Заполнить все данные SCANsat для всех небесных тел. #autoLOC_SCANsat_resourceSettingsHelpBiomeLock = Обойти требования поверхностного сканирования биомов в игре.\nSCANsat будет использовать максимальную точность отображения\nдоступности ресурсов независимо от поверхностного сканирования. #autoLOC_SCANsat_resourceSettingsHelpInstant = По-умолчанию орбитальная съёмка стокового сканера M700 будет заполнять все карты ресурсов SCANsat.\nПри отключении, любое сканирование ресурсов потребует использования методов SCANsat.\nОтключается автоматически при отключении сканирования ресурсов в игре. #autoLOC_SCANsat_resourceSettingsHelpNarrowBand = Многие функции SCANsat требуют наличия узкополосного сканера ресурсов\nна борту активного корабля или на орбите тела для максимально точных данных доступности ресурсов.\nОтключите, чтобы обойти это ограничение. #autoLOC_SCANsat_resourceSettingsHelpDisableStock = Выключить все стоковые функции сканирования\nресурсов. Методы сканирования SCANsat потребуются для всех данных\nо ресурсах. Заменяет некоторые стоковые функции для ресурсов,\nвключая показания по нажатию правой кнопки мыши и платенарных оверлеев. #autoLOC_SCANsat_resourceSettingsHelpResetStockResource = Восстановить стоковое покрытие сканирования ресурсов для текущего тела.\nДля применения всех изменений может потребоваться перезагрузка или смена сцены.\nПеред выполнением будет запрошено подтверждение.\nДействие необратимо. #autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource = 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. #autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation = Изменить количество измерений доступности ресурсов, используемых при\nпостроении оверлея ресурсов Большой карты и планетарного.\nУменьшите значение, чтобы повысить точность карты.\nЧем меньше, тем медленнее генерация карты. #autoLOC_SCANsat_resourceSettingsHelpOverlayHeight = Изменить размер текстуры (ширина карты=высотаX2), использумой при\nпостроении оверлея Большой карты и планетарного.\nУвеличьте значение, чтобы повысить качество и точность карты.\nЧем больше, тем медленнее генерация карты. #autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight = Изменить размер текстуры (ширина карты=высотаX2), использумой при\nпостроении планетарного оверлея карты биомов.\nУвеличьте значение, чтобы повысить качество и точность карты.\nЧем больше, тем медленнее генерация карты. #autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency = Использовать серый фон для карт планетарного оверлея ресурсов.\nИспользуется, чтобы определить, какие участки неб. тела\nбыли просканированы, но не содержат ресурсов. #autoLOC_SCANsat_resourceSettingsHelpScanThreshold = Пороговый уровень применения стокового сканирования ресурсов после сканирования небесного тела сенсорами SCANsat.\nПолезно, если контракты или стороние аддоны требуют осуществления стокового сканирования.\nУстановите значение от 0 до 100 и нажмите кнопку "Set".\nБудет немедленно применено для всех небесных тел;\nНебесные тела также будут обновлены при загрузке или смены сцены.\nДля применения всех изменений может протребоваться перезагрузка. #autoLOC_SCANsat_colorTerrainHelpMin = Задать нижний порог высоты для цветой схемы уровней высот.\nВсё, что ниже этого значения, будет показано цветом самой нижней высоты. #autoLOC_SCANsat_colorTerrainHelpMax = Задать верхний порог высоты для цветой схемы уровней высот.\nВсё, что выше этого значения, будет показано цветом максимальной высоты. #autoLOC_SCANsat_colorTerrainHelpClampToggle = Используется для задания порога между значениями малой и большой\nвысоты. В частности, это помогает различить границу между водой\nи сушей на планетах с океанами. #autoLOC_SCANsat_colorTerrainHelpClamp = Задать предельные высоты.\nВсё, что ниже, будет представлено двумя первыми цветами выбранной цветовой схемы.\nВсё, что выше, будет представлено остальными цветами. #autoLOC_SCANsat_colorTerrainHelpReverse = Изменить порядок выбранной цветовой\nсхемы на обратный. #autoLOC_SCANsat_colorTerrainHelpDiscrete = Отобразить карту, используя вместо плавной интерполяции только цвета,\nзаданные заданные цветовой схемой. #autoLOC_SCANsat_colorTerrainHelpPaletteSize = Изменить количество цветов, доступных\nдля выбранной цветовой схемы. #autoLOC_SCANsat_colorBiomeHelpStock = Использовать стоковую цветовую схему\nдля карт биомов SCANsat. #autoLOC_SCANsat_colorBiomeHelpWhiteBorder = Отображать белым границу между биомами.\nНе влияет на карту биомов планетарного оверлея. #autoLOC_SCANsat_colorBiomeHelpTransparency = Изменить прозрачность карт биомов.\nПревышение поверхности показывается под картами биомов.\nЗадайте 0%, чтобы скрыть ландшафт. #autoLOC_SCANsat_colorPickerHelpLow = Верхний образец показывает выбранный\nцвет для нижней границы данного цветового спектра.\nНижний образец показывает текущий цвет. #autoLOC_SCANsat_colorPickerHelpHigh = Верхний образец показывает выбранный\nцвет для верхней границы данного цветового спектра.\nНижний образец показывает текущий цвет. #autoLOC_SCANsat_colorResourceHelpMin = Нижний порог концентрации ресурсов выбранного небесного тела.\nНа этом уровне залежи ресурсов будут показаны с использованием\nнижней границы текущего цветового спектра оверлея ресурсов.\nЗалежи ресурсов ниже этого значения показаны не будут. #autoLOC_SCANsat_colorResourceHelpMax = Верхний порог концентрации ресурсов выбранного небесного тела.\nВыше этого значения залежи ресурсов будут показаны с использованием\nнверхней границы текущего цветового спектра оверлея ресурсов. #autoLOC_SCANsat_colorResourceHelpTransparency = Задаёт прозрачность оверлеев ресурсов.\nУвеличьте, чтобы повысить видимость высоты, наклона поверхности и карты биомов.\nТакже влияет на прозрачность отображения залежей ресурсов на карте планетарного оверлея ресурсов. #autoLOC_SCANsat_colorResourceHelpApply = Применить текущие значения только\nдля выбранных ресурсов и небесных тел. #autoLOC_SCANsat_colorResourceHelpApplyAll = Применить текущие значения для\nвыбранных ресурсов всех небесных тел. #autoLOC_SCANsat_colorResourceHelpDefault = Восстановить значения по-умолчанию\nтолько для выбранных ресурсов и небесных тел. #autoLOC_SCANsat_colorResourceHelpDefaultAll = Восстановить значения по-умолчанию\nдля выбранных ресурсов всех небесных тел. #autoLOC_SCANsat_colorHelpSaveToConfig = Сохранить все значения цветов\nв файл настроек в папке SCANsat/Resources.\nЭти значения будут использованы по-умолчанию при создании новой игры\nи при нажатии кнопок "Восстановление по-умолчанию".\nДля применения в текущей игре сохранение в файл не требуется. #autoLOC_SCANsat_colorSlopeHelpCutoff = Изменить пороговый уровень между\nдвумя выбранными парами цветов наклона поверхности. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ru/OtherText.cfg ================================================ Localization { ru { #autoLOC_SCANsat_Analyze = Анализировать данные #autoLOC_SCANsat_StartScan = Запустить сканирование #autoLOC_SCANsat_StopScan = Остановить сканирование #autoLOC_SCANsat_ToggleScan = Переключить сканирование #autoLOC_SCANsat_Extend = Расширить #autoLOC_SCANsat_Retract = Свернуть #autoLOC_SCANsat_Unknown = Неизвестно #autoLOC_SCANsat_All_Disabled = Все сканирование отключено #autoLOC_SCANsat_Disabled = Сканирование отключено #autoLOC_SCANsat_TooLow = Слишком низко #autoLOC_SCANsat_SubOptimal = Полуоптимально #autoLOC_SCANsat_Ideal = Идеально #autoLOC_SCANsat_TooHigh = Слишком высоко #autoLOC_SCANsat_NoData = Нет данных #autoLOC_SCANsat_Abundance = Богатство #autoLOC_SCANsat_Surface = Поверхность #autoLOC_SCANsat_AltitudeMin = Высота (мин): <<1>>км\n #autoLOC_SCANsat_AltitudeBest = Высота (лучшая): <<1>>км\n #autoLOC_SCANsat_AltitudeMax = Высота (макс): <<1>>км\n #autoLOC_SCANsat_Types = SCAN типы: #autoLOC_SCANsat_Daylight = Требуется дневной свет: <<1>> #autoLOC_SCANsat_FOV = Угол обзора: <<1>> #autoLOC_SCANsat_MapProjection = Проекция #autoLOC_SCANsat_MapType = Тип карты #autoLOC_SCANsat_MapResource = Ресурс(ы) #autoLOC_SCANsat_MapBody = Небесное тело #autoLOC_SCANsat_GeneralSettings = Общие настройки #autoLOC_SCANsat_BackgroundSettings = Настройки фона #autoLOC_SCANsat_ResourceSettings = Настройки ресурсов #autoLOC_SCANsat_DataManagement = Управление данными #autoLOC_SCANsat_ColorManagement = Управление цветом #autoLOC_SCANsat_ScanInfo = SCAN Сенсор #autoLOC_SCANsat_ScanInfoStatus = SCAN Статус #autoLOC_SCANsat_ScanInfoAltitude = SCAN Высота #autoLOC_SCANsat_ScanInfoType = SCAN Тип #autoLOC_SCANsat_ScanInfoFOV = SCAN Угол обзора #autoLOC_SCANsat_ScanInfoPower = SCAN Мощность #autoLOC_SCANsat_ScanInfoDaylight = Поверхность при дневном свете #autoLOC_SCANsat_ScanResourceDisplay = SCAN Ресурсы } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ru/Parts.cfg ================================================ Localization { ru { #autoLOC_SCANsat_BTDT_Title = SCAN Been There Done That® #autoLOC_SCANsat_BTDT_Description = Этот небольшой датчик может автоматически обнаруживать близлежащие аномалии. Поскольку он работает только на очень коротких расстояниях и на очень низких высотах, он в основном полезен для отслеживания уже обнаруженных аномалий, которые были посещены. #autoLOC_SCANsat_BTDT_Exo_Description = Эта модель сканирующего устройства содержит набор пассивных и активных датчиков, предназначенных для быстрого обнаружения интересных объектов поблизости. #autoLOC_SCANsat_Multi_Title = SCAN Мультиспектральный датчик #autoLOC_SCANsat_Multi_Description = Этот мультиканальный датчик обнаруживает излучение в нескольких инфракрасных, видимых и радиолокационных диапазонах. Это даёт ему возможность различать типы местности и биомы. Он также может обнаруживать аномалии, такие как наземные сооружения. #autoLOC_SCANsat_Radar_Title = SCAN Радиолокационный высотомер #autoLOC_SCANsat_Radar_Description = SCAN представляет вам этот высокопроизводительный радиолокационный высотомер. Это базовая модель в данном семействе датчиков, обычно продаётся в комплекте с игрушечными ракетами и радиоуправляемыми моделями самолётов. После того как фокус-группа выяснила, что 95% целевой аудитории пытались примотать его к выхлопной трубе ракетных двигателей изолентой, эта новая и улучшенная модель стала ещё проще в использовании. #autoLOC_SCANsat_SAR_Title = SCAN Радиолокационный высотомер с синтезированной апертурой #autoLOC_SCANsat_SAR_Description = Этот радиолокационный датчик с синтезированной апертурой использует траекторию полёта для имитации гораздо большей антенны. Это позволяет определять высоту местности с гораздо более высоким разрешением. Минусом является то, что его поле зрения сравнительно узкое, и он лучше работает на больших высотах. #autoLOC_SCANsat_Radar3B_Title = Высотомер R-3B #autoLOC_SCANsat_Radar3B_Description = Высокоточный радиолокационный высотомер позволяет собирать базовые данные о рельефе в очень узкой полосе под спутником. Потребляет умеренное количество энергии и функционирует при освещении и в темноте. #autoLOC_SCANsat_RadarEO_Title = Радиолокационная антенна R-EO-1 #autoLOC_SCANsat_RadarEO_Description = Этот базовый L-диапазонный радиолокационный высотомер собирает данные о рельефе с низким разрешением на средней ширине полосы с низких орбит. Потребляет умеренное количество энергии и функционирует при освещении и в темноте. #autoLOC_SCANsat_SARX_Title = Антенна SAR-X #autoLOC_SCANsat_SARX_Description = Базовый радиолокационный прибор с синтезированной апертурой, который посылает радиосигналы и использует движение спутника во время посылки для синтеза их приёма гораздо более крупной антенной. Эффективно захватывает данные о рельефе с высоким разрешением в очень узкой полосе с низких орбит. Потребляет большое количество энергии, но функционирует при освещении и в темноте. #autoLOC_SCANsat_SARC_Title = Антенна SAR-C #autoLOC_SCANsat_SARC_Description = Усовершенствованный радиолокационный прибор с синтезированной апертурой, который потребляет больше энергии для работы на больших ширинах полосы и с больших высот. Эффективно захватывает данные о рельефе с высоким разрешением со средних орбит, но ограничен очень узким диапазоном работы. Потребляет большое количество энергии и функционирует при освещении и в темноте. #autoLOC_SCANsat_SARL_Title = Антенна SAR-L #autoLOC_SCANsat_SARL_Description = Самый продвинутый радиолокационный прибор с синтезированной апертурой, который использует массивную антенну для передачи и приёма множества поляризаций радиоэнергии. Может картировать большие полосы местности с высоких орбит, а благодаря богатству получаемых данных — также и биомы. Потребляет очень большое количество энергии и функционирует при освещении и в темноте. #autoLOC_SCANsat_Multi_MS1_Title = Мультиспектральный сканер MS-1 #autoLOC_SCANsat_Multi_MS1_Description = Этот сканер с низким разрешением наблюдает свет, отражённый от поверхности цели, для получения карт цвета и биомов с низкой детализацией. Из-за базовых компонентов в этой модели сканера его необходимо размещать на низких орбитах для эффективной работы, и он не может обнаруживать ресурсы. Потребляет небольшое количество энергии и работает только при дневном свете. #autoLOC_SCANsat_Multi_MSR_Title = Усовершенствованный мультиспектральный сканер MS-R #autoLOC_SCANsat_Multi_MSR_Description = Усовершенствованный мультиспектральный сканер — настоящий «мастер на все руки», наблюдающий свет, отражённый от поверхности планеты, и создающий изображения с низкой детализацией цвета и карты биомов. Он даже может обнаруживать наземные ресурсы. Улучшенная оптика и электроника позволяют эффективно работать на более высоких орбитах по сравнению с базовыми моделями, но только в узкой полосе. Потребляет небольшое количество энергии и работает только при дневном свете. #autoLOC_SCANsat_Multi_MS2A_Title = Продвинутый мультиспектральный сканер MS-2A #autoLOC_SCANsat_Multi_MS2A_Description = Изучая оптические длины волн в нескольких спектральных каналах, продвинутая модель сканера создаёт изображения с низкой детализацией цвета, карты биомов и распределения ресурсов. Потребляет небольшое количество энергии и работает только при дневном свете. #autoLOC_SCANsat_VS1_Title = Визуализатор высокого разрешения VS-1 #autoLOC_SCANsat_VS1_Description = Этот базовый наблюдательный телескоп создаёт прекрасные высокодетализированные цветные изображения — но только с низкой орбиты. Потребляет небольшое количество энергии и функционирует только при освещении. #autoLOC_SCANsat_VS3_Title = Продвинутый визуализатор высокого разрешения VS-3 #autoLOC_SCANsat_VS3_Description = Вершина кербальского неправительственного высокоразрешающего наблюдения, этот крупный и дорогой изображатель создаёт высокодетализированные цветные изображения и может идентифицировать уникальные особенности поверхности. Потребляет небольшое количество энергии и функционирует только при освещении. #autoLOC_SCANsat_VS11_Title = Секретный разведывательный визуализатор VS-11 #autoLOC_SCANsat_VS11_Description = *УДАЛЕНО* может наблюдать *УДАЛЕНО* цели каждые *УДАЛЕНО* с высот от *УДАЛЕНО* до *УДАЛЕНО*. Такие удивительные *УДАЛЕНО* привели *УДАЛЕНО* к предположению, что *УДАЛЕНО* *УДАЛЕНО*. Потребляет умеренное количество энергии и функционирует только при освещении. #autoLOC_SCANsat_R_Title = SCAN-R Картограф ресурсов #autoLOC_SCANsat_R_Description = Базовый прибор для картографирования ресурсов, хорошо работающий на низких орбитальных высотах, хотя и сканирует только в очень узкой полосе. Потребляет умеренное количество энергии и функционирует только при освещении. #autoLOC_SCANsat_R2_Title = SCAN-R2 Усовершенствованный картограф ресурсов #autoLOC_SCANsat_R2_Description = Прибор среднего уровня для картографирования ресурсов, который может оценивать полезные ресурсы с более высоких орбит. Потребляет умеренное количество энергии и функционирует только при освещении. #autoLOC_SCANsat_RX_Title = SCAN-RX Гиперспектральный картограф ресурсов #autoLOC_SCANsat_RX_Description = Высокотехнологичный прибор для картографирования ресурсов, который захватывает сотни каналов данных для оценки распределения полезных ресурсов с более высоких орбит. Потребляет небольшое количество энергии и функционирует только при освещении. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ru/Science.cfg ================================================ Localization { ru { #autoLOC_SCANsat_Science_Lo_Title = Сканирование высоты низкого разрешения #autoLOC_SCANsat_Science_Lo_Default1 = Обработынные карты высот низкого разрешения #autoLOC_SCANsat_Science_Lo_Default2 = "РАДАРный сканер высоты докладывает. Я не знаю, как, но мы имеем сильный сигнал и получаем данные. Это требует праздничных закусок!" #autoLOC_SCANsat_Science_Lo_Sun = Вы задаетесь вопросом, работает ли датчик? #autoLOC_SCANsat_Science_Lo_Moho = Ну, по крайней мере, данные с низким разрешением заставляют Мохо выглядеть классно. Это не совсем гигантские озера лавы, но все выглядит круто! #autoLOC_SCANsat_Science_Lo_Eve = Вы рассматриваете зернистые, грубые расчеты высоты, возвращаемые сканером, и хотите отправить сканер с высоким разрешением. Ну, это отличная причина для запуска большего количества ракет! (Как будто нам действительно нужна причина) #autoLOC_SCANsat_Science_Lo_Gilly = Сканирование с низким разрешением подтверждает то, что вы уже знали: Джилли - это просто кусок камня, плавающий в космосе. По крайней мере, вам не нужно напрягать глаза, глядя на отчет. #autoLOC_SCANsat_Science_Lo_Kerbin = Даже данные с низким разрешением поверхности планет удивительно полезны. Вы ждете не дождетесь, чтобы применить эту технологию на Мун или за ее пределами. #autoLOC_SCANsat_Science_Lo_Mun = Данные показывают широкие, расчерченные штрихи ландшафта ниже. Сканирование с высоким разрешением было бы более полезным, но даже сейчас вы, вероятно, найдете подходящую площадку для посадки, используя эти данные. #autoLOC_SCANsat_Science_Lo_Minmus = Вы неохотно признаете, что ребята в Кербальском астрономическом обществе были правы: Минмус действительно луна. Вы бы не поверили, если бы не видели сканирование альтиметрии собственными глазами. #autoLOC_SCANsat_Science_Lo_Duna = Данные с низким разрешением немного зернистые и искаженные, но все равно будет иметь неоценимое значение для поиска подходящего посадочного места на Дюне. Внезапно долгосрочная миссия Дюны стала настоящей перспективой. #autoLOC_SCANsat_Science_Lo_Ike = По мере того, как вы порываете данные, вы поражаетесь тому, как подобное Ик проявляется в Муне. Вы интересуетесь их сравнительной поверхностной геологией. #autoLOC_SCANsat_Science_Lo_Dres = Даже с помощью сканера с низким разрешением вполне очевидно, что у Дреса есть некоторые выдающиеся горы. Вы ждете не дождетесь результатов сканирования ресурсов, потому что уверены: «в них есть золото на холмах». #autoLOC_SCANsat_Science_Lo_Jool = Альтиметрия, какая альтиметрия? Это газовый гигант Кербола. Давайте просто выберите номер наугад и назовите это хорошо. #autoLOC_SCANsat_Science_Lo_Laythe = Датчик кажется неспособным проникнуть в воду. #autoLOC_SCANsat_Science_Lo_Vall = Ну, вот он: «Данные, которые вы ожидали, Валл! Ха-ха-ха-ха! Ха-ха-ха. Ха-ха. Что, КТО-ТО нужно найти это смешно». #autoLOC_SCANsat_Science_Lo_Tylo = Вы по-прежнему не уверены в том, что будет выглядеть вид сверху с помощью тотализатора Лейт, шара Дреса и Джула, но эти данные обязательно помогут вам найти место для посадки, чтобы вы могли это выяснить. #autoLOC_SCANsat_Science_Lo_Bop = Ну, данные с низкой разрешающей способностью имеются, и вы решили их упаковать и отправить в ККЦ. Вы просто надеетесь, что в батареях осталось достаточное количество энергии, чтобы получить все это, и одновременно поддерживать базовые системы. #autoLOC_SCANsat_Science_Lo_Pol = Сканирование с низким разрешением подтверждает, что Пол действительно выглядит как гигантское зерно пыльцы. Пока вы не перейдете на сканирование с высоким разрешением и не продвинетесь в область электронной микроскопии, вам все равно останется вопрос о том, насколько сильно это сходство действительно. #autoLOC_SCANsat_Science_Lo_Eeloo = Ученые, вернувшиеся на Кербин, долгое время ждали этих данных. Без сомнения, там будут празднования и закуски для всех, когда данные туда попадут. #autoLOC_SCANsat_Science_Hi_Title = Сканирование высоты Высокого разрешения #autoLOC_SCANsat_Science_Hi_Default1 = Обработанная карта Высокого разрешения. #autoLOC_SCANsat_Science_Hi_Default2 = «Высокое разрешение определенно лучше, чем низкое. СКАН еще раз доказал свои навыки сканирования». #autoLOC_SCANsat_Science_Hi_Sun = Вы понимаете, что могли бы сэкономить деньги, если бы вы доверяли датчику низкого разрешения. #autoLOC_SCANsat_Science_Hi_Moho = Наконец, удивительность вернулась в Мохо! Это могут быть не гигантские текучие реки лавы, но эти данные впечатляют! #autoLOC_SCANsat_Science_Hi_Eve = Датчик высокого разрешения пробивается сквозь туманную фиолетовую атмосферу, и вы можете отличить мельчайшие детали на поверхности. Ученые в ККЦ будут спокойны. #autoLOC_SCANsat_Science_Hi_Gilly = Даже в сверхвысоком разрешении Джилли каким-то образом кажется в низком разрешении. Это одна серьезная кусковая поверхность. #autoLOC_SCANsat_Science_Hi_Kerbin = Вы становитесь загипнотизированными всеми цветами в данных, которые предоставляет новая технология высокого разрешения. Внезапно Звонок на обед пробуждает вас от вашего оцепенения, и вы быстро вытираете слюну из угла рта. #autoLOC_SCANsat_Science_Hi_Mun = «Нет, теперь это не скучная серая луна, просто посмотри на все цвета в этом сканировании! Теперь мы можем точно определить место посадки». #autoLOC_SCANsat_Science_Hi_Minmus = Вау, это не только Минмуские площадки, но и потрясающая топография! Вы не можете дождаться приземления в одной из этих плоских областей. #autoLOC_SCANsat_Science_Hi_Duna = Это данные с высоким разрешением потрясающие. Вы начинаете анализировать холмы и долины, ища идеальное место для посадки. #autoLOC_SCANsat_Science_Hi_Ike = Данные подтверждают наличие больших наклонных холмов и кратеров. Надеюсь, аналитики в ККЦ могут использовать это, чтобы найти подходящее место для посадки. #autoLOC_SCANsat_Science_Hi_Dres = Это ... серьезные горы. Вы думаете как бы обработать эти данные вместо того, чтобы пытаться подняться на некоторые из этих пиков. #autoLOC_SCANsat_Science_Hi_Jool = Даже в высоком разрешении, похоже, нет поверхности на Джул. Так много для этой теории. По крайней мере, у нас все еще есть деньги с гранта! #autoLOC_SCANsat_Science_Hi_Laythe = На карте показаны преимущественно отрицательные высоты. Вы считаете, что вы сглаживаете Лайт, чтобы вы могли подняться на горы. #autoLOC_SCANsat_Science_Hi_Vall = Данные из сканера с высоким разрешением подтверждают, что поверхность Волл, действительно, "измятая". Угадайте, Джин должен вам пятьдесят фондов. #autoLOC_SCANsat_Science_Hi_Tylo = Тило, возможно, был первым из лун Джула, который должен быть обнаружен, но эти данные заставляют чувствовать, что вы впервые открываете луну. #autoLOC_SCANsat_Science_Hi_Bop = Ничего себе, посмотри на все эти цвета. Вы не представляете, что означают все эти данные, но вы уверены, что данные с высоким разрешением поражают всех в ККЦ. #autoLOC_SCANsat_Science_Hi_Pol = Даже при таком количестве высококачественных данных по-прежнему сложно найти подходящую площадку для посадки. Как все-таки эта луна сделалась? #autoLOC_SCANsat_Science_Hi_Eeloo = Трещины и трещины на поверхности выделяются поразительной деталью, когда вы изучаете данные датчика. Просто посмотрите на все эти потенциальные площадки для посадки. #autoLOC_SCANsat_Science_Multi_Title = Мультиспектральный анализ #autoLOC_SCANsat_Science_Multi_Default1 = Обработанные данные датчика мультиспектрального анализа. #autoLOC_SCANsat_Science_Multi_Default2 = «Вау, как мы получаем данные прямо сейчас? Эти инженеры SCAN действительно знают, что они делают. Либо это, либо они не имеют ни малейшего представления о том, что они делают. В любом случае, пришло время для некоторых закусок!» #autoLOC_SCANsat_Science_Multi_Sun1 = Вы удивлены отсутствием биометрических данных. #autoLOC_SCANsat_Science_Multi_Sun2 = Вы удивляетесь, почему на карте биома нет видимых полюсов. #autoLOC_SCANsat_Science_Multi_Moho = По мере того, как вы просматриваете данные, вам интересно, обнаружите ли вы неуловимый биом озера лавы, о котором столько размышляли многие ученые. #autoLOC_SCANsat_Science_Multi_Eve = Затейливо закрученные линии карты биомов Ив напоминают вам о ламповых лампах и галстуках, окрашенных в рубашки. Хорошо было тем временем. На следующем космическом корабле Еве будет обязательный бал. #autoLOC_SCANsat_Science_Multi_Gilly = Даже при том, что эти косички эти астрономы не могли видеть здесь биомы. Хах! Тупые астрономы! Это 1 очко для науки и 0 баллов за уххх ... науку. #autoLOC_SCANsat_Science_Multi_Kerbin = Данные биома действительно поразительны. Вы просто надеетесь, что он устойчив к крошке, поскольку вы помните, что в день, когда был установлен датчик, брали особенно крошашуюся коробку с печеньками. #autoLOC_SCANsat_Science_Multi_Mun = Да, никогда не знал, что у луны есть биомы. Интересно, в какой из них сыр. И есть ли и другие закуски. #autoLOC_SCANsat_Science_Multi_Minmus = Вы размышляете над тем, как подгонять название "Большие плоскости", как вы лениво смотрите данные. Кто бы ни думал об этих именах, тот умный Кербал, в отличие от инженеров, которых мы имеем здесь. #autoLOC_SCANsat_Science_Multi_Duna = Вы расчесываете данные биома, ища только подходящее место, чтобы собрать все эти сладкие, сладкие научные данные. Ммммм, наука ... и закуски. #autoLOC_SCANsat_Science_Multi_Ike = По мере того, как вы перебираете данные, возвращаемые с Айка, вы удивляетесь разнообразию биомов. В конце концов, это просто луна. Вы ждете не дождетесь, когда получите какие-то научные данные. #autoLOC_SCANsat_Science_Multi_Dres = Поляки, проверка. Нагорье, проверьте. Мидлендс, проверьте. Низменность, проверка. Риджес, чек. Воздействие выброса, проверьте. Кратеры воздействия, проверка. Каньоны, проверьте. Думаю, у нас все получилось. Время выключить сканер и взять закуски! #autoLOC_SCANsat_Science_Multi_Jool1 = Вы удивлены отсутствием биометрических данных. #autoLOC_SCANsat_Science_Multi_Jool2 = Вы удивляетесь, почему на карте биома нет видимых полюсов. #autoLOC_SCANsat_Science_Multi_Laythe = Вы хотите бросить вечеринку каждый раз, когда датчик обнаруживает наземный биом. #autoLOC_SCANsat_Science_Multi_Vall = Довольно простые данные: поляки, нагорья, Мидлендс и Низменность. Это обертка. Теперь давай закуски! #autoLOC_SCANsat_Science_Multi_Tylo = Вы поражены разнообразием биомов в отчете. Мало того, что Тило круто смотреть, здорово смотреть вниз. #autoLOC_SCANsat_Science_Multi_Bop = Этот подробный анализ биомов Бопа будет способствовать нашему пониманию маленькой луны за пределами того, что мы могли бы надеяться. Это был отличный день. Закуски вокруг! #autoLOC_SCANsat_Science_Multi_Pol = Когда вы берете данные биома, поступающие от Пол, вы начинаете рассматривать возможность того, что пыльцевые зерна также имеют биомы. Затем вы быстро давите эту мысль, зная, как будут выглядеть активисты зеленых, если они поймут эту идею. #autoLOC_SCANsat_Science_Multi_Eeloo = Удивительно иметь такие подробные данные о биоме на планете, которая находится далеко от Кербина. Вы в восторге смотрите отчет, когда поступают данные. #autoLOC_SCANsat_Science_Resource_Title = Сканирование ресурсов #autoLOC_SCANsat_Science_Resource_Default1 = Обработанные данные о ресурсах низкого разрешения. #autoLOC_SCANsat_Science_Resource_Default2 = «Сейчас мы получаем данные датчика ресурсов, эта информация выглядит лучше, чем то, что мы получали от другой группы ...» #autoLOC_SCANsat_Science_Resource_Sun = Возможно, звезда не лучшее место для поиска ресурсов. #autoLOC_SCANsat_Science_Resource_Moho = Наконец, у нас есть информация о ресурсах на поверхности Мохо, теперь же нам просто нужно выяснить, почему кто-то хочет туда приземляться. #autoLOC_SCANsat_Science_Resource_Eve = Мы получаем много хороших данных о поверхностных ресурсах Ив, это будет здорово, когда нам нужно выяснить, как сойти с планеты. #autoLOC_SCANsat_Science_Resource_Gilly = Первоначальные исследования ресурсов Гилли выглядят интересными; Это почти похоже на добычу астероидов. #autoLOC_SCANsat_Science_Resource_Kerbin = Наконец, у нас есть некоторые данные о ресурсах на Кербине, потому что, как известно, если вы хотите, чтобы основная информация о вашей собственной планете ничего не делала, отправляя на орбиту дорогостоящий сложный спутник. #autoLOC_SCANsat_Science_Resource_Mun = Эти данные о ресурсах дают нам наш первый хороший взгляд на то, насколько подходящим может быть Мун для целей добычи. #autoLOC_SCANsat_Science_Resource_Minmus = Наконец, у нас есть некоторые данные о ресурсах на Минмусе, являющемся каждым первым выбором для начала добычи. #autoLOC_SCANsat_Science_Resource_Duna = Эти данные о ресурсах приближают нас к тому, чтобы пережить все наши любимые строки из недавнего фильма «Кербал». #autoLOC_SCANsat_Science_Resource_Ike = Айк может быть не самым интересным небесным телом Солнечной системы, но это не делает данные ресурса менее полезными. #autoLOC_SCANsat_Science_Resource_Dres = Мы могли бы также просто найти некоторые из близлежащих астероидов для ресурсов; Который когда-нибудь захочет побеспокоиться с Дресом. #autoLOC_SCANsat_Science_Resource_Jool = Хм, может быть, газовый гигант - не лучшее место для поиска поверхностных ресурсов ... #autoLOC_SCANsat_Science_Resource_Laythe = Ну, здесь есть много хороших данных, но здесь очень мало места на поверхности, где мы могли бы реально приземлиться и воспользоваться ресурсами. #autoLOC_SCANsat_Science_Resource_Vall = Сканирование ресурсов ледяного Валл предоставляет множество интересных данных. #autoLOC_SCANsat_Science_Resource_Tylo = Мы возьмем любую информацию о ресурсах, которую мы можем получить от страшного Тило. #autoLOC_SCANsat_Science_Resource_Bop = Bop не может быть первым выбором для решения, где искать ресурсы, но эти данные могут когда-нибудь пригодиться. #autoLOC_SCANsat_Science_Resource_Pol = В дополнение к пыльцевым зернам и странным кусковым вещам у Пола, похоже, есть интересные вклады в ресурсы. #autoLOC_SCANsat_Science_Resource_Eeloo = Теперь, когда мы добрались до Иилу, мы могли бы добыть все что нужно и перейти к тому, что за его пределами. #autoLOC_SCANsat_Science_Visual_Title = Визуальное сканирование #autoLOC_SCANsat_Science_Visual_Default1 = Проанализированы визуальные данные высокого разрешения. #autoLOC_SCANsat_Science_Visual_Default2 = "Команда SCAN снова сделала это. Они нашли ещё больше того, на что нам стоит посмотреть на каждом небесном теле." #autoLOC_SCANsat_Science_Visual_Sun = Если подумать, направлять наши деликатные телескопы прямо на Солнце, возможно, не самая лучшая идея. #autoLOC_SCANsat_Science_Visual_Moho = Это высококачественное визуальное сканирование Мохо показывает огромное количество... грязи... и, возможно, немного лавы. #autoLOC_SCANsat_Science_Visual_Eve = Мы не совсем уверены, что делает Еву такой фиолетовой, но это определённо создаёт красивые карты. #autoLOC_SCANsat_Science_Visual_Gilly = Это высококачественное визуальное сканирование Гилли выглядит очень похоже на низкокачественное визуальное сканирование Гилли. Видимо, здесь смотреть особо не на что. #autoLOC_SCANsat_Science_Visual_Kerbin = Наконец-то мы можем получить хорошую карту поверхности нашей родной планеты, хотя она будет удивительно мало полезна, поскольку на поверхности, кажется, нет ни одного кербаля. #autoLOC_SCANsat_Science_Visual_Mun = Это как кратеры внутри кратеров внутри кратеров. #autoLOC_SCANsat_Science_Visual_Minmus = Ну, это может быть мороженое... поверхность очень похожа на мороженое... единственный способ узнать наверняка — спуститься туда и начать пробовать! #autoLOC_SCANsat_Science_Visual_Duna = Эта визуальная карта подтверждает, что красная планета действительно очень красная. #autoLOC_SCANsat_Science_Visual_Ike = Одинокая луна Дуны Айк выглядит очень похоже на Мун, если бы только у Муна не было кратеров и он был бы действительно скучным. #autoLOC_SCANsat_Science_Visual_Dres = Этот набор данных визуального сканирования раз и навсегда доказывает, что Дрес — это реально существующая вещь... кто бы мог подумать? #autoLOC_SCANsat_Science_Visual_Jool = Все эти красивые зелёные завитки, должно быть, скрывают что-то действительно интересное. #autoLOC_SCANsat_Science_Visual_Laythe = Ты мог бы получить этот остров себе, или тот остров... или тот остров, или, может быть, тот остров вон там. О, подожди, может этот остров, или.... #autoLOC_SCANsat_Science_Visual_Vall = Эта карта как-то навевает желание пойти покататься на коньках. #autoLOC_SCANsat_Science_Visual_Tylo = Этот новый набор визуальных данных показывает всевозможные интересные... ну, вообще-то Тайло выглядит немного скучно с орбиты. #autoLOC_SCANsat_Science_Visual_Bop = Ну, это всё выглядит довольно жутко. Может, нам стоит придерживаться составления карт с орбиты, незачем подлетать слишком близко. #autoLOC_SCANsat_Science_Visual_Pol = Новые данные визуального сканирования показывают, что Пол действительно выглядит как пыльца. #autoLOC_SCANsat_Science_Visual_Eeloo = Все эти полосы и трещины на поверхности Илу делают карту действительно интересной. } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ru/Tooltips.cfg ================================================ Localization { ru { #autoLOC_SCANsat_mainMapToggle = Основная Карта #autoLOC_SCANsat_bigMapToggle = Большая Карта #autoLOC_SCANsat_zoomMapToggle = Детальная Карта #autoLOC_SCANsat_overlayToggle = Планетарный Оверлей #autoLOC_SCANsat_instrumentsToggle = Инструментальные Показания #autoLOC_SCANsat_settingsToggle = Настройки #autoLOC_SCANsat_mainMapColor = Цвета Карты #autoLOC_SCANsat_mainMapTerminator = Терминатор (День/Ночь) #autoLOC_SCANsat_mainMapType = Ландшафт/Биомы #autoLOC_SCANsat_mainMapMinimize = Вкл/Выкл Данные Корабля #autoLOC_SCANsat_mainMapStatus = Индикаторы Статуса Сканера #autoLOC_SCANsat_mainMapPercentage = Процент Завершения Активного Сканирования #autoLOC_SCANsat_bigMapRefresh = Обновить Карту #autoLOC_SCANsat_bigMapColor = Цвета Карты #autoLOC_SCANsat_bigMapTerminator = Терминатор (День/Ночь) #autoLOC_SCANsat_bigMapGrid = Сетка #autoLOC_SCANsat_bigMapOrbit = Орбиты #autoLOC_SCANsat_bigMapWaypoints = Путевые точки #autoLOC_SCANsat_bigMapAnomaly = Аномалии #autoLOC_SCANsat_bigMapFlags = Флаги #autoLOC_SCANsat_bigMapLegend = Легенда карты #autoLOC_SCANsat_bigMapResource = Оверлей ресурсов #autoLOC_SCANsat_bigMapExport = Экспорт Карты на Диск #autoLOC_SCANsat_resourceCutoffMinus = Снизить ограничение доступа к ресурсам #autoLOC_SCANsat_resourceCutoffPlus = Увеличить ограничение доступа к ресурсам #autoLOC_SCANsat_resourceSettings = Настройка цвета ресурсов #autoLOC_SCANsat_overlayRefresh = Обновить Карту #autoLOC_SCANsat_insNextResource = След. Ресурс #autoLOC_SCANsat_insPreviousResource = Пред. Ресурс #autoLOC_SCANsat_insNextAnomaly = След. Свойства Поверхности #autoLOC_SCANsat_zoomVesselSync = Синх. Текущего Корабля #autoLOC_SCANsat_zoomVesselLock = Закрепить Поз. Корабля #autoLOC_SCANsat_zoomLevelPersist = Remember The Last Zoom Level #autoLOC_SCANsat_zoomAutoRefresh = Авто Обновление #autoLOC_SCANsat_zoomMapRefresh = Обновить Карту #autoLOC_SCANsat_zoomMapWindowState = Размер Окна #autoLOC_SCANsat_zoomMapIn = Увеличить #autoLOC_SCANsat_zoomMapOut = Уменьшить #autoLOC_SCANsat_zoomMapLeft = Влево #autoLOC_SCANsat_zoomMapRight = Вправо #autoLOC_SCANsat_zoomMapUp = Вверх #autoLOC_SCANsat_zoomMapDown = Вниз #autoLOC_SCANsat_zoomMapIcons = Символы Карты #autoLOC_SCANsat_waypointToggle = Выбор Вэйпоинта #autoLOC_SCANsat_waypointSet = Создать Вэйпоинт #autoLOC_SCANsat_waypointCancel = Отменить Вэйпоинт #autoLOC_SCANsat_waypointMechJeb = Зона Посадки MechJeb #autoLOC_SCANsat_waypointNameRefresh = Обновить Вэйпоинт } } ================================================ FILE: GameData/SCANsat/Resources/Localization/ru/Warnings.cfg ================================================ Localization { ru { #autoLOC_SCANsat_Warning_DataResetCurrent = Удалить карту <<1>> для <<2>>? #autoLOC_SCANsat_Warning_DataResetAll = Удалить <<1>> для всех небесных тел? #autoLOC_SCANsat_Warning_StockResourceResetCurrent = Удалить стоковые данные ресурсов для <<1>>? #autoLOC_SCANsat_Warning_StockResourceResetAll = Удалить стоковые данные ресурсов для всех небесных тел? #autoLOC_SCANsat_Warning_MapFillCurrent = Заполнить карту <<1>> для <<2>>? #autoLOC_SCANsat_Warning_MapFillAll = Заполнить <<1>> для всех небесных тел? #autoLOC_SCANsat_Warning_ModuleManagerResource = Внимание\nДля всех функций сканирования ресурсов SCANsat необходим Module Manager. #autoLOC_SCANsat_Warning_SaveToConfig = Перезаписать существующий файл настроек? } } ================================================ FILE: GameData/SCANsat/Resources/Localization/zh-cn/Contracts.cfg ================================================ Localization { zh-cn { // *** Exceptional *** #autoLOC_SCANsat_exceptional0001 = 对目标 @/targetBodyValid3 进行一系列高分辨率SCANsat扫描。 #autoLOC_SCANsat_exceptional0002 = 对目标 @/targetBodyValid3 进行一系列高分辨率SCANsat扫描。 #autoLOC_SCANsat_exceptional0003 = 仅当飞船未由玩家明确控制(未加载)时才会进行扫描。 #autoLOC_SCANsat_exceptional0004 = 对目标 @/targetBodyValid3 进行数次高分辨率扫描。 #autoLOC_SCANsat_exceptional0005 = 我们现在拥有了一份 @/targetBodyValid3 的详尽地表图了。 #autoLOC_SCANsat_exceptional0006 = 必须对目标进行低于 90% 的高分辨率测高扫描。 #autoLOC_SCANsat_exceptional0007 = 必须对目标进行低于 90% 的高分辨率资源扫描。 #autoLOC_SCANsat_exceptional0008 = 必须处于目标轨道上,或目标是列表中的下一项。 #autoLOC_SCANsat_exceptional0009 = 必须对目标进行低于 90% 的高分辨率视觉扫描。 // *** Significant *** #autoLOC_SCANsat_significant_0001 = 对目标 @/targetBodyValid2 进行一系列SCANsat扫描。 #autoLOC_SCANsat_significant_0002 = 对目标 @/targetBodyValid2 进行一系列SCANsat扫描。 #autoLOC_SCANsat_significant_0003 = 仅当飞船未由玩家明确控制(未加载)时才会进行扫描。 #autoLOC_SCANsat_significant_0004 = 对目标 @/targetBodyValid2 进行数次低分辨率扫描。 #autoLOC_SCANsat_significant_0005 = 干得好,这些扫描将会为调查组提供许多有价值的数据。 #autoLOC_SCANsat_significant_0006 = 必须对目标进行低于 80% 的低分辨率测高扫描。 #autoLOC_SCANsat_significant_0007 = 必须对目标进行低于 80% 的低分辨率视觉扫描。 #autoLOC_SCANsat_significant_0008 = 必须对目标进行低于 80% 的低分辨率资源扫描。 #autoLOC_SCANsat_significant_0009 = 必须处于目标轨道上。 // *** Trivial *** #autoLOC_SCANsat_trivial_0001 = 对目标 @/targetBodyValid1 执行 @/scanReadString1 SCANsat扫描. #autoLOC_SCANsat_trivial_0002 = 对目标 @/targetBodyValid1 执行 @/scanReadString1 SCANsat扫描. #autoLOC_SCANsat_trivial_0003 = 仅当飞船未由玩家明确控制(未加载)时才会进行扫描。 #autoLOC_SCANsat_trivial_0004 = 对 @/targetBodyValid1 进行简单扫描 #autoLOC_SCANsat_trivial_0005 = 干得好,这些简单扫描的结果足够我们的专家喝上一壶了。 #autoLOC_SCANsat_trivial_0006 = 目标是系统的一部分。 #autoLOC_SCANsat_trivial_0007 = 目标扫描程度不能高于 70% } } ================================================ FILE: GameData/SCANsat/Resources/Localization/zh-cn/Flags.cfg ================================================ Localization { zh-cn { #autoLOC_SCANsat_Agents_Name = SCAN #autoLOC_SCANsat_Agents_Title = SCAN: 高级导航科学委员会 #autoLOC_SCANsat_Agents_Description = SCAN 委员会致力于测绘本恒星系中的每一颗行星。 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/zh-cn/Helptips.cfg ================================================ Localization { zh-cn { #autoLOC_SCANsat_settingsHelpScanningToggle = 开关所有SCANsat扫描。 #autoLOC_SCANsat_settingsHelpBackground = 开关选中天体的\n后台扫描。 #autoLOC_SCANsat_settingsHelpTimeWarp = 调整时间加速时的扫描频率。\n值越高扫描越精确,\n但在高时间加速倍率下可能导致性能问题。 #autoLOC_SCANsat_settingsHelpGroundTracks = 在星图模式显示一个可见的\n扫描活动标识。 #autoLOC_SCANsat_settingsHelpGroundTracksActive = 地面追踪标识可被限制为\n仅显示活动中的载具。 #autoLOC_SCANsat_settingsHelpStockUIStyle = 在默认KSP风格界面和Unity风格界面之间切换。 #autoLOC_SCANsat_settingsHelpOverlayTooltips = 当星球标识可用时,在鼠标当前位置显示一个提示框,\n内容包括坐标,地形高度,坡度,生物群系名称\n和资源储量。仅对已扫描地区有效。 #autoLOC_SCANsat_settingsHelpWindowTooltips = 显示地图窗口按钮的提示框,\n主要用来识别图标按钮。 #autoLOC_SCANsat_settingsHelpLegendTooltips = 在图例上显示提示框,\n关闭的同时也会关闭生物群系图例。 #autoLOC_SCANsat_settingsHelpStockToolbar = 使用原版工具栏,\n可以和Blizzy78的工具栏一起使用。 #autoLOC_SCANsat_settingsHelpToolbarMenu = 使用原版工具栏的弹出式菜单显示所有可用窗口。 #autoLOC_SCANsat_settingsHelpMechJeb = SCANsat缩放地图和大地图的导航点选择模式\n可以用来选择MJ自动着陆地点。 #autoLOC_SCANsat_settingsHelpMechJebLoad = 载入一个已保存的MJ自动着陆目标,\n这仅在飞行界面且载具MJ有效时可用。 #autoLOC_SCANsat_settingsHelpMapGenSpeed = 调整所有SCANsat地图的生成速度,\n数值调低可以节约CPU资源并减小生成\n地图对性能的影响。 #autoLOC_SCANsat_settingsHelpResetWindows = 重置所有窗口的位置和缩放,\n当窗口完全覆盖屏幕或者\n某些窗口不可见时使用。 #autoLOC_SCANsat_settingsHelpResetPlanetData = 重置当前天体选中的SCANsat数据,\n执行前会弹出一个确认窗口。\n本操作无法撤销。 #autoLOC_SCANsat_settingsHelpResetAllData = 重置所有天体选中的SCANsat数据,\n执行前会弹出一个确认窗口。\n本操作无法撤销。 #autoLOC_SCANsat_settingsHelpVesselsSensorsPasses = 当前激活的SCANsat传感器信息。\n载具表示配备已激活传感器的载具数量;\n传感器表示传感器总数,\n拥有多个传感器的仪器将对每一个传感器分别计数;\n帧率表示每秒钟传感器刷新次数,\n这个数值受时间加速倍率设置的影响。 #autoLOC_SCANsat_settingsHelpGreyScale = 为黑白SCANsat地图启用灰度图模式。\n高度图的每一个像素均介于黑色与白色之间,\n最大和最小值将由天体的最高和最低地形高度定义。 #autoLOC_SCANsat_settingsHelpExportCSV = 大地图模式下使用这个导出按钮将和地图贴图一起导出一个后缀为.csv的文件,\n该文件包含每个像素的坐标和地形高度,\n像素排列方式为先左后右,先上后下。 #autoLOC_SCANsat_settingsHelpSetMapWidth = 为SCANsat大地图贴图指定一个宽度,\n数值必须在550 - 8192之间,\n按设置键应用这个数值。 #autoLOC_SCANsat_settingsHelpWindowScale = 调整所有SCANsat窗口的缩放。 #autoLOC_SCANsat_settingsHelpFillPlanet = 为当前天体填入选中的SCANsat数据。 #autoLOC_SCANsat_settingsHelpFillAll = 为所有天体填入选中的SCANsat数据。 #autoLOC_SCANsat_resourceSettingsHelpBiomeLock = 避免对原版地表生物群系扫描的需求,\nSCANsat视图会显示完整精确的附带或不附带\n地表生物群系的资源储量图。 #autoLOC_SCANsat_resourceSettingsHelpInstant = 默认情况下,原版M700资源扫描仪的轨道观察会填满整个SCANsat资源地图,\n禁用后就需要标准SCANsat方法来扫描资源地图。\n当原版资源扫描仪不可用时自动禁用。 #autoLOC_SCANsat_resourceSettingsHelpNarrowBand = 大量的SCANsat功能需要载具或轨道上有一个\n窄带资源扫描仪,以此获得完整精确的资源储藏数据,\n禁用此项以避免这些制约。 #autoLOC_SCANsat_resourceSettingsHelpDisableStock = 禁用所有原版资源扫描仪的功能。\n所有资源数据必须使用SCANsat扫描方法来扫描,\n用SCANsat的工具替代许多原版的功能,\n包括右键读数以及行星总览资源图。 #autoLOC_SCANsat_resourceSettingsHelpResetStockResource = 重置当前天体原版资源扫描信息,\n需要重新载入或者切换场景才可生效,\n执行前将弹出确认窗口,\n本操作无法撤销。 #autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource = 重置所有天体原版资源扫描信息,\n需要重新载入或者切换场景才可生效,\n执行前将弹出确认窗口,\n本操作无法撤销。 #autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation = 改变生成行星视图和大地图资源地图时的\n资源储量单位度量范围,\n降低该数值可以提高地图的质量和精度,\n越低的数值生成地图越慢。 #autoLOC_SCANsat_resourceSettingsHelpOverlayHeight = 改变生成行星视图和大地图资源地图\n时的贴图尺寸(地图宽高比2比1),\n提高该数值可以提高地图的质量和精度,\n越高的数值生成地图越慢。 #autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight = 改变生成行星视图生物群系地图\n时的贴图尺寸(地图宽高比2比1),\n提高该数值可以提高地图的质量和精度,\n越高的数值生成地图越慢。 #autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency = 为行星视图资源地图创建一个灰色背景,\n用来辨识天体的哪些部分\n已经被扫描出没有资源储量而不是未扫描。 #autoLOC_SCANsat_resourceSettingsHelpScanThreshold = 当使用SCANsat传感器扫描到一个临界水平时对一个天体启用原版资源扫描,\n这对某些需要原版资源扫描可用的合同或其他mod而言很有用。\n填入一个0-100之间的数值并点击设置按钮。\n所有天体将被立刻检查,\n当载入或场景切换时也会执行检查。\n可能需要重新载入来生效。 #autoLOC_SCANsat_colorTerrainHelpMin = 定义地形图颜色板的高度下限,\n所有低于这一下限的高度都被显示为最低高度的颜色。 #autoLOC_SCANsat_colorTerrainHelpMax = 定义地形图颜色板的高度上限,\n所有低于这一上限的高度都被显示为最高高度的颜色。 #autoLOC_SCANsat_colorTerrainHelpClampToggle = 定义一个最低和最高高度之间的分界线,类似海平面高度线,\n这在明确区分有海洋星球的海洋\n和陆地时尤其有用。 #autoLOC_SCANsat_colorTerrainHelpClamp = 定义高度截止线,\n所有低于这一高度的地方将用地形图颜色板的前两个颜色标识,\n高于这一高度的则使用剩余的颜色。 #autoLOC_SCANsat_colorTerrainHelpReverse = 反转当前颜色板\n的颜色排列顺序。 #autoLOC_SCANsat_colorTerrainHelpDiscrete = 只使用每个颜色版定义的特殊颜色绘制地图,\n而不使用其中的渐变色。 #autoLOC_SCANsat_colorTerrainHelpPaletteSize = 调整当前选中颜色板\n的可用颜色数目。 #autoLOC_SCANsat_colorBiomeHelpStock = 为SCANsat生物群系图使用\n原版生物群系上色模式。 #autoLOC_SCANsat_colorBiomeHelpWhiteBorder = 不同生物群系之间绘制白色边界,\n在行星视图的生物群系图中无效。 #autoLOC_SCANsat_colorBiomeHelpTransparency = 调整生物群系图的透明度,\n地形高度在生物群系图下方显示,\n设为0%可禁用地形图绘制。 #autoLOC_SCANsat_colorPickerHelpLow = 上方颜色表示更新后的\n颜色板最低一端的颜色,\n下方的颜色表示当前使用中的颜色。 #autoLOC_SCANsat_colorPickerHelpHigh = 上方颜色表示更新后的\n颜色板最高一端的颜色,\n下方的颜色表示当前使用中的颜色。 #autoLOC_SCANsat_colorResourceHelpMin = 选中天体的资源丰富度下限,\n这一水平下的资源储量将\n显示为当前资源视图颜色板最低一端的颜色,\n低于此水平的资源储量将不被显示。 #autoLOC_SCANsat_colorResourceHelpMax = 选中天体的资源丰富度上限,\n不低于这一水平的资源储量将\n显示为当前资源视图颜色板最高一端的颜色。 #autoLOC_SCANsat_colorResourceHelpTransparency = 定义资源视图的透明度水平,\n升高数值可使背景的地形、坡度或生物群系图更清晰,\n这一设置同时也影响行星视图的资源地图。 #autoLOC_SCANsat_colorResourceHelpApply = 仅应用当前设定数值到\n选中的资源和天体。 #autoLOC_SCANsat_colorResourceHelpApplyAll = 为所有天体选中的\n资源应用当前设定数值。 #autoLOC_SCANsat_colorResourceHelpDefault = 仅将当前选中的资源和天体\n设定数值恢复为默认值。 #autoLOC_SCANsat_colorResourceHelpDefaultAll = 将所有天体选中的\n资源的设定数值恢复为默认值。 #autoLOC_SCANsat_colorHelpSaveToConfig = 保存所有颜色设置到\nSCANsat/Resources文件夹里的配置文件中,\n这些数值将默认给新存档\n和所有“重置为默认值”按钮使用,\n仅本存档使用的设定不必保存到配置文件。 #autoLOC_SCANsat_colorSlopeHelpCutoff = 调整两个选中坡度\n颜色组的分割线。 #autoLOC_SCANsat_settingsHelpOverlayHideZero = 资源不存在或低于临界值时,\n在用户界面隐藏资源。 #autoLOC_SCANsat_settingsHelpDaylightCheck = 一些扫描器需要处于\n日光中方可工作。 #autoLOC_SCANsat_settingsHelpWindowTooltips = 一些扫描器需要处于\n日光中方可工作。 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/zh-cn/OtherText.cfg ================================================ Localization { zh-cn { #autoLOC_SCANsat_Analyze = 分析数据 #autoLOC_SCANsat_StartScan = 开始扫描 #autoLOC_SCANsat_StopScan = 停止扫描 #autoLOC_SCANsat_ToggleScan = 开关扫描器 #autoLOC_SCANsat_Extend = 展开 #autoLOC_SCANsat_Retract = 收起 #autoLOC_SCANsat_Unknown = 未知 #autoLOC_SCANsat_All_Disabled = 所有扫描器已禁用 #autoLOC_SCANsat_Disabled = 扫描器禁用 #autoLOC_SCANsat_TooLow = 高度过低 #autoLOC_SCANsat_SubOptimal = 欠佳 #autoLOC_SCANsat_Ideal = 理想 #autoLOC_SCANsat_TooHigh = 高度过高 #autoLOC_SCANsat_NoData = 无数据 #autoLOC_SCANsat_Abundance = 丰富 #autoLOC_SCANsat_Surface = 表面 #autoLOC_SCANsat_AltitudeMin = 最低高度: <<1>>km\n #autoLOC_SCANsat_AltitudeBest = 最佳高度: <<1>>km\n #autoLOC_SCANsat_AltitudeMax = 最大高度: <<1>>km\n #autoLOC_SCANsat_Types = 扫描类型: #autoLOC_SCANsat_Daylight = 需要日光: <<1>> #autoLOC_SCANsat_FOV = 扫描锥角: <<1>> #autoLOC_SCANsat_MapProjection = 地图设计 #autoLOC_SCANsat_MapType = 地图类型 #autoLOC_SCANsat_MapResource = 资源 #autoLOC_SCANsat_MapBody = 天体 #autoLOC_SCANsat_GeneralSettings = 全局设置 #autoLOC_SCANsat_BackgroundSettings = 后台设置 #autoLOC_SCANsat_ResourceSettings = 资源设置 #autoLOC_SCANsat_DataManagement = 数据管理 #autoLOC_SCANsat_ColorManagement = 颜色管理 #autoLOC_SCANsat_ScanInfo = 传感器信息 #autoLOC_SCANsat_ScanInfoStatus = 扫描状态 #autoLOC_SCANsat_ScanInfoAltitude = 高度信息 #autoLOC_SCANsat_ScanInfoType = 扫描类型 #autoLOC_SCANsat_ScanInfoFOV = 视场宽度 #autoLOC_SCANsat_ScanInfoPower = 电力信息 #autoLOC_SCANsat_ScanInfoDaylight = 日照表面 #autoLOC_SCANsat_ScanResourceDisplay = 资源信息 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/zh-cn/Parts.cfg ================================================ Localization { zh-cn { #autoLOC_SCANsat_BTDT_Title = SCAN BTDT 系统(Been There Done That®) #autoLOC_SCANsat_BTDT_Description = 这个小的传感器能自动识别附近的异常,就算它只在非常短的距离内和非常低的高度上工作,可用于跟踪已识别的异常点,非常有用。 #autoLOC_SCANsat_BTDT_Exo_Description = This model of scanning device contains a set of passive and active sensors designed to quickly hone in on interesting features located nearby. #autoLOC_SCANsat_Multi_Title = SCAN 多光谱传感器 #autoLOC_SCANsat_Multi_Description = 这个多谱段传感器检测到的辐射包括了红外波段,可见光波段与雷达波段,这给了它区分地形类型和生物群系的能力。它也可以用于扫描异常点,比如地表特殊结构。 #autoLOC_SCANsat_Radar_Title = SCAN 雷达测高传感器 #autoLOC_SCANsat_Radar_Description = SCAN给你带来高性能雷达测高传感器。它是这个传感器家族的入门型,通常和玩具火箭、遥控飞机模型捆绑销售。研究小组经研究得知95%的目标受众尝试用胶带把它粘到火箭排气口上,这种改进似乎使之更容易使用。 #autoLOC_SCANsat_SAR_Title = SCAN 合成孔径雷达测高传感器 #autoLOC_SCANsat_SAR_Description = 这种合成孔径雷达测高传感器使用它的飞行路径来模拟一个更大的天线,这使得其可以使用更高的分辨率扫描地形,缺点是视野比较小,并且它在更高的地方才能获得最佳工作状态。 #autoLOC_SCANsat_Radar3B_Title = R-3B 雷达高度计 #autoLOC_SCANsat_Radar3B_Description = 这款高精度雷达高度计可以在小范围内收集基本的高度数据,无论有无光照均在合理的功率内可以稳定工作。 #autoLOC_SCANsat_RadarEO_Title = R-EO-1 高度雷达 #autoLOC_SCANsat_RadarEO_Description = 这款入门级 L 波段雷达高度计可从较低轨道收集中等宽度的低分辨率高度数据。 无论有无光照均在合理的功率内可以稳定工作。 #autoLOC_SCANsat_SARX_Title = SAR-X 天线 #autoLOC_SCANsat_SARX_Description = 这是一款初级合成孔径雷达, 这是一款初级合成孔径雷达, 这款雷达可以主动发出信号并利用卫星的移动来接受合成反射回来的信号,这款雷达需要卫星运行于低轨,并且信号较窄。耗能巨大,但不受光源限制。 #autoLOC_SCANsat_SARC_Title = SAR-C 天线 #autoLOC_SCANsat_SARC_Description = 这是一款高级合成孔径雷达设备, 通过增加雷达的功率,其相较 SAR-X 拥有更大的扫描范围,并且可以运行在更高的轨道之上,不过这款雷达对卫星轨道更为敏感。SAR-C 也和其初级版本一样,耗能巨大,不受光源限制。 #autoLOC_SCANsat_SARL_Title = SAR-L 天线 #autoLOC_SCANsat_SARL_Description = 目前为止最为先进的合成孔径雷达设备, 看它的体积就知道了。这款雷达天线可以从更高的轨道上绘制大片地形信息,甚至还包括了目标的群落地图。警告:使用前请备好足够能源。 #autoLOC_SCANsat_Multi_MS1_Title = MS-1 多光谱扫描仪 #autoLOC_SCANsat_Multi_MS1_Description = 这种低分辨率多光谱扫描仪收集目标表面反射的光,以提供低细节的颜色和生物群落地图。 因为是系列扫描仪的入门版本, 它只能在低轨运行, 并且无法探测任何资源信息。注意:需使用少量能源,仅能在有阳光时工作。 #autoLOC_SCANsat_Multi_MSR_Title = MS-R 增强型多光谱扫描仪 #autoLOC_SCANsat_Multi_MSR_Description = MS-R 增强型多光谱扫描仪是真正的多面手, 通过搜集从行星表面反射的光,其可以提供低细节的彩色地图和生物群落地图,甚至还包括一些地表资源。与入门级产品相比,MS-R 增强型多光谱扫描仪允许在更高的轨道上有效运行, 但是只能扫描很窄的范围。注意:需使用少量能源,仅能在有阳光时工作。 #autoLOC_SCANsat_Multi_MS2A_Title = MS-2A 先进多光谱扫描仪 #autoLOC_SCANsat_Multi_MS2A_Description = 通过检查多个光谱通道中的光波长,MS-2A 先进多光谱扫描仪可以同时生成目标低精度的彩色地图, 群落地图和资源分布。注意:需使用少量能源,仅能在有阳光时工作。 #autoLOC_SCANsat_VS1_Title = VS-1 高分辨率成像仪 #autoLOC_SCANsat_VS1_Description = 这款入门级高分辨率成像仪可以生产出精度上佳的高清晰彩色地图。当然,仅限低轨运转。注意:需使用少量能源,仅能在有阳光时工作。 #autoLOC_SCANsat_VS3_Title = VS-3 先进高分辨率成像仪 #autoLOC_SCANsat_VS3_Description = 民用级高精度成像仪的巅峰之作, 这种大型且昂贵的成像仪可生成高细节的彩色图像,并且可以识别独特的地表特征。注意:需使用少量能源,仅能在有阳光时工作。 #autoLOC_SCANsat_VS11_Title = VS-11 绝密侦察成像仪 #autoLOC_SCANsat_VS11_Description = *REDACTED* 可以从 *REDACTED* 到 *REDACTED* 的高度每隔 *REDACTED* 观察一次*REDACTED* 目标。如此惊人的 *REDACTED* 导致 *REDACTED* 推测 *REDACTED* *REDACTED*。注意:需使用适量能源,仅能在有阳光时工作。 #autoLOC_SCANsat_R_Title = SCAN-R 资源探测器 #autoLOC_SCANsat_R_Description = 一种入门级资源测绘仪器,在低轨道高度上运行良好,但只能扫描范围非常狭窄。注意:需使用适量能源,仅能在有阳光时工作。 #autoLOC_SCANsat_R2_Title = SCAN-R2 先进资源探测器 #autoLOC_SCANsat_R2_Description = 一种先进资源探测器,可以在更高的轨道绘制资源地图。注意:需使用适量能源,仅能在有阳光时工作。 #autoLOC_SCANsat_RX_Title = SCAN-RX 高光谱资源映射器 #autoLOC_SCANsat_RX_Description = 目前最先进的资源成像仪,可同时捕获上百个数据通道以使其可以运转在更高的轨道的同时不失精度。注意:需使用少量能源,仅能在有阳光时工作。 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/zh-cn/Science.cfg ================================================ Localization { zh-cn { #autoLOC_SCANsat_Science_Lo_Title = 低精度高度扫描 #autoLOC_SCANsat_Science_Lo_Default1 = 分析低精度高度数据。 #autoLOC_SCANsat_Science_Lo_Default2 = “雷达高度传感器正在报告数据,我不知道它是怎么做到的,但信号很强,数据也拿到了。是时候摆庆功宴了!” #autoLOC_SCANsat_Science_Lo_Sun = 你想搞清楚传感器是不是出故障了。 #autoLOC_SCANsat_Science_Lo_Moho = 好吧,至少这份低精度高度图让Moho看起来有那么一点酷,虽然并没有什么巨大的熔岩湖。 #autoLOC_SCANsat_Science_Lo_Eve = 你注视着这份扫描仪传回的粗略地图,心想当初送去的是高精度的扫描仪就好了。哦好吧,这或许也是个发射更多火箭的好理由!(说得好像你需要理由一样。) #autoLOC_SCANsat_Science_Lo_Gilly = 这份低精度地图证实了你的想法:Gilly仅仅是一块飘在太空中凹凸不平的石头,你不用盯着这份报告看上老半天了。 #autoLOC_SCANsat_Science_Lo_Kerbin = 即使是这份低精度地图也惊人地有用,你已经迫不及待要把这项科技用在Mun或者更远的地方。 #autoLOC_SCANsat_Science_Lo_Mun = 这份数据显示了Mun表面遭受了重创,一次高精度扫描可能会更有用,不过也许你可以用这份数据寻找合适的登陆点。 #autoLOC_SCANsat_Science_Lo_Minmus = 你很不情愿地承认坎巴拉天文协会那帮家伙是对的:Minmus真的只是一个卫星而不是什么好吃的。如果你没有亲眼看到这份扫描数据的话你根本不会相信他们。 #autoLOC_SCANsat_Science_Lo_Duna = 这份低精度地图有些模糊而扭曲,但它仍然能帮助你在Duna上寻找一个合适的着陆点,长期的Duna任务成为未来可展望的前景。 #autoLOC_SCANsat_Science_Lo_Ike = 当你收到这份数据时,你被Ike和Mun惊人的相似度震惊了,你想比较它们的地表地质。 #autoLOC_SCANsat_Science_Lo_Dres = 即使在这份低精度地图上也能清楚看到Dres上有着高耸的山峰,你等不及要看资源扫描结果了,因为你确信“这些山里有金子!” #autoLOC_SCANsat_Science_Lo_Jool = 高度图,什么是高度图?Jool是个气态行星,随机取些数据放上去就当是弄好了吧。 #autoLOC_SCANsat_Science_Lo_Laythe = 传感器似乎不能穿透水面看到水底。 #autoLOC_SCANsat_Science_Lo_Vall = 喏,这就是数据,“你们希Vall拿到的数据!哈哈哈哈!哈哈哈,哈,蛤?喂,应该有人觉得好笑才对!” #autoLOC_SCANsat_Science_Lo_Tylo = 你仍然不确定在这里抬头看Laythe,Vall和Jool是什么样子,但这份数据能帮你找到合适的着陆点,然后你就可以亲自去看看了。 #autoLOC_SCANsat_Science_Lo_Bop = 低精度数据收到了,你准备打包后发回给KSC,你只希望电池里的电量还足够发送数据和支撑系统运转用。 #autoLOC_SCANsat_Science_Lo_Pol = 低精度扫描证实了Pol的确看起来像一个巨大的花粉粒,在你更新了高精度扫描仪和电子显微镜之前,你永远不会知道它们两个到底有多像。 #autoLOC_SCANsat_Science_Lo_Eeloo = Kerbin上的科学家们已经等着这份数据很久了,当数据传回之后,无疑将会有一个全员的庆祝会。 #autoLOC_SCANsat_Science_Hi_Title = 高精度高度扫描 #autoLOC_SCANsat_Science_Hi_Default1 = 分析高精度高度数据。 #autoLOC_SCANsat_Science_Hi_Default2 = “高精度扫描确实比低精度好多了,SCAN再次证明了他们的扫描技能。” #autoLOC_SCANsat_Science_Hi_Sun = 你现在意识到如果相信低精度扫描结果的话或许能省下这笔钱。 #autoLOC_SCANsat_Science_Hi_Moho = Moho真酷!也许这里没有流动的岩浆河流,但数据真的引人注意! #autoLOC_SCANsat_Science_Hi_Eve = 高精度传感器很好地穿透了浓厚的紫色大气,你能够分析识别表面细节了,KSC的科学家们会收到结果的。 #autoLOC_SCANsat_Science_Hi_Gilly = 即使是超高精度扫描看起来也像是低精度的一样,真是崎岖不平的表面。 #autoLOC_SCANsat_Science_Hi_Kerbin = 你快被高精度扫描提供的各种各样的数据催眠了,突然任务控制中心的人把你从昏睡中叫醒,你赶紧擦去了嘴角的口水。 #autoLOC_SCANsat_Science_Hi_Mun = “啊哈!灰色的卫星不再那么无聊了,赶紧看看扫描仪上那些颜色!现在我们可以定下一个最棒的着陆场了。” #autoLOC_SCANsat_Science_Hi_Minmus = 哇哦!Minmus不仅是真实的,它还有一些惊人的地貌!你迫不及待地想在其中一块平坦的地方着陆了。 #autoLOC_SCANsat_Science_Hi_Duna = 这份高精度数据非常惊人,你开始分析这些山脉和峡谷,并寻找完美的着陆场。 #autoLOC_SCANsat_Science_Hi_Ike = 这份数据证实了陡峭的山峰和火山口的存在,希望KSC的分析员能找到一个合适的地方着陆。 #autoLOC_SCANsat_Science_Hi_Dres = 这里...有一些险峻的山峰,你很高兴能分析这份数据而不用尝试爬这些山。 #autoLOC_SCANsat_Science_Hi_Jool = 即使是高精度也没法扫出Jool的表面,理论意义重大,至少我们还有大笔的拨款! #autoLOC_SCANsat_Science_Hi_Laythe = 地图显示有很多负高度,你想抽干Laythe,这样你就可以爬山了。 #autoLOC_SCANsat_Science_Hi_Vall = 高精度扫描仪的数据证明Vall的确“起伏不平”,猜想基因欠你五十块。 #autoLOC_SCANsat_Science_Hi_Tylo = Tylo或许是第一个被发现的Jool卫星,但这份数据让你感觉你是第一次发现它。 #autoLOC_SCANsat_Science_Hi_Bop = 哇哦!看看这些颜色,你不知道这些数据都是什么意思,但你确信这份高精度数据会给KSC的每个人留下深刻印象。 #autoLOC_SCANsat_Science_Hi_Pol = 即使有这么多高质量的数据也难以找到一个合适的着陆点,这颗卫星TM是怎么做出来的? #autoLOC_SCANsat_Science_Hi_Eeloo = 你在分析高精度扫描仪的数据时,表面的裂隙是最引人注意的细节,那些都可能是潜在的着陆点。 #autoLOC_SCANsat_Science_Multi_Title = 多频段分析 #autoLOC_SCANsat_Science_Multi_Default1 = 分析多频段传感器数据。 #autoLOC_SCANsat_Science_Multi_Default2 = “哇哦!为什么我们现在才收到这份数据?那些SCAN工程师个个都是人才!也许他们并不知道自己在做什么。不管怎样,是时候享用一些零食了!” #autoLOC_SCANsat_Science_Multi_Sun1 = 你惊奇于生物群系数据的匮乏。 #autoLOC_SCANsat_Science_Multi_Sun2 = 你想知道为什么生物群系图上什么都没有。 #autoLOC_SCANsat_Science_Multi_Moho = 你在研究这些数据时想知道能不能找到很多科学家推测存在的隐藏的岩浆湖。 #autoLOC_SCANsat_Science_Multi_Eve = Eve那漩涡纹状的生物群系图让你想到了熔岩灯和扎染衬衫,下一艘去Eve的宇宙飞船可以装一个舞厅迪斯科球灯! #autoLOC_SCANsat_Science_Multi_Gilly = 天文学家们眯着眼睛也看不清这里的生物群系,啊哈!沉默的天文学家们!现在比分是1比0,科学对...嗯...科学。 #autoLOC_SCANsat_Science_Multi_Kerbin = 这份生物群系数据多得令人震惊,你希望这是安装传感器时吃零食留下来的碎屑造成的。 #autoLOC_SCANsat_Science_Multi_Mun = 嗯,从没想到这颗卫星还有生物群系,你想知道奶酪在哪里,以及有没有其他零食碎屑在里面。 #autoLOC_SCANsat_Science_Multi_Minmus = 你注视着这些数据,觉得“大平原”这个名字实在太棒了,想出这个名字的一定是个聪明的坎巴拉人,不像周围的这些工程师。 #autoLOC_SCANsat_Science_Multi_Duna = 你扫视着这份数据,试图寻找收集所有香甜美味的科技点的地方,嗯...科技点...以及零食。 #autoLOC_SCANsat_Science_Multi_Ike = 查看从Ike发回的生物群系数据时,你惊叹于那里的生物群系多样性,别忘了它仅仅是一颗卫星,你等不及要获取一些它表面的科学数据了。 #autoLOC_SCANsat_Science_Multi_Dres = 极地,已检查;高原,已检查;内陆,已检查;低底,已检查;山脊,已检查;撞击喷出物,已检查;陨石坑,已检查;峡谷,已检查。我认为所有数据都得到了,是时候关闭扫描仪并来点零食了! #autoLOC_SCANsat_Science_Multi_Jool1 = 你惊奇于生物群系数据的匮乏。 #autoLOC_SCANsat_Science_Multi_Jool2 = 你想知道为什么生物群系图上什么都没有。 #autoLOC_SCANsat_Science_Multi_Laythe = 每当传感器扫出一块陆地时你都想办一个派对来庆祝一下。 #autoLOC_SCANsat_Science_Multi_Vall = 直接了当的数据:极地,高原,内陆和低地,缠绕在星球上。现在来吃零食吧! #autoLOC_SCANsat_Science_Multi_Tylo = 报告中显示出生物群系惊人的多样性,Tylo不仅在高处看很酷,在表面看也同样地令人赞叹。 #autoLOC_SCANsat_Science_Multi_Bop = 这份Bop生物群系的详细数据使我们对这颗小卫星的理解大大超出了预期,真是美好的一天,来食香香鸡! #autoLOC_SCANsat_Science_Multi_Pol = 当你拿到这份Pol的生物群系数据之后,你开始沉思花粉粒拥有生物群系的可能性,很快你平复思绪,你明白抱有那种思想的人会是什么样。 #autoLOC_SCANsat_Science_Multi_Eeloo = 你对于除了Kerbin之外还能找到生物群系如此丰富的行星感到震惊,你抱着敬畏的心情凝视着数据报告。 #autoLOC_SCANsat_Science_Resource_Title = 资源扫描 #autoLOC_SCANsat_Science_Resource_Default1 = 分析低精度资源数据。 #autoLOC_SCANsat_Science_Resource_Default2 = “我们正在接收资源传感器的数据,这项信息看起来比其他的那些信息好多了...” #autoLOC_SCANsat_Science_Resource_Sun = 也许太阳不是一个寻找地表资源的好地方。 #autoLOC_SCANsat_Science_Resource_Moho = 我们终于获取了一些Moho表面的资源数据,现在我们只需要搞清楚为什么任何人都想在那里着陆。 #autoLOC_SCANsat_Science_Resource_Eve = 我们获取了许多关于Eve表面资源的优质数据,当我们寻找离开这颗星球的办法时这些数据很有用。 #autoLOC_SCANsat_Science_Resource_Gilly = Gilly的初次资源扫描结果很有趣,他几乎就是个小行星矿场。 #autoLOC_SCANsat_Science_Resource_Kerbin = 我们最终拥有了Kerbin的资源数据,众所周知,如果我们想了解自己母星的基本信息,没什么比发射一颗昂贵而又复杂的卫星更好的方法了。 #autoLOC_SCANsat_Science_Resource_Mun = 资源数据告诉我们Mun是多么适合开发资源。 #autoLOC_SCANsat_Science_Resource_Minmus = 最后,我们拥有了Minmus的资源数据,每一个坎巴拉宇航员建立初级采矿建筑的首选地。 #autoLOC_SCANsat_Science_Resource_Duna = 这份资源数据让我们离实现最近风靡坎巴拉的电影里的情节更近了一步。 #autoLOC_SCANsat_Science_Resource_Ike = Ike也许不是星系中最有趣的天体,但这并不会影响其资源数据的实用性。 #autoLOC_SCANsat_Science_Resource_Dres = 也许我们会去搜寻周边小行星上的资源,谁会想去打扰Dres呢? #autoLOC_SCANsat_Science_Resource_Jool = 嗯...也许气态行星不是一个寻找地表资源的好地方... #autoLOC_SCANsat_Science_Resource_Laythe = 很好,这里有很多很棒的数据,但其表面只有很少的地方适合着陆并享受其资源带来的好处。 #autoLOC_SCANsat_Science_Resource_Vall = 对冰冻的Vall进行的资源扫描提供了很多有趣的数据。 #autoLOC_SCANsat_Science_Resource_Tylo = 我们将带走所有在看起来很可怕的Tylo获取的资源数据。 #autoLOC_SCANsat_Science_Resource_Bop = Bop也许不是人们搜寻资源的首选之地,但这份数据早晚会带来方便。 #autoLOC_SCANsat_Science_Resource_Pol = 除了花粉粒和奇怪的块状物之外,Pol还有一些有趣的资源存储。 #autoLOC_SCANsat_Science_Resource_Eeloo = 至此我们已经完全探索了Eeloo,我们也需要开始清除这里的矿产,并探索其外还有什么。 #autoLOC_SCANsat_Science_Visual_Title = 图像扫描 #autoLOC_SCANsat_Science_Visual_Default1 = 分析高分辨率图像数据。 #autoLOC_SCANsat_Science_Visual_Default2 = "高级导航科学委员会再一次成功了。他们在每个天体上发现了更多可供研究的东西。" #autoLOC_SCANsat_Science_Visual_Sun = 又想了一下, 将我们精密的望远镜直接对准太阳可能不是什么好主意。 #autoLOC_SCANsat_Science_Visual_Moho = 这种对莫霍面的高质量视觉数据扫描揭示了大量的……泥土……也许还有一些熔岩。 #autoLOC_SCANsat_Science_Visual_Eve = 我们不太确定是什么让 Eve 如此的“紫气东来”,但它确实可以制作一些漂亮的地图。 #autoLOC_SCANsat_Science_Visual_Gilly = Gilly 的这种高分辨率图像看起来很像 Gilly 的低分辨率图像。显然这里没什么可看的。 #autoLOC_SCANsat_Science_Visual_Kerbin = 终于我们得到了一张我们母星的地表地图,尽管它没什么用,因为表面上似乎没有任何坎巴拉人。 #autoLOC_SCANsat_Science_Visual_Mun = 这就像陨石坑中的陨石坑中的陨石坑。 #autoLOC_SCANsat_Science_Visual_Minmus = 好吧, 它可能使冰激淋……至少地表看起来很像冰淇淋……我们唯一可以确认的方法就是赶快打开舱门下来尝尝! #autoLOC_SCANsat_Science_Visual_Duna = 这张视觉图证实了这颗红色星球确实很红。 #autoLOC_SCANsat_Science_Visual_Ike = Duna孤独的卫星Ike看起来很像Mun,如果Mun没有陨石坑并且和Ike一样无聊的话。 #autoLOC_SCANsat_Science_Visual_Dres = 这个视觉扫描数据集一劳永逸地证明了 Dres 真的是一个东西……谁知道呢? #autoLOC_SCANsat_Science_Visual_Jool = 所有那些漂亮的绿色漩涡一定隐藏着一些非常有趣的东西。 #autoLOC_SCANsat_Science_Visual_Laythe = 你可以拥有那个岛,或者那个岛……或者那个岛,或者那边的那个岛。哦,等等,也许是那个岛,或者.... #autoLOC_SCANsat_Science_Visual_Vall = 这张地图让你想去滑冰。 #autoLOC_SCANsat_Science_Visual_Tylo = 这个新的视觉数据集揭示了各种有趣的……嗯,实际上,从轨道上看,Tylo 看起来有点无聊。 #autoLOC_SCANsat_Science_Visual_Bop = 好吧,这一切看起来都很可怕。也许我们应该坚持从轨道上制作地图,没必要靠得太近。 #autoLOC_SCANsat_Science_Visual_Pol = 新的视觉扫描数据显示,Pol 确实看起来像花粉。 #autoLOC_SCANsat_Science_Visual_Eeloo = Eeloo 表面上的所有这些条纹和裂缝构成了一张非常有趣的地图。 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/zh-cn/Tooltips.cfg ================================================ Localization { zh-cn { #autoLOC_SCANsat_mainMapToggle = 主地图 #autoLOC_SCANsat_bigMapToggle = 大地图 #autoLOC_SCANsat_zoomMapToggle = 缩放地图 #autoLOC_SCANsat_overlayToggle = 行星显示 #autoLOC_SCANsat_instrumentsToggle = 仪器读数 #autoLOC_SCANsat_settingsToggle = 设置 #autoLOC_SCANsat_mainMapColor = 地图颜色 #autoLOC_SCANsat_mainMapTerminator = 地图晨昏线 #autoLOC_SCANsat_mainMapType = 开关地形/生物群系 #autoLOC_SCANsat_mainMapMinimize = 显示/隐藏载具信息 #autoLOC_SCANsat_mainMapStatus = 扫描器状态标识 #autoLOC_SCANsat_mainMapPercentage = 显示扫描完成度 #autoLOC_SCANsat_bigMapRefresh = 刷新地图 #autoLOC_SCANsat_bigMapColor = 地图颜色 #autoLOC_SCANsat_bigMapTerminator = 地图晨昏线 #autoLOC_SCANsat_bigMapGrid = 网格显示 #autoLOC_SCANsat_bigMapOrbit = 轨道显示 #autoLOC_SCANsat_bigMapWaypoints = 导航点 #autoLOC_SCANsat_bigMapAnomaly = 异常点 #autoLOC_SCANsat_bigMapFlags = 旗帜 #autoLOC_SCANsat_bigMapLegend = 图例 #autoLOC_SCANsat_bigMapResource = 资源显示 #autoLOC_SCANsat_bigMapExport = 导出地图到硬盘 #autoLOC_SCANsat_resourceCutoffMinus = 降低资源探测临界值 #autoLOC_SCANsat_resourceCutoffPlus = 增加资源探测临界值 #autoLOC_SCANsat_resourceSettings = 打开资源颜色设置 #autoLOC_SCANsat_overlayRefresh = 刷新地图 #autoLOC_SCANsat_insNextResource = 下一资源 #autoLOC_SCANsat_insPreviousResource = 上一资源 #autoLOC_SCANsat_insNextAnomaly = 下一个表面特征 #autoLOC_SCANsat_zoomVesselSync = 同步当前载具 #autoLOC_SCANsat_zoomVesselLock = 锁定视角到载具位置 #autoLOC_SCANsat_zoomLevelPersist = 记住最后一个缩放级别 #autoLOC_SCANsat_zoomAutoRefresh = 自动刷新 #autoLOC_SCANsat_zoomMapRefresh = 刷新地图 #autoLOC_SCANsat_zoomMapWindowState = 切换窗口大小 #autoLOC_SCANsat_zoomMapIn = 放大 #autoLOC_SCANsat_zoomMapOut = 缩小 #autoLOC_SCANsat_zoomMapLeft = 左移 #autoLOC_SCANsat_zoomMapRight = 右移 #autoLOC_SCANsat_zoomMapUp = 上移 #autoLOC_SCANsat_zoomMapDown = 下移 #autoLOC_SCANsat_zoomMapIcons = 地图图标 #autoLOC_SCANsat_waypointToggle = 导航点选择器 #autoLOC_SCANsat_waypointSet = 创建导航点 #autoLOC_SCANsat_waypointCancel = 取消导航点 #autoLOC_SCANsat_waypointMechJeb = 设定MJ着陆目标 #autoLOC_SCANsat_waypointNameRefresh = 重置导航点 } } ================================================ FILE: GameData/SCANsat/Resources/Localization/zh-cn/Warnings.cfg ================================================ Localization { zh-cn { #autoLOC_SCANsat_Warning_DataResetCurrent = 确认删除<<2>>的<<1>>图? #autoLOC_SCANsat_Warning_DataResetAll = 确认删除所有天体的<<1>>? #autoLOC_SCANsat_Warning_StockResourceResetCurrent = 确认删除<<1>>的资源储藏数据? #autoLOC_SCANsat_Warning_StockResourceResetAll = 确认删除所有天体的资源储藏数据? #autoLOC_SCANsat_Warning_MapFillCurrent = 确认填充<<2>>的<<1>>图? #autoLOC_SCANsat_Warning_MapFillAll = 确认填充所有天体的<<1>>? #autoLOC_SCANsat_Warning_ModuleManagerResource = 警告\nSCANsat所有的资源扫描功能都需要Module Manager。 #autoLOC_SCANsat_Warning_SaveToConfig = 确认覆盖现有的设置文件? } } ================================================ FILE: GameData/SCANsat/Resources/SCANcolors.cfg ================================================ SCAN_Color_Config { defaultMinHeightRange = -1000 defaultMaxHeightRange = 8000 rangeAboveMaxHeight = 10000 rangeBelowMinHeight = 10000 defaultPalette = Default SCANsat_Altimetry { Item { name = Kerbin index = 1 minHeightRange = -1500 maxHeightRange = 6500 clampHeight = 0 maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = Default paletteSize = 7 paletteReverse = False paletteDiscrete = False } Item { name = Sun index = 0 minHeightRange = 0 maxHeightRange = 1000 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = Default paletteSize = 7 paletteReverse = False paletteDiscrete = False } Item { name = Mun index = 2 minHeightRange = -500 maxHeightRange = 7000 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = RdGy paletteSize = 11 paletteReverse = True paletteDiscrete = False } Item { name = Minmus index = 3 minHeightRange = -500 maxHeightRange = 5500 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = Paired paletteSize = 9 paletteReverse = False paletteDiscrete = False } Item { name = Moho index = 4 minHeightRange = -300 maxHeightRange = 6500 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = mercury paletteSize = 6 paletteReverse = False paletteDiscrete = False } Item { name = Eve index = 5 minHeightRange = -2000 maxHeightRange = 7000 clampHeight = 0 maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = BuPu paletteSize = 7 paletteReverse = True paletteDiscrete = False } Item { name = Duna index = 6 minHeightRange = 0 maxHeightRange = 7000 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = mars paletteSize = 9 paletteReverse = False paletteDiscrete = False } Item { name = Ike index = 7 minHeightRange = 0 maxHeightRange = 12000 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = BrBG paletteSize = 8 paletteReverse = False paletteDiscrete = False } Item { name = Jool index = 8 minHeightRange = 0 maxHeightRange = 1000 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = Default paletteSize = 7 paletteReverse = False paletteDiscrete = False } Item { name = Laythe index = 9 minHeightRange = -3000 maxHeightRange = 6000 clampHeight = 0 maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = YlGnBu paletteSize = 8 paletteReverse = True paletteDiscrete = False } Item { name = Vall index = 10 minHeightRange = -500 maxHeightRange = 7500 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = Set1 paletteSize = 9 paletteReverse = False paletteDiscrete = False } Item { name = Bop index = 11 minHeightRange = 2000 maxHeightRange = 21500 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = PuOr paletteSize = 7 paletteReverse = False paletteDiscrete = False } Item { name = Tylo index = 12 minHeightRange = 0 maxHeightRange = 11000 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = YlGn paletteSize = 9 paletteReverse = True paletteDiscrete = False } Item { name = Gilly index = 13 minHeightRange = 1500 maxHeightRange = 6000 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = Accent paletteSize = 7 paletteReverse = False paletteDiscrete = False } Item { name = Pol index = 14 minHeightRange = 500 maxHeightRange = 5500 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = Spectral paletteSize = 8 paletteReverse = True paletteDiscrete = False } Item { name = Dres index = 15 minHeightRange = -200 maxHeightRange = 5500 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = northRhine paletteSize = 9 paletteReverse = False paletteDiscrete = False } Item { name = Eeloo index = 16 minHeightRange = -500 maxHeightRange = 3500 clampHeight = Null maxHeightMultiplier = 1 minHeightMultiplier = 1 clampHeightMultiplier = 1 paletteName = blackForest paletteSize = 10 paletteReverse = False paletteDiscrete = False } } SCANsat_Resources { Item { name = Ore lowResourceColor = 0.241454497,0.120727301,0.829999983,1 highResourceColor = 0.788862824,0,0.939999998,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 15 Resource_Planetary_Config { Item { resourceName = Ore bodyName = Sun index = 0 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Kerbin index = 1 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Mun index = 2 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Minmus index = 3 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Moho index = 4 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Eve index = 5 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Duna index = 6 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Ike index = 7 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Jool index = 8 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Laythe index = 9 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Vall index = 10 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Bop index = 11 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Tylo index = 12 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Gilly index = 13 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Pol index = 14 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Dres index = 15 lowResourceCutoff = 2.5 highResourceCutoff = 14 } Item { resourceName = Ore bodyName = Eeloo index = 16 lowResourceCutoff = 2.5 highResourceCutoff = 14 } } } Item { name = Karbonite lowResourceColor = 0,0.319215685,0.74000001,1 highResourceColor = 0.75,0.382352889,0,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 6.5 Resource_Planetary_Config { Item { resourceName = Karbonite bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Kerbin index = 1 lowResourceCutoff = 1.79999995 highResourceCutoff = 2.20000005 } Item { resourceName = Karbonite bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Karbonite bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 6.5 } } } Item { name = Minerals lowResourceColor = 0.4762353,0.0432941206,0.920000017,1 highResourceColor = 0,0.576470971,0.0745100006,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 6.5 Resource_Planetary_Config { Item { resourceName = Minerals bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Minerals bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 6.5 } } } Item { name = Substrate lowResourceColor = 0.64188242,0.0138039198,0.879999995,1 highResourceColor = 0.742823482,0.819999993,0,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 6.5 Resource_Planetary_Config { Item { resourceName = Substrate bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Substrate bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 6.5 } } } Item { name = Uraninite lowResourceColor = 0,0.839215994,0.76078397,1 highResourceColor = 1,0.235294104,0.0313725509,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 6.5 Resource_Planetary_Config { Item { resourceName = Uraninite bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Uraninite bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 6.5 } } } Item { name = Water lowResourceColor = 0.75999999,0,0.572235286,1 highResourceColor = 0,0.568784416,0.980000019,1 resourceTransparency = 20 defaultMinValue = 0.5 defaultMaxValue = 6.5 Resource_Planetary_Config { Item { resourceName = Water bodyName = Sun index = 0 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Kerbin index = 1 lowResourceCutoff = 5 highResourceCutoff = 45 } Item { resourceName = Water bodyName = Mun index = 2 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Minmus index = 3 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Moho index = 4 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Eve index = 5 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Duna index = 6 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Ike index = 7 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Jool index = 8 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Laythe index = 9 lowResourceCutoff = 5 highResourceCutoff = 40 } Item { resourceName = Water bodyName = Vall index = 10 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Bop index = 11 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Tylo index = 12 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Gilly index = 13 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Pol index = 14 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Dres index = 15 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } Item { resourceName = Water bodyName = Eeloo index = 16 lowResourceCutoff = 0.5 highResourceCutoff = 6.5 } } } Item { name = MetallicOre lowResourceColor = 0.720000029,0.505411804,0,1 highResourceColor = 0,0.630274475,0.980000019,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 6.5 Resource_Planetary_Config { Item { resourceName = MetallicOre bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = MetallicOre bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 6.5 } } } Item { name = MetalOre lowResourceColor = 0.182784304,0.589999974,0,1 highResourceColor = 0.0865882412,0.894745111,0.920000017,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 7.5 Resource_Planetary_Config { Item { resourceName = MetalOre bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = MetalOre bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 7.5 } } } Item { name = Dirt lowResourceColor = 1,0.2196078,0.772548974,1 highResourceColor = 0.322196096,0.790000021,0,1 resourceTransparency = 20 defaultMinValue = 15 defaultMaxValue = 35 Resource_Planetary_Config { Item { resourceName = Dirt bodyName = Sun index = 0 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Kerbin index = 1 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Mun index = 2 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Minmus index = 3 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Moho index = 4 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Eve index = 5 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Duna index = 6 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Ike index = 7 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Jool index = 8 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Laythe index = 9 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Vall index = 10 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Bop index = 11 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Tylo index = 12 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Gilly index = 13 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Pol index = 14 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Dres index = 15 lowResourceCutoff = 15 highResourceCutoff = 35 } Item { resourceName = Dirt bodyName = Eeloo index = 16 lowResourceCutoff = 15 highResourceCutoff = 35 } } } Item { name = ExoticMinerals lowResourceColor = 0.939568579,0.970000029,0,1 highResourceColor = 0.467882395,0,0.970000029,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 6.5 Resource_Planetary_Config { Item { resourceName = ExoticMinerals bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = ExoticMinerals bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 6.5 } } } Item { name = Gypsum lowResourceColor = 0.779999971,0.2905882,0,1 highResourceColor = 0,1,0.807843089,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 6.5 Resource_Planetary_Config { Item { resourceName = Gypsum bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Gypsum bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 6.5 } } } Item { name = Hydrates lowResourceColor = 0.172117695,0.769999981,0.39858821,1 highResourceColor = 0.930000007,0.452235311,0,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 6.5 Resource_Planetary_Config { Item { resourceName = Hydrates bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = Hydrates bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 6.5 } } } Item { name = RareMetals lowResourceColor = 0,0.49000001,0.351647109,1 highResourceColor = 1,0,0.223529398,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 6.5 Resource_Planetary_Config { Item { resourceName = RareMetals bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = RareMetals bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 6.5 } } } Item { name = GeoEnergy lowResourceColor = 0,0.790000021,0.492588311,1 highResourceColor = 1,0.725490212,0,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 6.5 Resource_Planetary_Config { Item { resourceName = GeoEnergy bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Kerbin index = 1 lowResourceCutoff = 10 highResourceCutoff = 35 } Item { resourceName = GeoEnergy bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 35 } Item { resourceName = GeoEnergy bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 35 } Item { resourceName = GeoEnergy bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 35 } Item { resourceName = GeoEnergy bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 6.5 } Item { resourceName = GeoEnergy bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 35 } } } Item { name = Alumina lowResourceColor = 0.446470588,0,0.689999998,1 highResourceColor = 0.0705882385,1,0,1 resourceTransparency = 20 defaultMinValue = 0.699999988 defaultMaxValue = 10 Resource_Planetary_Config { Item { resourceName = Alumina bodyName = Sun index = 0 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } Item { resourceName = Alumina bodyName = Kerbin index = 1 lowResourceCutoff = 0.699999988 highResourceCutoff = 14 } Item { resourceName = Alumina bodyName = Mun index = 2 lowResourceCutoff = 2.5 highResourceCutoff = 35 } Item { resourceName = Alumina bodyName = Minmus index = 3 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } Item { resourceName = Alumina bodyName = Moho index = 4 lowResourceCutoff = 2.5 highResourceCutoff = 35 } Item { resourceName = Alumina bodyName = Eve index = 5 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } Item { resourceName = Alumina bodyName = Duna index = 6 lowResourceCutoff = 5 highResourceCutoff = 55 } Item { resourceName = Alumina bodyName = Ike index = 7 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } Item { resourceName = Alumina bodyName = Jool index = 8 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } Item { resourceName = Alumina bodyName = Laythe index = 9 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } Item { resourceName = Alumina bodyName = Vall index = 10 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } Item { resourceName = Alumina bodyName = Bop index = 11 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } Item { resourceName = Alumina bodyName = Tylo index = 12 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } Item { resourceName = Alumina bodyName = Gilly index = 13 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } Item { resourceName = Alumina bodyName = Pol index = 14 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } Item { resourceName = Alumina bodyName = Dres index = 15 lowResourceCutoff = 0.699999988 highResourceCutoff = 90 } Item { resourceName = Alumina bodyName = Eeloo index = 16 lowResourceCutoff = 0.699999988 highResourceCutoff = 10 } } } Item { name = Borate lowResourceColor = 0.0170588307,0.863176525,0.870000005,1 highResourceColor = 1,0,0,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 7.5 Resource_Planetary_Config { Item { resourceName = Borate bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Borate bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 7.5 } } } Item { name = Monazite lowResourceColor = 0.146117598,0.0432941206,0.689999998,1 highResourceColor = 0,1,0.678431392,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 7.5 Resource_Planetary_Config { Item { resourceName = Monazite bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 15 } Item { resourceName = Monazite bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 20 } Item { resourceName = Monazite bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Monazite bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 7.5 } } } Item { name = SaltWater lowResourceColor = 0,0.779999971,0.333411813,1 highResourceColor = 0.388235301,0.921568573,1,1 resourceTransparency = 20 defaultMinValue = 0.100000001 defaultMaxValue = 1 Resource_Planetary_Config { Item { resourceName = SaltWater bodyName = Sun index = 0 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Kerbin index = 1 lowResourceCutoff = 0.100000001 highResourceCutoff = 40 } Item { resourceName = SaltWater bodyName = Mun index = 2 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Minmus index = 3 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Moho index = 4 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Eve index = 5 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Duna index = 6 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Ike index = 7 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Jool index = 8 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Laythe index = 9 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Vall index = 10 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Bop index = 11 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Tylo index = 12 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Gilly index = 13 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Pol index = 14 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Dres index = 15 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SaltWater bodyName = Eeloo index = 16 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } } } Item { name = Silicates lowResourceColor = 0.769999981,0.721686184,0.262705892,1 highResourceColor = 0.882352889,0.458823502,1,1 resourceTransparency = 20 defaultMinValue = 1 defaultMaxValue = 7.5 Resource_Planetary_Config { Item { resourceName = Silicates bodyName = Sun index = 0 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Kerbin index = 1 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Mun index = 2 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Minmus index = 3 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Moho index = 4 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Eve index = 5 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Duna index = 6 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Ike index = 7 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Jool index = 8 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Laythe index = 9 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Vall index = 10 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Bop index = 11 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Tylo index = 12 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Gilly index = 13 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Pol index = 14 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Dres index = 15 lowResourceCutoff = 1 highResourceCutoff = 7.5 } Item { resourceName = Silicates bodyName = Eeloo index = 16 lowResourceCutoff = 1 highResourceCutoff = 7.5 } } } Item { name = SolarWind lowResourceColor = 0.129882395,0.350117713,0.720000029,1 highResourceColor = 1,1,0,1 resourceTransparency = 20 defaultMinValue = 0.100000001 defaultMaxValue = 1 Resource_Planetary_Config { Item { resourceName = SolarWind bodyName = Sun index = 0 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Kerbin index = 1 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Mun index = 2 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Minmus index = 3 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Moho index = 4 lowResourceCutoff = 0.5 highResourceCutoff = 10 } Item { resourceName = SolarWind bodyName = Eve index = 5 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Duna index = 6 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Ike index = 7 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Jool index = 8 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Laythe index = 9 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Vall index = 10 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Bop index = 11 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Tylo index = 12 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Gilly index = 13 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Pol index = 14 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Dres index = 15 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } Item { resourceName = SolarWind bodyName = Eeloo index = 16 lowResourceCutoff = 0.100000001 highResourceCutoff = 1 } } } } } ================================================ FILE: GameData/SCANsat/Resources/SCANpalettes.cfg ================================================ SCAN_Palette_Config { PaletteTypes { Item { name = Fixed PaletteGroups { Item { name = blackForest Palettes { Item { Colors = 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 } } } Item { name = mars Palettes { Item { Colors = 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 } } } Item { name = departure Palettes { Item { Colors = 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 } } } Item { name = northRhine Palettes { Item { Colors = 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 } } } Item { name = wiki2 Palettes { Item { Colors = 113,171,216,255|216,242,254,255|148,191,139,255|239,235,192,255|170,135,83,255|245,244,242,255 } } } Item { name = plumbago Palettes { Item { Colors = 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 } } } Item { name = cw1_013 Palettes { Item { Colors = 97,65,78,255|226,87,68,255|252,255,67,255|86,118,157,255|167,214,255,255 } } } Item { name = arctic Palettes { Item { Colors = 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 } } } Item { name = mercury Palettes { Item { Colors = 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 } } } Item { name = venus Palettes { Item { Colors = 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 } } } Item { name = Default Palettes { Item { Colors = 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 } } } } } Item { name = Sequential PaletteGroups { Item { name = OrRd Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 254,240,217,255|253,212,158,255|253,187,132,255|252,141,89,255|227,74,51,255|179,0,0,255 } Item { Colors = 254,240,217,255|253,204,138,255|252,141,89,255|227,74,51,255|179,0,0,255 } Item { Colors = 254,240,217,255|253,204,138,255|252,141,89,255|215,48,31,255 } Item { Colors = 254,232,200,255|253,187,132,255|227,74,51,255 } } } Item { name = BuPu Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 237,248,251,255|191,211,230,255|158,188,218,255|140,150,198,255|136,86,167,255|129,15,124,255 } Item { Colors = 237,248,251,255|179,205,227,255|140,150,198,255|136,86,167,255|129,15,124,255 } Item { Colors = 237,248,251,255|179,205,227,255|140,150,198,255|136,65,157,255 } Item { Colors = 224,236,244,255|158,188,218,255|136,86,167,255 } } } Item { name = BuGn Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 237,248,251,255|204,236,230,255|153,216,201,255|102,194,164,255|44,162,95,255|0,109,44,255 } Item { Colors = 237,248,251,255|178,226,226,255|102,194,164,255|44,162,95,255|0,109,44,255 } Item { Colors = 237,248,251,255|178,226,226,255|102,194,164,255|35,139,69,255 } Item { Colors = 229,245,249,255|153,216,201,255|44,162,95,255 } } } Item { name = YlOrBr Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 255,255,212,255|254,227,145,255|254,196,79,255|254,153,41,255|217,95,14,255|153,52,4,255 } Item { Colors = 255,255,212,255|254,217,142,255|254,153,41,255|217,95,14,255|153,52,4,255 } Item { Colors = 255,255,212,255|254,217,142,255|254,153,41,255|204,76,2,255 } Item { Colors = 255,247,188,255|254,196,79,255|217,95,14,255 } } } Item { name = YlGn Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 255,255,204,255|217,240,163,255|173,221,142,255|120,198,121,255|49,163,84,255|0,104,55,255 } Item { Colors = 255,255,204,255|194,230,153,255|120,198,121,255|49,163,84,255|0,104,55,255 } Item { Colors = 255,255,204,255|194,230,153,255|120,198,121,255|35,132,67,255 } Item { Colors = 247,252,185,255|173,221,142,255|49,163,84,255 } } } Item { name = Reds Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 254,229,217,255|252,187,161,255|252,146,114,255|251,106,74,255|222,45,38,255|165,15,21,255 } Item { Colors = 254,229,217,255|252,174,145,255|251,106,74,255|222,45,38,255|165,15,21,255 } Item { Colors = 254,229,217,255|252,174,145,255|251,106,74,255|203,24,29,255 } Item { Colors = 254,224,210,255|252,146,114,255|222,45,38,255 } } } Item { name = RdPu Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 254,235,226,255|252,197,192,255|250,159,181,255|247,104,161,255|197,27,138,255|122,1,119,255 } Item { Colors = 254,235,226,255|251,180,185,255|247,104,161,255|197,27,138,255|122,1,119,255 } Item { Colors = 254,235,226,255|251,180,185,255|247,104,161,255|174,1,126,255 } Item { Colors = 253,224,221,255|250,159,181,255|197,27,138,255 } } } Item { name = YlGnBu Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 255,255,204,255|199,233,180,255|127,205,187,255|65,182,196,255|44,127,184,255|37,52,148,255 } Item { Colors = 255,255,204,255|161,218,180,255|65,182,196,255|44,127,184,255|37,52,148,255 } Item { Colors = 255,255,204,255|161,218,180,255|65,182,196,255|34,94,168,255 } Item { Colors = 237,248,177,255|127,205,187,255|44,127,184,255 } } } Item { name = YlOrRd Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 255,255,178,255|254,217,118,255|254,178,76,255|253,141,60,255|240,59,32,255|189,0,38,255 } Item { Colors = 255,255,178,255|254,204,92,255|253,141,60,255|240,59,32,255|189,0,38,255 } Item { Colors = 255,255,178,255|254,204,92,255|253,141,60,255|227,26,28,255 } Item { Colors = 255,237,160,255|254,178,76,255|240,59,32,255 } } } Item { name = PuRd Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 241,238,246,255|212,185,218,255|201,148,199,255|223,101,176,255|221,28,119,255|152,0,67,255 } Item { Colors = 241,238,246,255|215,181,216,255|223,101,176,255|221,28,119,255|152,0,67,255 } Item { Colors = 241,238,246,255|215,181,216,255|223,101,176,255|206,18,86,255 } Item { Colors = 231,225,239,255|201,148,199,255|221,28,119,255 } } } Item { name = Blues Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 239,243,255,255|198,219,239,255|158,202,225,255|107,174,214,255|49,130,189,255|8,81,156,255 } Item { Colors = 239,243,255,255|189,215,231,255|107,174,214,255|49,130,189,255|8,81,156,255 } Item { Colors = 239,243,255,255|189,215,231,255|107,174,214,255|33,113,181,255 } Item { Colors = 222,235,247,255|158,202,225,255|49,130,189,255 } } } Item { name = PuBuGn Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 246,239,247,255|208,209,230,255|166,189,219,255|103,169,207,255|28,144,153,255|1,108,89,255 } Item { Colors = 246,239,247,255|189,201,225,255|103,169,207,255|28,144,153,255|1,108,89,255 } Item { Colors = 246,239,247,255|189,201,225,255|103,169,207,255|2,129,138,255 } Item { Colors = 236,226,240,255|166,189,219,255|28,144,153,255 } } } } } Item { name = Qualitative PaletteGroups { Item { name = Set2 Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 102,194,165,255|252,141,98,255|141,160,203,255|231,138,195,255|166,216,84,255|255,217,47,255 } Item { Colors = 102,194,165,255|252,141,98,255|141,160,203,255|231,138,195,255|166,216,84,255 } Item { Colors = 102,194,165,255|252,141,98,255|141,160,203,255|231,138,195,255 } Item { Colors = 102,194,165,255|252,141,98,255|141,160,203,255 } } } Item { name = Accent Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 127,201,127,255|190,174,212,255|253,192,134,255|255,255,153,255|56,108,176,255|240,2,127,255 } Item { Colors = 127,201,127,255|190,174,212,255|253,192,134,255|255,255,153,255|56,108,176,255 } Item { Colors = 127,201,127,255|190,174,212,255|253,192,134,255|255,255,153,255 } Item { Colors = 127,201,127,255|190,174,212,255|253,192,134,255 } } } Item { name = Set1 Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 228,26,28,255|55,126,184,255|77,175,74,255|152,78,163,255|255,127,0,255|255,255,51,255 } Item { Colors = 228,26,28,255|55,126,184,255|77,175,74,255|152,78,163,255|255,127,0,255 } Item { Colors = 228,26,28,255|55,126,184,255|77,175,74,255|152,78,163,255 } Item { Colors = 228,26,28,255|55,126,184,255|77,175,74,255 } } } Item { name = Set3 Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255|128,177,211,255|253,180,98,255 } Item { Colors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255|128,177,211,255 } Item { Colors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255 } Item { Colors = 141,211,199,255|255,255,179,255|190,186,218,255 } } } Item { name = Dark2 Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 27,158,119,255|217,95,2,255|117,112,179,255|231,41,138,255|102,166,30,255|230,171,2,255 } Item { Colors = 27,158,119,255|217,95,2,255|117,112,179,255|231,41,138,255|102,166,30,255 } Item { Colors = 27,158,119,255|217,95,2,255|117,112,179,255|231,41,138,255 } Item { Colors = 27,158,119,255|217,95,2,255|117,112,179,255 } } } Item { name = Paired Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255|251,154,153,255|227,26,28,255 } Item { Colors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255|251,154,153,255 } Item { Colors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255 } Item { Colors = 166,206,227,255|31,120,180,255|178,223,138,255 } } } Item { name = Pastel2 Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 179,226,205,255|253,205,172,255|203,213,232,255|244,202,228,255|230,245,201,255|255,242,174,255 } Item { Colors = 179,226,205,255|253,205,172,255|203,213,232,255|244,202,228,255|230,245,201,255 } Item { Colors = 179,226,205,255|253,205,172,255|203,213,232,255|244,202,228,255 } Item { Colors = 179,226,205,255|253,205,172,255|203,213,232,255 } } } Item { name = Pastel1 Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 251,180,174,255|179,205,227,255|204,235,197,255|222,203,228,255|254,217,166,255|255,255,204,255 } Item { Colors = 251,180,174,255|179,205,227,255|204,235,197,255|222,203,228,255|254,217,166,255 } Item { Colors = 251,180,174,255|179,205,227,255|204,235,197,255|222,203,228,255 } Item { Colors = 251,180,174,255|179,205,227,255|204,235,197,255 } } } } } Item { name = Diverging PaletteGroups { Item { name = Spectral Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 213,62,79,255|252,141,89,255|254,224,139,255|230,245,152,255|153,213,148,255|50,136,189,255 } Item { Colors = 215,25,28,255|253,174,97,255|255,255,191,255|171,221,164,255|43,131,186,255 } Item { Colors = 215,25,28,255|253,174,97,255|171,221,164,255|43,131,186,255 } Item { Colors = 252,141,89,255|255,255,191,255|153,213,148,255 } } } Item { name = RdYlGn Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 215,48,39,255|252,141,89,255|254,224,139,255|217,239,139,255|145,207,96,255|26,152,80,255 } Item { Colors = 215,25,28,255|253,174,97,255|255,255,191,255|166,217,106,255|26,150,65,255 } Item { Colors = 215,25,28,255|253,174,97,255|166,217,106,255|26,150,65,255 } Item { Colors = 252,141,89,255|255,255,191,255|145,207,96,255 } } } Item { name = RdBu Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 178,24,43,255|239,138,98,255|253,219,199,255|209,229,240,255|103,169,207,255|33,102,172,255 } Item { Colors = 202,0,32,255|244,165,130,255|247,247,247,255|146,197,222,255|5,113,176,255 } Item { Colors = 202,0,32,255|244,165,130,255|146,197,222,255|5,113,176,255 } Item { Colors = 239,138,98,255|247,247,247,255|103,169,207,255 } } } Item { name = PiYG Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 197,27,125,255|233,163,201,255|253,224,239,255|230,245,208,255|161,215,106,255|77,146,33,255 } Item { Colors = 208,28,139,255|241,182,218,255|247,247,247,255|184,225,134,255|77,172,38,255 } Item { Colors = 208,28,139,255|241,182,218,255|184,225,134,255|77,172,38,255 } Item { Colors = 233,163,201,255|247,247,247,255|161,215,106,255 } } } Item { name = PRGn Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 118,42,131,255|175,141,195,255|231,212,232,255|217,240,211,255|127,191,123,255|27,120,55,255 } Item { Colors = 123,50,148,255|194,165,207,255|247,247,247,255|166,219,160,255|0,136,55,255 } Item { Colors = 123,50,148,255|194,165,207,255|166,219,160,255|0,136,55,255 } Item { Colors = 175,141,195,255|247,247,247,255|127,191,123,255 } } } Item { name = RdYlBu Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 215,48,39,255|252,141,89,255|254,224,144,255|224,243,248,255|145,191,219,255|69,117,180,255 } Item { Colors = 215,25,28,255|253,174,97,255|255,255,191,255|171,217,233,255|44,123,182,255 } Item { Colors = 215,25,28,255|253,174,97,255|171,217,233,255|44,123,182,255 } Item { Colors = 252,141,89,255|255,255,191,255|145,191,219,255 } } } Item { name = BrBG Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 140,81,10,255|216,179,101,255|246,232,195,255|199,234,229,255|90,180,172,255|1,102,94,255 } Item { Colors = 166,97,26,255|223,194,125,255|245,245,245,255|128,205,193,255|1,133,113,255 } Item { Colors = 166,97,26,255|223,194,125,255|128,205,193,255|1,133,113,255 } Item { Colors = 216,179,101,255|245,245,245,255|90,180,172,255 } } } Item { name = RdGy Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 178,24,43,255|239,138,98,255|253,219,199,255|224,224,224,255|153,153,153,255|77,77,77,255 } Item { Colors = 202,0,32,255|244,165,130,255|255,255,255,255|186,186,186,255|64,64,64,255 } Item { Colors = 202,0,32,255|244,165,130,255|186,186,186,255|64,64,64,255 } Item { Colors = 239,138,98,255|255,255,255,255|153,153,153,255 } } } Item { name = PuOr Palettes { Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 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 } Item { Colors = 179,88,6,255|241,163,64,255|254,224,182,255|216,218,235,255|153,142,195,255|84,39,136,255 } Item { Colors = 230,97,1,255|253,184,99,255|247,247,247,255|178,171,210,255|94,60,153,255 } Item { Colors = 230,97,1,255|253,184,99,255|178,171,210,255|94,60,153,255 } Item { Colors = 241,163,64,255|247,247,247,255|153,142,195,255 } } } } } } } ================================================ FILE: GameData/SCANsat/Resources/ScienceDefs.cfg ================================================ EXPERIMENT_DEFINITION { id = SCANsatAltimetryLoRes title = #autoLOC_SCANsat_Science_Lo_Title baseValue = 10 scienceCap = 10 dataScale = 2 requireAtmosphere = False situationMask = 0 biomeMask = 0 RESULTS { default = #autoLOC_SCANsat_Science_Lo_Default1 default = #autoLOC_SCANsat_Science_Lo_Default2 Sun = #autoLOC_SCANsat_Science_Lo_Sun Moho = #autoLOC_SCANsat_Science_Lo_Moho Eve = #autoLOC_SCANsat_Science_Lo_Eve Gilly = #autoLOC_SCANsat_Science_Lo_Gilly Kerbin = #autoLOC_SCANsat_Science_Lo_Kerbin Mun = #autoLOC_SCANsat_Science_Lo_Mun Minmus = #autoLOC_SCANsat_Science_Lo_Minmus Duna = #autoLOC_SCANsat_Science_Lo_Duna Ike = #autoLOC_SCANsat_Science_Lo_Ike Dres = #autoLOC_SCANsat_Science_Lo_Dres Jool = #autoLOC_SCANsat_Science_Lo_Jool Laythe = #autoLOC_SCANsat_Science_Lo_Laythe Vall = #autoLOC_SCANsat_Science_Lo_Vall Tylo = #autoLOC_SCANsat_Science_Lo_Tylo Bop = #autoLOC_SCANsat_Science_Lo_Bop Pol = #autoLOC_SCANsat_Science_Lo_Pol Eeloo = #autoLOC_SCANsat_Science_Lo_Eeloo } } EXPERIMENT_DEFINITION { id = SCANsatAltimetryHiRes title = #autoLOC_SCANsat_Science_Hi_Title baseValue = 20 scienceCap = 20 dataScale = 4 requireAtmosphere = False situationMask = 0 biomeMask = 0 RESULTS { default = #autoLOC_SCANsat_Science_Hi_Default1 default = #autoLOC_SCANsat_Science_Hi_Default2 Sun = #autoLOC_SCANsat_Science_Hi_Sun Moho = #autoLOC_SCANsat_Science_Hi_Moho Eve = #autoLOC_SCANsat_Science_Hi_Eve Gilly = #autoLOC_SCANsat_Science_Hi_Gilly Kerbin = #autoLOC_SCANsat_Science_Hi_Kerbin Mun = #autoLOC_SCANsat_Science_Hi_Mun Minmus = #autoLOC_SCANsat_Science_Hi_Minmus Duna = #autoLOC_SCANsat_Science_Hi_Duna Ike = #autoLOC_SCANsat_Science_Hi_Ike Dres = #autoLOC_SCANsat_Science_Hi_Dres Jool = #autoLOC_SCANsat_Science_Hi_Jool Laythe = #autoLOC_SCANsat_Science_Hi_Laythe Vall = #autoLOC_SCANsat_Science_Hi_Vall Tylo = #autoLOC_SCANsat_Science_Hi_Tylo Bop = #autoLOC_SCANsat_Science_Hi_Bop Pol = #autoLOC_SCANsat_Science_Hi_Pol Eeloo = #autoLOC_SCANsat_Science_Hi_Eeloo } } EXPERIMENT_DEFINITION { id = SCANsatBiomeAnomaly title = #autoLOC_SCANsat_Science_Multi_Title baseValue = 15 scienceCap = 15 dataScale = 3 requireAtmosphere = False situationMask = 0 biomeMask = 0 RESULTS { default = #autoLOC_SCANsat_Science_Multi_Default1 default = #autoLOC_SCANsat_Science_Multi_Default2 Sun = #autoLOC_SCANsat_Science_Multi_Sun1 Sun = #autoLOC_SCANsat_Science_Multi_Sun2 Moho = #autoLOC_SCANsat_Science_Multi_Moho Eve = #autoLOC_SCANsat_Science_Multi_Eve Gilly = #autoLOC_SCANsat_Science_Multi_Gilly Kerbin = #autoLOC_SCANsat_Science_Multi_Kerbin Mun = #autoLOC_SCANsat_Science_Multi_Mun Minmus = #autoLOC_SCANsat_Science_Multi_Minmus Duna = #autoLOC_SCANsat_Science_Multi_Duna Ike = #autoLOC_SCANsat_Science_Multi_Ike Dres = #autoLOC_SCANsat_Science_Multi_Dres Jool = #autoLOC_SCANsat_Science_Multi_Jool1 Jool = #autoLOC_SCANsat_Science_Multi_Jool2 Laythe = #autoLOC_SCANsat_Science_Multi_Laythe Vall = #autoLOC_SCANsat_Science_Multi_Vall Tylo = #autoLOC_SCANsat_Science_Multi_Tylo Bop = #autoLOC_SCANsat_Science_Multi_Bop Pol = #autoLOC_SCANsat_Science_Multi_Pol Eeloo = #autoLOC_SCANsat_Science_Multi_Eeloo } } EXPERIMENT_DEFINITION { id = SCANsatResources title = #autoLOC_SCANsat_Science_Resource_Title baseValue = 10 scienceCap = 10 dataScale = 2 requireAtmosphere = False situationMask = 0 biomeMask = 0 RESULTS { default = #autoLOC_SCANsat_Science_Resource_Default1 default = #autoLOC_SCANsat_Science_Resource_Default2 Sun = #autoLOC_SCANsat_Science_Resource_Sun Moho = #autoLOC_SCANsat_Science_Resource_Moho Eve = #autoLOC_SCANsat_Science_Resource_Eve Gilly = #autoLOC_SCANsat_Science_Resource_Gilly Kerbin = #autoLOC_SCANsat_Science_Resource_Kerbin Mun = #autoLOC_SCANsat_Science_Resource_Mun Minmus = #autoLOC_SCANsat_Science_Resource_Minmus Duna = #autoLOC_SCANsat_Science_Resource_Duna Ike = #autoLOC_SCANsat_Science_Resource_Ike Dres = #autoLOC_SCANsat_Science_Resource_Dres Jool = #autoLOC_SCANsat_Science_Resource_Jool Laythe = #autoLOC_SCANsat_Science_Resource_Laythe Vall = #autoLOC_SCANsat_Science_Resource_Vall Tylo = #autoLOC_SCANsat_Science_Resource_Tylo Bop = #autoLOC_SCANsat_Science_Resource_Bop Pol = #autoLOC_SCANsat_Science_Resource_Pol Eeloo = #autoLOC_SCANsat_Science_Resource_Eeloo } } EXPERIMENT_DEFINITION { id = SCANsatVisual title = #autoLOC_SCANsat_Science_Visual_Title baseValue = 12 scienceCap = 12 dataScale = 4 requireAtmosphere = False situationMask = 0 biomeMask = 0 RESULTS { default = #autoLOC_SCANsat_Science_Visual_Default1 default = #autoLOC_SCANsat_Science_Visual_Default2 Sun = #autoLOC_SCANsat_Science_Visual_Sun Moho = #autoLOC_SCANsat_Science_Visual_Moho Eve = #autoLOC_SCANsat_Science_Visual_Eve Gilly = #autoLOC_SCANsat_Science_Visual_Gilly Kerbin = #autoLOC_SCANsat_Science_Visual_Kerbin Mun = #autoLOC_SCANsat_Science_Visual_Mun Minmus = #autoLOC_SCANsat_Science_Visual_Minmus Duna = #autoLOC_SCANsat_Science_Visual_Duna Ike = #autoLOC_SCANsat_Science_Visual_Ike Dres = #autoLOC_SCANsat_Science_Visual_Dres Jool = #autoLOC_SCANsat_Science_Visual_Jool Laythe = #autoLOC_SCANsat_Science_Visual_Laythe Vall = #autoLOC_SCANsat_Science_Visual_Vall Tylo = #autoLOC_SCANsat_Science_Visual_Tylo Bop = #autoLOC_SCANsat_Science_Visual_Bop Pol = #autoLOC_SCANsat_Science_Visual_Pol Eeloo = #autoLOC_SCANsat_Science_Visual_Eeloo } } ================================================ FILE: GameData/SCANsat/SCANsat.version ================================================ { "NAME": "SCANsat", "URL": "https://github.com/KSPModStewards/SCANsat/releases/latest/download/SCANsat.version", "DOWNLOAD": "https://github.com/KSPModStewards/SCANsat/releases" } ================================================ FILE: LICENSE.txt ================================================ Copyright (c) 2013 damny Copyright (c) 2014 David Grandy Copyright (c) 2014 technogeeky Redistribution and use in source and binary forms, with or without modifica- tion, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. LICENSING INFORMATION FOR MODELS AND TEXTURES --------------------------------------------- Models and textures for the two altimetry sensors as well as the multispectral (biome and anomaly) sensor were created by Milkshakefiend. Original forum thread: http://forum.kerbalspaceprogram.com/threads/49233-WIP-Parts-from-my-garden-shed-SCANsat-Antennae All Rights Reserved - Milkshakefiend / Myles Hill Milkshakefiend has given permission that these models and textures may be distributed with SCANsat, including derived works, as long as credit is given. LICENSING INFORMATION FOR SCIENCE TEXT --------------------------------------------- Science results text were created by madsailor, originally for Crowd Sourced Science: https://github.com/DuoDex/CrowdSourcedScience/commit/d7824034dd2f3a8367323c16dbb9f85499fb98a8 The text is released under the CC0 license: http://creativecommons.org/publicdomain/zero/1.0/legalcode LICENSING INFORMATION FOR LOGO --------------------------------------------- The logo was created by K3 | Chris in #kspmodders, and originally by the United States National Reconnaissance Office. Since they are a U.S. government organization, their logo patch is public domain, and therefore so is this logo. LICENSING INFORMATION FOR THIRD-PARTY LIBRARIES ----------------------------------------------- TriggerAu's KSP Platform Framework ------------- Extensively modified by technogeeky and DMagic The MIT License (MIT) Copyright (c) 2014 Trigger Au Copyright (c) 2014 David Grandy Copyright (c) 2014 technogeeky Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------- ColorBrewer Color Schemes ---------------------- Ported to C# by technogeeky Apache-Style Software License for ColorBrewer software and ColorBrewer Color Schemes Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State University. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ---------------------- Additional Color Schemes and Icon Textures ---------------------- Icon textures: Copyright (c) 2014 David Grandy Various color palettes as noted in the FixedColorPalette.cs file by their respective authors Creative Commons Attribution-ShareAlike 3.0 THE 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. BY 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. 1. Definitions "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. "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. "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. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike. "Licensor" means the individual, individuals, entity or entities that offers the Work under the terms of this License. "Original Author" means the individual, individuals, entity or entities who created the Work. "Work" means the copyrightable work of authorship offered under the terms of this License. "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. 2. 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. 3. 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: to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; to 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."; to 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; to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works. For the avoidance of doubt, where the Work is a musical composition: Performance 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. Mechanical 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). Webcasting 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). The 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. 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: You 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. You 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. If 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. 5. Representations, Warranties and Disclaimer UNLESS 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. 6. 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. 7. Termination This 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. Subject 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. 8. Miscellaneous Each 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. Each 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. If 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. No 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. This 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. ---------------------- CLZF2: * Improved version to C# LibLZF Port: * Copyright (c) 2010 Roman Atachiants * * Original CLZF Port: * Copyright (c) 2005 Oren J. Maurice * * Original LibLZF Library & Algorithm: * Copyright (c) 2000-2008 Marc Alexander Lehmann * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License version 2 (the "GPL"), in which case the * provisions of the GPL are applicable instead of the above. If you wish to * allow the use of your version of this file only under the terms of the * GPL and not to allow others to use your version of this file under the * BSD license, indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by the GPL. If * you do not delete the provisions above, a recipient may use your version * of this file under either the BSD or the GPL. ---------------------------------------------------------------- Contract Pack: The contract pack is based on the SCANsatLite Contract Configurator pack by severedSolo Released under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license (see above) The original pack can be found here: https://github.com/severedsolo/ScanSatLite ================================================ FILE: README.md ================================================ ### [**SCANsat**][top]: Real Scanning, Real Science, Warp Speed! [![][shield:support-ksp]][KSP:developers]  [![][shield:ckan]][CKAN:org]  [![][shield:license-bsd]][SCANsat:rel-license]  [![][shield:license-mit]][SCANsat:dev-license]  [![][shield:license-cc-by-sa]][SCANsat:dev-license]  > ![scan your planetoid like the big boys do][bigmap-scan-10000x] > ###### **Example SAR scan of Kerbin at 1000x and then 10,000x warp** [![][shield:support-rpm]][RPM:release]  [![][shield:support-mm]][mm:release]  [![][shield:support-toolbar]][toolbar:release]  [![][shield:support-karbonite]][karbonite:release]  [![][shield:support-usi]][usi:release]  [![][shield:support-kopernicus]][kopernicus:release]  [![][shield:support-ccfg]][cconfig:release]  [![][shield:support-mechjeb]][mechjeb:release]  **Table of Contents** ------------------------------------------ * [0. People, Facts, and FAQs][0] * [a. FAQs][0a] * [b. Video Overview][0b] * [1. Installation and Interoperability][1] * [a. Installation][1a] * [b. GameData Layout][1b] * [c. Other Add-Ons][1c] * [2. Types of Scans][2] * [a. Native SCANsat][2a] * [3. Resource Scanning][3] * [a. Stock Scanning Mode][3a] * [b. SCANsat Scanning Mode][3b] * [c. Resource Settings][3c] * [4. Basic Usage][4] * [a. FAQ: Finding a Good Altitude][4a] * [b. Mismatched Scanners][4b] * [c. Biome Map][4c] * [d. Ground Track Indicators][4d] * [5. Big Map][5] * [a. Big Map Options][5a] * [6. Planetary Overlay][6] * [a. Terrain and Biome Overlays][6a] * [b. Overlay Control Window][6b] * [7. Zoom Map][7] * [a. Hi Def Map][7a] * [b. Target Selection][7b] * [c. MechJeb Landing Guidance][7c] * [8. Instrument Window][8] * [9. Raster Prop Monitor][9] * [10. Parts and Sensors Types][10] * [a. RADAR][10a] * [b. SAR][10b] * [c. Multi][10c] * [d. BTDT][10d] * [e. MapTraq (deprecated)][10e] * [11. (Career Mode) Research and Development][11] * [a. Minimum Scan for Science (30%)][11a] * [b. Getting Maximum Science][11b] * [c. Contracts][11c] * [12. Color Management][12] * [a. Terrain Colors and Options][12a] * [b. Biome Colors and Options][12b] * [c. Resource Colors and Options][12c] * [13. Background Scanning][13] * [14. Time Warp][14] * [15. Settings Menu][15] * [16. Note: Data Sources][16] **WARNING**: This add-on is a **work**-in-**progress**. This means you should expect that it **may not work**, and you should be unsurprised if it **does not progress**. Disclaimer aside, this add-on is widely used and it **usually** works just fine. ### [:top:][top] 0. People, Facts, and FAQs ------------------------------------------ #### Maintainers The current maintainer is: + [DMagic][DMagic] \<\> Maintainers are the people who you should complain to if there is something wrong. Complaints in various forms are prioritized as follows: 1. [Pull Requests][SCANsat:pulls] are given the **highest** priority possible. ~ 24 hour response 2. [Issues][SCANsat:issues] are given *higher* priority than other complaints. ~ 2 day response 3. [E-Mails][SCANsat:email] will be answered as soon as possible (it's a forwarded list) ~ 3 day response 4. [Forum Posts][SCANsat:rel-thread] are given a medium priority. ~ 1 week response 5. [Forum Private Messages](http://forum.kerbalspaceprogram.com/private.php) are given a low priority. We might forget! 6. [Reddit Posts and PMs][KSP:reddit] are the lowest priority. We often lurk and don't login! If you submit a well-reasoned pull request, you may even trigger a new release! #### Authors The current authors include: + [technogeeky][technogeeky] \<\> + [DMagic][DMagic] \<\> Past authors include: + [damny][damny] \<\> As of August 2014, the vast majority of code is damny's and DMagic's; and technogeeky and is slowly helping out here and there. #### Contributors In addition to the authors, the following people have contributed: + (Models, Graphics, Textures) [Milkshakefiend][Milkshakefiend] + (Science results text) [madsailor][madsailor] + (Contracts) [severedsolo][severedsolo] #### Licenses For licensing information, please see the [included LICENSE.txt][SCANsat:rel-license] file. [Source Code][SCANsat:rel-source] is available, as some licenses may require. ### [:top:][top] 0a. FAQs * For some basic scanning strategies, as well as a description of resource scanning, check out the [SCANsat wiki][SCANsat:wiki] * What does SCANsat do? * It allows you to scan planetary bodies for terrain, biome, and resource information and generate various kinds of maps. * How does SCANsat affect gameplay? * 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) * Will this version break my existing scans from older versions of SCANsat? * **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. * Do I need to attach a part to my vessel to use SCANsat? * **No, but...**. You can view existing maps from any vessel, but you need to attach a scanner to add new data to the maps. * What does the "field of view" mean? * 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. * What does the "best" altitude mean? * 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. * [Career Mode] Does SCANsat give us science points? * **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. * [Career Mode] Is it integrated into the tech tree? * **Yes!** **[This link][8]** tells you which nodes unlock which parts in the tech tree. * [Contracts] Does SCANsat offer contracts to complete? * **Yes/No.** Contracts are currently only supported through [**third-party addons**][6d]. * Can you add to SCANsat? * **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! ### [:top:][top] 0b. Video Overview ##### SCANsat overview and review by: [TinyPirate][tinypirate] * Watch this quick video on the features and functions of SCANsat > [![][tinypirate-video-screen]][tinypirate-video] ### [:top:][top] 1. Installation and Interoperability ------------------------------------------ #### [:top:][top] 1a. Installation 1. Download the latest [SCANsat package][SCANsat:rel-dist-github] from the releases section of this GitHub Repo 2. Extract the included package and put the SCANsat folder in your KSP installation's GameData folder. #### [:top:][top] 1b. GameData Layout ![][SCANsat:gamedata] #### [:top:][top] 1c. Other Add-Ons S.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. **Built Using** | **Supported By** :---: | :---: [**MechJeb**][mechjeb:release] | [![Support for MKS][usi:logo]][usi:release] [**Blizzy78's Toolbar**][toolbar:release] | [![Support for Karbonite][karbonite:logo]][karbonite:release] [**ModuleManager**][mm:release] | [![Support for ALCOR][alcor:logo]][alcor:release] [**RasterPropMonitor**][rpm:release] | * **SCANsat** * [x] [**v16.0**][SCANsat:rel-thread] SCANsat Release **version: v16.0** * [x] [**v15.0**][SCANsat:dev-thread] SCANsat Dev **version: v15.0** **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. **SCANsat** is built against the following mods: * [x] [![][shield:support-mm]][mm:release] * [x] [![][shield:support-rpm]][rpm:release] * [x] [![][shield:support-alcor]][alcor:release] * [x] [![][shield:support-toolbar]][toolbar:release] * [x] [![][shield:support-mechjeb]][mechjeb:release] ### [:top:][top] 2. Types of Scans ------------------------------------------ SCANsat supports several different kinds of scans (as opposed to scanning modules or parts). * **RadarLo**: Basic, Low-Resolution RADAR Altimetry (b&w, limited zoom) * **RadarHi**: Advanced, High-Resolution RADAR Altimetry (in color, unlimited zoom) * **Slope**: Slope Data converted from RADAR data * **Biome**: Biome Detection and Classification (in color, unlimited zoom) * **Anomaly**: Anomaly Detection and Labeling * **Resource**: Scan for chemical or mineral resource on the surface. Other parts and add-ons are free to include one or more of these kinds of scans. In general, we would request that similar (same order of magnitude) scanning parameters and limitations are used on custom parts, but this is not a requirement. #### [:top:][top] 2a. SCANsat Scans **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] > ![][small-newMap1] Data Type | Scan Type | Scan Indicator :--- | :--- | :---: Altimetry | **RADAR** | **LO** Altimetry | **SAR** | **HI** Biome | **Biome** | **MULTI** Anomaly | **Anomaly** | **MULTI** Anomaly | **Been There, Done That(tm)** | **BTDT** * The **Slope** map is generated from either **HI** or **LO** data. * The **Biome** scan only works for bodies that have biomes. For vanilla KSP, this means all planets except the sun and Jool. * **Anomalies** are things the builds of KSC, hidden easter eggs, etc... * The **Anomaly** data scans for anomalies from orbit, while * **BTDT** shows a camera view of an anomaly once you are near it * The **Biome** and **Anomaly** scans are combined into the multi-spectral scanner; indicated by **MULTI** ### [:top:][top] 3. Resource Scanning ------------------------------------------ **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]. #### [:top:][top] 3a. Stock Scanning Mode With default resource scanning options enabled the SCANsat resource map will automatically update as soon as a **stock resource scan** is completed. > ![][resource-instant] No further resource scanning is necessary while using stock scanning mode. #### [:top:][top] 3b. SCANsat Scanning Mode There are two levels of **SCANsat Scanning Mode**: * Disable **Instant Scanning** in the **Resource Settings Window** * This will prevent SCANsat maps from being updated based on stock scanning coverage * All stock scanning parts will continue to work as normal * SCANsat resource scanning essentially works alongside stock scanning in this mode * Disable **Stock Scanning** in the **Resource Settings Window** * This will prevent all stock scanning functions * All stock scanning modules will use replacement SCANsat modules * These include: * The planetary resource overlays (these are available in all scanning modes) * The resource abundance readouts for the right-click menu * The fixed-position resource map found on the Narrow-Band scanner * 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 Resource scans are initiated in the same way as any other scan. In this case they use the stock **M700 Orbital Survey Scanner**. > ![][resource-scanner] Resource scanning proceeds the same way as standard SCANsat scanning instruments do. The grey scale color option generally works best when viewing resource overlays. > ![][resource-bigmap] The resource system can be enabled through the **SCANsat** Big Map: > ![][resource-walkthrough] The **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. The examples below show the difference between high (top) and low (bottom) resolution resource scans > ![][resource-bigmap-hires-full-biome] > ![][resource-bigmap-lores-full-biome] Zoom 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. > ![][resource-zoom-map-covered] If 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**. > ![][resource-zoom-map-uncovered] Resource overlays will work in IVA, too: > ![][resource-iva] #### [:top:][top] 3c. Resource Settings A 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. > ![][resource-settings] * **Instant Resource Scan** * When this option is active all resources will be fully scanned for a given planet using the stock **Orbital Survey Scanner** instrument * When disabled the SCANsat resource overlays will need to be generated using the method described above * When **Disable Stock Scanning** is activated the **Instant Scan** option will automatically turn off * **Resource Biome Lock** * With this option active, biomes will need to be scanned from the surface to obtain accurate resource abundance reading on SCANsat maps * When disabled all resource abundance values will be fully accurate, with no need for ground surveys * **Requires Narrow Band Scanner** * 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 * **Instruments Window** resource readout will require a narrow-band scanner on the current vessel within its maximum altitude limits * **Planetary Overlay Tooltips** will check for any suitable vessel in orbit around the planet before showing resource abundance * When disabled the zoom map, instruments window, and overlay tooltips will display resource values regardless of Narrow-Band scanner status * **Disable Stock Scanning** * Disables the stock orbital survey * Replaces the resource concentration readout from scanners with SCANsat modules * Right-click menu resource concentration readout dependent on SCANsat scanning coverage * **Stock Scan Threshold** * Sets a threshold value for SCANsat M700 resource scans when stock scanning is disabled; can be disabled * Once this value is reached a default, stock resource scan for that planet will be conducted * Enter a new value, from 0-100 in the text box * **Reset SCANsat Resource Coverage** * This button will erase all resource scanning data for the current planet * Regular SCANsat data will not be affected * A confirmation window will appear upon clicking the button * **Reset Stock Resource Scanning** * Stock resource scanning data can be erased for each planet (does not affect resource biome scanning data) * **SCAN Planet Overlay Quality Settings** * **Interpolation** settings can be increased or decreased to increase the accuracy of overlays * **Overlay Map Size** can be adjusted for higher quality, but slower maps * **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 ### [:top:][top] 4. Basic Usage ------------------------------------------ Put 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. You can start scanning by selecting a SCANsat part's context menu, enabling the part. Here, you will find a **small map**. #### [:top:][top] 4a. FAQ: Finding a Good Altitude Watch 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. ###### too high Solid ORANGE means you're too high (and therefore no data is being recorded): > ![][small-toohigh-v10] ###### too low Flashing ORANGE/GREEN means you're too low (and therefore you have a FOV penalty): > ![][small-toolow-v10] ###### just right Solid GREEN means you're in an ideal orbit. Notice the larger swath width on the right: > ![][small-justright-v10] #### [:top:][top] 4b. Mismatched Scanners In 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. BIO and ANOM are ideal, but HI is not! | HI is ideal, but BIO and ANOM are off! ---|--- ![][small-mismatch1] | ![][small-mismatch2] SAR (HI) has thin swaths due to low alt. | Multi and RADAR have similar ideal swaths --- | --- ![][small-scan-color] | ![][small-scan-bw] The 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]**. Note that the indicators flash blue when the gray-scale color option is selected on the big map. Be 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: ###### Static! Oh no, adjust the rabbit ears! > ![][small-static] #### [:top:][top] 4c. Biome Map > ![][small-biome] The **Biome/Terrain** button in the top right corner can be used to toggle between the standard terrain map and a biome map * When in biome mode, the current biome of each vessel will be displayed if it has been scanned #### [:top:][top] 4d. Ground Track Indicators > ![][ground-track] When activated in the settings menu, ground track indicators are drawn for vessels around the current planet. * The indicators are drawn only if at least one sensor on board the vessel is within scanning altitude * The indicator width on the surface represents the scanning FOV at the equator * The scanner with the widest FOV on a vessel is used to create the indicator ### [:top:][top] 5. Big Map ------------------------------------------ > ![A Big Big Map][bigmap-anim-v2] A bigger map can be rendered on demand. Rendered maps are automatically saved to GameData/SCANsat/PluginData. Note that position indicators for vessels or anomalies are not visible on exported images (but they may be a future release). You can mouse over the big map to see what sensors have data for the location, as well as terrain elevation, and other details. Right-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. #### [:top:][top] 5a. Big Map Options There are four drop-down menus along the top of the big map. These control, from left to right: * The map projection type - Rectangular, KavrayskiyVII:, or Polar * The map type - Altimetry, Slope, or Biome * The resource to overlay on the map * The planet to display The icon in the center of the upper row regenerates the map. The toggle icons along the left side of the map control the various overlays and the color mode. The four buttons in the bottom-left open and close the other SCANsat windows. The camera icon in the lower-right exports a copy of the map. The re-size icon in the lower-right corner can be dragged to re-size the map. ### [:top:][top] 6. Planetary Overlay ------------------------------------------ > ![][resource-planet-hires-full-biome] A 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. > ![][resource-planet-in-progress] #### [:top:][top] 6a. Terrain and Biome Overlays > ![][terrain-planet-overlay] SCANsat 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. > ![][terrain-planet-overlay-tooltip] Tooltips can be activated to show data for the location under the current mouse position while in map mode. SCANsat biome coverage can also be displayed using the overlay window. > ![][biome-planet-overlay] #### [:top:][top] 6b. Overlay Control Window > ![][resource-overlay-window] Each 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. ### [:top:][top] 7. Zoom Map ------------------------------------------ > ![][bigmap-zoom-open] A 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. The zoom scale and map center can be controlled by clicking within the zoom map. * Left-click to zoom out and re-center the map at the mouse cursor. * Right-click to zoom in and re-center the map at the mouse cursor. * Middle-click or Modifier Key (usually Alt on Windows) + Right-click will re-center the map without changing the scale. The vessel orbit overlay, waypoint icons, and anomaly locations can be toggle on and off independently of the big map settings. The **zoom map** also features mouse-over information for the cursor location similar to that shown on the big map. Different map types, resource overlays and polar projections are all applied to the **zoom map** as well. > ![][zoommap-in] #### [:top:][top] 7a. Hi Def Map > ![][hidef-map-open] Parts with the stock ModuleHiDefCamera (i.e. the Narrow-Band Scanner) have a special SCANsat module that opens a modified zoom map. * This map features a low detail, grey-scale terrain map * 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 * Zoom levels are restricted; the default is from 8X to 20X zoom * All available resources can be viewed using this map and selected using the **Resource Drop Down Menu** > ![][hidef-map-comp-1] The **Hi Def** map shows all standard SCANsat map overlays > ![][hidef-map-comp-2] The **Hi Def** map is limited to show only low quality terrain maps that are not dependant on SCANsat coverage #### [:top:][top] 7b. Target Selection > ![][zoommap-scansat-landing] The **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 in the zoom map window. The icon will be displayed, along with standard, FinePrint waypoints, in the zoom window and the big map. While in map view the target site will be overlayed on the planet's surface; shown as a matching, four-arrow green icon. To 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. > ![][zoommap-clear-target] #### [:top:][top] 7c. MechJeb Landing Guidance > ![][zoommap-mechjeb-settings] If MechJeb is installed and an additional option is available in the settings menu to activate **MechJeb Landing Guidance Mode** > ![][zoommap-mechjeb-landing] The **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 and the MechJeb Landing Guidance module must be unlocked in the R&D Center. Landing sites selected through MechJeb will automatically show up as a waypoint on SCANsat maps. ### [:top:][top] 8. Instrument Window ------------------------------------------ > ![][instruments-small] The instruments window provides a readout of several types of data based on current scanning coverage. * **Location** Shows the vessel's current coordinates; not dependent on scanning coverage * **Target Dist.** Shows the vessel's distance to the SCANsat or MechJeb landing target; only shown when within 15km * **Waypoint** Shows if the vessel is inside of a current FinePrint waypoint; not dependent on scanning coverage * **Altitude** Shows the vessel's current altitude above the terrain; shows the current terrain altitude when landed; shows ocean depth when splashed down * **Slope** Shows a highly localized slope based on a 3X3 grid centered 5m around the vessel * **Biome** Shows the biome that the current vessel is in or over * **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 * **Anomaly** Shows the nearest anomaly and its distance from the vessel * **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 > ![][instruments-btdt] ### [:top:][top] 9. Raster Prop Monitor ------------------------------------------ > ![][rpm-multi] SCANsat 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. > ![][rpm-mfd-labeled] > ![][rpm-ALCOR-left] > ![][rpm-ALCOR-right] ### [:top:][top] 10. Parts and Sensor Types ------------------------------------------ | **Part** | **Scan Type** | **FOV** | Altitude (**Min**) | (**Ideal**) | (**Max**) |:--- | --- | --- | --- | --- | --- | | [RADAR Altimetry Sensor][5a] | **RadarLo** / **Slope**| 5 | 5000 m | 5000 m | 500 km | [SAR Altimetry Sensor][5b] | **RadarHi** | 2 | 5000 m | 750 km | 800 km | [Multispectral Sensor][5c] | **Biome** **ANOM** | 4 | 5000 m | 250 km | 500 km | [Been There Done That®][5d] | **Anomaly** | 1 | 0 m | 0 m | 2 km | [MapTraq® (deprecated)][5e] | **None** | N/A | N/A | N/A | N/A #### [:top:][top] 10a. The RADAR Altimetry Sensor > ![RADAR][vab-radar] #### [:top:][top] 10b. The SAR Altimetry Sensor > ![SAR][vab-sar] #### [:top:][top] 10c. The Multispectral Sensor > ![Multi][vab-multi] #### [:top:][top] 10d. Been There Done That > ![BTDT][vab-btdt] #### [:top:][top] 10e. MapTraq (deprecated) > ![MapTraq][vab-maptraq] ### [:top:][top] 11. (Career Mode) Research and Development ------------------------------------------ The **RADAR Altimetry** sensor can be unlocked in **Basic Science**. The **SAR Altimetry** sensor can be unlocked in **Advanced Science Tech**. The **Multispectral** sensor can be unlocked in **Advanced Exploration**. The **BTDT** sensor can be unlocked in **Field Science**. ##### [:top:][top] 11a. Minimum Scan for Science Once you scan at least 30% of a particular map, you can use **Analyze Data** to get delicious science: > ![30% is your minimum][science-min] ##### [:top:][top] 11b. Getting Maximum Science Between 30% and 100%, you will get a number of science points proportional to the percentage. Really, the upper cutoff is 95% in case you didn't scan the whole map. > ![Scan 95% to get all science][science-max] ##### [:top:][top] 11c. Contract Support Career mode contracts are supported through third party addons. * [Contract Configurator Forum Thread][cconfig:release] SCANsat includes Contract Configurator contracts for scanning each planet. ### [:top:][top] 12. Color Management ------------------------------------------ > ![][color-window] SCANsat 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. The color management window can be accessed from the big or small map with the color palette icon, or from the toolbar menu. ##### [:top:][top] 12a. Terrain Colors and Options On the left are the various color palettes available; there are four different styles that can be selected from the drop down menu. Palettes can be customized by changing the number of colors in the palette, reversing the order, or making the palette use discrete color transitions, rather than the smooth gradient used by default. Changes to the color palette are reflected after selecting **Apply**, the big and small maps will automatically refresh using the newly selected color palette. Note that only the altimetry map is affected by color palette selection. > ![][color-palette-switch] There are several terrain height options available as well. * The **Min** and **Max** height sliders can be used to set the lower and upper cutoff values for the terrain height-to-color algorithm. * The **Clamp** option can be used to set a cutoff below which only the first two colors in the selected palette 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 from ocean to solid terrain more pronounced > ![][color-clamp-terrain] All stock KSP planets have default color palette and terrain height values appropriate for the planet's terrain. Standard default values are used for any addon planets. ##### [:top:][top] 12b. Biome Colors and Options Biome map colors and options can be controlled in the **Biome** tab of the window * The end-point colors can be selected using the HSV color-picker; the value slider controls the brightness of the color * Terrain transparency is controlled with a slider * Stock style biome maps can be used in place of SCANsat's custom colors * The white border around biome edges can be disabled > ![][color-biome] Biomes can also be displayed using the stock color maps. > ![][color-biome-stock] ##### [:top:][top] 12c. Resource Colors and Options Resource overlays can also be adjusted, using the **Resource** tab * Resource colors are selected in the same manner as biome colors * Upper and lower resource cutoff values can be adjusted with the sliders; use fine control mode for small adjustments * Each resource can be adjusted separately and the values can be applied to the current planet or all planets * 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) * These settings also affect the **Planetary Overlay** colors > ![][color-resource] ### [:top:][top] 13. Background Scanning ------------------------------------------ ![Note the background scanning (non-active vessels are scanning)][small-scan] Unlike some other KSP scanning systems, SCANsat allows scanning with multiple vessels. All online scanners scan at the same time during any scene where time progresses; no active SCANsat parts are necessary. ### [:top:][top] 14. Time Warp ------------------------------------------ SCANsat does not interpolate satellite paths during time warp; nevertheless, due to the relatively large field of view of each sensor, it's still possible to acquire data faster by time warping. The maximum recommended time warp speed is currently **10,000x**. Scanning at this warp factor should allow identical scanning performance (in terms of [swath width](http://en.wikipedia.org/wiki/Swath_width)) as scanning at *1x*. As an example of speed, here is a BigMap rendering of a scan at **100x**: > ![this is pretty peaceful][bigmap-scan-100x] And this is a BigMap rendering of the same orbit, but later in the scan. It starts at **1000x** and then speeds up to **10,000x**: > ![this makes my OCD happy][bigmap-scan-10000x] Notice that the only gaps in coverage are those at the poles (ie, the selected inclination was not high enough to capture the poles). ### [:top:][top] 15. Settings Menu ------------------------------------------ > ![][settings-window] The 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. * The **Resource Settings Window** can be opened * The marker used for **Anomalies** can be specified * **Background scanning** can be controlled for each planet * **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) * **Ground Track** indicators can be toggled for the current vessel or for all vessels at the current planet * Toggles control the availability of the **Stock App Launcher** button, and the **Tooltips** for various icons on other windows and **Planetary Overlay Tooltips** * If MechJeb is installed an additional option is available to toggle the MechJeb Landing Guidance interface * If the windows are ever dragged off screen there is an option to **Reset All Windows** to their default positions * **Scanning Data** can be deleted for any or all planets; a confirmation box will appear when these options are selected * **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. * The numbers under the **Time Warp Resolution** indicate the following * **Vessels:** The number of vessels with any active SCANsat sensors present * **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. * **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. * There are several options related to map exports * **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 * **Set Map Width** This allows for manually setting the size of the big map; values between 560 and 8192 are acceptable * **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 ### [:top:][top] 16. Note Concerning Data Sources ------------------------------------------ All data this mod shows you is pulled from your game as you play. This includes: * terrain elevation * biomes * anomalies SCANsat can't guarantee that all anomalies will be found; in particular, some are so close to others that they don't show up on their own, and if the [developers][KSP:developers] want to be sneaky then they can of course be sneaky. ------------------------------------------ [technogeeky]: http://forum.kerbalspaceprogram.com/members/110153 [DMagic]: http://forum.kerbalspaceprogram.com/members/59127 [damny]: http://forum.kerbalspaceprogram.com/members/80692 [Milkshakefiend]: http://forum.kerbalspaceprogram.com/members/72507 [Olympic1]: http://forum.kerbalspaceprogram.com/members/81815 [madsailor]: http://forum.kerbalspaceprogram.com/members/123944 [tinypirate]: http://forum.kerbalspaceprogram.com/members/79868 [severedsolo]: http://forum.kerbalspaceprogram.com/members/82445 [KSP:developers]: https://kerbalspaceprogram.com/index.php [KSP:reddit]: http://www.reddit.com/r/KerbalSpaceProgram [vab-radar-thumb]: http://i.imgur.com/PrRIcYvs.png [vab-sar-thumb]: http://i.imgur.com/4aTTVfWs.png [vab-multi-thumb]: http://i.imgur.com/byIYXP9s.png [vab-maptraq-thumb]: http://i.imgur.com/Skrqc8Cs.png [vab-btdt-thumb]: http://i.imgur.com/zUmj6USs.png [vab-radar]: http://i.imgur.com/PrRIcYv.png [vab-sar]: http://i.imgur.com/4aTTVfW.png [vab-multi]: http://i.imgur.com/byIYXP9.png [vab-maptraq]: http://i.imgur.com/Skrqc8C.png [vab-btdt]: http://i.imgur.com/zUmj6US.png [science-min]: http://i.imgur.com/kEj4fz0.gif [science-max]: http://i.imgur.com/eMtIL5H.gif [small-scan]: http://i.imgur.com/uVP6Ujs.gif [small-scan-bw]: http://i.imgur.com/0AbDwKL.gif [small-scan-color]: http://i.imgur.com/dlRckBl.gif [small-static]: http://i.imgur.com/oPN2qIR.gif [small-nodata]: http://i.imgur.com/0ArIcqj.png [small-toolow]: https://i.imgur.com/fTDLvw0.gif [small-toohigh]: https://i.imgur.com/a8YKkXH.gif [small-justright]: https://i.imgur.com/Oft4xXP.gif [small-mismatch1]: https://i.imgur.com/fNztoUN.gif [small-mismatch2]: https://i.imgur.com/aQtTGvV.gif [small-newMap1]: http://i.imgur.com/qS542xo.gif [small-toolow-v10]: http://i.imgur.com/USsvSSs.gif [small-toohigh-v10]: http://i.imgur.com/i7rGDIj.gif [small-justright-v10]: http://i.imgur.com/y7mHvEF.gif [small-biome]: http://i.imgur.com/4kZMofq.png [bigmap-scan-10000x]: http://i.imgur.com/VEPL3oN.gif [bigmap-scan-100x]: http://i.imgur.com/bcht47p.gif [bigmap-anim]: http://i.imgur.com/kxyl8xR.gif [bigmap-anim-v2]: http://i.imgur.com/wUMToq6.gif [bigmap-zoom-open]: http://i.imgur.com/7egRRTU.gif [zoommap-in]: http://i.imgur.com/tTCYDfP.gif [zoommap-scansat-landing]: http://i.imgur.com/ILqRfne.gif [zoommap-mechjeb-landing]: http://i.imgur.com/nE0BlA8.gif [zoommap-mechjeb-settings]: http://i.imgur.com/xOQ7ooj.png [zoommap-clear-target]: http://i.imgur.com/YffxdNs.gif [resource-iva]: http://i.imgur.com/iRo4kSA.png [resource-walkthrough]: http://i.imgur.com/KS4FTh0.gif [resource-scanner]: http://i.imgur.com/mY0fFjr.gif [resource-bigmap]: http://i.imgur.com/JYKG6f5.gif [resource-settings]: http://i.imgur.com/hgZFXIO.png [resource-zoom-map-covered]: http://i.imgur.com/7YuYMGW.png [resource-zoom-map-uncovered]: http://i.imgur.com/cJ9JtdW.png [resource-instant]: http://i.imgur.com/mfIMBEP.gif [resource-planet-hires-limited-biome]: http://i.imgur.com/yhv2bsq.png [resource-planet-hires-full-biome]: http://i.imgur.com/rwy77M3.png [resource-planet-lores-limited-biome]: http://i.imgur.com/tR3eTzL.png [resource-planet-lores-full-biome]: http://i.imgur.com/kPcO2H7.png [resource-planet-in-progress]: http://i.imgur.com/0JBSFbB.png [biome-planet-overlay]: http://i.imgur.com/YofnSEI.png [biome-planet-in-progress]: http://i.imgur.com/AwQfBgq.png [terrain-planet-overlay]: http://i.imgur.com/unxGS3j.png [terrain-planet-overlay-tooltip]: http://i.imgur.com/kXsL20Q.png [resource-bigmap-hires-limited-biome]: http://i.imgur.com/y0jitxK.png [resource-bigmap-hires-full-biome]: http://i.imgur.com/fCdXTIq.png [resource-bigmap-lores-limited-biome]: http://i.imgur.com/iHCBfes.png [resource-bigmap-lores-full-biome]: http://i.imgur.com/TIR1xv5.png [rpm-multi]: http://i.imgur.com/nXzPtRE.png [rpm-mfd-labeled]: http://i.imgur.com/hgFnw2y.png [rpm-ALCOR-left]: http://i.imgur.com/9NxK4d6.png [rpm-ALCOR-right]: http://i.imgur.com/7GnAdDN.png [ground-track]: http://i.imgur.com/casTBeW.gif [resource-overlay-window]: http://i.imgur.com/n68InYq.png [hidef-map-open]: http://i.imgur.com/xjEDybF.gif [hidef-map-comp-1]: http://i.imgur.com/ha7ho9b.png [hidef-map-comp-2]: http://i.imgur.com/DtNmVHi.png [color-window]: http://i.imgur.com/RQVjq6g.png [color-palette-switch]: http://i.imgur.com/0XdMGSy.gif [color-clamp-terrain]: http://i.imgur.com/8dgFLGj.gif [color-biome]: http://i.imgur.com/NdA1DVY.gif [color-resource]: http://i.imgur.com/9NR8gvP.gif [color-biome-stock]: http://i.imgur.com/T14sFzl.png [instruments-small]: http://i.imgur.com/tpjveyn.gif [instruments-btdt]: http://i.imgur.com/tybbDap.gif [settings-window]: http://i.imgur.com/5vqEUhX.png [tinypirate-video-screen]: http://img.youtube.com/vi/UY7eBuReSYU/0.jpg [tinypirate-video]: https://www.youtube.com/watch?v=UY7eBuReSYU [top]: #table-of-contents [0]: #top-0-people-facts-and-faqs [0a]: #top-0a-faqs [0b]: #top-0b-video-overview [1]: #top-1-installation-and-interoperability [1a]: #top-1a-installation [1b]: #top-1b-gamedata-layout [1c]: #top-1c-other-add-ons [2]: #top-2-types-of-scans [2a]: #top-2a-scansat-scans [3]: #top-3-resource-scanning [3a]: #top-3a-stock-scanning-mode [3b]: #top-3b-scansat-scanning-mode [3c]: #top-3c-resource-settings [4]: #top-4-basic-usage [4a]: #top-4a-faq-finding-a-good-altitude [4b]: #top-4b-mismatched-scanners [4c]: #top-4c-biome-map [4d]: #top-4d-ground-track-indicators [5]: #top-5-big-map [5a]: #top-5a-big-map-options [6]: #top-6-planetary-overlay [6a]: #top-6a-terrain-and-biome-overlays [6b]: #top-6b-overlay-control-window [7]: #top-7-zoom-map [7a]: #top-7a-hi-def-map [7b]: #top-7b-target-selection [7c]: #top-7c-mechJeb-landing-guidance [8]: #top-8-instrument-window [9]: #top-9-raster-prop-monitor [10]: #top-10-parts-and-sensor-types [10a]: #top-10a-the-radar-altimetry-sensor [10b]: #top-10b-the-sar-altimetry-sensor [10c]: #top-10c-the-multispectral-sensor [10d]: #top-10d-been-there-done-that [10e]: #top-10e-maptraq-deprecated [11]: #top-11-career-mode-research-and-development [11a]: #top-11a-minimum-scan-for-science [11b]: #top-11b-getting-maximum-science [11c]: #top-11c-contract-support [12]: #top-12-color-management [12a]: #top-12a-terrain-colors-and-options [12b]: #top-12b-biome-colors-and-options [12c]: #top-12c-resource-colors-and-options [13]: #top-13-background-scanning [14]: #top-14-time-warp [15]: #top-15-settings-menu [16]: #top-16-note-concerning-data-sources [shield:license-bsd]: http://img.shields.io/:license-bsd-blue.svg [shield:license-mit]: http://img.shields.io/:license-mit-a31f34.svg [shield:license-cc-by-sa]: http://img.shields.io/badge/license-CC%20BY--SA-green.svg [shield:jenkins-dev]: http://img.shields.io/jenkins/s/https/ksp.sarbian.com/jenkins/SCANsat-dev.svg [shield:jenkins-rel]: http://img.shields.io/jenkins/s/https/ksp.sarbian.com/jenkins/SCANsat-release.svg [shield:support-ksp]: http://img.shields.io/badge/for%20KSP-v1.4.1-bad455.svg [shield:support-rpm]: http://img.shields.io/badge/works%20with%20RPM-v0.28.x-a31f34.svg [shield:support-mm]: http://img.shields.io/badge/works%20with%20MM-v3.x-40b7c0.svg [shield:support-toolbar]: http://img.shields.io/badge/works%20with%20Blizzy's%20Toolbar-1.7.x-7c69c0.svg [shield:support-alcor]: http://img.shields.io/badge/works%20with%20ALCOR-0.9-299bc7.svg [shield:support-kspi]: http://img.shields.io/badge/works%20with%20Interstellar-1.x-a62374.svg [shield:support-usi]:http://img.shields.io/badge/works%20with%20USI-0.50.x-34c566.svg [shield:support-karbonite]: http://img.shields.io/badge/works%20with%20Karbonite-0.8.x-ff8c00.svg [shield:support-epl]: http://img.shields.io/badge/works%20with%20EPL-5.5.x-ff8c00.svg [shield:support-ccfg]: https://img.shields.io/badge/works%20with%20Contract%20Configurator-1.20.x+-yellowgreen.svg [shield:ckan]: https://img.shields.io/badge/CKAN-Indexed-brightgreen.svg [shield:support-mechjeb]: http://img.shields.io/badge/works%20with%20MechJeb-2.5.8-lightgrey.svg [shield:support-kopernicus]: http://img.shields.io/badge/works%20with%20Kopernicus-1.2.x-ff8c00.svg [shield:gittip-tg-img]: http://img.shields.io/gittip/technogeeky.png [shield:gittip-tg]: https://www.gittip.com/technogeeky/ [shield:github-issues]: http://img.shields.io/github/issues/technogeeky/SCANsat.svg [CKAN:org]: http://ksp-ckan.org/ [SCANsat:organization]: https://github.com/S-C-A-N [SCANsat:logo]: http://i.imgur.com/GArPFFB.png [SCANsat:logo-square]: http://i.imgur.com/GArPFFB.png?1 [SCANsat:issues]: https://github.com/S-C-A-N/SCANsat/issues [SCANsat:pulls]: https://github.com/S-C-A-N/SCANsat/pulls [SCANsat:imgur-albums]: https://scansat.imgur.com [SCANsat:best-orbits-table]: https://www.example.com [SCANsat:email]: mailto:SCANscansat@gmail.com [SCANsat:gamedata]: http://i.imgur.com/cS1Lu5w.jpg [SCANsat:wiki]: https://github.com/S-C-A-N/SCANsat/wiki [SCANsat:dev-readme]: https://github.com/S-C-A-N/SCANsat/tree/dev/#table-of-contents [SCANsat:rel-readme]: https://github.com/S-C-A-N/SCANsat/#table-of-contents [SCANsat:rel-thread]: http://forum.kerbalspaceprogram.com/threads/80369 [SCANsat:dev-thread]: http://forum.kerbalspaceprogram.com/threads/96859 [SCANsat:dev-source]: https://github.com/S-C-A-N/SCANsat/tree/dev [SCANsat:rel-source]: https://github.com/S-C-A-N/SCANsat [SCANsat:dev-jenkins]: https://ksp.sarbian.com/jenkins/job/SCANsat-dev/ [SCANsat:rel-jenkins]: https://ksp.sarbian.com/jenkins/job/SCANsat-release/ [SCANsat:ket-jenkins]: https://ksp.sarbian.com/jenkins/job/SCANsat-Kethane/ [SCANsat:orsx-jenkins]: https://ksp.sarbian.com/jenkins/job/SCANsat-OpenResourceSystem/ [SCANsat:dev-license]: https://github.com/S-C-A-N/SCANsat/blob/dev/SCANsat/LICENSE.txt [SCANsat:rel-license]: https://github.com/S-C-A-N/SCANsat/blob/release/SCANsat/LICENSE.txt [SCANsat:rel-dist-curseforge]: http://kerbal.curseforge.com/ksp-mods/www.example.com-SCANsat [SCANsat:rel-dist-curseforge-zip]: http://kerbal.curseforge.com/ksp-mods/www.example.com-SCANsat/files/latest [SCANsat:rel-dist-github]: https://github.com/S-C-A-N/SCANsat/releases [SCANsat:rel-dist-github-zip]: https://github.com/S-C-A-N/SCANsat/releases/download/www.example.com/SCANsat.zip [SCANsat:rel-dist-kerbalstuff]: http://beta.kerbalstuff.com/mod/www.example.com/SCANsat [SCANsat:rel-dist-kerbalstuff-zip]: http://beta.kerbalstuff.com/mod/www.example.com/SCANsat/download/www.example.com [SCANsat:dev-dist-curseforge]: https://www.example.com [SCANsat:dev-dist-curseforge-zip]: https://www.example.com [SCANsat:dev-dist-github]: https://github.com/S-C-A-N/SCANsat/releases/tag/www.example.com [SCANsat:dev-dist-github-zip]: https://github.com/S-C-A-N/SCANsat/releases/download/www.example.com/SCANsat.zip [SCANsat:dev-dist-kerbalstuff]: http://beta.kerbalstuff.com/mod/www.example.com/SCANsat [SCANsat:dev-dist-kerbalstuff-zip]: http://beta.kerbalstuff.com/mod/www.example.com/SCANsat/download/www.example.com [IAT]: http://forum.kerbalspaceprogram.com/threads/75854 [IAT:kerbin-system]: http://forum.kerbalspaceprogram.com/threads/75854?p=#1 [IAT:inner-systems]: http://forum.kerbalspaceprogram.com/threads/75854?p=#2 [IAT:duna-dres]: http://forum.kerbalspaceprogram.com/threads/75854?p=#3 [IAT:jool-system]: http://forum.kerbalspaceprogram.com/threads/75854?p=#4 [IAT:eeloo]: http://forum.kerbalspaceprogram.com/threads/75854?p=#7 [IAT:earth-system]: http://forum.kerbalspaceprogram.com/threads/75854?p=#9 [karbonite:release]: http://forum.kerbalspaceprogram.com/threads/89401 [karbonite:logo]: http://i.imgur.com/PkewuRD.png [kethane:release]: http://forum.kerbalspaceprogram.com/threads/23979 [kethane:logo]: http://i.imgur.com/u952LjP.png?1 [usi:release]: http://forum.kerbalspaceprogram.com/threads/79588 [usi:logo]: http://i.imgur.com/aimhLzU.png [alcor:release]: http://forum.kerbalspaceprogram.com/threads/54925 [alcor:logo]: http://i.imgur.com/7eJ3IFC.jpg [ctt:logo]: http://i.imgur.com/li2tNgE.png [mm:release]: http://forum.kerbalspaceprogram.com/threads/55219 [epl:release]: http://forum.kerbalspaceprogram.com/threads/59545 [ctt:release]: http://forum.kerbalspaceprogram.com/threads/100385 [kspi:release]: http://forum.kerbalspaceprogram.com/threads/43839 [toolbar:release]: http://forum.kerbalspaceprogram.com/threads/60863 [rpm:release]: http://forum.kerbalspaceprogram.com/threads/117471 [cconfig:release]: http://forum.kerbalspaceprogram.com/threads/101604 [ccfgSCANsat:release]: http://forum.kerbalspaceprogram.com/threads/108097 [mechjeb:release]: http://forum.kerbalspaceprogram.com/threads/124336 [kopernicus:release]: http://forum.kerbalspaceprogram.com/threads/114649 ================================================ FILE: SCANmechjeb/Properties/AssemblyInfo.cs ================================================ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyDescription("")] [assembly: AssemblyCopyright("Copyright © 2015")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("a96b8661-cfef-40ab-8798-f701b97808c4")] // ideally this should get generated from KSPBuildTools // https://github.com/KSPModdingLibs/KSPBuildTools/issues/46 [assembly: KSPAssemblyDependency("SCANsat", 21, 0)] ================================================ FILE: SCANmechjeb/SCANmechStarter.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANmechStarter - A simple monobehaviour to check if everything is loaded correctly before launching the MechJeb watcher * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using UnityEngine; namespace SCANmechjeb { [KSPAddon(KSPAddon.Startup.Flight, false)] class SCANmechStarter : MonoBehaviour { private MonoBehaviour SCANmechjebInt; private void Start() { if (SCANmechjebMainMenu.Loaded) { print("[SCANsatMechJeb] Starting SCANsat - MechJeb Interface..."); SCANmechjebInt = gameObject.AddComponent(); } else { Destroy(gameObject); } } } } ================================================ FILE: SCANmechjeb/SCANmechjeb.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANmechjeb - A monobehaviour for watching SCANsat and MechJeb for the addition of a landing target * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System.Collections; using SCANsat; using SCANsat.SCAN_Data; using log = SCANsat.SCAN_Platform.Logging.ConsoleLogger; using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil; using MuMech; using UnityEngine; using UnityEngine.Events; namespace SCANmechjeb { class SCANmechjeb : MonoBehaviour { private const string siteName = "MechJeb Landing Target"; private Vessel vessel; private CelestialBody body; private MechJebCore mjCore; private MechJebModuleTargetController target; private DisplayModule guidanceModule; private SCANwaypoint way; private SCANdata data; private Vector2d coords = new Vector2d(); private bool shutdown, mjOnboard, mjTechTreeLocked; private void Start() { GameEvents.onVesselWasModified.Add(VesselChange); GameEvents.onVesselChange.Add(VesselChange); GameEvents.onVesselSOIChanged.Add(SOIChange); SCANcontroller.controller.MJTargetSet.AddListener(new UnityAction(OnTargetSet)); StartCoroutine(WaitForReady()); } private IEnumerator WaitForReady() { shutdown = true; while (!FlightGlobals.ready || FlightGlobals.ActiveVessel == null) { yield return null; } vessel = FlightGlobals.ActiveVessel; if (vessel == null) { yield break; } VesselChange(vessel); body = vessel.mainBody; data = SCANUtil.getData(body); if (data == null) { shutdown = true; } else { shutdown = false; } } private void OnDestroy() { GameEvents.onVesselChange.Remove(VesselChange); GameEvents.onVesselWasModified.Remove(VesselChange); GameEvents.onVesselSOIChanged.Remove(SOIChange); SCANcontroller.controller.MJTargetSet.RemoveListener(OnTargetSet); } private void LateUpdate() { if (vesselChanged) { RefereshAfterVesselChange(); } if (shutdown || !mjOnboard || mjTechTreeLocked || body == null || vessel == null || data == null) { return; } if (!HighLogic.LoadedSceneIsFlight || !FlightGlobals.ready) { return; } way = null; if (!SCAN_Settings_Config.Instance.MechJebTarget) { return; } if (SCANcontroller.controller == null) { return; } if (!SCANcontroller.controller.MechJebLoaded) { SCANcontroller.controller.MechJebLoaded = true; } if (target.Target == null) { return; } if (target.targetBody != body) { return; } if ((target.Target is DirectionTarget)) { return; } coords.x = target.targetLongitude; coords.y = target.targetLatitude; if (SCANcontroller.controller.LandingTarget != null) { way = SCANcontroller.controller.LandingTarget; } if (way != null) { if (!SCANUtil.ApproxEq(coords.x, way.Longitude) || !SCANUtil.ApproxEq(coords.y, way.Latitude)) { way = new SCANwaypoint(coords.y, coords.x, siteName); SCANcontroller.controller.LandingTarget = way; data.addToWaypoints(); } } else { way = new SCANwaypoint(coords.y, coords.x, siteName); SCANcontroller.controller.LandingTarget = way; data.addToWaypoints(); } } private void OnTargetSet(Vector2d pos, CelestialBody b) { if (!mjOnboard || target == null) { return; } target.SetPositionTarget(b, pos.y, pos.x); } private void SOIChange(GameEvents.HostedFromToAction action) { if (vessel == null) { return; } if (vessel != action.host) { return; } body = action.to; data = SCANUtil.getData(body); if (data == null) { shutdown = true; } } private bool vesselChanged = false; private void VesselChange(Vessel v) { if (vessel != v) { return; } vesselChanged = true; } private void RefereshAfterVesselChange() { vesselChanged = false; body = vessel.mainBody; if (vessel.FindPartModulesImplementing().Count <= 0) { SCANcontroller.controller.MechJebLoaded = false; mjOnboard = false; mjCore = null; return; } mjCore = vessel.GetMasterMechJeb(); if (mjCore == null) { SCANcontroller.controller.MechJebLoaded = false; mjOnboard = false; target = null; return; } target = mjCore.target; if (target == null) { SCANcontroller.controller.MechJebLoaded = false; mjOnboard = false; return; } mjOnboard = true; if (HighLogic.CurrentGame.Mode != Game.Modes.SANDBOX) { if (guidanceModule == null) { guidanceModule = (DisplayModule)mjCore.GetComputerModule("MechJebModuleLandingGuidance"); } if (guidanceModule == null) { SCANcontroller.controller.MechJebLoaded = false; way = null; mjOnboard = false; mjTechTreeLocked = true; return; } guidanceModule.UnlockCheck(); if (guidanceModule.hidden) { SCANcontroller.controller.MechJebLoaded = false; way = null; mjOnboard = false; mjTechTreeLocked = true; return; } } SCANcontroller.controller.MechJebLoaded = true; mjTechTreeLocked = false; } } } ================================================ FILE: SCANmechjeb/SCANmechjeb.csproj ================================================  Library SCANmechjeb SCANmechjeb net4.8 true true False $(KSPRoot)\GameData\MechJeb2\Plugins\MechJeb2.dll False MechJeb2 2.5 ================================================ FILE: SCANmechjeb/SCANmechjebMainMenu.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANmechjebMainMenu - A monobehaviour that checks the status of SCANsat and MechJeb at startup * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; using System.Linq; using System.Reflection; using UnityEngine; namespace SCANmechjeb { [KSPAddon(KSPAddon.Startup.MainMenu, true)] public class SCANmechjebMainMenu : MonoBehaviour { private const string SCANsatName = "SCANsat"; private const string MechJeb = "MechJeb2"; private readonly Version MechJebVersion = new Version(2, 5, 1, 0); private static bool loaded = false; private void Awake() { loaded = checkLoaded(); print(loaded ? "[SCANsatMechJeb] SCANsat and MechJeb Assemblies Detected" : "[SCANsatMechJeb] SCANsat or MechJeb Assembly Not Detected; Shutting Down..."); Destroy(gameObject); } public static bool Loaded { get { return loaded; } } private bool checkLoaded() { var SCANassembly = AssemblyLoader.loadedAssemblies.FirstOrDefault(a => a.assembly.GetName().Name == SCANsatName); if (SCANassembly == null) { return false; } var infoV = Attribute.GetCustomAttribute(SCANassembly.assembly, typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute; if (infoV == null) { return false; } var SCANmechjebAssembly = Assembly.GetExecutingAssembly(); if (SCANmechjebAssembly == null) { return false; } var SMinfoV = Attribute.GetCustomAttribute(SCANmechjebAssembly, typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute; if (SMinfoV == null) { return false; } if (infoV.InformationalVersion != SMinfoV.InformationalVersion) { return false; } var MechJebAssembly = AssemblyLoader.loadedAssemblies.FirstOrDefault(a => a.assembly.GetName().Name == MechJeb); if (MechJebAssembly == null) { return false; } if (MechJebAssembly.assembly.GetName().Version == MechJebVersion) { SCANsat.SCANmainMenuLoader.MechJebLoaded = true; return true; } return false; } } } ================================================ FILE: SCANsat/Properties/AssemblyInfo.cs ================================================ using System.Reflection; using System.Runtime.CompilerServices; // Information about this assembly is defined by the following attributes. // Change them to the values specific to your project. [assembly: AssemblyDescription("")] [assembly: AssemblyCopyright("Danny")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // ideally this would be handled by the project reference in the csproj, but I think that requires a newer version of KSPBT [assembly:KSPAssemblyDependency("SCANsat.Unity", 0, 0)] ================================================ FILE: SCANsat/SCAN_Color_Config.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCAN_Color_Config - serializable object that stores settings in an external file * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System.Collections.Generic; using SCANsat.SCAN_Data; using SCANsat.SCAN_Platform; using SCANsat.SCAN_Palettes; using UnityEngine; using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil; namespace SCANsat { public class SCAN_Color_Config : SCAN_ConfigNodeStorage { [Persistent] private float defaultMinHeightRange = -1000; [Persistent] private float defaultMaxHeightRange = 8000; [Persistent] private float rangeAboveMaxHeight = 10000; [Persistent] private float rangeBelowMinHeight = 10000; [Persistent] private string defaultPalette = "Default"; [Persistent] private List SCANsat_Altimetry = new List(); [Persistent] private List SCANsat_Resources = new List(); internal SCAN_Color_Config(string filepath, string node) { FilePath = filepath; TopNodeName = filepath + "/" + node; if (!Load()) { Save(); LoadSavedCopy(); } else { SCANUtil.SCANlog("Color File Loaded..."); } } public override void OnDecodeFromConfigNode() { SCANcontroller.setMasterTerrainNodes(SCANsat_Altimetry); SCANcontroller.setMasterResourceNodes(SCANsat_Resources); } public override void OnEncodeToConfigNode() { SCANUtil.SCANlog("Saving SCANsat configuration file..."); SCANUtil.SCANlog("SCANcolors.cfg saved to ---> {0}", FilePath); SCANsat_Altimetry = SCANcontroller.EncodeTerrainConfigs; SCANsat_Resources = SCANcontroller.EncodeResourceConfigs; } public float DefaultMinHeightRange { get { return defaultMinHeightRange; } } public float DefaultMaxHeightRange { get { return defaultMaxHeightRange; } } public float RangeAboveMaxHeight { get { return rangeAboveMaxHeight; } } public float RangeBelowMinHeight { get { return rangeBelowMinHeight; } } public string DefaultPalette { get { return defaultPalette; } } } } ================================================ FILE: SCANsat/SCAN_Data/SCANROC.cs ================================================ using System; namespace SCANsat.SCAN_Data { public class SCANROC { private ROC roc; private double longitude; private double latitude; private string name; private int id; private bool known; private bool scanned; public SCANROC(ROC r, string n, double lon, double lat, bool k, bool s) { roc = r; id = r.rocID; name = n; longitude = lon; latitude = lat; known = k; scanned = s; } public double Longitude { get { return longitude; } } public double Latitude { get { return latitude; } } public string Name { get { return name; } } public int ID { get { return id; } } public bool Known { get { return known; } } public bool Scanned { get { return scanned; } } public ROC Roc { get { return roc; } } } } ================================================ FILE: SCANsat/SCAN_Data/SCANanomaly.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANanomaly - stores info on anomalies and their locations * * Copyright (c)2013 damny; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; namespace SCANsat.SCAN_Data { public class SCANanomaly { internal SCANanomaly(string s, double lon, double lat, PQSMod m) { name = s; longitude = lon; latitude = lat; known = false; mod = m; } private bool known; private bool detail; private string name; private double longitude; private double latitude; private PQSMod mod; public bool Known { get { return known; } internal set { known = value; } } public bool Detail { get { return detail; } internal set { detail = value; } } public string Name { get { return name; } } public double Longitude { get { return longitude; } } public double Latitude { get { return latitude; } } public PQSMod Mod { get { return mod; } } } } ================================================ FILE: SCANsat/SCAN_Data/SCANdata.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANdata - encapsulates scanned data for a body * * Copyright (c)2013 damny; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; using System.Linq; using System.Collections.Generic; using UnityEngine; using Contracts; using FinePrint; using FinePrint.Contracts; using FinePrint.Contracts.Parameters; using FinePrint.Utilities; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using SCANsat.SCAN_Platform; using SCANsat.SCAN_Palettes; using SCANsat.SCAN_Unity; using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil; using Log = KSPBuildTools.Log; namespace SCANsat.SCAN_Data { public class SCANdata { private static Dictionary heightMaps = new Dictionary(); /* MAP: state */ internal Int16[,] coverage; private CelestialBody body; private SCANterrainConfig terrainConfig; private bool mapBuilding, overlayBuilding, controllerBuilding, built; private float[,] tempHeightMap; /* MAP: options */ private bool disabled; /* MAP: constructor */ internal SCANdata(CelestialBody b) { body = b; coverage = new Int16[360, 180]; if (heightMaps.ContainsKey(body.flightGlobalsIndex)) { built = true; } terrainConfig = SCANcontroller.getTerrainNode(b.bodyName); if (terrainConfig == null) { float? clamp = null; if (b.ocean) { clamp = 0; } float newMax; try { newMax = ((float)CelestialUtilities.GetHighestPeak(b)).Mathf_Round(-2); } catch (Exception e) { SCANUtil.SCANlog("Error in calculating Max Height for {0}; using default value\n{1}", b.displayName.LocalizeBodyName(), e); newMax = SCANconfigLoader.SCANNode.DefaultMaxHeightRange; } terrainConfig = new SCANterrainConfig(SCANconfigLoader.SCANNode.DefaultMinHeightRange, newMax, clamp, SCAN_Palette_Config.DefaultPalette.GetPalette(0), 7, false, false, body); SCANcontroller.addToTerrainConfigData(body.bodyName, terrainConfig); } } public SCANdata(SCANdata copy) { coverage = copy.coverage; terrainConfig = new SCANterrainConfig(copy.terrainConfig); if (!heightMaps.ContainsKey(copy.body.flightGlobalsIndex)) { return; } tempHeightMap = heightMaps[copy.body.flightGlobalsIndex]; } #region Public accessors /* Accessors: body-specific variables */ public Int16[,] Coverage { get { return coverage; } internal set { coverage = value; } } public float HeightMapValue(int i, int lon, int lat, bool useTemp = false) { if (useTemp) { return tempHeightMap[lon, lat]; } if (!heightMaps.ContainsKey(i)) { return 0; } if (body.pqsController == null) { return 0; } if (heightMaps[i].Length < 10) { return 0; } return heightMaps[i][lon, lat]; } public CelestialBody Body { get { return body; } } public SCANterrainConfig TerrainConfig { get { return terrainConfig; } internal set { terrainConfig = value; } } public bool Disabled { get { return disabled; } internal set { disabled = value; } } public bool MapBuilding { get { return mapBuilding; } internal set { mapBuilding = value; } } public bool OverlayBuilding { get { return overlayBuilding; } internal set { overlayBuilding = value; } } public bool ControllerBuilding { get { return controllerBuilding; } internal set { controllerBuilding = value; } } public bool Built { get { return built; } } #endregion #region Anomalies /* DATA: anomalies and such */ private SCANanomaly[] anomalies; public SCANanomaly[] Anomalies { get { if (anomalies == null) { PQSSurfaceObject[] sites = body.pqsSurfaceObjects; anomalies = new SCANanomaly[sites.Length]; for (int i = 0; i < sites.Length; ++i) { anomalies[i] = new SCANanomaly(sites[i].SurfaceObjectName , body.GetLongitude(sites[i].transform.position) , body.GetLatitude(sites[i].transform.position) , sites[i]); } } for (int i = 0; i < anomalies.Length; ++i) { anomalies[i].Known = SCANUtil.isCovered(anomalies[i].Longitude , anomalies[i].Latitude , this , SCANtype.Anomaly); anomalies[i].Detail = SCANUtil.isCovered(anomalies[i].Longitude , anomalies[i].Latitude , this , SCANtype.AnomalyDetail); } return anomalies; } } #endregion #region ROCS private List rocs; public List ROCS(bool refresh) { if (ROCManager.Instance == null) { return null; } if (!ROCManager.Instance.RocsEnabledInCurrentGame) { return null; } if (!SCANcontroller.controller.SerenityLoaded) { return null; } if (rocs == null) { rocs = new List(); } if (!refresh && rocs.Count > 0) { return rocs; } rocs.Clear(); if (body == null) { return null; } PQS controller = body.pqsController; if (controller == null || controller.transform == null) { return null; } for (int i = controller.transform.childCount - 1; i >= 0; i--) { Transform child = controller.transform.GetChild(i); if (child == null) { continue; } if (child.name.StartsWith("ROC")) { int index = child.name.IndexOf(' '); if (index > 0 && index < child.name.Length - 1) { string id = child.name.Substring(index + 1); bool scanned = false; if (HighLogic.CurrentGame.Mode == Game.Modes.SANDBOX || HighLogic.CurrentGame.Mode == Game.Modes.MISSION) { scanned = true; } else { List subjects = ResearchAndDevelopment.GetSubjects(); if (subjects != null) { for (int k = subjects.Count - 1; k >= 0; k--) { if (subjects[k].id.Contains(id)) { scanned = true; break; } } } } for (int j = child.childCount - 1; j >= 0; j--) { Transform cache = child.GetChild(j); if (cache == null) { continue; } if (cache.name != ("Unassigned")) { ROC roc = cache.GetComponentInChildren(); if (roc != null) { if (!roc.smallROC && !roc.canbetaken) { if (roc.transform != null) { double lon = body.GetLongitude(roc.transform.position); double lat = body.GetLatitude(roc.transform.position); rocs.Add(new SCANROC(roc , roc.displayName , lon , lat , /*SCANUtil.isCovered(lon, lat, this, SCANtype.Anomaly) &&*/ SCANUtil.isCovered(lon, lat, this, SCANtype.AnomalyDetail) , scanned)); } } } } } } } } return rocs; } #endregion #region Waypoints private List waypoints = new List(); private bool waypointsLoaded; private int localWaypointCount; public void addToWaypoints() { if (SCANcontroller.controller == null) { return; } addToWaypoints(SCANcontroller.controller.LandingTarget); if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Body == body) { SCAN_UI_ZoomMap.Instance.RefreshIcons(); } if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Body == body) { SCAN_UI_BigMap.Instance.RefreshIcons(); } } public void addToWaypoints(SCANwaypoint w) { if (waypoints == null) { waypoints = new List() { w }; return; } if (waypoints.Any(a => a.LandingTarget)) { waypoints.RemoveAll(a => a.LandingTarget); } waypoints.Insert(0, w); } public void removeTargetWaypoint() { if (waypoints == null) { return; } if (waypoints.Any(a => a.LandingTarget)) { waypoints.RemoveAll(a => a.LandingTarget); } SCANcontroller.controller.LandingTarget = null; } public void addSurveyWaypoints(CelestialBody b, SurveyContract c) { if (b != body) { return; } if (c == null) { return; } for (int i = c.ParameterCount - 1; i >= 0; i--) { ContractParameter cp = c.GetParameter(i); if (cp.GetType() == typeof(SurveyWaypointParameter)) { if (cp.State == ParameterState.Incomplete) { Waypoint wp = ((SurveyWaypointParameter)cp).wp; if (wp == null) { continue; } bool add = true; for (int j = waypoints.Count - 1; j >= 0; j--) { SCANwaypoint w = waypoints[j]; if (w == null || w.Way == null) { continue; } if (w.Way == wp) { add = false; break; } } if (add) { SCANwaypoint p = new SCANwaypoint((SurveyWaypointParameter)cp); if (p.Way != null) { waypoints.Add(p); } } } } } int count = GetLocalWaypointCount(); if (count != localWaypointCount + 1) { waypointsLoaded = false; } else { localWaypointCount = count; } } public void addStationaryWaypoints(CelestialBody b, SatelliteContract c) { for (int i = 0; i < c.AllParameters.Count(); i++) { ContractParameter cp = c.GetParameter(i); if (cp.GetType() == typeof(SurveyWaypointParameter)) { SurveyWaypointParameter s = (SurveyWaypointParameter)cp; if (cp.State == ParameterState.Incomplete) { Waypoint wp = ((SurveyWaypointParameter)cp).wp; if (wp == null) { continue; } bool add = true; for (int j = waypoints.Count - 1; j >= 0; j--) { SCANwaypoint w = waypoints[j]; if (w == null || w.Way == null) { continue; } if (w.Way == wp) { add = false; break; } } if (add) { SCANwaypoint p = new SCANwaypoint((SurveyWaypointParameter)cp); if (p.Way != null) { waypoints.Add(p); } } } } } int count = GetLocalWaypointCount(); if (count != localWaypointCount + 1) { waypointsLoaded = false; } else { localWaypointCount = count; } } public void addCustomWaypoint(Waypoint wp) { if (wp.isOnSurface && wp.isNavigatable) { if (wp.celestialName == body.GetName()) { bool add = true; for (int j = waypoints.Count - 1; j >= 0; j--) { SCANwaypoint w = waypoints[j]; if (w.Seed != wp.uniqueSeed) { continue; } add = false; break; } if (add) { waypoints.Add(new SCANwaypoint(wp)); } } } int count = GetLocalWaypointCount(); if (count != localWaypointCount + 1) { waypointsLoaded = false; } else { localWaypointCount = count; } } private int GetLocalWaypointCount() { if (HighLogic.CurrentGame.Mode != Game.Modes.CAREER) { return 0; } if (WaypointManager.Instance() == null) { return 0; } int count = 0; var points = WaypointManager.Instance().Waypoints; for (int i = 0; i < points.Count; i++) { Waypoint p = points[i]; if (p.isOnSurface && p.isNavigatable) { if (p.celestialName == body.GetName()) { count++; } } } return count; } public List Waypoints { get { if (HighLogic.CurrentGame.Mode != Game.Modes.CAREER) { if (waypoints == null) { waypoints = new List(); } } if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER && !SCANcontroller.controller.ContractsLoaded) { return new List(); } if (GetLocalWaypointCount() != localWaypointCount) { waypointsLoaded = false; } if (!waypointsLoaded) { SCANwaypoint landingTarget = null; waypointsLoaded = true; if (waypoints == null) { waypoints = new List(); } else { landingTarget = waypoints.FirstOrDefault(w => w.LandingTarget); waypoints.Clear(); } if (landingTarget != null) { waypoints.Add(landingTarget); } if (ContractSystem.Instance != null) { var surveys = ContractSystem.Instance.GetCurrentActiveContracts(); for (int i = 0; i < surveys.Length; i++) { if (surveys[i].targetBody == body) { for (int j = 0; j < surveys[i].AllParameters.Count(); j++) { if (surveys[i].AllParameters.ElementAt(j).GetType() == typeof(SurveyWaypointParameter)) { SurveyWaypointParameter s = (SurveyWaypointParameter)surveys[i].AllParameters.ElementAt(j); if (s.State == ParameterState.Incomplete) { SCANwaypoint p = new SCANwaypoint(s); if (p.Way != null) { waypoints.Add(p); } } } } } } var stationary = ContractSystem.Instance.GetCurrentActiveContracts(); for (int i = 0; i < stationary.Length; i++) { SpecificOrbitParameter orbit = stationary[i].GetParameter(); if (orbit == null) { continue; } if (orbit.TargetBody == body) { for (int j = 0; j < stationary[i].AllParameters.Count(); j++) { if (stationary[i].AllParameters.ElementAt(j).GetType() == typeof(StationaryPointParameter)) { StationaryPointParameter s = (StationaryPointParameter)stationary[i].AllParameters.ElementAt(j); if (s.State == ParameterState.Incomplete) { SCANwaypoint p = new SCANwaypoint(s); if (p.Way != null) { waypoints.Add(p); } } } } } } } if (WaypointManager.Instance() != null) { var remaining = WaypointManager.Instance().Waypoints; for (int i = 0; i < remaining.Count; i++) { Waypoint p = remaining[i]; if (p.isOnSurface && p.isNavigatable) { if (p.celestialName == body.GetName()) { bool add = true; for (int j = waypoints.Count - 1; j >= 0; j--) { SCANwaypoint w = waypoints[j]; if (w.Seed != p.uniqueSeed) { continue; } add = false; break; } if (add) { if (p.contractReference != null) { if (p.contractReference.ContractState == Contract.State.Active) { waypoints.Add(new SCANwaypoint(p)); } } else { waypoints.Add(new SCANwaypoint(p)); } } } } } } } return waypoints; } } #endregion #region Scanning coverage /* DATA: coverage */ //Populate coverage array with max value of 360*180 accounting for the Cos of lat private double[] coverage_count = Enumerable.Repeat(41251.914, 16).ToArray(); internal void updateCoverage() { for (int i = 0; i < 16; ++i) { SCANtype t = (SCANtype)(1 << i); if (!SCANUtil.scanTypeValid(t)) { coverage_count[i] = 41251.914; continue; } double cc = 0; for (int x = 0; x < 360; ++x) { for (int y = 0; y < 180; ++y) { if ((coverage[x, y] & (short)t) == 0) { cc += SCANUtil.cosLookUp[y]; } } } coverage_count[i] = cc; } } internal double getCoverage(SCANtype type) { double uncov = 0; if ((type & SCANtype.AltimetryLoRes) != SCANtype.Nothing) { uncov += coverage_count[0]; } if ((type & SCANtype.AltimetryHiRes) != SCANtype.Nothing) { uncov += coverage_count[1]; } if ((type & SCANtype.VisualLoRes) != SCANtype.Nothing) { uncov += coverage_count[2]; } if ((type & SCANtype.Biome) != SCANtype.Nothing) { uncov += coverage_count[3]; } if ((type & SCANtype.Anomaly) != SCANtype.Nothing) { uncov += coverage_count[4]; } if ((type & SCANtype.AnomalyDetail) != SCANtype.Nothing) { uncov += coverage_count[5]; } if ((type & SCANtype.VisualHiRes) != SCANtype.Nothing) { uncov += coverage_count[6]; } if ((type & SCANtype.ResourceLoRes) != SCANtype.Nothing) { uncov += coverage_count[7]; } if ((type & SCANtype.ResourceHiRes) != SCANtype.Nothing) { uncov += coverage_count[8]; } return uncov; } #endregion #region Height Map internal void generateHeightMap(ref int step, ref int xStart, int width) { if (body.pqsController == null) { built = true; mapBuilding = false; overlayBuilding = false; controllerBuilding = false; if (!heightMaps.ContainsKey(body.flightGlobalsIndex)) { heightMaps.Add(body.flightGlobalsIndex, new float[1, 1]); } return; } if (step <= 0 && xStart <= 0) { SCANcontroller.controller.loadPQS(body); try { double d = SCANUtil.getElevation(body, 0, 0); } catch (Exception e) { Log.Error("Error In Detecting Terrain Height Map; Stopping Height Map Generator\n" + e); built = true; mapBuilding = false; overlayBuilding = false; controllerBuilding = false; if (!heightMaps.ContainsKey(body.flightGlobalsIndex)) { heightMaps.Add(body.flightGlobalsIndex, new float[1, 1]); } return; } } if (tempHeightMap == null) { tempHeightMap = new float[360, 180]; } if (step >= 179) { SCANcontroller.controller.unloadPQS(body); step = 0; xStart = 0; built = true; mapBuilding = false; overlayBuilding = false; controllerBuilding = false; if (!heightMaps.ContainsKey(body.flightGlobalsIndex)) { heightMaps.Add(body.flightGlobalsIndex, tempHeightMap); } tempHeightMap = null; SCANUtil.SCANlog("Height Map Of [{0}] Completed...", body.bodyName); return; } for (int i = xStart; i < xStart + width; i++) { tempHeightMap[i, step] = (float)SCANUtil.getElevation(body, i - 180, step - 90); } if (xStart + width >= 359) { step++; xStart = 0; return; } xStart += width; } #endregion #region Map Utilities /* DATA: debug option to fill in the map */ internal void fillMap(SCANtype type) { short fill = (short)type; for (int i = 0; i < 360; i++) { for (int j = 0; j < 180; j++) { coverage[i, j] |= fill; } } } internal void fillResourceMap() { short fill = (short)SCANtype.ResourceHiRes; for (int i = 0; i < 360; i++) { for (int j = 0; j < 180; j++) { coverage[i, j] |= fill; } } } /* DATA: reset the map */ internal void reset() { coverage = new Int16[360, 180]; if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible) { SCAN_UI_MainMap.Instance.resetImages(); } } internal void reset(SCANtype type) { SCANtype mask = type; mask ^= SCANtype.Everything; short m = (short)mask; for (int x = 0; x < 360; x++) { for (int y = 0; y < 180; y++) { coverage[x, y] &= m; } } if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible) { SCAN_UI_MainMap.Instance.resetImages(); } } #endregion #region Data Serialize/Deserialize //Take the Int32[] coverage and convert it to a single dimension byte array private byte[] ConvertToByte(Int16[,] iArray) { byte[] bArray = new byte[360 * 180 * 2]; int k = 0; for (int i = 0; i < 360; i++) { for (int j = 0; j < 180; j++) { byte[] bytes = BitConverter.GetBytes(iArray[i, j]); for (int m = 0; m < bytes.Length; m++) { bArray[k++] = bytes[m]; } } } return bArray; } //Convert byte array from persistent file to usable Int32[] private Int16[,] ConvertToInt(byte[] bArray) { Int16[,] iArray = new Int16[360, 180]; int k = 0; for (int i = 0; i < 360; i++) { for (int j = 0; j < 180; j++) { iArray[i, j] = BitConverter.ToInt16(bArray, k); k += 2; } } return iArray; } /* DATA: serialization and compression */ internal string shortSerialize() { byte[] bytes = ConvertToByte(Coverage); MemoryStream mem = new MemoryStream(); BinaryFormatter binf = new BinaryFormatter(); binf.Serialize(mem, bytes); string blob = Convert.ToBase64String(SCAN_CLZF2.Compress(mem.ToArray())); return blob.Replace("/", "-").Replace("=", "_"); } internal void shortDeserialize(string blob) { try { blob = blob.Replace("-", "/").Replace("_", "="); byte[] bytes = Convert.FromBase64String(blob); bytes = SCAN_CLZF2.Decompress(bytes); MemoryStream mem = new MemoryStream(bytes, false); BinaryFormatter binf = new BinaryFormatter(); byte[] bArray = (byte[])binf.Deserialize(mem); Coverage = ConvertToInt(bArray); } catch (Exception e) { Coverage = new Int16[360, 180]; throw e; } } #endregion #region Serialized Data Upgrade private Int32[,] oldCoverage; public void ConvertStorage(string blob) { SCANUtil.SCANlog("[SCANsat Legacy Conversion] Version < 19.0 detected; converting old scan data for {0}...", KSP.Localization.Localizer.Format(body.displayName)); integerDeserializeUpgrade(blob); convertToShort(oldCoverage); } //Convert byte array from persistent file to usable Int32[] private Int32[,] ConvertToIntUpgrade(byte[] bArray) { Int32[,] iArray = new Int32[360, 180]; int k = 0; for (int i = 0; i < 360; i++) { for (int j = 0; j < 180; j++) { iArray[i, j] = BitConverter.ToInt32(bArray, k); k += 4; } } return iArray; } private void integerDeserializeUpgrade(string blob) { try { blob = blob.Replace("-", "/").Replace("_", "="); byte[] bytes = Convert.FromBase64String(blob); bytes = SCAN_CLZF2.Decompress(bytes); MemoryStream mem = new MemoryStream(bytes, false); BinaryFormatter binf = new BinaryFormatter(); byte[] bArray = (byte[])binf.Deserialize(mem); oldCoverage = ConvertToIntUpgrade(bArray); } catch (Exception e) { oldCoverage = new Int32[360, 180]; throw e; } } private void convertToShort(Int32[,] iArray) { coverage = new Int16[360, 180]; SCANUtil.SCANlog("[SCANsat Legacy Conversion] Converting legacy integer array to short array..."); for (int i = 0; i < 360; i++) { for (int j = 0; j < 180; j++) { if ((oldCoverage[i, j] & (int)SCANtype.AltimetryLoRes) != 0) { coverage[i, j] |= (short)SCANtype.AltimetryLoRes; } if ((oldCoverage[i, j] & (int)SCANtype.AltimetryHiRes) != 0) { coverage[i, j] |= (short)SCANtype.AltimetryHiRes; } if ((oldCoverage[i, j] & (int)SCANtype.Biome) != 0) { coverage[i, j] |= (short)SCANtype.Biome; } if ((oldCoverage[i, j] & (int)SCANtype.Anomaly) != 0) { coverage[i, j] |= (short)SCANtype.Anomaly; } if ((oldCoverage[i, j] & (int)SCANtype.AnomalyDetail) != 0) { coverage[i, j] |= (short)SCANtype.AnomalyDetail; } if ((oldCoverage[i, j] & (int)SCANtype.ResourceHiRes) != 0) { coverage[i, j] |= (short)SCANtype.ResourceHiRes; } if ((oldCoverage[i, j] & 524288) != 0) { coverage[i, j] |= (short)SCANtype.ResourceLoRes; } } } oldCoverage = null; } #endregion } } ================================================ FILE: SCANsat/SCAN_Data/SCANexperimentType.cs ================================================ using System; namespace SCANsat.SCAN_Data { public enum SCANexperimentType { Nothing, SCANsatAltimetryLoRes, SCANsatAltimetryHiRes, SCANsatBiomeAnomaly, SCANsatResources, SCANsatVisual } } ================================================ FILE: SCANsat/SCAN_Data/SCANresourceBody.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANvresourceBody - Serializable object for storing information about resource density on a given Celestial Body * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System.CodeDom; using System.Linq; using SCANsat.SCAN_Platform; namespace SCANsat.SCAN_Data { public class SCANresourceBody : SCAN_ConfigNodeStorage { [Persistent] private string resourceName; [Persistent] private string bodyName; [Persistent] private int index; [Persistent] private float lowResourceCutoff = 0.001f; [Persistent] private float highResourceCutoff = 10f; private CelestialBody body; private float defaultMinValue, defaultMaxValue; private float fraction; private bool defaultZero; internal SCANresourceBody(string rName, CelestialBody Body, float min, float max, bool zero) { resourceName = rName; body = Body; bodyName = body.bodyName; index = body.flightGlobalsIndex; lowResourceCutoff = defaultMinValue = min; highResourceCutoff = defaultMaxValue = max; defaultZero = zero; } public SCANresourceBody() { } internal SCANresourceBody(SCANresourceBody copy) { resourceName = copy.resourceName; bodyName = copy.bodyName; index = copy.index; lowResourceCutoff = copy.lowResourceCutoff; highResourceCutoff = copy.highResourceCutoff; body = copy.body; defaultMinValue = copy.defaultMinValue; defaultMaxValue = copy.defaultMaxValue; } public override void OnDecodeFromConfigNode() { defaultMinValue = lowResourceCutoff; defaultMaxValue = highResourceCutoff; body = FlightGlobals.Bodies.FirstOrDefault(b => b.flightGlobalsIndex == index); } public string BodyName { get { return bodyName; } } public string ResourceName { get { return resourceName; } } public CelestialBody Body { get { return body; } } public int Index { get { return index; } } public float MinValue { get { return lowResourceCutoff; } internal set { if (value < 0) { lowResourceCutoff = 0; } else if (value >= highResourceCutoff) { lowResourceCutoff = highResourceCutoff - 1; } else if (value >= 100) { lowResourceCutoff = 99; } else { lowResourceCutoff = value; } } } public float MaxValue { get { return highResourceCutoff; } internal set { if (value <= lowResourceCutoff) { highResourceCutoff = lowResourceCutoff + 1; } else if (value <= 0) { highResourceCutoff = 1; } else if (value > 100) { highResourceCutoff = 100; } else { highResourceCutoff = value; } } } public float DefaultMinValue { get { return defaultMinValue; } internal set { if (value < 0) { defaultMinValue = 0; } else if (value >= defaultMaxValue) { defaultMinValue = defaultMaxValue - 1; } else if (value >= 100) { defaultMinValue = 99; } else { defaultMinValue = value; } } } public float DefaultMaxValue { get { return defaultMaxValue; } internal set { if (value <= defaultMinValue) { defaultMaxValue = defaultMinValue + 1; } else if (value <= 0) { defaultMaxValue = 1; } else if (value > 100) { defaultMaxValue = 100; } else { defaultMaxValue = value; } } } public bool DefaultZero { get { return defaultZero; } set { defaultZero = value; } } public float Fraction { get { return fraction; } internal set { fraction = value; } } } } ================================================ FILE: SCANsat/SCAN_Data/SCANresourceGlobal.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANresourceGlobal - Serializable object for storing information about a resource * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; using System.Linq; using System.Collections.Generic; using UnityEngine; using SCANsat.SCAN_Platform; using Log = KSPBuildTools.Log; namespace SCANsat.SCAN_Data { public class SCANresourceGlobal : SCAN_ConfigNodeStorage { [Persistent] private string name; [Persistent] private Color lowResourceColor; [Persistent] private Color highResourceColor; [Persistent] private float resourceTransparency = 20; [Persistent] private float defaultMinValue = 0.001f; [Persistent] private float defaultMaxValue = 10f; [Persistent] private List Resource_Planetary_Config = new List(); private DictionaryValueList masterBodyConfigs = new DictionaryValueList(); private Color defaultLowColor; private Color defaultHighColor; private Color32 lowColor32; private Color32 highColor32; private float defaultTrans; private string displayName; private bool defaultZero; private SCANresourceBody currentBody; internal SCANresourceGlobal(string resource, string display, float trans, float defMin, float defMax, Color minC, Color maxC) { name = resource; displayName = display; resourceTransparency = trans; lowResourceColor = minC; highResourceColor = maxC; lowColor32 = (Color32)lowResourceColor; highColor32 = (Color32)highResourceColor; defaultMinValue = defMin; defaultMaxValue = defMax; setDefaultValues(); } public SCANresourceGlobal() { } internal SCANresourceGlobal(SCANresourceGlobal copy) { name = copy.name; displayName = copy.displayName; resourceTransparency = copy.resourceTransparency; lowResourceColor = copy.lowResourceColor; highResourceColor = copy.highResourceColor; lowColor32 = copy.lowColor32; highColor32 = copy.highColor32; masterBodyConfigs = copyBodyConfigs(copy); defaultLowColor = copy.defaultLowColor; defaultHighColor = copy.defaultHighColor; defaultTrans = copy.defaultTrans; defaultMinValue = copy.defaultMinValue; defaultMaxValue = copy.defaultMaxValue; } private DictionaryValueList copyBodyConfigs(SCANresourceGlobal c) { DictionaryValueList newCopy = new DictionaryValueList(); int l = c.masterBodyConfigs.Count; for (int i = 0; i < l; i++) { SCANresourceBody r = c.masterBodyConfigs.At(i); SCANresourceBody newR = new SCANresourceBody(r); if (!newCopy.Contains(newR.BodyName)) { newCopy.Add(newR.BodyName, newR); } } return newCopy; } public override void OnDecodeFromConfigNode() { lowColor32 = (Color32)lowResourceColor; highColor32 = (Color32)highResourceColor; setDefaultValues(); //SCANUtil.SCANlog("Loading SCANsat global resource config settings: {0}", name); try { int l = Resource_Planetary_Config.Count; for (int i = 0; i < l; i++) { SCANresourceBody r = Resource_Planetary_Config[i]; if (r == null) { continue; } //SCANUtil.SCANlog("Loading SCANsat body resource config settings: {0} - {1}", name, r.BodyName); if (!masterBodyConfigs.Contains(r.BodyName)) { masterBodyConfigs.Add(r.BodyName, r); } } } catch (Exception e) { SCANUtil.SCANlog("Error while loading SCANsat body resource config settings: {0}", e); } } private void setDefaultValues() { defaultLowColor = lowResourceColor; defaultHighColor = highResourceColor; defaultTrans = resourceTransparency; } public override void OnEncodeToConfigNode() { try { Resource_Planetary_Config = masterBodyConfigs.Values.ToList(); } catch (Exception e) { SCANUtil.SCANlog("Error while saving SCANsat resource config data: {0}", e); } } public void addToBodyConfigs(string s, SCANresourceBody r, bool warn) { //SCANUtil.SCANlog("Adding SCANsat body resource config data: {0} - {1}", name, s); if (!masterBodyConfigs.Contains(s)) { masterBodyConfigs.Add(s, r); } else if (warn) { Log.Error(string.Format("Warning: SCANresource Dictionary Already Contains Key Of This Type: [{0}] For Body: [{1}]", r.ResourceName, s)); } } public void updateBodyConfig(SCANresourceBody b) { SCANresourceBody update = getBodyConfig(b.BodyName); if (update != null) { update.MinValue = b.MinValue; update.MaxValue = b.MaxValue; } } public string Name { get { return name; } } public string DisplayName { get { if (string.IsNullOrEmpty(displayName)) { return name; } return displayName; } set { displayName = value; } } public float Transparency { get { return resourceTransparency; } internal set { if (value < 0) { resourceTransparency = 0; } else if (value > 80) { resourceTransparency = 80; } else { resourceTransparency = value; } } } public bool DefaultZero { get { return defaultZero; } set { defaultZero = value; } } public Color MinColor { get { return lowResourceColor; } internal set { lowResourceColor = value; lowColor32 = (Color32)value; } } public Color MaxColor { get { return highResourceColor; } internal set { highResourceColor = value; highColor32 = (Color32)value; } } public Color32 MinColor32 { get { return lowColor32; } } public Color32 MaxColor32 { get { return highColor32; } } public float DefaultMinValue { get { return defaultMinValue; } internal set { if (value >= 0 && value < defaultMaxValue && value <= 100) { defaultMinValue = value; } } } public float DefaultMaxValue { get { return defaultMaxValue; } internal set { if (value >= 0 && value > defaultMinValue && value <= 100) { defaultMaxValue = value; } } } public int getBodyCount { get { return masterBodyConfigs.Count; } } public SCANresourceBody getBodyConfig(string body, bool warn = true) { if (masterBodyConfigs.Contains(body)) { return masterBodyConfigs[body]; } else if (warn) { SCANUtil.SCANlog("SCANsat resource celestial body config: [{0}] is empty; something probably went wrong here", body); } return null; } public SCANresourceBody getBodyConfig(int i) { if (masterBodyConfigs.Count > i) { return masterBodyConfigs.At(i); } else { SCANUtil.SCANlog("SCANsat resource celestial body config is empty; something probably went wrong here"); } return null; } public void CurrentBodyConfig(string body) { if (masterBodyConfigs.Contains(body)) { currentBody = masterBodyConfigs[body]; } else { currentBody = masterBodyConfigs.At(0); } } public SCANresourceBody CurrentBody { get { return currentBody; } } public Color DefaultLowColor { get { return defaultLowColor; } } public Color DefaultHighColor { get { return defaultHighColor; } } public float DefaultTrans { get { return defaultTrans; } } } } ================================================ FILE: SCANsat/SCAN_Data/SCANterrainConfig.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANterrainConfig - Serializable object for storing data about each planet's terrain options and color palette * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System.Linq; using SCANsat.SCAN_Platform; using SCANsat.SCAN_Palettes; namespace SCANsat.SCAN_Data { public class SCANterrainConfig : SCAN_ConfigNodeStorage { [Persistent] private string name; [Persistent] private int index; [Persistent] private float minHeightRange; [Persistent] private float maxHeightRange; [Persistent] private string clampHeight; [Persistent] private float maxHeightMultiplier = 1; [Persistent] private float minHeightMultiplier = 1; [Persistent] private float clampHeightMultiplier = 1; [Persistent] private string paletteName; [Persistent] private int paletteSize; [Persistent] private bool paletteReverse; [Persistent] private bool paletteDiscrete; private SCANPalette colorPal; private CelestialBody body; private float? clampTerrain; private float defaultMinHeight, defaultMaxHeight; private float terrainRange; private SCANPalette defaultPalette; private int defaultPaletteSize; private bool defaultReverse, defaultDiscrete; private float? defaultClamp; private float internalMaxHeightMult = 1; private float internalMinHeightMult = 1; private float internalClampHeightMult = 1; internal SCANterrainConfig(float min, float max, float? clamp, SCANPalette color, int size, bool reverse, bool discrete, CelestialBody b) { minHeightRange = min; maxHeightRange = max; terrainRange = max * maxHeightMultiplier - min * minHeightMultiplier; clampTerrain = clamp; if (clampTerrain == null) { clampHeight = "Null"; } else { clampHeight = clampTerrain.Value.ToString("F0"); } colorPal = color; paletteName = colorPal.Name; paletteSize = size; paletteReverse = reverse; paletteDiscrete = discrete; body = b; name = body.bodyName; index = body.flightGlobalsIndex; setDefaultValues(); } public SCANterrainConfig() { } internal SCANterrainConfig(SCANterrainConfig copy) { maxHeightMultiplier = copy.maxHeightMultiplier; minHeightMultiplier = copy.minHeightMultiplier; clampHeightMultiplier = copy.clampHeightMultiplier; internalMaxHeightMult = maxHeightMultiplier; internalMinHeightMult = minHeightMultiplier; internalClampHeightMult = clampHeightMultiplier; minHeightRange = copy.minHeightRange; maxHeightRange = copy.maxHeightRange; terrainRange = maxHeightRange * maxHeightMultiplier - minHeightRange * minHeightMultiplier; clampTerrain = copy.clampTerrain; clampHeight = copy.clampHeight; colorPal = copy.colorPal; paletteName = copy.paletteName; paletteSize = copy.paletteSize; paletteReverse = copy.paletteReverse; paletteDiscrete = copy.paletteDiscrete; body = copy.body; name = copy.name; } public override void OnDecodeFromConfigNode() { body = FlightGlobals.Bodies.FirstOrDefault(b => b.flightGlobalsIndex == index); if (body != null) { name = body.bodyName; } else { name = "WrongBody" + index; } colorPal = SCANUtil.PaletteLoader(paletteName, paletteSize); float tempClamp = 0; if (clampHeight == "Null" || clampHeight == "null" || string.IsNullOrEmpty(clampHeight)) { clampTerrain = null; } else if (float.TryParse(clampHeight, out tempClamp)) { clampTerrain = tempClamp; } else { clampTerrain = null; } terrainRange = maxHeightRange * maxHeightMultiplier - minHeightRange * minHeightMultiplier; internalMaxHeightMult = maxHeightMultiplier; internalMinHeightMult = minHeightMultiplier; internalClampHeightMult = clampHeightMultiplier; setDefaultValues(); } private void setDefaultValues() { defaultMinHeight = minHeightRange * internalMinHeightMult; defaultMaxHeight = maxHeightRange * internalMaxHeightMult; defaultClamp = clampTerrain * internalClampHeightMult; defaultPalette = colorPal; defaultPaletteSize = paletteSize; defaultDiscrete = paletteDiscrete; defaultReverse = paletteReverse; } public override void OnEncodeToConfigNode() { if (clampTerrain == null) { clampHeight = "Null"; } else { clampHeight = clampTerrain.Value.ToString("F0"); } paletteName = colorPal.Name; maxHeightMultiplier = 1; minHeightMultiplier = 1; clampHeightMultiplier = 1; } public override void onSavePost() { maxHeightMultiplier = internalMaxHeightMult; minHeightMultiplier = internalMinHeightMult; clampHeightMultiplier = internalClampHeightMult; } public float MinTerrain { get { float min = minHeightRange * internalMinHeightMult; if (min < -250000) { return 200000; } return min; } internal set { if (value < -250000) { value = -250000; } if (value < maxHeightRange * internalMaxHeightMult) { terrainRange = maxHeightRange * internalMaxHeightMult - value; minHeightRange = value / internalMinHeightMult; } } } public float MaxTerrain { get { float max = maxHeightRange * internalMaxHeightMult; if (max > 500000) { return 500000; } return max; } internal set { if (value > 500000) { value = 500000; } if (value > minHeightRange * internalMinHeightMult) { terrainRange = value - minHeightRange * internalMinHeightMult; maxHeightRange = value / internalMaxHeightMult; } } } public float TerrainRange { get { return terrainRange; } } public float? ClampTerrain { get { return clampTerrain * internalClampHeightMult; } internal set { if (value == null) { clampTerrain = null; } else if (value > minHeightRange * internalMinHeightMult && value < maxHeightRange * internalMaxHeightMult) { clampTerrain = value / internalClampHeightMult; } } } public SCANPalette ColorPal { get { return colorPal; } internal set { colorPal = value; } } public int PalSize { get { return paletteSize; } internal set { paletteSize = value; } } public bool PalRev { get { return paletteReverse; } internal set { paletteReverse = value; } } public bool PalDis { get { return paletteDiscrete; } internal set { paletteDiscrete = value; } } public CelestialBody Body { get { return body; } } public string Name { get { return name; } } public float DefaultMinHeight { get { return defaultMinHeight; } } public float DefaultMaxHeight { get { return defaultMaxHeight; } } public float? DefaultClampHeight { get { return defaultClamp; } } public SCANPalette DefaultPalette { get { return defaultPalette; } } public int DefaultPaletteSize { get { return defaultPaletteSize; } } public bool DefaultReverse { get { return defaultReverse; } } public bool DefaultDiscrete { get { return defaultDiscrete; } } public float MaxHeightMultiplier { get { return internalMaxHeightMult; } } public float MinHeightMultiplier { get { return internalMinHeightMult; } } public float ClampHeightMultiplier { get { return internalClampHeightMult; } } } } ================================================ FILE: SCANsat/SCAN_Data/SCANtype.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANtype - Enum for SCANsat scanner types * * Copyright (c)2013 damny; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; namespace SCANsat.SCAN_Data { public enum SCANtype : short { Nothing = 0, // no data (MapTraq) AltimetryLoRes = 1 << 0, // low resolution altimetry (limited zoom) AltimetryHiRes = 1 << 1, // high resolution altimetry (unlimited zoom) Altimetry = (1 << 2) - 1, // both (setting) or either (testing) altimetry VisualLoRes = 1 << 2, // Visual low resolution Biome = 1 << 3, // biome data Anomaly = 1 << 4, // anomalies (position of anomaly) AnomalyDetail = 1 << 5, // anomaly detail (name of anomaly, etc.) VisualHiRes = 1 << 6, // Visual high resolution ResourceLoRes = 1 << 7, // Low detail resource ResourceHiRes = 1 << 8, // High detail resource Everything_SCAN = (1 << 9) - 1, // All default SCANsat scanners Science = 143, // All science collection types Everything = Int16.MaxValue // All scanner types } } ================================================ FILE: SCANsat/SCAN_Data/SCANwaypoint.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANwaypoint - An object to store information about FinePrint waypoints * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using Contracts; using FinePrint.Contracts.Parameters; using FinePrint; using FinePrint.Utilities; using UnityEngine; using SCANsat.SCAN_Reflection; namespace SCANsat.SCAN_Data { public class SCANwaypoint { internal SCANwaypoint(SurveyWaypointParameter p) { way = p.wp; if (way != null) { band = reflectFlightBand(p); root = p.Root; seed = way.uniqueSeed; param = p; name = way.name; Vector2d coords = SCANUtil.fixRetardCoordinates(new Vector2d(way.longitude, way.latitude)); longitude = coords.x; latitude = coords.y; landingTarget = false; } } internal SCANwaypoint(StationaryPointParameter p) { way = reflectWaypoint(p); if (way != null) { band = FlightBand.NONE; root = p.Root; seed = way.uniqueSeed; param = p; name = way.name; Vector2d coords = SCANUtil.fixRetardCoordinates(new Vector2d(way.longitude, way.latitude)); longitude = coords.x; latitude = coords.y; landingTarget = false; } } internal SCANwaypoint(Waypoint p) { way = p; band = FlightBand.NONE; root = p.contractReference; seed = way.uniqueSeed; param = null; name = way.name; Vector2d coords = SCANUtil.fixRetardCoordinates(new Vector2d(way.longitude, way.latitude)); longitude = coords.x; latitude = coords.y; landingTarget = false; } public SCANwaypoint(double lat, double lon, string n) { way = null; band = FlightBand.NONE; seed = Random.Range(0, int.MaxValue); root = null; param = null; name = n; longitude = SCANUtil.fixLonShift(lon); latitude = SCANUtil.fixLatShift(lat); landingTarget = true; } private Waypoint way; private string name; private double longitude; private double latitude; private int seed; private FlightBand band; private Contract root; private ContractParameter param; private bool landingTarget; public Waypoint Way { get { return way; } } public string Name { get { return name; } } public int Seed { get { return seed; } } public Contract Root { get { return root; } } public ContractParameter Param { get { return param; } } public double Longitude { get { return longitude; } } public double Latitude { get { return latitude; } } public FlightBand Band { get { return band; } } public bool LandingTarget { get { return landingTarget; } } private Waypoint reflectWaypoint(StationaryPointParameter p) { if (SCANfinePrint.FinePrintStationaryWaypoint) { return SCANfinePrint.FinePrintStationaryWaypointObject(p); } return null; } private FlightBand reflectFlightBand(SurveyWaypointParameter p) { if (SCANfinePrint.FinePrintFlightBand) { return SCANfinePrint.FinePrintFlightBandValue(p); } return FlightBand.NONE; } } } ================================================ FILE: SCANsat/SCAN_Map/SCANmap.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANmap - makes maps from data * * Copyright (c)2013 damny; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; using System.Linq; using System.IO; using UnityEngine; using SCANsat.SCAN_Platform.Palettes; using SCANsat.SCAN_Data; using SCANsat.SCAN_UI.UI_Framework; using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil; namespace SCANsat.SCAN_Map { public class SCANmap { internal SCANmap(CelestialBody Body, bool Cache, mapSource s) { body = Body; mSource = s; pqs = body.pqsController != null; biomeMap = body.BiomeMap != null; data = SCANUtil.getData(body); if (data == null) { data = new SCANdata(body); SCANcontroller.controller.addToBodyData(body, data); } cache = Cache; } internal SCANmap() { } #region Public Accessors public double MapScale { get { return mapscale; } internal set { mapscale = value; resourceMapScale = (mapwidth / resourceMapWidth) * mapscale; } } public double Lon_Offset { get { return lon_offset; } } public double Lat_Offset { get { return lat_offset; } } public double CenteredLong { get { return centeredLong; } } public double CenteredLat { get { return centeredLat; } } public int MapWidth { get { return mapwidth; } } public int MapHeight { get { return mapheight; } } public mapType MType { get { return mType; } set { mType = value; } } public bool ColorMap { get { return colorMap; } set { colorMap = value; } } public bool Terminator { get { return terminator; } set { terminator = value; } } public mapSource MSource { get { return mSource; } } public Texture2D Map { get { return map; } internal set { map = value; } } public CelestialBody Body { get { return body; } } public SCANresourceGlobal Resource { get { return resource; } set { resource = value; } } public bool ResourceActive { get { return resourceActive; } set { resourceActive = value; } } public SCANmapLegend MapLegend { get { return mapLegend; } internal set { mapLegend = value; } } public MapProjection Projection { get { return projection; } set { projection = value; } } internal float[,] Big_HeightMap { get { return big_heightmap; } } public bool UseCustomRange { get { return useCustomRange; } } public float CustomMin { get { return customMin; } } public float CustomMax { get { return customMax; } } public float CustomRange { get { return customRange; } } #endregion #region Big Map methods and fields /* MAP: Big Map height map caching */ private float[,] big_heightmap; private bool cache; private double centeredLong, centeredLat; private void terrainHeightToArray(double lon, double lat, int ilon, int ilat) { float alt = 0f; alt = (float)SCANUtil.getElevation(body, lon, lat); if (alt == 0f) { alt = -0.001f; } big_heightmap[ilon, ilat] = alt; } /* MAP: Projection methods for converting planet coordinates to the rectangular texture */ private MapProjection projection = MapProjection.Rectangular; internal void setProjection(MapProjection p) { if (projection == p) { return; } projection = p; } internal double projectLongitude(double lon, double lat) { lon = (lon + 3600 + 180) % 360 - 180; lat = (lat + 1800 + 90) % 180 - 90; switch (projection) { case MapProjection.KavrayskiyVII: lon = Mathf.Deg2Rad * lon; lat = Mathf.Deg2Rad * lat; lon = (3.0f * lon / 2.0f / Math.PI) * Math.Sqrt(Math.PI * Math.PI / 3.0f - lat * lat); return Mathf.Rad2Deg * lon; case MapProjection.Polar: lon = Mathf.Deg2Rad * lon; lat = Mathf.Deg2Rad * lat; if (lat < 0) { lon = 1.3 * Math.Cos(lat) * Math.Sin(lon) - Math.PI / 2; } else { lon = 1.3 * Math.Cos(lat) * Math.Sin(lon) + Math.PI / 2; } return Mathf.Rad2Deg * lon; case MapProjection.Orthographic: lon = Mathf.Deg2Rad * lon; lat = Mathf.Deg2Rad * lat; double centerLon = Mathf.Deg2Rad * centeredLong; double centerLat = Mathf.Deg2Rad * centeredLat; if (Math.Sin(centerLat) * Math.Sin(lat) + Math.Cos(centerLat) * Math.Cos(lat) * Math.Cos(lon - centerLon) < 0) { return -200; } lon = 1.5 * Math.Cos(lat) * Math.Sin(lon - centerLon); return Mathf.Rad2Deg * lon; default: return lon; } } internal double projectLatitude(double lon, double lat) { lon = (lon + 3600 + 180) % 360 - 180; lat = (lat + 1800 + 90) % 180 - 90; switch (projection) { case MapProjection.Polar: lon = Mathf.Deg2Rad * lon; lat = Mathf.Deg2Rad * lat; if (lat < 0) { lat = 1.3 * Math.Cos(lat) * Math.Cos(lon); } else { lat = -1.3 * Math.Cos(lat) * Math.Cos(lon); } return Mathf.Rad2Deg * lat; case MapProjection.Orthographic: lon = Mathf.Deg2Rad * lon; lat = Mathf.Deg2Rad * lat; double centerLon = Mathf.Deg2Rad * centeredLong; double centerLat = Mathf.Deg2Rad * centeredLat; if (Math.Sin(centerLat) * Math.Sin(lat) + Math.Cos(centerLat) * Math.Cos(lat) * Math.Cos(lon - centerLon) < 0) { return -200; } lat = 1.5 * (Math.Cos(centerLat) * Math.Sin(lat) - Math.Sin(centerLat) * Math.Cos(lat) * Math.Cos(lon - centerLon)); return Mathf.Rad2Deg * lat; default: return lat; } } internal double unprojectLongitude(double lon, double lat) { if (lat > 90) { lat = 180 - lat; lon += 180; } else if (lat < -90) { lat = -180 - lat; lon += 180; } lon = (lon + 3600 + 180) % 360 - 180; lat = (lat + 1800 + 90) % 180 - 90; switch (projection) { case MapProjection.KavrayskiyVII: lon = Mathf.Deg2Rad * lon; lat = Mathf.Deg2Rad * lat; lon = lon / Math.Sqrt(Mathf.PI * Math.PI / 3.0f - lat * lat) * 2.0f * Math.PI / 3.0f; return Mathf.Rad2Deg * lon; case MapProjection.Polar: lon = Mathf.Deg2Rad * lon; lat = Mathf.Deg2Rad * lat; double lat0 = Math.PI / 2; if (lon < 0) { lon += Math.PI / 2; lat0 = -Math.PI / 2; } else { lon -= Math.PI / 2; } lon /= 1.3; lat /= 1.3; double p = Math.Sqrt(lon * lon + lat * lat); double c = Math.Asin(p); lon = Math.Atan2((lon * Math.Sin(c)), (p * Math.Cos(lat0) * Math.Cos(c) - lat * Math.Sin(lat0) * Math.Sin(c))); lon = (Mathf.Rad2Deg * lon + 180) % 360 - 180; if (lon <= -180) { lon = -180; } return lon; case MapProjection.Orthographic: lon = Mathf.Deg2Rad * lon; lat = Mathf.Deg2Rad * lat; double centerLon = Mathf.Deg2Rad * centeredLong; double centerLat = Mathf.Deg2Rad * centeredLat; double p2 = Math.Sqrt(lon * lon + lat * lat); double c2 = Math.Asin(p2 / 1.5); if (Math.Cos(c2) < 0) { return 300; } lon = centerLon + Math.Atan2(lon * Math.Sin(c2), p2 * Math.Cos(c2) * Math.Cos(centerLat) - lat * Math.Sin(c2) * Math.Sin(centerLat)); lon = (Mathf.Rad2Deg * lon + 180) % 360 - 180; if (lon <= -180) { lon += 360; } return lon; default: return lon; } } internal double unprojectLatitude(double lon, double lat) { if (lat > 90) { lat = 180 - lat; lon += 180; } else if (lat < -90) { lat = -180 - lat; lon += 180; } lon = (lon + 3600 + 180) % 360 - 180; lat = (lat + 1800 + 90) % 180 - 90; switch (projection) { case MapProjection.Polar: lon = Mathf.Deg2Rad * lon; lat = Mathf.Deg2Rad * lat; double lat0 = Math.PI / 2; if (lon < 0) { lon += Math.PI / 2; lat0 = -Math.PI / 2; } else { lon -= Math.PI / 2; } lon /= 1.3; lat /= 1.3; double p = Math.Sqrt(lon * lon + lat * lat); double c = Math.Asin(p); lat = Math.Asin(Math.Cos(c) * Math.Sin(lat0) + (lat * Math.Sin(c) * Math.Cos(lat0)) / (p)); return Mathf.Rad2Deg * lat; case MapProjection.Orthographic: lon = Mathf.Deg2Rad * lon; lat = Mathf.Deg2Rad * lat; double centerLat = Mathf.Deg2Rad * centeredLat; double p2 = Math.Sqrt(lon * lon + lat * lat); double c2 = Math.Asin(p2 / 1.5); if (Math.Cos(c2) < 0) { return 300; } lat = Math.Asin(Math.Cos(c2) * Math.Sin(centerLat) + (lat * Math.Sin(c2) * Math.Cos(centerLat)) / p2); return Mathf.Rad2Deg * lat; default: return lat; } } /* MAP: scaling, centering (setting origin), translating, etc */ private double mapscale, lon_offset, lat_offset; private int mapwidth, mapheight; private Color32[] pix; private bool resourceActive; private float[,] resourceCache; private int resourceInterpolation = 4; private int resourceMapWidth = 4; private int resourceMapHeight = 2; private double resourceMapScale = 1; private bool randomEdges = true; private double[] biomeIndex; private Color32[] stockBiomeColor; private int startLine; private int stopLine; double sunLonCenter; double sunLatCenter; double gamma; internal void setSize(Vector2 size) { setSize((int)size.x, (int)size.y); } internal void setSize(int w, int h, int interpolation = 2, int start = 0, int stop = 0) { if (w == 0) { w = 360 * (Screen.width / 360); } if (w > 360 * 4) { w = 360 * 4; } mapwidth = w; pix = new Color32[mapwidth]; biomeIndex = new double[mapwidth]; stockBiomeColor = new Color32[mapwidth]; mapscale = mapwidth / 360f; if (h <= 0) { h = (int)(180 * mapscale); } mapheight = h; startLine = start; stopLine = stop == 0 ? mapheight - 1 : stop; resourceMapWidth = mapwidth; resourceMapHeight = mapheight; resourceCache = new float[resourceMapWidth, resourceMapHeight]; resourceInterpolation = interpolation; resourceMapScale = resourceMapWidth / 360; randomEdges = false; if (map != null) { if (mapwidth != map.width || mapheight != map.height) { map = null; } } } internal void setWidth(int w) { if (w == 0) { w = 360 * (int)(Screen.width / 360); if (w > 360 * 4) { w = 360 * 4; } } if (w < 360) { w = 360; } if (mapwidth == w) { return; } mapwidth = w; pix = new Color32[w]; biomeIndex = new double[w]; stockBiomeColor = new Color32[w]; resourceMapHeight = SCAN_Settings_Config.Instance.ResourceMapHeight; resourceMapWidth = resourceMapHeight * 2; resourceInterpolation = SCAN_Settings_Config.Instance.Interpolation; resourceMapScale = resourceMapWidth / 360f; resourceCache = new float[resourceMapWidth, resourceMapHeight]; randomEdges = true; mapscale = mapwidth / 360f; mapheight = (int)(w / 2); startLine = 0; stopLine = mapheight - 1; /* big map caching */ big_heightmap = new float[mapwidth, mapheight]; map = null; resetMap(resourceActive); } internal void centerAround(double lon, double lat) { centeredLong = lon; centeredLat = lat; if (projection == MapProjection.Orthographic) { double lo = projectLongitude(lon, lat); double la = projectLatitude(lon, lat); lon_offset = 180 + lo - (mapwidth / mapscale) / 2; lat_offset = 90 + la - (mapheight / mapscale) / 2; } else { lon_offset = 180 + lon - (mapwidth / mapscale) / 2; lat_offset = 90 + lat - (mapheight / mapscale) / 2; } } internal double scaleLatitude(double lat) { lat -= lat_offset; lat *= 180f / (mapheight / mapscale); return lat; } internal double scaleLongitude(double lon) { if (lon_offset < 0 && Math.Abs(lon_offset) < lon) { lon -= 360; } else if (lon_offset > 0 && Math.Abs(lon_offset) > lon) { lon += 360; } lon -= lon_offset; lon *= 360f / (mapwidth / mapscale); return lon; } private double unScaleLatitude(double lat) { lat -= lat_offset; lat += 90; lat *= mapscale; return lat; } private double unScaleLatitude(double lat, double scale) { lat -= lat_offset; lat += 90; lat *= scale; return lat; } private double unScaleLongitude(double lon) { lon -= lon_offset; lon += 180; lon *= mapscale; return lon; } private double unScaleLongitude(double lon, double scale) { lon -= lon_offset; lon = SCANUtil.fixLonShift(lon); lon += 180; lon *= scale; return lon; } private double fixUnscale(double value, int size) { if (value < 0) { value = 0; } else if (value >= (size - 0.5f)) { value = size - 1; } return value; } /* MAP: internal state */ private mapType mType; private mapSource mSource; private Texture2D map; // refs above: 214,215,216,232, below, and JSISCANsatRPM. private CelestialBody body = null; // all refs are below private SCANresourceGlobal resource; private SCANdata data; private SCANmapLegend mapLegend; private int mapstep; // all refs are below private int mapRedStep; private double[] mapline; // all refs are below private bool pqs; private bool biomeMap; private float customMin; private float customMax; private float customRange; private float customResourceMin; private float customResourceMax; private bool useCustomRange; private bool colorMap; private bool terminator; private float mapRedlineDraw = 10; /* MAP: nearly trivial functions */ public void setBody(CelestialBody b) { SCANcontroller.controller.unloadPQS(body, mSource); SCANcontroller.controller.unloadOnDemandScaledSpace(body, mSource); if (body != b) { SCANcontroller.controller.UnloadVisualMapTexture(body, mSource); body = b; SCANcontroller.controller.loadOnDemandScaledSpace(body, mSource); SCANcontroller.controller.LoadVisualMapTexture_Renamed(body, mSource); } else { SCANcontroller.controller.loadOnDemandScaledSpace(body, mSource); SCANcontroller.controller.LoadVisualMapTexture_Renamed(body, mSource); } data = SCANUtil.getData(body); SCANcontroller.controller.loadPQS(body, mSource); pqs = body.pqsController != null; biomeMap = body.BiomeMap != null; /* clear cache in place if necessary */ if (cache) { for (int x = 0; x < mapwidth; x++) { for (int y = 0; y < mapwidth / 2; y++) { big_heightmap[x, y] = 0f; } } } if (SCANconfigLoader.GlobalResource) { if (resource != null) { resource.CurrentBodyConfig(body.bodyName); } } } public void setCustomRange(float min, float max, float rMin, float rMax) { useCustomRange = true; customMin = min; customMax = max; customRange = max - min; customResourceMin = rMin; customResourceMax = rMax; } internal bool isMapComplete() { if (map == null) { return false; } return mapstep >= map.height; } public void resetMap(bool resourceOn, bool setRes = true) { mapstep = -2; resourceActive = resourceOn; if (SCANconfigLoader.GlobalResource && setRes) { //Make sure that a resource is initialized if necessary if (resource != null && body != null) { resource.CurrentBodyConfig(body.bodyName); } resetResourceMap(); } switch (mSource) { case mapSource.BigMap: switch (SCAN_Settings_Config.Instance.MapGenerationSpeed) { case 1: mapRedlineDraw = 6; break; case 2: mapRedlineDraw = 3; break; case 3: mapRedlineDraw = 2; break; } break; case mapSource.ZoomMap: switch (SCAN_Settings_Config.Instance.MapGenerationSpeed) { case 1: mapRedlineDraw = 6; break; case 2: mapRedlineDraw = 3; break; case 3: mapRedlineDraw = 2; break; } break; case mapSource.RPM: mapRedlineDraw = 10; break; } if (terminator) { double sunLon = body.GetLongitude(Planetarium.fetch.Sun.position, false); double sunLat = body.GetLatitude(Planetarium.fetch.Sun.position, false); sunLatCenter = SCANUtil.fixLatShift(sunLat); if (sunLatCenter >= 0) { sunLonCenter = SCANUtil.fixLonShift(sunLon + 90); } else { sunLonCenter = SCANUtil.fixLonShift(sunLon - 90); } gamma = Math.Abs(sunLatCenter) < 0.55 ? 100 : Math.Tan(Mathf.Deg2Rad * (90 - Math.Abs(sunLatCenter))); } } public void resetMap(mapType mode, bool Cache, bool resourceOn, bool setRes = true) { mType = mode; cache = Cache; resetMap(resourceOn, setRes); } public void resetResourceMap() { if (mSource != mapSource.ZoomMap) { if (SCAN_Settings_Config.Instance.ResourceMapHeight != resourceMapHeight) { resourceMapHeight = SCAN_Settings_Config.Instance.ResourceMapHeight; resourceMapWidth = resourceMapHeight * 2; resourceMapScale = resourceMapWidth / 360f; resourceCache = new float[resourceMapWidth, resourceMapHeight]; } if (SCAN_Settings_Config.Instance.Interpolation != resourceInterpolation) { resourceInterpolation = SCAN_Settings_Config.Instance.Interpolation; } } for (int i = 0; i < resourceMapWidth; i++) { for (int j = 0; j < resourceMapHeight; j++) { resourceCache[i, j] = 0; } } } /* MAP: export: PNG file */ private SCANmapExporter exporter; internal void exportPNG() { if (exporter == null) { UnityEngine.GameObject obj = new GameObject(); exporter = obj.gameObject.AddComponent(); } if (exporter.Exporting) { return; } exporter.exportPNG(this, data); } #endregion #region Big Map Texture Generator /* MAP: build: map to Texture2D */ internal Texture2D getPartialMap(bool apply = true) { if (data == null) { return new Texture2D(1, 1); } System.Random r = new System.Random(ResourceScenario.Instance.gameSettings.Seed); bool resourceOn = false; bool mapHidden = mapstep < startLine || mapstep > stopLine; Color unscanned = SCAN_Settings_Config.Instance.UnscannedColor; unscanned.a *= SCAN_Settings_Config.Instance.UnscannedTransparency; if (map == null) { map = new Texture2D(mapwidth, mapheight, TextureFormat.ARGB32, false); pix = map.GetPixels32(); Color background = SCAN_Settings_Config.Instance.MapBackgroundColor; background.a *= SCAN_Settings_Config.Instance.BackgroundTransparency; for (int i = 0; i < pix.Length; ++i) { pix[i] = background; } map.SetPixels32(pix); mapline = new double[map.width]; pix = new Color32[mapwidth]; } else if (mapstep >= map.height) { return map; } if (palette.redline == null || palette.redline.Length != map.width) { palette.redline = new Color32[map.width]; for (int i = 0; i < palette.redline.Length; ++i) { palette.redline[i] = palette.Red; } } resourceOn = resourceActive && SCANconfigLoader.GlobalResource && resource != null; if (mapstep <= -2) { if (resourceOn) { SCANuiUtil.generateResourceCache(ref resourceCache, resourceMapHeight, resourceMapWidth, resourceInterpolation, resourceMapScale, this); } mapstep++; return map; } if (mapstep <= -1) { if (resourceOn) { for (int i = resourceInterpolation / 2; i >= 1; i /= 2) { SCANuiUtil.interpolate(resourceCache, resourceMapHeight, resourceMapWidth, i, i, i, r, randomEdges, mSource == mapSource.ZoomMap); SCANuiUtil.interpolate(resourceCache, resourceMapHeight, resourceMapWidth, 0, i, i, r, randomEdges, mSource == mapSource.ZoomMap); SCANuiUtil.interpolate(resourceCache, resourceMapHeight, resourceMapWidth, i, 0, i, r, randomEdges, mSource == mapSource.ZoomMap); } } } Texture2D readableScaledSpaceMap = SCANcontroller.controller.getVisualMapTexture(body); Texture2D readableScaledSpaceNormalMap = SCANcontroller.controller.getVisualMapNormalTexture(body); for (int i = 0; i < map.width; i++) { /* Introduce altimetry check here; Use unprojected lat/long coordinates * All cached altimetry data stored in a single 2D array in rectangular format * Pull altimetry data from cache after unprojection */ double cacheLat = ((mapstep + 1) * 1.0f / mapscale) - 90f + lat_offset; double lon = (i * 1.0f / mapscale) - 180f + lon_offset; if (mType != mapType.Visual) { if (body.pqsController != null && cache && mapstep + 1 < map.height) { if (big_heightmap[i, mapstep + 1] == 0f) { if (SCANUtil.isCovered(lon, cacheLat, data, SCANtype.Altimetry)) { terrainHeightToArray(lon, cacheLat, i, mapstep + 1); } } } } if (mapstep < 0) { continue; } if (mapHidden) { continue; } if (mType != mapType.Biome || !biomeMap) { continue; } double lat = (mapstep * 1.0f / mapscale) - 90f + lat_offset; double la = lat, lo = lon; lat = unprojectLatitude(lo, la); lon = unprojectLongitude(lo, la); if (double.IsNaN(lat) || double.IsNaN(lon) || lat < -90 || lat > 90 || lon < -180 || lon > 180) { stockBiomeColor[i] = palette.clear; biomeIndex[i] = 0; continue; } if (SCAN_Settings_Config.Instance.BigMapStockBiomes && colorMap) { stockBiomeColor[i] = SCANUtil.getBiome(body, lon, lat).mapColor; switch (mSource) { case mapSource.BigMap: if (SCAN_Settings_Config.Instance.BigMapBiomeBorder) { biomeIndex[i] = SCANUtil.getBiomeIndexFraction(body, lon, lat); } break; case mapSource.ZoomMap: case mapSource.RPM: if (SCAN_Settings_Config.Instance.ZoomMapBiomeBorder) { biomeIndex[i] = SCANUtil.getBiomeIndexFraction(body, lon, lat); } break; } } else { biomeIndex[i] = SCANUtil.getBiomeIndexFraction(body, lon, lat); } } if (mapstep <= -1) { mapstep++; return map; } for (int i = 0; i < map.width; i++) { if (mapHidden) { pix[i] = palette.Clear; continue; } Color32 baseColor = palette.Grey; pix[i] = baseColor; float projVal = 0f; bool nowColor = colorMap; double lat = (mapstep * 1.0f / mapscale) - 90f + lat_offset; double lon = (i * 1.0f / mapscale) - 180f + lon_offset; double la = lat, lo = lon; lat = unprojectLatitude(lo, la); lon = unprojectLongitude(lo, la); if (double.IsNaN(lat) || double.IsNaN(lon) || lat < -90 || lat > 90 || lon < -180 || lon > 180) { pix[i] = palette.Clear; continue; } switch (mType) { case mapType.Altimetry: { if (!pqs) { baseColor = palette.lerp(palette.Black, palette.White, UnityEngine.Random.value); } else if (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry)) { projVal = terrainElevation(lon, lat, mapwidth, mapheight, big_heightmap, cache, data, out nowColor); if (useCustomRange) { baseColor = palette.heightToColor(projVal, nowColor, data.TerrainConfig, customMin, customMax, customRange, true); } else { baseColor = palette.heightToColor(projVal, nowColor, data.TerrainConfig); } } else { baseColor = unscanned; } break; } case mapType.Slope: { if (!pqs) { baseColor = palette.lerp(palette.Black, palette.White, UnityEngine.Random.value); } else if (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry)) { projVal = terrainElevation(lon, lat, mapwidth, mapheight, big_heightmap, cache, data, out nowColor); if (mapstep >= 0) { // This doesn't actually calculate the slope per se, but it's faster // than asking for yet more elevation data. Please don't use this // code to operate nuclear power plants or rockets. double v1 = mapline[i]; if (i > 0) { v1 = Math.Max(v1, mapline[i - 1]); } if (i < mapline.Length - 1 && mapstep > 0) { v1 = Math.Max(v1, mapline[i + 1]); } float v = Mathf.Clamp((float)Math.Abs(projVal - v1) / (1000f / (float)mapscale), 0, 2f); if (!colorMap) { baseColor = palette.lerp(palette.Black, palette.White, v / 2f); } else { if (v < SCAN_Settings_Config.Instance.SlopeCutoff) { baseColor = palette.lerp(SCANcontroller.controller.lowSlopeColorOne32, SCANcontroller.controller.highSlopeColorOne32, v / SCAN_Settings_Config.Instance.SlopeCutoff); } else { baseColor = palette.lerp(SCANcontroller.controller.lowSlopeColorTwo32, SCANcontroller.controller.highSlopeColorTwo32, (v - SCAN_Settings_Config.Instance.SlopeCutoff) / (2 - SCAN_Settings_Config.Instance.SlopeCutoff)); } } } mapline[i] = projVal; } else { baseColor = unscanned; } break; } case mapType.Biome: { if (!biomeMap) { baseColor = palette.lerp(palette.Black, palette.White, UnityEngine.Random.value); } else if (SCANUtil.isCovered(lon, lat, data, SCANtype.Biome)) { Color32 biome = palette.Grey; if (!colorMap) { if ((i > 0 && mapline[i - 1] != biomeIndex[i]) || (mapstep > 0 && mapline[i] != biomeIndex[i])) { biome = palette.White; } else { biome = palette.lerp(palette.Black, palette.White, (float)biomeIndex[i]); } } else { Color32 elevation = palette.Grey; if (SCAN_Settings_Config.Instance.BiomeTransparency > 0) { if (!pqs) { elevation = palette.Grey; } else if (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry)) { projVal = terrainElevation(lon, lat, mapwidth, mapheight, big_heightmap, cache, data, out nowColor); if (useCustomRange) { elevation = palette.lerp(palette.Black, palette.White, Mathf.Clamp(projVal + (-1f * customMin), 0, customRange) / customRange); } else { elevation = palette.lerp(palette.Black, palette.White, Mathf.Clamp(projVal + (-1f * data.TerrainConfig.MinTerrain), 0, data.TerrainConfig.TerrainRange) / data.TerrainConfig.TerrainRange); } } } bool border = false; switch (mSource) { case mapSource.BigMap: if (SCAN_Settings_Config.Instance.BigMapBiomeBorder) { border = true; } break; case mapSource.ZoomMap: case mapSource.RPM: if (SCAN_Settings_Config.Instance.ZoomMapBiomeBorder) { border = true; } break; } if (border && ((i > 0 && mapline[i - 1] != biomeIndex[i]) || (mapstep > 0 && mapline[i] != biomeIndex[i]))) { biome = palette.White; } else if (SCAN_Settings_Config.Instance.BigMapStockBiomes) { biome = palette.lerp(stockBiomeColor[i], elevation, SCAN_Settings_Config.Instance.BiomeTransparency); } else { biome = palette.lerp(palette.lerp(SCANcontroller.controller.lowBiomeColor32, SCANcontroller.controller.highBiomeColor32, (float)biomeIndex[i]), elevation, SCAN_Settings_Config.Instance.BiomeTransparency); } } baseColor = biome; mapline[i] = biomeIndex[i]; } else { baseColor = unscanned; } break; } case mapType.Visual: { if (readableScaledSpaceMap == null) { baseColor = palette.lerp(palette.Black, palette.White, UnityEngine.Random.value); } else if (SCANUtil.isCovered(lon, lat, data, SCANtype.VisualHiRes)) { float fLat = ((float)lat + 90f) / 180f; float fLon = ((float)lon + 270f) / 360f; if (fLon < 0) { fLon += 1; } if (fLon > 1) { fLon -= 1; } fLon = 1 - fLon; fLat = Mathf.Clamp01(fLat); fLon = Mathf.Clamp01(fLon); baseColor = readableScaledSpaceMap.GetPixelBilinear(fLon, fLat); if (readableScaledSpaceNormalMap != null) { HslColor hslBase = palette.ConvertRgbToHsl(baseColor); double opacity = 0.8; double lumOver = readableScaledSpaceNormalMap.GetPixelBilinear(fLon, fLat).b; double lum = hslBase.L; if (colorMap) { if (lum > 0.5d) { lum = (opacity * (1 - (1 - (2 * (lumOver - 0.5))) * (1 - lum))) + (1 - opacity) * lum; } else { lum = (opacity * (2 * lumOver * lum)) + (1 - opacity) * lum; } baseColor = palette.ConvertHslToRgb(hslBase.H, hslBase.S, lum); } else { if (lum > 0.5d) { lum = (1 - (1 - (2 * (lumOver - 0.5))) * (1 - lum)); } else { lum = 2 * lumOver * lum; } baseColor = palette.ConvertToGrayscale(baseColor); } } } else if (SCANUtil.isCovered(lon, lat, data, SCANtype.VisualLoRes)) { float fLat = ((float)lat + 90f) / 180f; float fLon = ((float)lon + 270f) / 360f; if (fLon < 0) { fLon += 1; } if (fLon > 1) { fLon -= 1; } fLon = 1 - fLon; fLat = Mathf.Clamp01(fLat); fLon = Mathf.Clamp01(fLon); float width = readableScaledSpaceMap.width / (512f); float height = readableScaledSpaceMap.height / (256f); int ilon = Mathf.RoundToInt((int)(fLon * 512f) * width); int ilat = Mathf.RoundToInt((int)(fLat * 256f) * height); if (ilon > readableScaledSpaceMap.width) { ilon = readableScaledSpaceMap.width - 1; } if (ilat > readableScaledSpaceMap.height) { ilat = readableScaledSpaceMap.height - 1; } baseColor = readableScaledSpaceMap.GetPixel(ilon, ilat); if (!colorMap) { baseColor = palette.ConvertToGrayscale(baseColor); } } else { baseColor = unscanned; } break; } } if (resourceOn) { float abundance = 0; switch (projection) { case MapProjection.Rectangular: case MapProjection.KavrayskiyVII: case MapProjection.Polar: abundance = getResoureCache(lon, lat); break; case MapProjection.Orthographic: abundance = resourceCache[Mathf.RoundToInt(i * (resourceMapWidth / mapwidth)), Mathf.RoundToInt(mapstep * (resourceMapWidth / mapwidth))]; break; } if (useCustomRange) { baseColor = SCANuiUtil.resourceToColor32(baseColor, resource, customResourceMin, customResourceMax, abundance, data, lon, lat); } else { baseColor = SCANuiUtil.resourceToColor32(baseColor, resource, resource.CurrentBody.MinValue, resource.CurrentBody.MaxValue, abundance, data, lon, lat); } } if (terminator) { double crossingLat = Math.Atan(gamma * Math.Sin(Mathf.Deg2Rad * lon - Mathf.Deg2Rad * sunLonCenter)); if (sunLatCenter >= 0) { if (lat < crossingLat * Mathf.Rad2Deg) { pix[i] = palette.lerp(baseColor, palette.Black, 0.5f); } else { pix[i] = baseColor; } } else { if (lat > crossingLat * Mathf.Rad2Deg) { pix[i] = palette.lerp(baseColor, palette.Black, 0.5f); } else { pix[i] = baseColor; } } } else { pix[i] = baseColor; } } if (mapstep >= 0) { map.SetPixels32(0, mapstep, map.width, 1, pix); } mapstep++; if (apply) { mapRedStep++; } if (mapRedStep % mapRedlineDraw == 0 || mapstep >= map.height) { mapRedStep = 0; if (mapstep < map.height - 1) { map.SetPixels32(0, mapstep, map.width, 1, palette.redline); } if (apply || mapstep >= map.height) { map.Apply(); } } return map; } /* Calculates the terrain elevation based on scanning coverage; fetches data from elevation cache if possible */ private float terrainElevation(double Lon, double Lat, int w, int h, float[,] heightMap, bool c, SCANdata Data, out bool NowColor, bool exporting = false) { float elevation = 0f; NowColor = colorMap; if (SCANUtil.isCovered(Lon, Lat, Data, SCANtype.AltimetryHiRes)) { if (c) { double lon = fixUnscale(unScaleLongitude(Lon), w); double lat = fixUnscale(unScaleLatitude(Lat), h); int ilon = Mathf.RoundToInt((float)lon); int ilat = Mathf.RoundToInt((float)lat); if (ilon >= w) { ilon = w - 1; } if (ilat >= h) { ilat = h - 1; } elevation = heightMap[ilon, ilat]; if (elevation == 0f && !exporting) { elevation = (float)SCANUtil.getElevation(body, Lon, Lat); } } else { elevation = (float)SCANUtil.getElevation(body, Lon, Lat); } } else { if (c) { double lon = fixUnscale(unScaleLongitude(Lon), w); double lat = fixUnscale(unScaleLatitude(Lat), h); int ilon = ((int)(lon * 5)) / 5; int ilat = ((int)(lat * 5)) / 5; if (ilon >= w) { ilon = w - 1; } if (ilat >= h) { ilat = h - 1; } elevation = heightMap[ilon, ilat]; if (elevation == 0f && !exporting) { elevation = (float)SCANUtil.getElevation(body, ((int)(Lon * 5)) / 5, ((int)(Lat * 5)) / 5); } } else { elevation = (float)SCANUtil.getElevation(body, ((int)(Lon * 5)) / 5, ((int)(Lat * 5)) / 5); } NowColor = false; } return elevation; } public float terrainElevation(double Lon, double Lat, int W, int H, float[,] heightMap, SCANdata Data, bool export = false) { bool c = true; return terrainElevation(Lon, Lat, W, H, heightMap, true, Data, out c, export); } private float getResoureCache(double Lon, double Lat) { double resourceLat = fixUnscale(unScaleLatitude(Lat, resourceMapScale), resourceMapHeight); double resourceLon = fixUnscale(unScaleLongitude(Lon, resourceMapScale), resourceMapWidth); int ilon = Mathf.RoundToInt((float)resourceLon); int ilat = Mathf.RoundToInt((float)resourceLat); if (ilon >= resourceMapWidth) { ilon = resourceMapWidth - 1; } if (ilat >= resourceMapHeight) { ilat = resourceMapHeight - 1; } return resourceCache[ilon, ilat]; } #endregion } } ================================================ FILE: SCANsat/SCAN_Map/SCANmapExporter.cs ================================================ using System; using System.Collections; using System.IO; using System.Threading; using UnityEngine; using SCANsat.SCAN_Data; using SCANsat.SCAN_Platform; using Log = KSPBuildTools.Log; namespace SCANsat.SCAN_Map { public class SCANmapExporter : SCAN_MBE { private bool exporting; private volatile bool threadRunning, threadFinished; public bool Exporting { get { return exporting; } } public void exportPNG(SCANmap map, SCANdata data) { exporting = true; if (map == null) { return; } if (data == null) { return; } string path = Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, "GameData/SCANsat/PluginData/").Replace("\\", "/"); string mode = ""; switch (map.MType) { case mapType.Altimetry: mode = "elevation"; break; case mapType.Slope: mode = "slope"; break; case mapType.Biome: mode = "biome"; break; case mapType.Visual: mode = "visual"; break; } if (map.ResourceActive && SCANconfigLoader.GlobalResource && !string.IsNullOrEmpty(SCANcontroller.controller.bigMapResource)) { mode += "-" + SCANcontroller.controller.bigMapResource; } if (!SCANcontroller.controller.bigMapColor) { mode += "-grey"; } string baseFileName = string.Format("{0}_{1}_{2}x{3}", map.Body.bodyName, mode, map.Map.width, map.Map.height); if (map.Projection != MapProjection.Rectangular) { baseFileName += "_" + map.Projection.ToString(); } string filename = baseFileName; filename += ".png"; string fullPath = Path.Combine(path, filename); File.WriteAllBytes(fullPath, map.Map.EncodeToPNG()); ScreenMessages.PostScreenMessage("SCANsat Map saved: GameData/SCANsat/PluginData/" + filename, 8, ScreenMessageStyle.UPPER_CENTER); SCANUtil.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)); if (SCAN_Settings_Config.Instance.ExportCSV && map.MType == mapType.Altimetry) { StartCoroutine(exportCSV(path, baseFileName, map, data)); } else { exporting = false; } } private IEnumerator exportCSV(string filePath, string fileName, SCANmap map, SCANdata data) { int timer = 0; SCANdata copy = new SCANdata(data); float[,] copyHeightMap = new float[map.MapWidth, map.MapHeight]; Array.Copy(map.Big_HeightMap, copyHeightMap, map.MapWidth * map.MapHeight); int width = map.MapWidth; int height = map.MapHeight; double scale = map.MapScale; Thread t = new Thread(() => exportThread(filePath, fileName, width, height, scale, map, copy, copyHeightMap)); threadFinished = false; threadRunning = true; t.Start(); while (threadRunning && timer < 20000) { timer++; yield return null; } SCANUtil.SCANlog(".csv data file export complete; exported over {0} frames\nFile saved to GameData/SCANsat/PluginData/{1}_data.csv", timer, fileName); copy = null; copyHeightMap = null; exporting = false; if (timer >= 20000) { Log.Error("Something went wrong while exporting .csv data file\nCanceling export thread..."); t.Abort(); threadRunning = false; yield break; } if (!threadFinished) { Log.Error("Something went wrong while exporting .csv data file\nExport thread has been interrupted..."); yield break; } } private void exportThread(string path, string fileName, int w, int h, double s, SCANmap map, SCANdata copyData, float[,] copyMap) { try { using (StreamWriter writer = new StreamWriter(Path.Combine(path, fileName + "_data" + ".csv"))) { string line = "Row,Column,Lat,Long,Height"; writer.WriteLine(line); for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { double lat = (i * 1.0f / s) - 90f; double lon = (j * 1.0f / s) - 180f; double la = lat, lo = lon; lat = map.unprojectLatitude(lo, la); lon = map.unprojectLongitude(lo, la); if (double.IsNaN(lat) || double.IsNaN(lon) || lat < -90 || lat > 90 || lon < -180 || lon > 180) { continue; } if (!SCANUtil.isCovered(lon, lat, copyData, SCANtype.Altimetry)) { continue; } float terrain = map.terrainElevation(lon, lat, w, h, copyMap, copyData, true); line = string.Format("{0},{1},{2:F3},{3:F3},{4:F3}", i, j, lat, lon, terrain); writer.WriteLine(line); } writer.Flush(); } } threadFinished = true; } catch { threadFinished = false; } finally { threadRunning = false; } } } } ================================================ FILE: SCANsat/SCAN_Map/SCANmapLegend.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANmapLegend - Object to store data on map legend textures * * Copyright (c)2013 damny; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; using SCANsat.SCAN_Palettes; using SCANsat.SCAN_Data; using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil; using UnityEngine; namespace SCANsat.SCAN_Map { public class SCANmapLegend { private Texture2D legend; private float legendMin, legendMax; private SCANPalette dataPalette; private bool legendScheme; private bool stockScheme; private CelestialBody body; public Texture2D Legend { get { return legend; } set { legend = value; } } public Texture2D getLegend(bool color, SCANterrainConfig terrain) { if (legend != null && legendMin == terrain.MinTerrain && legendMax == terrain.MaxTerrain && legendScheme == color && terrain.ColorPal.Hash == dataPalette.Hash) { return legend; } body = null; legend = new Texture2D(256, 1, TextureFormat.RGB24, false); legendMin = terrain.MinTerrain; legendMax = terrain.MaxTerrain; legendScheme = color; dataPalette = terrain.ColorPal; Color32[] pix = new Color32[256]; for (int x = 0; x < 256; ++x) { float val = (x * (legendMax - legendMin)) / 256f + legendMin; pix[x] = palette.heightToColor(val, color, terrain); } legend.SetPixels32(pix); legend.Apply(); return legend; } public Texture2D getLegend(float min, float max, bool color, SCANterrainConfig terrain) { if (legend != null && legendMin == min && legendMax == max && legendScheme == color && terrain.ColorPal.Hash == dataPalette.Hash) { return legend; } legend = new Texture2D(256, 1, TextureFormat.RGB24, false); legendMin = min; legendMin = max; legendScheme = color; dataPalette = terrain.ColorPal; Color32[] pix = new Color32[256]; for (int x = 0; x < 256; ++x) { float val = (x * (max - min)) / 256f + min; pix[x] = palette.heightToColor(val, color, terrain, min, max, max - min, true); } legend.SetPixels32(pix); legend.Apply(); return legend; } public Texture2D getLegend(SCANdata data, bool color, bool stock, CBAttributeMapSO.MapAttribute[] biomes, bool reset = false) { if (legend != null && legendScheme == color && stockScheme == stock && body == data.Body && !reset) { return legend; } dataPalette = new SCANPalette(); legend = new Texture2D(256, 1, TextureFormat.RGB24, false); body = data.Body; legendScheme = color; stockScheme = stock; Color32[] pix = new Color32[256]; int count = biomes.Length; int blockSize = (int)Math.Truncate(256 / (count * 1d)); int total = 0; for (int i = 0; i < count; i++) { for (int j = 0; j < blockSize; j++) { if (total >= 256) { break; } int current = i * blockSize + j; if (stock && color) { pix[current] = biomes[i].mapColor; } else if (color) { pix[current] = palette.lerp(SCANcontroller.controller.lowBiomeColor32, SCANcontroller.controller.highBiomeColor32, (float)((i * 1f) / (count * 1f))); } else { pix[current] = palette.lerp(palette.Black, palette.White, (float)(i * 1f) / (count * 1f)); } total++; } } int remaining = 256 - count * blockSize; int backCount = remaining; for (int i = 0; i < remaining; i++) { if (total > 256 || backCount <= 0) { break; } if (SCAN_Settings_Config.Instance.BigMapStockBiomes && color) { pix[256 - backCount] = biomes[count - 1].mapColor; } else if (color) { pix[256 - backCount] = palette.lerp(SCANcontroller.controller.lowBiomeColor32, SCANcontroller.controller.highBiomeColor32, (float)(((count - 1) * 1f) / (count * 1f))); } else { pix[256 - backCount] = palette.lerp(palette.Black, palette.White, (float)(((count - 1) * 1f) / (count * 1f))); } backCount--; total++; } legend.SetPixels32(pix); legend.Apply(); return legend; } public static Texture2D getStaticLegend(SCANterrainConfig terrain) { Texture2D t = new Texture2D(256, 1, TextureFormat.RGB24, false); Color32[] pix = new Color32[256]; for (int x = 0; x < 256; ++x) { float val = (x * (terrain.MaxTerrain - terrain.MinTerrain)) / 256f + terrain.MinTerrain; pix[x] = palette.heightToColor(val, true, terrain); } t.SetPixels32(pix); t.Apply(); return t; } public static Texture2D getStaticLegend(float max, float min, float range, float? clamp, bool discrete, Color32[] c) { Texture2D t = new Texture2D(128, 1, TextureFormat.RGB24, false); Color32[] pix = new Color32[128]; for (int x = 0; x < 128; x++) { float val = (x * (max - min)) / 128f + min; pix[x] = palette.heightToColor(val, max, min, range, clamp, discrete, c); } t.SetPixels32(pix); t.Apply(); return t; } } } ================================================ FILE: SCANsat/SCAN_Map/SCANmapProjection.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANmapProjection - SCANsat projection types * * Copyright (c)2013 damny; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; namespace SCANsat.SCAN_Map { public class SCANmapProjection { public static string[] projectionNames = getProjectionNames(); private static string[] getProjectionNames() { MapProjection[] v = (MapProjection[])Enum.GetValues(typeof(MapProjection)); string[] r = new string[v.Length]; for (int i = 0; i < v.Length; ++i) { r[i] = v[i].ToString(); } return r; } } public enum MapProjection { Rectangular = 0, KavrayskiyVII = 1, Polar = 2, Orthographic = 3, } } ================================================ FILE: SCANsat/SCAN_Map/SCANmapType.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCANmapType - All SCANsat map types * * Copyright (c)2013 damny; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; namespace SCANsat.SCAN_Map { public class SCANmapType { public static string[] mapTypeNames = getMapTypeNames(); private static string[] getMapTypeNames() { mapType[] v = (mapType[])Enum.GetValues(typeof(mapType)); string[] r = new string[v.Length]; for (int i = 0; i < v.Length; i++) { r[i] = v[i].ToString(); } return r; } } public enum mapType { Altimetry = 0, Slope = 1, Biome = 2, Visual = 3, } public enum mapSource { Data = 0, BigMap = 1, ZoomMap = 2, RPM = 3, Overlay = 4, } } ================================================ FILE: SCANsat/SCAN_Palette_Config.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCAN_Palette_Config - Config object to load and store info on color palettes * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; using System.Collections.Generic; using System.Linq; using SCANsat.SCAN_Palettes; using SCANsat.SCAN_Platform; using UnityEngine; using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil; namespace SCANsat { public class SCAN_Palette_Config : SCAN_ConfigNodeStorage { [Persistent] private List PaletteTypes = new List(); private DictionaryValueList MasterPaletteTypeList = new DictionaryValueList(); private static SCANPaletteGroup _defaultPalette; public static SCANPaletteGroup DefaultPalette { get { if (_defaultPalette == null) { _defaultPalette = GenerateDefaultPalette(); } return _defaultPalette; } } public SCAN_Palette_Config(string filepath, string node) { FilePath = filepath; TopNodeName = filepath + "/" + node; _defaultPalette = GenerateDefaultPalette(); if (!Load()) { SaveDefaultPalettes(); Save(); LoadSavedCopy(); } else { SCANUtil.SCANlog("Palette File Loaded"); } } private static SCANPaletteGroup GenerateDefaultPalette() { Color32[] 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 }; SCANPalette def = new SCANPalette(c, "Default", SCANPaletteKind.Fixed, c.Length); SCANPaletteGroup group = new SCANPaletteGroup("Default", SCANPaletteKind.Fixed, def); return group; } private void SaveDefaultPalettes() { SCANUtil.SCANlog("No SCANsat color palette file located\nGenerating default palettes..."); PaletteTypes = new List(); PaletteTypes.Add(new SCANPaletteType("Diverging")); PaletteTypes.Add(new SCANPaletteType("Qualitative")); PaletteTypes.Add(new SCANPaletteType("Sequential")); PaletteTypes.Add(new SCANPaletteType("Fixed")); for (int i = 0; i < PaletteTypes.Count; i++) { PaletteTypes[i].SaveDefaultPalettes(); } OnDecodeFromConfigNode(); } public SCANPaletteType GetPaletteType(SCANPaletteKind kind) { if (MasterPaletteTypeList.Contains(kind)) { return MasterPaletteTypeList[kind]; } if (MasterPaletteTypeList.Count > 0) { return MasterPaletteTypeList.At(0); } return null; } public SCANPaletteGroup GetPaletteGroup(SCANPaletteKind kind, string name) { for (int i = 0; i < MasterPaletteTypeList.Count; i++) { SCANPaletteType type = MasterPaletteTypeList.At(i); if (type.Kind != kind) { continue; } SCANPaletteGroup group = type.GetPaletteGroup(name); return group; } return null; } public SCANPaletteGroup GetPaletteGroup(string name) { for (int i = 0; i < MasterPaletteTypeList.Count; i++) { SCANPaletteType type = MasterPaletteTypeList.At(i); SCANPaletteGroup group = type.GetPaletteGroup(name); if (group != null) { return group; } } return null; } public List GetPaletteList(SCANPaletteKind kind, int length) { for (int i = 0; i < MasterPaletteTypeList.Count; i++) { SCANPaletteType type = MasterPaletteTypeList.At(i); if (type.Kind != kind) { continue; } return type.GetPaletteList(length); } return null; } public override void OnDecodeFromConfigNode() { try { for (int i = PaletteTypes.Count - 1; i >= 0; i--) { SCANPaletteType p = PaletteTypes[i]; if (p == null) { continue; } if (!MasterPaletteTypeList.Contains(p.Kind)) { MasterPaletteTypeList.Add(p.Kind, p); } } } catch (Exception e) { SCANUtil.SCANlog("Error while loading SCANsat palettes config settings: {0}", e); } } public override void OnEncodeToConfigNode() { try { PaletteTypes = MasterPaletteTypeList.Values.ToList(); } catch (Exception e) { SCANUtil.SCANlog("Error while saving SCANsat palettes config data: {0}", e); } } } } ================================================ FILE: SCANsat/SCAN_Palettes/ColorBrewer.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCAN ColorBrewer - static class for generating Color Brewer color SCANPalettes * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; using UnityEngine; using SCANsat.SCAN_Data; namespace SCANsat.SCAN_Palettes { public static class BrewerPalettes { static Func RGB = (r, g, b) => new Color32(r, g, b, 255); /*** Diverging ***/ public static SCANPalette Spectral(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(252, 141, 089), RGB(255, 255, 191), RGB(153, 213, 148) }; break; case 04: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(171, 221, 164), RGB(043, 131, 186) }; break; case 05: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(255, 255, 191), RGB(171, 221, 164), RGB(043, 131, 186) }; break; case 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; case 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; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Diverging; return new SCANPalette(c, "Spectral", @type, c.Length); } public static SCANPalette RdYlGn(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(252, 141, 089), RGB(255, 255, 191), RGB(145, 207, 096) }; break; case 04: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(166, 217, 106), RGB(026, 150, 065) }; break; case 05: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(255, 255, 191), RGB(166, 217, 106), RGB(026, 150, 065) }; break; case 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; case 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; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Diverging; return new SCANPalette(c, "RdYlGn", @type, c.Length); } public static SCANPalette RdBu(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(239, 138, 098), RGB(247, 247, 247), RGB(103, 169, 207) }; break; case 04: c = new[] { RGB(202, 000, 032), RGB(244, 165, 130), RGB(146, 197, 222), RGB(005, 113, 176) }; break; case 05: c = new[] { RGB(202, 000, 032), RGB(244, 165, 130), RGB(247, 247, 247), RGB(146, 197, 222), RGB(005, 113, 176) }; break; case 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; case 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; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Diverging; return new SCANPalette(c, "RdBu", @type, c.Length); } public static SCANPalette PiYG(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(233, 163, 201), RGB(247, 247, 247), RGB(161, 215, 106) }; break; case 04: c = new[] { RGB(208, 028, 139), RGB(241, 182, 218), RGB(184, 225, 134), RGB(077, 172, 038) }; break; case 05: c = new[] { RGB(208, 028, 139), RGB(241, 182, 218), RGB(247, 247, 247), RGB(184, 225, 134), RGB(077, 172, 038) }; break; case 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; case 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; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Diverging; return new SCANPalette(c, "PiYG", @type, c.Length); } public static SCANPalette PRGn(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(175, 141, 195), RGB(247, 247, 247), RGB(127, 191, 123) }; break; case 04: c = new[] { RGB(123, 050, 148), RGB(194, 165, 207), RGB(166, 219, 160), RGB(000, 136, 055) }; break; case 05: c = new[] { RGB(123, 050, 148), RGB(194, 165, 207), RGB(247, 247, 247), RGB(166, 219, 160), RGB(000, 136, 055) }; break; case 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; case 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; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Diverging; return new SCANPalette(c, "PRGn", @type, c.Length); } public static SCANPalette RdYlBu(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(252, 141, 089), RGB(255, 255, 191), RGB(145, 191, 219) }; break; case 04: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(171, 217, 233), RGB(044, 123, 182) }; break; case 05: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(255, 255, 191), RGB(171, 217, 233), RGB(044, 123, 182) }; break; case 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; case 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; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Diverging; return new SCANPalette(c, "RdYlBu", @type, c.Length); } public static SCANPalette BrBG(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(216, 179, 101), RGB(245, 245, 245), RGB(090, 180, 172) }; break; case 04: c = new[] { RGB(166, 097, 026), RGB(223, 194, 125), RGB(128, 205, 193), RGB(001, 133, 113) }; break; case 05: c = new[] { RGB(166, 097, 026), RGB(223, 194, 125), RGB(245, 245, 245), RGB(128, 205, 193), RGB(001, 133, 113) }; break; case 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; case 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; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Diverging; return new SCANPalette(c, "BrBG", @type, c.Length); } public static SCANPalette RdGy(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(239, 138, 098), RGB(255, 255, 255), RGB(153, 153, 153) }; break; case 04: c = new[] { RGB(202, 000, 032), RGB(244, 165, 130), RGB(186, 186, 186), RGB(064, 064, 064) }; break; case 05: c = new[] { RGB(202, 000, 032), RGB(244, 165, 130), RGB(255, 255, 255), RGB(186, 186, 186), RGB(064, 064, 064) }; break; case 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; case 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; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Diverging; return new SCANPalette(c, "RdGy", @type, c.Length); } public static SCANPalette PuOr(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(241, 163, 064), RGB(247, 247, 247), RGB(153, 142, 195) }; break; case 04: c = new[] { RGB(230, 097, 001), RGB(253, 184, 099), RGB(178, 171, 210), RGB(094, 060, 153) }; break; case 05: c = new[] { RGB(230, 097, 001), RGB(253, 184, 099), RGB(247, 247, 247), RGB(178, 171, 210), RGB(094, 060, 153) }; break; case 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; case 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; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Diverging; return new SCANPalette(c, "PuOr", @type, c.Length); } /*** Qualitative ***/ public static SCANPalette Set2(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(102, 194, 165), RGB(252, 141, 098), RGB(141, 160, 203) }; break; case 04: c = new[] { RGB(102, 194, 165), RGB(252, 141, 098), RGB(141, 160, 203), RGB(231, 138, 195) }; break; case 05: c = new[] { RGB(102, 194, 165), RGB(252, 141, 098), RGB(141, 160, 203), RGB(231, 138, 195), RGB(166, 216, 084) }; break; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Qualitative; return new SCANPalette(c, "Set2", @type, c.Length); } public static SCANPalette Accent(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(127, 201, 127), RGB(190, 174, 212), RGB(253, 192, 134) }; break; case 04: c = new[] { RGB(127, 201, 127), RGB(190, 174, 212), RGB(253, 192, 134), RGB(255, 255, 153) }; break; case 05: c = new[] { RGB(127, 201, 127), RGB(190, 174, 212), RGB(253, 192, 134), RGB(255, 255, 153), RGB(056, 108, 176) }; break; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Qualitative; return new SCANPalette(c, "Accent", @type, c.Length); } public static SCANPalette Set1(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(228, 026, 028), RGB(055, 126, 184), RGB(077, 175, 074) }; break; case 04: c = new[] { RGB(228, 026, 028), RGB(055, 126, 184), RGB(077, 175, 074), RGB(152, 078, 163) }; break; case 05: c = new[] { RGB(228, 026, 028), RGB(055, 126, 184), RGB(077, 175, 074), RGB(152, 078, 163), RGB(255, 127, 000) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Qualitative; return new SCANPalette(c, "Set1", @type, c.Length); } public static SCANPalette Set3(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218) }; break; case 04: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218), RGB(251, 128, 114) }; break; case 05: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218), RGB(251, 128, 114), RGB(128, 177, 211) }; break; case 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; case 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; case 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; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Qualitative; return new SCANPalette(c, "Set3", @type, c.Length); } public static SCANPalette Dark2(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(027, 158, 119), RGB(217, 095, 002), RGB(117, 112, 179) }; break; case 04: c = new[] { RGB(027, 158, 119), RGB(217, 095, 002), RGB(117, 112, 179), RGB(231, 041, 138) }; break; case 05: c = new[] { RGB(027, 158, 119), RGB(217, 095, 002), RGB(117, 112, 179), RGB(231, 041, 138), RGB(102, 166, 030) }; break; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Qualitative; return new SCANPalette(c, "Dark2", @type, c.Length); } public static SCANPalette Paired(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138) }; break; case 04: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138), RGB(051, 160, 044) }; break; case 05: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138), RGB(051, 160, 044), RGB(251, 154, 153) }; break; case 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; case 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; case 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; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Qualitative; return new SCANPalette(c, "Paired", @type, c.Length); } public static SCANPalette Pastel2(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(179, 226, 205), RGB(253, 205, 172), RGB(203, 213, 232) }; break; case 04: c = new[] { RGB(179, 226, 205), RGB(253, 205, 172), RGB(203, 213, 232), RGB(244, 202, 228) }; break; case 05: c = new[] { RGB(179, 226, 205), RGB(253, 205, 172), RGB(203, 213, 232), RGB(244, 202, 228), RGB(230, 245, 201) }; break; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Qualitative; return new SCANPalette(c, "Pastel2", @type, c.Length); } public static SCANPalette Pastel1(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(251, 180, 174), RGB(179, 205, 227), RGB(204, 235, 197) }; break; case 04: c = new[] { RGB(251, 180, 174), RGB(179, 205, 227), RGB(204, 235, 197), RGB(222, 203, 228) }; break; case 05: c = new[] { RGB(251, 180, 174), RGB(179, 205, 227), RGB(204, 235, 197), RGB(222, 203, 228), RGB(254, 217, 166) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Qualitative; return new SCANPalette(c, "Pastel1", @type, c.Length); } /*** Sequential ***/ public static SCANPalette OrRd(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(254, 232, 200), RGB(253, 187, 132), RGB(227, 074, 051) }; break; case 04: c = new[] { RGB(254, 240, 217), RGB(253, 204, 138), RGB(252, 141, 089), RGB(215, 048, 031) }; break; case 05: c = new[] { RGB(254, 240, 217), RGB(253, 204, 138), RGB(252, 141, 089), RGB(227, 074, 051), RGB(179, 000, 0) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "OrRd", @type, c.Length); } public static SCANPalette PuBu(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(236, 231, 242), RGB(166, 189, 219), RGB(043, 140, 190) }; break; case 04: c = new[] { RGB(241, 238, 246), RGB(189, 201, 225), RGB(116, 169, 207), RGB(005, 112, 176) }; break; case 05: c = new[] { RGB(241, 238, 246), RGB(189, 201, 225), RGB(116, 169, 207), RGB(043, 140, 190), RGB(004, 090, 141) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "PuBu", @type, c.Length); } public static SCANPalette BuPu(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(224, 236, 244), RGB(158, 188, 218), RGB(136, 086, 167) }; break; case 04: c = new[] { RGB(237, 248, 251), RGB(179, 205, 227), RGB(140, 150, 198), RGB(136, 065, 157) }; break; case 05: c = new[] { RGB(237, 248, 251), RGB(179, 205, 227), RGB(140, 150, 198), RGB(136, 086, 167), RGB(129, 015, 124) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "BuPu", @type, c.Length); } public static SCANPalette Oranges(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(254, 230, 206), RGB(253, 174, 107), RGB(230, 085, 013) }; break; case 04: c = new[] { RGB(254, 237, 222), RGB(253, 190, 133), RGB(253, 141, 060), RGB(217, 071, 001) }; break; case 05: c = new[] { RGB(254, 237, 222), RGB(253, 190, 133), RGB(253, 141, 060), RGB(230, 085, 013), RGB(166, 054, 003) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "Oranges", @type, c.Length); } public static SCANPalette BuGn(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(229, 245, 249), RGB(153, 216, 201), RGB(044, 162, 095) }; break; case 04: c = new[] { RGB(237, 248, 251), RGB(178, 226, 226), RGB(102, 194, 164), RGB(035, 139, 069) }; break; case 05: c = new[] { RGB(237, 248, 251), RGB(178, 226, 226), RGB(102, 194, 164), RGB(044, 162, 095), RGB(000, 109, 044) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "BuGn", @type, c.Length); } public static SCANPalette YlOrBr(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(255, 247, 188), RGB(254, 196, 079), RGB(217, 095, 014) }; break; case 04: c = new[] { RGB(255, 255, 212), RGB(254, 217, 142), RGB(254, 153, 041), RGB(204, 076, 002) }; break; case 05: c = new[] { RGB(255, 255, 212), RGB(254, 217, 142), RGB(254, 153, 041), RGB(217, 095, 014), RGB(153, 052, 004) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "YlOrBr", @type, c.Length); } public static SCANPalette YlGn(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(247, 252, 185), RGB(173, 221, 142), RGB(049, 163, 084) }; break; case 04: c = new[] { RGB(255, 255, 204), RGB(194, 230, 153), RGB(120, 198, 121), RGB(035, 132, 067) }; break; case 05: c = new[] { RGB(255, 255, 204), RGB(194, 230, 153), RGB(120, 198, 121), RGB(049, 163, 084), RGB(000, 104, 055) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "YlGn", @type, c.Length); } public static SCANPalette Reds(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(254, 224, 210), RGB(252, 146, 114), RGB(222, 045, 038) }; break; case 04: c = new[] { RGB(254, 229, 217), RGB(252, 174, 145), RGB(251, 106, 074), RGB(203, 024, 029) }; break; case 05: c = new[] { RGB(254, 229, 217), RGB(252, 174, 145), RGB(251, 106, 074), RGB(222, 045, 038), RGB(165, 015, 021) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "Reds", @type, c.Length); } public static SCANPalette RdPu(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(253, 224, 221), RGB(250, 159, 181), RGB(197, 027, 138) }; break; case 04: c = new[] { RGB(254, 235, 226), RGB(251, 180, 185), RGB(247, 104, 161), RGB(174, 001, 126) }; break; case 05: c = new[] { RGB(254, 235, 226), RGB(251, 180, 185), RGB(247, 104, 161), RGB(197, 027, 138), RGB(122, 001, 119) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "RdPu", @type, c.Length); } public static SCANPalette Greens(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(229, 245, 224), RGB(161, 217, 155), RGB(049, 163, 084) }; break; case 04: c = new[] { RGB(237, 248, 233), RGB(186, 228, 179), RGB(116, 196, 118), RGB(035, 139, 069) }; break; case 05: c = new[] { RGB(237, 248, 233), RGB(186, 228, 179), RGB(116, 196, 118), RGB(049, 163, 084), RGB(000, 109, 044) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "Greens", @type, c.Length); } public static SCANPalette YlGnBu(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(237, 248, 177), RGB(127, 205, 187), RGB(044, 127, 184) }; break; case 04: c = new[] { RGB(255, 255, 204), RGB(161, 218, 180), RGB(065, 182, 196), RGB(034, 094, 168) }; break; case 05: c = new[] { RGB(255, 255, 204), RGB(161, 218, 180), RGB(065, 182, 196), RGB(044, 127, 184), RGB(037, 052, 148) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "YlGnBu", @type, c.Length); } public static SCANPalette Purples(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(239, 237, 245), RGB(188, 189, 220), RGB(117, 107, 177) }; break; case 04: c = new[] { RGB(242, 240, 247), RGB(203, 201, 226), RGB(158, 154, 200), RGB(106, 081, 163) }; break; case 05: c = new[] { RGB(242, 240, 247), RGB(203, 201, 226), RGB(158, 154, 200), RGB(117, 107, 177), RGB(084, 039, 143) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "Purples", @type, c.Length); } public static SCANPalette GnBu(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(224, 243, 219), RGB(168, 221, 181), RGB(067, 162, 202) }; break; case 04: c = new[] { RGB(240, 249, 232), RGB(186, 228, 188), RGB(123, 204, 196), RGB(043, 140, 190) }; break; case 05: c = new[] { RGB(240, 249, 232), RGB(186, 228, 188), RGB(123, 204, 196), RGB(067, 162, 202), RGB(008, 104, 172) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "GnBu", @type, c.Length); } public static SCANPalette Greys(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(240, 240, 240), RGB(189, 189, 189), RGB(099, 099, 099) }; break; case 04: c = new[] { RGB(247, 247, 247), RGB(204, 204, 204), RGB(150, 150, 150), RGB(082, 082, 082) }; break; case 05: c = new[] { RGB(247, 247, 247), RGB(204, 204, 204), RGB(150, 150, 150), RGB(099, 099, 099), RGB(037, 037, 037) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "Greys", @type, c.Length); } public static SCANPalette YlOrRd(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(255, 237, 160), RGB(254, 178, 076), RGB(240, 059, 032) }; break; case 04: c = new[] { RGB(255, 255, 178), RGB(254, 204, 092), RGB(253, 141, 060), RGB(227, 026, 028) }; break; case 05: c = new[] { RGB(255, 255, 178), RGB(254, 204, 092), RGB(253, 141, 060), RGB(240, 059, 032), RGB(189, 000, 038) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "YlOrRd", @type, c.Length); } public static SCANPalette PuRd(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(231, 225, 239), RGB(201, 148, 199), RGB(221, 028, 119) }; break; case 04: c = new[] { RGB(241, 238, 246), RGB(215, 181, 216), RGB(223, 101, 176), RGB(206, 018, 086) }; break; case 05: c = new[] { RGB(241, 238, 246), RGB(215, 181, 216), RGB(223, 101, 176), RGB(221, 028, 119), RGB(152, 000, 067) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "PuRd", @type, c.Length); } public static SCANPalette Blues(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(222, 235, 247), RGB(158, 202, 225), RGB(049, 130, 189) }; break; case 04: c = new[] { RGB(239, 243, 255), RGB(189, 215, 231), RGB(107, 174, 214), RGB(033, 113, 181) }; break; case 05: c = new[] { RGB(239, 243, 255), RGB(189, 215, 231), RGB(107, 174, 214), RGB(049, 130, 189), RGB(008, 081, 156) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "Blues", @type, c.Length); } public static SCANPalette PuBuGn(int size) { Color32[] c; switch (size) { case 03: c = new[] { RGB(236, 226, 240), RGB(166, 189, 219), RGB(028, 144, 153) }; break; case 04: c = new[] { RGB(246, 239, 247), RGB(189, 201, 225), RGB(103, 169, 207), RGB(002, 129, 138) }; break; case 05: c = new[] { RGB(246, 239, 247), RGB(189, 201, 225), RGB(103, 169, 207), RGB(028, 144, 153), RGB(001, 108, 089) }; break; case 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; case 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; case 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; default: 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; //default: goto case 03; } var @type = SCANPaletteKind.Sequential; return new SCANPalette(c, "PuBuGn", @type, c.Length); } } } ================================================ FILE: SCANsat/SCAN_Palettes/FixedColorPalettes.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCAN FixedColorSCANPalettes - static class for generating fixed size color SCANPalettes; see each SCANPalette for licensing information * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; using UnityEngine; using SCANsat.SCAN_Data; namespace SCANsat.SCAN_Palettes { public static class FixedColorPalettes { static Func RGB = (r, g, b) => new Color32(r, g, b, 255); /* Wikipedia color scheme licensed under Creative Commons Attribution-Share Alike 3.0 Unported license * Black Forest Scheme - Schwarzwald-topographie - http://commons.wikimedia.org/wiki/File:Schwarzwald-topographie.png * */ public static SCANPalette blackForest() { Color32[] c; c = 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) }; return new SCANPalette(c, "blackForest", SCANPaletteKind.Fixed, c.Length); } /* A freely available color scheme by Mark J. Fenbers * http://soliton.vm.bytemark.co.uk/pub/cpt-city/mjf/copying.html * */ public static SCANPalette departure() { Color32[] c; c = 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) }; return new SCANPalette(c, "departure", SCANPaletteKind.Fixed, c.Length); } /* Wikipedia color scheme licensed under Creative Commons Attribution-Share Alike 3.0 Unported license * http://commons.wikimedia.org/wiki/File:North_Rhine-Westphalia_Topography_01.svg * */ public static SCANPalette northRhine() { Color32[] c; c = 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) }; return new SCANPalette(c, "northRhine", SCANPaletteKind.Fixed, c.Length); } /* Wikipedia color scheme licensed under Creative Commons Attribution-Share Alike 3.0 Unported license * Mars color scheme by PZmaps - http://commons.wikimedia.org/wiki/User:PZmaps * */ public static SCANPalette mars() { Color32[] c; c = 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) }; return new SCANPalette(c, "mars", SCANPaletteKind.Fixed, c.Length); } //A public domain Wikipedia color scheme - http://soliton.vm.bytemark.co.uk/pub/cpt-city/wkp/template/index.html public static SCANPalette wiki2() { Color32[] c; c = 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) }; return new SCANPalette(c, "wiki2", SCANPaletteKind.Fixed, c.Length); } /* Wikipedia color scheme licensed under Creative Commons Attribution-Share Alike 3.0 Unported license * Plumbago Scheme- http://en.wikipedia.org/wiki/File:AYool_topography_15min.png * */ public static SCANPalette plumbago() { Color32[] c; c = 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) }; return new SCANPalette(c, "plumbago", SCANPaletteKind.Fixed, c.Length); } /* A freely available color scheme by Meghan Miller * http://soliton.vm.bytemark.co.uk/pub/cpt-city/cw/index.html * */ public static SCANPalette cw1_013() { Color32[] c; c = new[] { RGB(97, 65, 78), RGB(226, 87, 68), RGB(252, 255, 67), RGB(86, 118, 157), RGB(167, 214, 255) }; return new SCANPalette(c, "cw1_013", SCANPaletteKind.Fixed, c.Length); } /* A freely available color scheme from Arendal * http://soliton.vm.bytemark.co.uk/pub/cpt-city/arendal/copying.html * */ public static SCANPalette arctic() { Color32[] c; c = 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) }; return new SCANPalette(c, "arctic", SCANPaletteKind.Fixed, c.Length); } /* From the USGS Mercury MESSENGER topographic map * http://astrogeology.usgs.gov/search/map/Mercury/Topography/MESSENGER/Mercury-MESSENGER-DEM */ public static SCANPalette mercury() { Color32[] c; c = 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) }; return new SCANPalette(c, "mercury", SCANPaletteKind.Fixed, c.Length); } public static SCANPalette venus() { Color32[] c; c = 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) }; return new SCANPalette(c, "venus", SCANPaletteKind.Fixed, c.Length); } } } ================================================ FILE: SCANsat/SCAN_Palettes/Include/Original.cs ================================================ #region license /* * [Scientific Committee on Advanced Navigation] * S.C.A.N. Satellite * * SCAN Color Brewer Originals - Original Color Brewer palettes for reference and the methods for porting them to C# * * Copyright (c)2014 David Grandy ; * Copyright (c)2014 technogeeky ; * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details. */ #endregion using System; using System.Text.RegularExpressions; using Color32 = UnityEngine.Color32; using System.Collections.Generic; using System.Linq; using UnityEngine; namespace SCANsat.SCAN_Platform.Palettes.ColorBrewer.Include { public class Original { /* REGEX INSTRUCTIONS AND EXPLANTION * In order to do this transformation systematically from the source, I * resorted to judicious use of regular expressions. * * First, some (small) cosmetic things: * * 1. Make the labels all be 2 digits (must be run twice, for some reason): * (?[\(\)\,])(?\d\d)(?[\(\)\,]) * ${begin}0${twodigit}${end} * xn * * 2. Prefix all 1-digit color values with two 0's: * (?[\(\)\,])(?\d)(?[\(\)\,]) * ${begin}00${onedigit}${end} * xn * * 3. Prefix all 1-digit palette size values with a 0: * (?[\s]+)(?\d)(?[:]) * ${begin}0${onedigit}${end} * xn * * Using this, we can transform the input (which is not C# friendly in any way) to something * more satisfactory to our needs. * * NOTE: The index (ie, the 3: or 4: before each line) is redundant; it can be inferred * from the length of the color lists themselves. * * Now, for processing the overall file: * * 4. This regular expression matches key(int)-value(Color array), line by line: * (?\s+) (?\d+)(?\:)\ (?\[)(?[^\[.]+) (?\])(?,) * ${indent} case ${size}: c = new[] {${arr}}; break; * nx * * * 4a. Other alternative replace regexes I considered were: * ${indent} ${size}${op}${open}${arr}${close}${delim} * ${indent} Color32[] c${size} = {${arr}}; * * 5. [RGB to new Color32] I used the following regular expression: * 'rgb \( (?\d+), (?\d+), (?\d+) \)' * RGB(${r},${g},${b}) * nx * * * 6. This expression converts the name into a C# method decleration: * ^(?
\s+)(?[\w]+):\s+\{(?\s+)
		 * 		${pre}public static Color32[] ${name} (int size) {${post}Color32[] c;${post}switch (size) {${post}
		 *		mn
		 * 
		 * 7. For now, let's just get rid of all the properties:
		 * 		(?\s+)('properties':\ {(?\n)[^}]+})
		 * 		${indent} default: goto case 03;${indent}}
		 * 		nx
		 * 
		 * 7a. Convert the properties themselves into var < > = <>:
		 * 		'(?\w+)'(?:)(?\ )(?[^\n].+)
		 * 		var @${key} = ${value}
		 * 		nx
		 * 
		 * 8. Get rid of the starting var colorbrewer =
		 * 		^var colorbrewer = {(?\s+)
		 * 		 ${n}
		 * 
		 * 9. Change "}," to end the methods.
		 * 
		 * 10. Manually fixup the very last }, so that it has a return after it. :(
		 */

		public static void Main()
		{
			string input = fromText();

			var nx = RegexOptions.IgnorePatternWhitespace | RegexOptions.ExplicitCapture;
			var mn = RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace;

			var one = new Regex(@"(?[\(\)\,])(?\d\d)(?[\(\)\,])", nx);
			var two = new Regex(@"(?[\(\)\,])(?\d)(?[\(\)\,])", nx);
			var three = new Regex(@"(?[\s]+)(?\d)(?[:])", nx);
			var four = new Regex(@"(?\s+) (?\d+)(?\:)\ (?\[)(?[^\[.]+) (?\])(?,)", nx);
			var five = new Regex(@"'rgb \( (?\d+), (?\d+), (?\d+) \)'", nx);
			var six = new Regex(@"^(?
\s+)(?[\w]+):\s+\{(?\s+)", mn);
			var sevenA = new Regex(@"'(?\w+)'(?:)(?\ )(?[^\n].+)", nx);
			var sevenB = new Regex(@"\[(?\d)\]", nx);
			var sevenC = new Regex(@"(?\s+)('properties':\ {(?\n)(?[^}]+)})", nx);
			var eight = new Regex(@"^var colorbrewer = {(?\s+)");
			var nine = new Regex(@"(?\s+)(?},)(?\n)", nx);

			var after1 = one.Replace(input, @"${begin}0${twodigit}${end}");
			var after1a = one.Replace(after1, @"${begin}0${twodigit}${end}");
			var after2 = two.Replace(after1a, @"${begin}00${onedigit}${end}");
			var after3 = three.Replace(after2, @"${begin}0${onedigit}${end}");
			var after4 = four.Replace(after3, @"${indent} case ${size}: c = new[] {${arr}}; break;");
			var after5 = five.Replace(after4, @"RGB(${r},${g},${b})");
			var after6 = six.Replace(after5, @"${pre}public static Palette ${name} (int size) {${post}Color32[] c;${post}switch (size) {${post}");
			var after7a = sevenA.Replace(after6, @"var @${key} = ${value};");
			var after7b = sevenB.Replace(after7a, @"[${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}]");
			var after7c = sevenC.Replace(after7b, @"${indent} default: goto case 03;${indent}}${n}${stuff}");
			var after8 = eight.Replace(after7c, @"${n}");
			var 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}");


			IDictionary map = new Dictionary() {
				{"'div'",   "Palette.Kind.Diverging"},
				{"'seq'",   "Palette.Kind.Sequential"},
				{"'qual'",  "Palette.Kind.Qualitative"},
				{"= [",     "= new[] {"},
				{"],;",     "};"},
				{"];",      "};"},
				{",;",      ";"},
				{"copy",    "xerox"},
				{"screen",  "panel"},
			};
			var mapRegex = new Regex(String.Join("|", (string[])map.Keys.Select(k => Regex.Escape(k))));
			var afterMap = mapRegex.Replace(after9, m => map[m.Value]);
			Console.WriteLine(afterMap);
		}

		public static string fromText()
		{
			return
@"var colorbrewer = {
    /*** Diverging ***/
    Spectral: {
      3: ['rgb(252,141,89)', 'rgb(255,255,191)', 'rgb(153,213,148)'],
      4: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(171,221,164)', 'rgb(43,131,186)'],
      5: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(255,255,191)', 'rgb(171,221,164)', 'rgb(43,131,186)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'div',
        'blind': [2, 2, 2, 0, 0, 0, 0, 0, 0],
        'print': [1, 1, 1, 0, 0, 0, 0, 0, 0],
        'copy': [1, 1, 1, 0, 0, 0, 0, 0, 0],
        'screen': [1, 1, 2, 0, 0, 0, 0, 0, 0]
      }
    },
    RdYlGn: {
      3: ['rgb(252,141,89)', 'rgb(255,255,191)', 'rgb(145,207,96)'],
      4: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(166,217,106)', 'rgb(26,150,65)'],
      5: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(255,255,191)', 'rgb(166,217,106)', 'rgb(26,150,65)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'div',
        'blind': [2, 2, 2, 0, 0, 0, 0, 0, 0],
        'print': [1, 1, 1, 2, 0, 0, 0, 0, 0],
        'copy': [0],
        'screen': [1, 1, 1, 0, 0, 0, 0, 0, 0]
      }
    },
    RdBu: {
      3: ['rgb(239,138,98)', 'rgb(247,247,247)', 'rgb(103,169,207)'],
      4: ['rgb(202,0,32)', 'rgb(244,165,130)', 'rgb(146,197,222)', 'rgb(5,113,176)'],
      5: ['rgb(202,0,32)', 'rgb(244,165,130)', 'rgb(247,247,247)', 'rgb(146,197,222)', 'rgb(5,113,176)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'div',
        'blind': [1],
        'print': [1, 1, 1, 1, 0, 0, 0, 0, 0],
        'copy': [0],
        'screen': [1, 1, 1, 0, 0, 0, 0, 0, 0]
      }
    },
    PiYG: {
      3: ['rgb(233,163,201)', 'rgb(247,247,247)', 'rgb(161,215,106)'],
      4: ['rgb(208,28,139)', 'rgb(241,182,218)', 'rgb(184,225,134)', 'rgb(77,172,38)'],
      5: ['rgb(208,28,139)', 'rgb(241,182,218)', 'rgb(247,247,247)', 'rgb(184,225,134)', 'rgb(77,172,38)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'div',
        'blind': [1],
        'print': [1, 1, 2, 0, 0, 0, 0, 0, 0],
        'copy': [0],
        'screen': [1, 1, 2, 0, 0, 0, 0, 0, 0]
      }
    },
    PRGn: {
      3: ['rgb(175,141,195)', 'rgb(247,247,247)', 'rgb(127,191,123)'],
      4: ['rgb(123,50,148)', 'rgb(194,165,207)', 'rgb(166,219,160)', 'rgb(0,136,55)'],
      5: ['rgb(123,50,148)', 'rgb(194,165,207)', 'rgb(247,247,247)', 'rgb(166,219,160)', 'rgb(0,136,55)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'div',
        'blind': [1],
        'print': [1, 1, 1, 1, 0, 0, 0, 0, 0],
        'copy': [0],
        'screen': [1, 1, 2, 2, 0, 0, 0, 0, 0]
      }
    },
    RdYlBu: {
      3: ['rgb(252,141,89)', 'rgb(255,255,191)', 'rgb(145,191,219)'],
      4: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(171,217,233)', 'rgb(44,123,182)'],
      5: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(255,255,191)', 'rgb(171,217,233)', 'rgb(44,123,182)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'div',
        'blind': [1],
        'print': [1, 1, 1, 1, 2, 0, 0, 0, 0],
        'copy': [0],
        'screen': [1, 1, 1, 2, 0, 0, 0, 0, 0]
      }
    },
    BrBG: {
      3: ['rgb(216,179,101)', 'rgb(245,245,245)', 'rgb(90,180,172)'],
      4: ['rgb(166,97,26)', 'rgb(223,194,125)', 'rgb(128,205,193)', 'rgb(1,133,113)'],
      5: ['rgb(166,97,26)', 'rgb(223,194,125)', 'rgb(245,245,245)', 'rgb(128,205,193)', 'rgb(1,133,113)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'div',
        'blind': [1],
        'print': [1, 1, 1, 1, 0, 0, 0, 0, 0],
        'copy': [0],
        'screen': [1, 1, 1, 1, 0, 0, 0, 0, 0]
      }
    },
    RdGy: {
      3: ['rgb(239,138,98)', 'rgb(255,255,255)', 'rgb(153,153,153)'],
      4: ['rgb(202,0,32)', 'rgb(244,165,130)', 'rgb(186,186,186)', 'rgb(64,64,64)'],
      5: ['rgb(202,0,32)', 'rgb(244,165,130)', 'rgb(255,255,255)', 'rgb(186,186,186)', 'rgb(64,64,64)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'div',
        'blind': [2],
        'print': [1, 1, 1, 2, 0, 0, 0, 0, 0],
        'copy': [0],
        'screen': [1, 1, 2, 0, 0, 0, 0, 0, 0]
      }
    },
    PuOr: {
      3: ['rgb(241,163,64)', 'rgb(247,247,247)', 'rgb(153,142,195)'],
      4: ['rgb(230,97,1)', 'rgb(253,184,99)', 'rgb(178,171,210)', 'rgb(94,60,153)'],
      5: ['rgb(230,97,1)', 'rgb(253,184,99)', 'rgb(247,247,247)', 'rgb(178,171,210)', 'rgb(94,60,153)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'div',
        'blind': [1],
        'print': [1, 1, 2, 2, 0, 0, 0, 0, 0],
        'copy': [1, 1, 0, 0, 0, 0, 0, 0, 0],
        'screen': [1, 1, 1, 1, 0, 0, 0, 0, 0]
      }
    },
    /*** Qualitative ***/
    Set2: {
      3: ['rgb(102,194,165)', 'rgb(252,141,98)', 'rgb(141,160,203)'],
      4: ['rgb(102,194,165)', 'rgb(252,141,98)', 'rgb(141,160,203)', 'rgb(231,138,195)'],
      5: ['rgb(102,194,165)', 'rgb(252,141,98)', 'rgb(141,160,203)', 'rgb(231,138,195)', 'rgb(166,216,84)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'qual',
        'blind': [1, 2, 2, 2, 0, 0],
        'print': [1, 1, 1, 2, 2, 2],
        'copy': [0],
        'screen': [1, 1, 2, 2, 2, 2]
      }
    },
    Accent: {
      3: ['rgb(127,201,127)', 'rgb(190,174,212)', 'rgb(253,192,134)'],
      4: ['rgb(127,201,127)', 'rgb(190,174,212)', 'rgb(253,192,134)', 'rgb(255,255,153)'],
      5: ['rgb(127,201,127)', 'rgb(190,174,212)', 'rgb(253,192,134)', 'rgb(255,255,153)', 'rgb(56,108,176)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'qual',
        'blind': [2, 0, 0, 0, 0, 0],
        'print': [1, 1, 2, 2, 2, 2],
        'copy': [0],
        'screen': [1, 1, 1, 2, 2, 2]
      }
    },
    Set1: {
      3: ['rgb(228,26,28)', 'rgb(55,126,184)', 'rgb(77,175,74)'],
      4: ['rgb(228,26,28)', 'rgb(55,126,184)', 'rgb(77,175,74)', 'rgb(152,78,163)'],
      5: ['rgb(228,26,28)', 'rgb(55,126,184)', 'rgb(77,175,74)', 'rgb(152,78,163)', 'rgb(255,127,0)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'qual',
        'blind': [2],
        'print': [1],
        'copy': [0],
        'screen': [1]
      }
    },
    Set3: {
      3: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)'],
      4: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)', 'rgb(251,128,114)'],
      5: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)', 'rgb(251,128,114)', 'rgb(128,177,211)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'qual',
        'blind': [2, 2, 0, 0, 0, 0, 0, 0, 0, 0],
        'print': [1, 1, 1, 1, 1, 1, 2, 0, 0, 0],
        'copy': [1, 2, 2, 2, 2, 2, 2, 0, 0, 0],
        'screen': [1, 1, 1, 2, 2, 2, 0, 0, 0, 0]
      }
    },
    Dark2: {
      3: ['rgb(27,158,119)', 'rgb(217,95,2)', 'rgb(117,112,179)'],
      4: ['rgb(27,158,119)', 'rgb(217,95,2)', 'rgb(117,112,179)', 'rgb(231,41,138)'],
      5: ['rgb(27,158,119)', 'rgb(217,95,2)', 'rgb(117,112,179)', 'rgb(231,41,138)', 'rgb(102,166,30)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'qual',
        'blind': [1, 2, 2, 2, 0, 0],
        'print': [1],
        'copy': [0],
        'screen': [1]
      }
    },
    Paired: {
      3: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)'],
      4: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)', 'rgb(51,160,44)'],
      5: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)', 'rgb(51,160,44)', 'rgb(251,154,153)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'qual',
        'blind': [1, 1, 2, 2, 2, 2, 0, 0, 0],
        'print': [1, 1, 1, 1, 1, 2, 2, 2, 2],
        'copy': [0],
        'screen': [1, 1, 1, 1, 1, 1, 1, 1, 2]
      }
    },
    Pastel2: {
      3: ['rgb(179,226,205)', 'rgb(253,205,172)', 'rgb(203,213,232)'],
      4: ['rgb(179,226,205)', 'rgb(253,205,172)', 'rgb(203,213,232)', 'rgb(244,202,228)'],
      5: ['rgb(179,226,205)', 'rgb(253,205,172)', 'rgb(203,213,232)', 'rgb(244,202,228)', 'rgb(230,245,201)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'qual',
        'blind': [2, 0, 0, 0, 0, 0],
        'print': [2, 0, 0, 0, 0, 0],
        'copy': [0],
        'screen': [2, 2, 0, 0, 0, 0]
      }
    },
    Pastel1: {
      3: ['rgb(251,180,174)', 'rgb(179,205,227)', 'rgb(204,235,197)'],
      4: ['rgb(251,180,174)', 'rgb(179,205,227)', 'rgb(204,235,197)', 'rgb(222,203,228)'],
      5: ['rgb(251,180,174)', 'rgb(179,205,227)', 'rgb(204,235,197)', 'rgb(222,203,228)', 'rgb(254,217,166)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'qual',
        'blind': [2, 0, 0, 0, 0, 0, 0],
        'print': [2, 2, 2, 0, 0, 0, 0],
        'copy': [0],
        'screen': [2, 2, 2, 2, 0, 0, 0]
      }
    },
    /*** Sequential ***/
    OrRd: {
      3: ['rgb(254,232,200)', 'rgb(253,187,132)', 'rgb(227,74,51)'],
      4: ['rgb(254,240,217)', 'rgb(253,204,138)', 'rgb(252,141,89)', 'rgb(215,48,31)'],
      5: ['rgb(254,240,217)', 'rgb(253,204,138)', 'rgb(252,141,89)', 'rgb(227,74,51)', 'rgb(179,0,0)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 1, 0, 0, 0, 0, 0],
        'copy': [1, 1, 2, 0, 0, 0, 0],
        'screen': [1, 1, 1, 0, 0, 0, 0]
      }
    },
    PuBu: {
      3: ['rgb(236,231,242)', 'rgb(166,189,219)', 'rgb(43,140,190)'],
      4: ['rgb(241,238,246)', 'rgb(189,201,225)', 'rgb(116,169,207)', 'rgb(5,112,176)'],
      5: ['rgb(241,238,246)', 'rgb(189,201,225)', 'rgb(116,169,207)', 'rgb(43,140,190)', 'rgb(4,90,141)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 2, 2, 0, 0, 0, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 1, 2, 0, 0, 0, 0]
      }
    },
    BuPu: {
      3: ['rgb(224,236,244)', 'rgb(158,188,218)', 'rgb(136,86,167)'],
      4: ['rgb(237,248,251)', 'rgb(179,205,227)', 'rgb(140,150,198)', 'rgb(136,65,157)'],
      5: ['rgb(237,248,251)', 'rgb(179,205,227)', 'rgb(140,150,198)', 'rgb(136,86,167)', 'rgb(129,15,124)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 1, 2, 2, 0, 0, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 1, 1, 0, 0, 0, 0]
      }
    },
    Oranges: {
      3: ['rgb(254,230,206)', 'rgb(253,174,107)', 'rgb(230,85,13)'],
      4: ['rgb(254,237,222)', 'rgb(253,190,133)', 'rgb(253,141,60)', 'rgb(217,71,1)'],
      5: ['rgb(254,237,222)', 'rgb(253,190,133)', 'rgb(253,141,60)', 'rgb(230,85,13)', 'rgb(166,54,3)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 2, 0, 0, 0, 0, 0],
        'copy': [1, 2, 2, 0, 0, 0, 0],
        'screen': [1, 1, 1, 0, 0, 0, 0]
      }
    },
    BuGn: {
      3: ['rgb(229,245,249)', 'rgb(153,216,201)', 'rgb(44,162,95)'],
      4: ['rgb(237,248,251)', 'rgb(178,226,226)', 'rgb(102,194,164)', 'rgb(35,139,69)'],
      5: ['rgb(237,248,251)', 'rgb(178,226,226)', 'rgb(102,194,164)', 'rgb(44,162,95)', 'rgb(0,109,44)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 1, 2, 0, 0, 0, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 2, 0, 0, 0, 0, 0]
      }
    },
    YlOrBr: {
      3: ['rgb(255,247,188)', 'rgb(254,196,79)', 'rgb(217,95,14)'],
      4: ['rgb(255,255,212)', 'rgb(254,217,142)', 'rgb(254,153,41)', 'rgb(204,76,2)'],
      5: ['rgb(255,255,212)', 'rgb(254,217,142)', 'rgb(254,153,41)', 'rgb(217,95,14)', 'rgb(153,52,4)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 1, 2, 0, 0, 0, 0],
        'copy': [1, 2, 2, 0, 0, 0, 0],
        'screen': [1, 2, 0, 0, 0, 0, 0]
      }
    },
    YlGn: {
      3: ['rgb(247,252,185)', 'rgb(173,221,142)', 'rgb(49,163,84)'],
      4: ['rgb(255,255,204)', 'rgb(194,230,153)', 'rgb(120,198,121)', 'rgb(35,132,67)'],
      5: ['rgb(255,255,204)', 'rgb(194,230,153)', 'rgb(120,198,121)', 'rgb(49,163,84)', 'rgb(0,104,55)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 1, 1, 0, 0, 0, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 1, 1, 0, 0, 0, 0]
      }
    },
    Reds: {
      3: ['rgb(254,224,210)', 'rgb(252,146,114)', 'rgb(222,45,38)'],
      4: ['rgb(254,229,217)', 'rgb(252,174,145)', 'rgb(251,106,74)', 'rgb(203,24,29)'],
      5: ['rgb(254,229,217)', 'rgb(252,174,145)', 'rgb(251,106,74)', 'rgb(222,45,38)', 'rgb(165,15,21)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 2, 2, 0, 0, 0, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 2, 0, 0, 0, 0, 0]
      }
    },
    RdPu: {
      3: ['rgb(253,224,221)', 'rgb(250,159,181)', 'rgb(197,27,138)'],
      4: ['rgb(254,235,226)', 'rgb(251,180,185)', 'rgb(247,104,161)', 'rgb(174,1,126)'],
      5: ['rgb(254,235,226)', 'rgb(251,180,185)', 'rgb(247,104,161)', 'rgb(197,27,138)', 'rgb(122,1,119)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 1, 1, 2, 0, 0, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 1, 1, 0, 0, 0, 0]
      }
    },
    Greens: {
      3: ['rgb(229,245,224)', 'rgb(161,217,155)', 'rgb(49,163,84)'],
      4: ['rgb(237,248,233)', 'rgb(186,228,179)', 'rgb(116,196,118)', 'rgb(35,139,69)'],
      5: ['rgb(237,248,233)', 'rgb(186,228,179)', 'rgb(116,196,118)', 'rgb(49,163,84)', 'rgb(0,109,44)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 0, 0, 0, 0, 0, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 2, 0, 0, 0, 0, 0]
      }
    },
    YlGnBu: {
      3: ['rgb(237,248,177)', 'rgb(127,205,187)', 'rgb(44,127,184)'],
      4: ['rgb(255,255,204)', 'rgb(161,218,180)', 'rgb(65,182,196)', 'rgb(34,94,168)'],
      5: ['rgb(255,255,204)', 'rgb(161,218,180)', 'rgb(65,182,196)', 'rgb(44,127,184)', 'rgb(37,52,148)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 1, 1, 2, 2, 2, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 1, 2, 0, 0, 0, 0]
      }
    },
    Purples: {
      3: ['rgb(239,237,245)', 'rgb(188,189,220)', 'rgb(117,107,177)'],
      4: ['rgb(242,240,247)', 'rgb(203,201,226)', 'rgb(158,154,200)', 'rgb(106,81,163)'],
      5: ['rgb(242,240,247)', 'rgb(203,201,226)', 'rgb(158,154,200)', 'rgb(117,107,177)', 'rgb(84,39,143)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 0, 0, 0, 0, 0, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 0, 0, 0, 0, 0, 0]
      }
    },
    GnBu: {
      3: ['rgb(224,243,219)', 'rgb(168,221,181)', 'rgb(67,162,202)'],
      4: ['rgb(240,249,232)', 'rgb(186,228,188)', 'rgb(123,204,196)', 'rgb(43,140,190)'],
      5: ['rgb(240,249,232)', 'rgb(186,228,188)', 'rgb(123,204,196)', 'rgb(67,162,202)', 'rgb(8,104,172)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 1, 1, 2, 2, 2, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 1, 2, 0, 0, 0, 0]
      }
    },
    Greys: {
      3: ['rgb(240,240,240)', 'rgb(189,189,189)', 'rgb(99,99,99)'],
      4: ['rgb(247,247,247)', 'rgb(204,204,204)', 'rgb(150,150,150)', 'rgb(82,82,82)'],
      5: ['rgb(247,247,247)', 'rgb(204,204,204)', 'rgb(150,150,150)', 'rgb(99,99,99)', 'rgb(37,37,37)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 1, 2, 0, 0, 0, 0],
        'copy': [1, 0, 0, 0, 0, 0, 0],
        'screen': [1, 2, 0, 0, 0, 0, 0]
      }
    },
    YlOrRd: {
      3: ['rgb(255,237,160)', 'rgb(254,178,76)', 'rgb(240,59,32)'],
      4: ['rgb(255,255,178)', 'rgb(254,204,92)', 'rgb(253,141,60)', 'rgb(227,26,28)'],
      5: ['rgb(255,255,178)', 'rgb(254,204,92)', 'rgb(253,141,60)', 'rgb(240,59,32)', 'rgb(189,0,38)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 1, 2, 2, 0, 0, 0],
        'copy': [1, 2, 2, 0, 0, 0, 0],
        'screen': [1, 2, 2, 0, 0, 0, 0]
      }
    },
    PuRd: {
      3: ['rgb(231,225,239)', 'rgb(201,148,199)', 'rgb(221,28,119)'],
      4: ['rgb(241,238,246)', 'rgb(215,181,216)', 'rgb(223,101,176)', 'rgb(206,18,86)'],
      5: ['rgb(241,238,246)', 'rgb(215,181,216)', 'rgb(223,101,176)', 'rgb(221,28,119)', 'rgb(152,0,67)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 1, 1, 0, 0, 0, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 1, 1, 0, 0, 0, 0]
      }
    },
    Blues: {
      3: ['rgb(222,235,247)', 'rgb(158,202,225)', 'rgb(49,130,189)'],
      4: ['rgb(239,243,255)', 'rgb(189,215,231)', 'rgb(107,174,214)', 'rgb(33,113,181)'],
      5: ['rgb(239,243,255)', 'rgb(189,215,231)', 'rgb(107,174,214)', 'rgb(49,130,189)', 'rgb(8,81,156)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 2, 0, 0, 0, 0, 0],
        'copy': [1, 0, 0, 0, 0, 0, 0],
        'screen': [1, 2, 0, 0, 0, 0, 0]
      }
    },
    PuBuGn: {
      3: ['rgb(236,226,240)', 'rgb(166,189,219)', 'rgb(28,144,153)'],
      4: ['rgb(246,239,247)', 'rgb(189,201,225)', 'rgb(103,169,207)', 'rgb(2,129,138)'],
      5: ['rgb(246,239,247)', 'rgb(189,201,225)', 'rgb(103,169,207)', 'rgb(28,144,153)', 'rgb(1,108,89)'],
      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)'],
      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)'],
      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)'],
      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)'],
      'properties': {
        'type': 'seq',
        'blind': [1],
        'print': [1, 2, 2, 0, 0, 0, 0],
        'copy': [1, 2, 0, 0, 0, 0, 0],
        'screen': [1, 1, 2, 0, 0, 0, 0]
      }
    }
";
		}
	}
}



================================================
FILE: SCANsat/SCAN_Palettes/SCANPalette.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANPalette - Class to hold color palette info
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using UnityEngine;
using SCANsat.SCAN_Platform;

namespace SCANsat.SCAN_Palettes
{
	public class SCANPalette : SCAN_ConfigNodeStorage
	{
		[Persistent]
		private string Colors;

		private int _count;
		private int _hash;
		private string _name;
		private SCANPaletteKind _kind;
		private Color32[] _colors;
		private Color32[] _colorsReverse;

		public int Count
		{
			get { return _count; }
		}

		public int Hash
		{
			get { return _hash; }
		}

		public string Name
		{
			get { return _name; }
			set
			{
				_name = value;

				_hash = (_name + _count).GetHashCode();
			}
		}

		public SCANPaletteKind Kind
		{
			get { return _kind; }
			set { _kind = value; }
		}

		public Color32[] ColorsArray
		{
			get { return _colors; }
		}

		public Color32[] ColorsReverse
		{
			get { return _colorsReverse; }
		}

		public SCANPalette() { }

		public SCANPalette(Color32[] colors, string name, SCANPaletteKind kind, int size)
		{
			_name = name;
			_count = size;
			_kind = kind;
			_hash = (name + size).GetHashCode();

			_colors = colors;
			_colorsReverse = new Color32[_count];
			_colors.CopyTo(_colorsReverse, 0);
			Array.Reverse(_colorsReverse);
		}

		public override void OnDecodeFromConfigNode()
		{
			string[] split = Colors.Split('|');

			_count = split.Length;
			_colors = new Color32[_count];

			for (int i = 0; i < _count; i++)
			{
				string color = split[i];
				Color32 c = Color.clear;

				try
				{
					c = ConfigNode.ParseColor32(color);
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Error while parsing SCANsat palette colors - {0}\n{1}", color, e);
				}

				_colors[i] = c;
			}

			_colorsReverse = new Color32[_count];
			_colors.CopyTo(_colorsReverse, 0);
			Array.Reverse(_colorsReverse);
		}

		public override void OnEncodeToConfigNode()
		{
			string[] colors = new string[_colors.Length];

			for (int i = 0; i < _colors.Length; i++)
			{
				Color32 c = _colors[i];

				string s = string.Format("{0},{1},{2},{3}", c.r, c.g, c.b, c.a);

				colors[i] = s;
			}

			Colors = string.Join("|", colors);
		}
	}
}


================================================
FILE: SCANsat/SCAN_Palettes/SCANPaletteGroup.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANPaletteGroup - Class to hold info on a group of color palettes
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using SCANsat.SCAN_Platform;

namespace SCANsat.SCAN_Palettes
{
	public class SCANPaletteGroup : SCAN_ConfigNodeStorage
	{
		[Persistent]
		private string name;
		[Persistent]
		private List Palettes = new List();

		private DictionaryValueList MasterPaletteList = new DictionaryValueList();

		private SCANPaletteKind _kind;

		public SCANPaletteGroup() { }

		public SCANPaletteGroup(string _name, SCANPaletteKind kind)
		{
			name = _name;
			_kind = kind;
		}

		public SCANPaletteGroup(string _name, SCANPaletteKind kind, SCANPalette palette)
		{
			name = _name;
			_kind = kind;

			Palettes.Add(palette);

			if (!MasterPaletteList.Contains(palette.Count))
			{
				MasterPaletteList.Add(palette.Count, palette);
			}
		}

		public SCANPaletteKind Kind
		{
			get { return _kind; }
			set { _kind = value; }
		}

		public string PaletteName
		{
			get { return name; }
		}

		public SCANPalette GetPalette(int length)
		{
			if (_kind == SCANPaletteKind.Fixed && MasterPaletteList.Count > 0)
			{
				return MasterPaletteList.At(0);
			}

			if (MasterPaletteList.Contains(length))
			{
				return MasterPaletteList[length];
			}

			if (MasterPaletteList.Count > 0)
			{
				int max = MasterPaletteList.Values.Max(p => p.Count);

				if (MasterPaletteList.Contains(max))
				{
					return MasterPaletteList[max];
				}

				return MasterPaletteList.At(0);
			}

			return null;
		}

		public void SaveDefaultPalettes()
		{
			Palettes = new List();

			int count = 1;

			try
			{
				switch (_kind)
				{
					case SCANPaletteKind.Fixed:
						if (name != "Default")
						{
							var fixedPalette = typeof(FixedColorPalettes);
							var fixedPaletteMethod = fixedPalette.GetMethod(name);
							var fixedColorPalette = fixedPaletteMethod.Invoke(null, null);
							Palettes.Add((SCANPalette)fixedColorPalette);
							OnDecodeFromConfigNode();
						}
						return;
					case SCANPaletteKind.Diverging:
						count = 11;
						break;
					case SCANPaletteKind.Qualitative:
						count = 12;
						break;
					case SCANPaletteKind.Sequential:
						count = 9;
						break;
					default:
						break;
				}

				var brewerPalette = typeof(BrewerPalettes);
				var brewerPaletteMethod = brewerPalette.GetMethod(name);

				for (int i = 3; i <= count; i++)
				{
					var brewerColorPalette = brewerPaletteMethod.Invoke(null, new object[] { i });
					Palettes.Add((SCANPalette)brewerColorPalette);
				}
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error Generating Color Palettes: {0}", e);
			}

			OnDecodeFromConfigNode();
		}

		public void setPaletteKind(SCANPaletteKind kind)
		{
			for (int i = MasterPaletteList.Count - 1; i >= 0; i--)
			{
				SCANPalette p = MasterPaletteList.At(i);

				p.Kind = kind;
			}
		}

		public override void OnDecodeFromConfigNode()
		{
			try
			{
				for (int i = Palettes.Count - 1; i >= 0; i--)
				{
					SCANPalette p = Palettes[i];

					if (p == null)
					{
						continue;
					}

					if (!MasterPaletteList.Contains(p.Count))
					{
						MasterPaletteList.Add(p.Count, p);
					}

					p.Name = name;
				}
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error while loading SCANsat palette config settings: {0}", e);
			}
		}

		public override void OnEncodeToConfigNode()
		{
			try
			{
				Palettes = MasterPaletteList.Values.ToList();
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error while saving SCANsat palette config data: {0}", e);
			}
		}
	}
}


================================================
FILE: SCANsat/SCAN_Palettes/SCANPaletteKind.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANPaletteKind - Enum to define color palette types
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;

namespace SCANsat.SCAN_Palettes
{
	public enum SCANPaletteKind
	{
		Diverging,
		Qualitative,
		Sequential,
		Fixed,
		Unknown,
	}
}


================================================
FILE: SCANsat/SCAN_Palettes/SCANPaletteType.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANPaletteType - Class to hold info on related color palette types
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using SCANsat.SCAN_Platform;

namespace SCANsat.SCAN_Palettes
{
	public class SCANPaletteType : SCAN_ConfigNodeStorage
	{
		[Persistent]
		private string name;
		[Persistent]
		private List PaletteGroups = new List();

		private DictionaryValueList MasterPaletteGroupList = new DictionaryValueList();

		private SCANPaletteKind _kind;
		private Texture2D[] _paletteSwatch;
		private int _swatchLength = -1;

		public SCANPaletteType() { }

		public SCANPaletteType(string type)
		{
			name = type;

			try
			{
				_kind = (SCANPaletteKind)Enum.Parse(typeof(SCANPaletteKind), type);
			}
			catch (Exception e)
			{
				_kind = SCANPaletteKind.Unknown;
				SCANUtil.SCANlog("Error assigning SCANsat palette type - Type: {0}\n{1}", type, e);
			}
		}

		public SCANPaletteKind Kind
		{
			get { return _kind; }
		}

		public Texture2D[] PaletteSwatch
		{
			get { return _paletteSwatch; }
		}

		public int Count
		{
			get { return MasterPaletteGroupList.Count; }
		}

		public void SaveDefaultPalettes()
		{
			PaletteGroups = new List();

			switch (_kind)
			{
				case SCANPaletteKind.Diverging:
					PaletteGroups.Add(new SCANPaletteGroup("Spectral", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("RdYlGn", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("RdBu", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("PiYG", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("PRGn", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("RdYlBu", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("BrBG", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("RdGy", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("PuOr", _kind));
					break;
				case SCANPaletteKind.Qualitative:
					PaletteGroups.Add(new SCANPaletteGroup("Set2", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("Accent", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("Set1", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("Set3", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("Dark2", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("Paired", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("Pastel2", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("Pastel1", _kind));
					break;
				case SCANPaletteKind.Sequential:
					PaletteGroups.Add(new SCANPaletteGroup("OrRd", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("BuPu", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("BuGn", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("YlOrBr", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("YlGn", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("Reds", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("RdPu", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("YlGnBu", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("YlOrRd", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("PuRd", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("Blues", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("PuBuGn", _kind));
					break;
				case SCANPaletteKind.Fixed:
					PaletteGroups.Add(new SCANPaletteGroup("blackForest", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("mars", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("departure", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("northRhine", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("wiki2", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("plumbago", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("cw1_013", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("arctic", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("mercury", _kind));
					PaletteGroups.Add(new SCANPaletteGroup("venus", _kind));
					PaletteGroups.Add(SCAN_Palette_Config.DefaultPalette);
					break;
				default:
					break;
			}

			for (int i = 0; i < PaletteGroups.Count; i++)
			{
				PaletteGroups[i].SaveDefaultPalettes();
			}

			OnDecodeFromConfigNode();
		}

		public void AddPaletteGroup(SCANPaletteGroup group)
		{

		}

		public SCANPaletteGroup GetPaletteGroup(string name)
		{
			if (name == "Default" || name == "default")
			{
				return SCAN_Palette_Config.DefaultPalette;
			}

			for (int i = MasterPaletteGroupList.Count - 1; i >= 0; i--)
			{
				SCANPaletteGroup group = MasterPaletteGroupList.At(i);

				if (group.PaletteName != name)
				{
					continue;
				}

				return group;
			}

			return null;
		}

		public string[] GetGroupNames()
		{
			string[] names = new string[Count];

			for (int i = 0; i < MasterPaletteGroupList.Count; i++)
			{
				names[i] = MasterPaletteGroupList.At(i).PaletteName;
			}

			return names;
		}

		public SCANPaletteGroup GetFirstGroup()
		{
			if (MasterPaletteGroupList.Count > 0)
			{
				return MasterPaletteGroupList.At(0);
			}

			return null;
		}

		public List GetPaletteList(int length)
		{
			List palettes = new List();

			for (int i = 0; i < MasterPaletteGroupList.Count; i++)
			{
				SCANPaletteGroup group = MasterPaletteGroupList.At(i);

				SCANPalette palette = group.GetPalette(length);

				if (palette != null)
				{
					palettes.Add(palette);
				}
			}

			return palettes;
		}

		public Texture2D[] GenerateSwatches(int length)
		{
			if (_paletteSwatch == null || length != _swatchLength)
			{
				_paletteSwatch = new Texture2D[MasterPaletteGroupList.Count];

				for (int i = 0; i < MasterPaletteGroupList.Count; i++)
				{
					SCANPalette palette = MasterPaletteGroupList.At(i).GetPalette(length);

					int k = 0;
					int m = 120;
					int paletteSize = palette.Count;

					_swatchLength = length;

					if (paletteSize == 11)
					{
						m = 121;
					}
					else if (paletteSize == 18)
					{
						m = 126;
					}
					else if (paletteSize == 9)
					{
						m = 117;
					}
					else if (paletteSize == 7)
					{
						m = 119;
					}
					else if (paletteSize == 34)
					{
						m = 136;
					}
					else if (m % paletteSize != 0)
					{
						int s = 115;

						while (s % paletteSize != 0)
						{
							s++;
						}

						m = s;
					}

					Texture2D t = new Texture2D(m, 1);

					Color32[] pix = new Color32[m];
					int sW = m / paletteSize;

					for (int j = 0; j < m; j++)
					{
						if (j % sW == 0)
						{
							k++;
						}

						pix[j] = palette.ColorsArray[k - 1];
					}

					t.SetPixels32(pix);
					t.Apply();
					_paletteSwatch[i] = t;
				}
				return _paletteSwatch;
			}
			else
			{
				return _paletteSwatch;
			}
		}

		public override void OnDecodeFromConfigNode()
		{
			try
			{
				_kind = (SCANPaletteKind)Enum.Parse(typeof(SCANPaletteKind), name);
			}
			catch (Exception e)
			{
				_kind = SCANPaletteKind.Unknown;
				SCANUtil.SCANlog("Error assigning SCANsat palette type - Type: {0}\n{1}", name, e);
			}

			try
			{
				for (int i = PaletteGroups.Count - 1; i >= 0; i--)
				{
					SCANPaletteGroup p = PaletteGroups[i];

					if (p == null)
					{
						continue;
					}

					if (!MasterPaletteGroupList.Contains(p.PaletteName))
					{
						MasterPaletteGroupList.Add(p.PaletteName, p);
					}

					p.Kind = _kind;

					p.setPaletteKind(_kind);
				}

				if (_kind == SCANPaletteKind.Fixed)
				{
					if (!MasterPaletteGroupList.Contains("Default"))
					{
						MasterPaletteGroupList.Add("Default", SCAN_Palette_Config.DefaultPalette);
					}
				}
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error while loading SCANsat palette config settings: {0}", e);
			}
		}

		public override void OnEncodeToConfigNode()
		{
			base.OnEncodeToConfigNode();
		}
	}
}


================================================
FILE: SCANsat/SCAN_PartModules/SCANRPMStorage.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANsat - Raster Prop Monitor persistent storage
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using SCANsat.SCAN_UI;
using SCANsat.SCAN_Platform.Extensions.ConfigNodes;

namespace SCANsat.SCAN_PartModules
{
	public class SCANRPMStorage : PartModule
	{
		internal List RPMList = new List();

		public override void OnLoad(ConfigNode node)
		{
			if (node.HasNode("SCANsatRPM"))
			{
				ConfigNode RPMPersistence = node.GetNode("SCANsatRPM");
				foreach (ConfigNode RPMNode in RPMPersistence.GetNodes("Prop"))
				{
					string id = RPMNode.parse("Prop ID", "");

					if (string.IsNullOrEmpty(id))
					{
						continue;
					}

					int m = RPMNode.parse("Mode", (int)0);
					int z = RPMNode.parse("Zoom", (int)0);
					int r = RPMNode.parse("Resource", (int)0);
					bool c = RPMNode.parse("Color", true);
					bool lines = RPMNode.parse("Lines", true);
					bool anom = RPMNode.parse("Anomalies", true);
					bool resource = RPMNode.parse("DrawResource", true);


					RPMList.Add(new RPMPersistence(id, m, c, z, lines, anom, resource, r));
				}
			}
		}

		public override void OnSave(ConfigNode node)
		{
			if (RPMList.Count > 0)
			{
				ConfigNode RPMPersistence = new ConfigNode("SCANsatRPM");
				foreach (RPMPersistence RPMMFD in RPMList)
				{
					ConfigNode RPMProp = new ConfigNode("Prop");
					RPMProp.AddValue("Prop ID", RPMMFD.RPMID);
					RPMProp.AddValue("Mode", RPMMFD.RPMMode);
					RPMProp.AddValue("Zoom", RPMMFD.RPMZoom);
					RPMProp.AddValue("Resource", RPMMFD.RPMResource);
					RPMProp.AddValue("Color", RPMMFD.RPMColor);
					RPMProp.AddValue("Lines", RPMMFD.RPMLines);
					RPMProp.AddValue("Anomalies", RPMMFD.RPMAnomaly);
					RPMProp.AddValue("DrawResource", RPMMFD.RPMDrawResource);
					RPMPersistence.AddNode(RPMProp);
				}
				node.AddNode(RPMPersistence);
			}
		}

	}
}


================================================
FILE: SCANsat/SCAN_PartModules/SCANexperiment.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANexperiment - Part module for controlling science experiments
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using SCANsat.SCAN_Data;
using KSP.UI.Screens.Flight.Dialogs;
using KSP.Localization;

namespace SCANsat.SCAN_PartModules
{
	public class SCANexperiment : PartModule, IScienceDataContainer
	{
		[KSPField]
		public string experimentType;

		private SCANexperimentType expType;
		private List storedData = new List();
		private ExperimentsResultDialog expDialog = null;

		public override void OnStart(PartModule.StartState state)
		{
			base.OnStart(state);

			try
			{
				expType = (SCANexperimentType)Enum.Parse(typeof(SCANexperimentType), experimentType);
			}
			catch (Exception e)
			{
				expType = SCANexperimentType.Nothing;
				SCANUtil.SCANlog("Error assigning SCANsat experiment type - Type: {0}\n{1}", experimentType, e);
			}

			if (expType == SCANexperimentType.Nothing)
			{
				Events["analyze"].active = false;
				Actions["analyzeData"].active = false;
			}
			else
			{
				Events["analyze"].active = true;
				Actions["analyzeData"].active = false;
			}

			UpdateEventNames();
		}

		private void UpdateEventNames()
		{
			string dataType = "";

			switch (expType)
			{
				case SCANexperimentType.SCANsatAltimetryLoRes:
					dataType = "RADAR";
					break;
				case SCANexperimentType.SCANsatAltimetryHiRes:
					dataType = "SAR";
					break;
				case SCANexperimentType.SCANsatBiomeAnomaly:
					dataType = "Multispectral";
					break;
				case SCANexperimentType.SCANsatResources:
					dataType = "Resources";
					break;
				case SCANexperimentType.SCANsatVisual:
					dataType = "Visual";
					break;
			}

			Events["analyze"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_SCANsat_Analyze"), dataType);
			Events["reviewEvent"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_502204"), dataType);
			Events["EVACollect"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_6004057"), dataType);
			Actions["analyzeData"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_SCANsat_Analyze"), dataType);
		}

		private void Update()
		{
			Events["reviewEvent"].active = storedData.Count > 0;
			Events["EVACollect"].active = storedData.Count > 0;
		}

		public override void OnLoad(ConfigNode node)
		{
			if (node.HasNode("ScienceData"))
			{
				foreach (ConfigNode storedDataNode in node.GetNodes("ScienceData"))
				{
					ScienceData data = new ScienceData(storedDataNode);
					storedData.Add(data);
				}
			}
		}

		public override void OnSave(ConfigNode node)
		{
			node.RemoveNodes("ScienceData");

			foreach (ScienceData SCANData in storedData)
			{
				ConfigNode storedDataNode = node.AddNode("ScienceData");
				SCANData.Save(storedDataNode);
			}
		}


		[KSPEvent(guiActiveUnfocused = true, guiName = "Collect Stored Data", externalToEVAOnly = true, unfocusedRange = 1.5f, active = false)]
		public void EVACollect()
		{
			List EVACont = FlightGlobals.ActiveVessel.FindPartModulesImplementing();
			if (storedData.Count > 0)
			{
				if (EVACont.First().StoreData(new List() { this }, false))
				{
					foreach (ScienceData data in storedData)
					{
						DumpData(data);
					}
				}
			}
		}

		[KSPEvent(guiActive = true, guiName = "Analyze Data", groupName = "scaninfo", active = true)]
		public void analyze()
		{
			gatherScienceData();
		}

		[KSPAction("Analyze Data")]
		public void analyzeData(KSPActionParam param)
		{
			gatherScienceData();
		}

		public void gatherScienceData(bool silent = false)
		{
			makeScienceData();

			if (!silent)
			{
				ReviewData();
			}
		}

		[KSPEvent(guiActive = true, guiName = "Review Data", groupName = "scaninfo", active = false)]
		public void reviewEvent()
		{
			ReviewData();
		}

		private void makeScienceData()
		{
			storedData.Clear();
			ScienceData sd = getAvailableScience();
			if (sd == null)
			{
				return;
			}

			storedData.Add(sd);
		}

		private ScienceData getAvailableScience()
		{
			SCANdata data = SCANUtil.getData(vessel.mainBody);

			if (data == null)
			{
				return null;
			}

			ScienceData sd = null;
			ScienceExperiment se = null;
			ScienceSubject su = null;
			float coverage = 0;
			float multiplier = 1f;

			switch (expType)
			{
				case SCANexperimentType.SCANsatAltimetryLoRes:
					if (vessel.mainBody.pqsController == null)
					{
						multiplier = 0.5f;
					}

					coverage = (float)SCANUtil.getCoveragePercentage(data, SCANtype.AltimetryLoRes);

					coverage = GetScienceCoverage(expType.ToString(), ref se, ref su, coverage, multiplier);
					break;
				case SCANexperimentType.SCANsatAltimetryHiRes:
					if (vessel.mainBody.pqsController == null)
					{
						multiplier = 0.5f;
					}

					coverage = (float)SCANUtil.getCoveragePercentage(data, SCANtype.AltimetryHiRes);

					coverage = GetScienceCoverage(expType.ToString(), ref se, ref su, coverage, multiplier);
					break;
				case SCANexperimentType.SCANsatBiomeAnomaly:
					if (vessel.mainBody.BiomeMap == null)
					{
						multiplier = 0.5f;
					}

					coverage = (float)SCANUtil.getCoveragePercentage(data, SCANtype.Biome);

					coverage = GetScienceCoverage(expType.ToString(), ref se, ref su, coverage, multiplier);
					break;
				case SCANexperimentType.SCANsatResources:
					coverage = (float)SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes);

					coverage = GetScienceCoverage(expType.ToString(), ref se, ref su, coverage, multiplier);
					break;
				case SCANexperimentType.SCANsatVisual:
					coverage = (float)SCANUtil.getCoveragePercentage(data, SCANtype.VisualHiRes);

					coverage = GetScienceCoverage(expType.ToString(), ref se, ref su, coverage, multiplier);
					break;
			}

			if (su == null || se == null)
			{
				return null;
			}

			su.scientificValue = 1;

			coverage = Math.Max(0, (coverage - su.science));
			coverage /= su.subjectValue;

			if (coverage <= 0)
			{
				coverage = 0.0000001f;
			}

			string title = Localizer.Format("#autoLOC_301689", se.experimentTitle, vessel.mainBody.displayName.LocalizeBodyName());

			su.title = title;

			sd = new ScienceData(coverage * su.dataScale, 1, 0, su.id, su.title, false, part.flightID);
			return sd;
		}

		private float GetScienceCoverage(string scienceID, ref ScienceExperiment se, ref ScienceSubject su, float coverage, float mult)
		{
			se = ResearchAndDevelopment.GetExperiment(scienceID);

			if (se == null)
			{
				return 0;
			}

			su = ResearchAndDevelopment.GetExperimentSubject(se, ExperimentSituations.InSpaceHigh, vessel.mainBody, "", "");

			if (su == null)
			{
				return 0;
			}

			su.scienceCap *= mult;

			if (coverage > 97.5)
			{
				coverage = 100;
			}
			else if (coverage < 30)
			{
				coverage = 0;
			}

			coverage /= 100;

			coverage *= su.scienceCap;

			return coverage;
		}

		public ScienceData[] GetData()
		{
			return storedData.ToArray();
		}

		public void ReturnData(ScienceData data)
		{
			if (data == null)
			{
				return;
			}

			storedData.Clear();

			storedData.Add(data);
		}

		private void KeepData(ScienceData data)
		{
			expDialog = null;
		}

		private void TransmitData(ScienceData data)
		{
			expDialog = null;

			IScienceDataTransmitter bestTransmitter = ScienceUtil.GetBestTransmitter(vessel);

			if (bestTransmitter != null)
			{
				bestTransmitter.TransmitData(new List { data });
				DumpData(data);
			}
			else if (CommNet.CommNetScenario.CommNetEnabled)
			{
				ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_237738"), 3f, ScreenMessageStyle.UPPER_CENTER);
			}
			else
			{
				ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_237740"), 3f, ScreenMessageStyle.UPPER_CENTER);
			}
		}

		private void LabData(ScienceData data)
		{
			expDialog = null;
			ScienceLabSearch labSearch = new ScienceLabSearch(vessel, data);

			if (labSearch.NextLabForDataFound)
			{
				StartCoroutine(labSearch.NextLabForData.ProcessData(data, null));
				DumpData(data);
			}
			else
			{
				labSearch.PostErrorToScreen();
			}
		}

		public void DumpData(ScienceData data)
		{
			expDialog = null;

			if (storedData.Contains(data))
			{
				storedData.Remove(data);
			}
		}

		public void ReviewDataItem(ScienceData sd)
		{
			ReviewData();
		}

		public void ReviewData()
		{
			if (storedData.Count < 1)
			{
				return;
			}

			expDialog = null;
			ScienceData sd = storedData[0];
			expDialog = ExperimentsResultDialog.DisplayResult(
				new ExperimentResultDialogPage(
					part, sd, 1f, 0f, false, "", true, new ScienceLabSearch(vessel, sd), DumpData, KeepData, TransmitData, LabData));
		}

		public bool IsRerunnable()
		{
			return true;
		}

		public int GetScienceCount()
		{
			return storedData.Count;
		}
	}
}


================================================
FILE: SCANsat/SCAN_PartModules/SCANresourceDisplay.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANresourceDisplay - Resource abundance display
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System.Collections.Generic;
using System.Linq;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_UI.UI_Framework;
using KSP.Localization;
using UnityEngine;

namespace SCANsat.SCAN_PartModules
{
	public class SCANresourceDisplay : PartModule, IAnimatedModule
	{
		[KSPField(guiActive = true, groupName = "SCANResourceDisplayGroup", groupDisplayName = "#autoLOC_SCANsat_ScanResourceDisplay", groupStartCollapsed = true)]
		public string abundance;
		[KSPField]
		public string ResourceName;
		[KSPField]
		public bool RequiresUnlock;

		private float abundanceValue;

		private List stockScanners;
		private SCANsat scanScanner;
		private ModuleAnimationGroup animGroup;
		private Dictionary abundanceSummary;
		private CelestialBody body;
		private float maxAbundanceAltitude;
		private bool tooHigh;
		private bool fuzzy;
		private bool refreshState;
		private bool activated;
		private bool zeroResource;
		private string resourceDisplayName;

		private SCANresourceGlobal scanResource;
		private SCANresourceBody scanResourceBody;

		private bool resourceScanThreshold;

		private BaseField abundanceField;

		private const float RESOURCE_TIME = 2;
		private float resourceTimer = 0;

		public float MaxAbundanceAltitude
		{
			get { return maxAbundanceAltitude; }
		}

		public override void OnAwake()
		{
			base.OnAwake();
			abundanceField = Fields["abundance"];
		}

		public override void OnStart(PartModule.StartState state)
		{
			if (state == StartState.Editor)
			{
				return;
			}

			GameEvents.onVesselSOIChanged.Add(onSOIChange);

			part.force_activate();
			this.isEnabled = true;
			activated = true;
			refreshState = true;
			resourceDisplayName = SCANUtil.displayNameFromResource(ResourceName);

			abundanceField.guiName = resourceDisplayName;

			stockScanners = findScanners();
			scanScanner = findSCANScanner();
			animGroup = findAnimator();

			if (animGroup == null || animGroup.isDeployed)
			{
				enableConnectedScanners();
			}

			setupFields(stockScanners.FirstOrDefault(), scanScanner);

			body = FlightGlobals.currentMainBody;
			refreshAbundance(body.flightGlobalsIndex);

			scanResource = SCANcontroller.getResourceNode(ResourceName);

			if (scanResource != null)
			{
				scanResourceBody = scanResource.getBodyConfig(body.bodyName, false);
			}
		}

		private List findScanners()
		{
			return part.FindModulesImplementing().Where(r => r.ScannerType == 0 && r.ResourceName == ResourceName).ToList();
		}

		private SCANsat findSCANScanner()
		{
			return part.FindModuleImplementing();
		}

		private ModuleAnimationGroup findAnimator()
		{
			return part.FindModulesImplementing().FirstOrDefault();
		}

		private void setupFields(ModuleResourceScanner m, SCANsat s)
		{
			if (m != null)
			{
				//SCANUtil.SCANlog("{0} Resource Display Module set to Max Alt: {1} ; Unlock: {2}", m.ResourceName, m.MaxAbundanceAltitude, m.RequiresUnlock);
				maxAbundanceAltitude = m.MaxAbundanceAltitude;
				RequiresUnlock = m.RequiresUnlock;
			}
			else if (s != null)
			{
				maxAbundanceAltitude = s.max_alt;
				RequiresUnlock = true;
			}
			else
			{
				RequiresUnlock = true;
			}

			abundanceField.guiName = string.Format("{0}[{1}]", resourceDisplayName, Localizer.Format("#autoLOC_SCANsat_Surface"));
		}

		private void OnDestroy()
		{
			GameEvents.onVesselSOIChanged.Remove(onSOIChange);
		}

		private void Update()
		{
			if (!HighLogic.LoadedSceneIsFlight || !FlightGlobals.ready)
			{
				return;
			}

			if (part.PartActionWindow == null)
			{
				return;
			}

			if (!SCAN_Settings_Config.Instance.HideZeroResources && Time.realtimeSinceStartup > resourceTimer)
			{
				resourceTimer = Time.realtimeSinceStartup + RESOURCE_TIME;

				SCANdata data = SCANUtil.getData(part.vessel.mainBody);

				if (data != null)
				{
					resourceScanThreshold = SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100) || SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100);
				}
				else
				{
					resourceScanThreshold = false;
				}
			}

			if (!activated)
			{
				abundanceField.guiActive = false;
				return;
			}

			if (scanResourceBody != null && scanResourceBody.DefaultZero && (SCAN_Settings_Config.Instance.HideZeroResources || resourceScanThreshold))
			{
				abundanceField.guiActive = false;
				zeroResource = true;
				return;
			}

			if (refreshState)
			{
				if (SCAN_Settings_Config.Instance.DisableStockResource)
				{
					disableConnectedScanners();
				}

				refreshState = false;
			}

			//if (!SCAN_Settings_Config.Instance.DisableStockResource)
			//{
			//    abundanceField.guiActive = false;
			//    return;
			//}

			abundanceField.guiActive = true;
			zeroResource = false;

			if (tooHigh)
			{
				abundance = Localizer.Format("#autoLOC_SCANsat_TooHigh");
				return;
			}
			else if (abundanceValue < 0)
			{
				abundance = Localizer.Format("#autoLOC_SCANsat_NoData");
				return;
			}

			string biome = "Landed";

			if (body.BiomeMap != null)
			{
				biome = SCANUtil.getBiomeName(body, SCANUtil.fixLonShift(vessel.longitude), SCANUtil.fixLatShift(vessel.latitude));
			}

			if (checkBiome(biome) || !SCAN_Settings_Config.Instance.BiomeLock)
			{
				if (fuzzy)
				{
					abundance = SCANuiUtil.LoResourceGroup(abundanceValue);
				}
				else
				{
					abundance = abundanceValue.ToString("P2");
				}
			}
			else
			{
				float biomeAbundance = abundanceSummary.ContainsKey(biome) ? abundanceSummary[biome].Abundance : 0f;
				if (fuzzy)
				{
					abundance = SCANuiUtil.LoResourceGroup(biomeAbundance);
				}
				else
				{
					abundance = string.Format("{0} avg.", biomeAbundance.ToString("P2"));
				}
			}
		}

		private bool checkBiome(string b)
		{
			return ResourceMap.Instance.IsBiomeUnlocked(body.flightGlobalsIndex, b);
		}

		private void FixedUpdate()
		{
			if (!activated)
			{
				abundanceValue = -1f;
				tooHigh = false;
				return;
			}

			if (zeroResource)
			{
				return;
			}

			if (part.PartActionWindow == null)
			{
				return;
			}

			if (!vessel.Landed && ResourceUtilities.GetAltitude(vessel) > maxAbundanceAltitude)
			{
				tooHigh = true;
				return;
			}

			tooHigh = false;
			double lat = SCANUtil.fixLatShift(vessel.latitude);
			double lon = SCANUtil.fixLonShift(vessel.longitude);
			if (SCANUtil.isCovered(lon, lat, vessel.mainBody, (short)SCANtype.ResourceHiRes))
			{
				abundanceValue = SCANUtil.ResourceOverlay(lat, lon, ResourceName, vessel.mainBody, RequiresUnlock && SCAN_Settings_Config.Instance.BiomeLock);
				fuzzy = false;
			}
			else if (SCANUtil.isCovered(lon, lat, vessel.mainBody, (short)SCANtype.ResourceLoRes))
			{
				abundanceValue = SCANUtil.ResourceOverlay(lat, lon, ResourceName, vessel.mainBody, RequiresUnlock && SCAN_Settings_Config.Instance.BiomeLock);
				fuzzy = true;
			}
			else
			{
				abundanceValue = -1;
			}
		}

		private void onSOIChange(GameEvents.HostedFromToAction VB)
		{
			body = VB.to;
			refreshAbundance(body.flightGlobalsIndex);

			if (scanResource != null)
			{
				scanResourceBody = scanResource.getBodyConfig(body.bodyName, false);
			}
		}

		private void refreshAbundance(int bodyID)
		{
			abundanceSummary = new Dictionary();

			abundanceSummary = ResourceCache.Instance.AbundanceCache.
				Where(a => a.ResourceName == ResourceName && a.HarvestType == HarvestTypes.Planetary && a.BodyId == bodyID).
				GroupBy(a => a.BiomeName).
				ToDictionary(b => b.Key, b => b.First());
		}

		private void disableConnectedScanners()
		{
			if (stockScanners != null)
			{
				foreach (ModuleResourceScanner m in stockScanners)
				{
					m.DisableModule();
				}
			}
		}

		private void enableConnectedScanners()
		{
			if (stockScanners != null)
			{
				foreach (ModuleResourceScanner m in stockScanners)
				{
					m.EnableModule();
				}
			}
		}

		public void EnableModule()
		{
			activated = true;
			if (SCAN_Settings_Config.Instance.DisableStockResource)
			{
				disableConnectedScanners();
			}
		}

		public void DisableModule()
		{
			activated = false;
			if (SCAN_Settings_Config.Instance.DisableStockResource)
			{
				disableConnectedScanners();
			}
		}

		public bool ModuleIsActive()
		{
			return activated;
		}

		public bool IsSituationValid()
		{
			return true;
		}
	}
}


================================================
FILE: SCANsat/SCAN_PartModules/SCANresourceScanner.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANresourceScanner - Resource scanner part module
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System.Collections.Generic;
using System.Linq;
using SCANsat.SCAN_Data;
using KSP.Localization;

namespace SCANsat.SCAN_PartModules
{
	public class ModuleSCANresourceScanner : SCANsat, IAnimatedModule
	{
		private List mSurvey;
		private List mScanner;
		private ModuleAnimationGroup animGroup;
		private bool activated;
		private bool refreshState;
		private bool loaded;

		public override void OnStart(PartModule.StartState state)
		{
			base.OnStart(state);

			Actions["startScanAction"].active = false;
			Actions["stopScanAction"].active = false;
			Actions["toggleScanAction"].active = false;
			Actions["startResourceScanAction"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_SCANsat_StartScan"), scanName);
			Actions["stopResourceScanAction"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_SCANsat_StopScan"), scanName);
			Actions["toggleResourceScanAction"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_SCANsat_ToggleScan"), scanName);

			if (state == StartState.Editor)
			{
				return;
			}

			scanInfoAltitude.guiActive = false;
			scanInfoStatus.guiActive = false;
			scanInfoType.guiActive = false;
			scanInfoFOV.guiActive = false;
			scanInfoPower.guiActive = false;
			scanInfoDaylight.guiActive = false;

			UpdateScannerInfo = !SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource;

			mSurvey = findSurvey();
			mScanner = findScanner();
			animGroup = findAnimator();

			if (animGroup == null)
			{
				activated = true;
			}

			refreshState = true;
		}

		public override string GetInfo()
		{
			string info = base.GetInfo();
			info += "Resource Scan: " + (SCANtype)sensorType + "\n";

			return info;
		}

		private List findScanner()
		{
			return part.FindModulesImplementing();
		}

		private List findSurvey()
		{
			return part.FindModulesImplementing();
		}

		private ModuleAnimationGroup findAnimator()
		{
			return part.FindModulesImplementing().FirstOrDefault();
		}

		private void updateEvents()
		{
			base.Events["startScan"].active = !scanning;
			base.Events["stopScan"].active = scanning;
		}

		override protected void Update()
		{
			if (!activated)
			{
				base.Events["startScan"].active = false;
				base.Events["stopScan"].active = false;
				if (scanning && loaded)
				{
					unregisterScanner();
				}

				return;
			}

			if (!HighLogic.LoadedSceneIsFlight || !FlightGlobals.ready)
			{
				return;
			}

			if (SCANcontroller.controller == null)
			{
				return;
			}

			base.Update();

			if (refreshState)
			{
				refreshState = false;

				if (SCAN_Settings_Config.Instance.DisableStockResource)
				{
					if (mSurvey != null)
					{
						foreach (ModuleOrbitalSurveyor m in mSurvey)
						{
							m.DisableModule();
						}
					}

					if (mScanner != null)
					{
						foreach (ModuleOrbitalScanner m in mScanner)
						{
							m.DisableModule();
						}
					}
				}
				loaded = true;
			}

			if (!SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource)
			{
				updateEvents();
			}
			else
			{
				base.Events["startScan"].active = false;
				base.Events["stopScan"].active = false;
				if (scanning)
				{
					unregisterScanner();
				}
			}
		}

		[KSPAction("Start Resource Scan")]
		public void startResourceScanAction(KSPActionParam param)
		{
			if (!SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource)
			{
				if (animGroup != null && !scanning && !animGroup.isDeployed)
				{
					animGroup.DeployModule();
				}

				startScan();
			}
		}

		[KSPAction("Stop Resource Scan")]
		public void stopResourceScanAction(KSPActionParam param)
		{
			stopScan();
		}

		[KSPAction("Toggle Resource Scan")]
		public void toggleResourceScanAction(KSPActionParam param)
		{
			if (scanning)
			{
				stopScan();
			}
			else
			{
				if (!SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource)
				{
					if (animGroup != null && !animGroup.isDeployed)
					{
						animGroup.DeployModule();
					}

					startScan();
				}
			}
		}

		public void DisableModule()
		{
			activated = false;
			base.Events["startScan"].active = false;
			base.Events["stopScan"].active = false;
			if (scanning && loaded)
			{
				unregisterScanner();
			}

			if (SCAN_Settings_Config.Instance.DisableStockResource)
			{
				if (mSurvey != null)
				{
					foreach (ModuleOrbitalSurveyor m in mSurvey)
					{
						m.DisableModule();
					}
				}

				if (mScanner != null)
				{
					foreach (ModuleOrbitalScanner m in mScanner)
					{
						m.DisableModule();
					}
				}
			}

			UpdateScannerInfo = !SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource;

			if (!UpdateScannerInfo)
			{
				scanInfoAltitude.guiActive = false;
				scanInfoStatus.guiActive = false;
				scanInfoType.guiActive = false;
				scanInfoFOV.guiActive = false;
				scanInfoPower.guiActive = false;
				scanInfoDaylight.guiActive = false;
			}
		}

		public void EnableModule()
		{
			activated = true;
			if (SCAN_Settings_Config.Instance.DisableStockResource)
			{
				if (mSurvey != null)
				{
					foreach (ModuleOrbitalSurveyor m in mSurvey)
					{
						m.DisableModule();
					}
				}

				if (mScanner != null)
				{
					foreach (ModuleOrbitalScanner m in mScanner)
					{
						m.DisableModule();
					}
				}
			}
			else
			{
				UpdateScannerInfo = !SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource;
			}

			if (!UpdateScannerInfo)
			{
				scanInfoAltitude.guiActive = false;
				scanInfoStatus.guiActive = false;
				scanInfoType.guiActive = false;
				scanInfoFOV.guiActive = false;
				scanInfoPower.guiActive = false;
				scanInfoDaylight.guiActive = false;
			}
		}

		public bool IsSituationValid()
		{
			return true;
		}

		public bool ModuleIsActive()
		{
			return activated;
		}
	}
}


================================================
FILE: SCANsat/SCAN_PartModules/SCANsat.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANsat - SCAN RADAR Altimetry Sensor part (& More)
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_Toolbar;
using SCANsat.SCAN_UI;
using SCANsat.SCAN_Unity;
using KSP.UI.Screens.Flight.Dialogs;
using KSP.Localization;

using UnityEngine;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;
using Log = KSPBuildTools.Log;

namespace SCANsat.SCAN_PartModules
{
	public class SCANsat : PartModule
	{
		[KSPField]
		public int sensorType;
		[KSPField]
		public int experimentType;
		[KSPField]
		public float fov;
		[KSPField]
		public float min_alt;
		[KSPField]
		public float max_alt;
		[KSPField]
		public float best_alt;
		[KSPField]
		public string scanName;
		[KSPField]
		public bool requireLight;
		[KSPField]
		public string animationName;
		//[KSPField(guiName = "SCANsat Altitude", guiActive = false)]
		//public string alt_indicator;
		[KSPField(isPersistant = true)]
		protected bool scanning = false;

		[KSPField(groupName = "scaninfo", groupDisplayName = "#autoLOC_SCANsat_ScanInfo", guiName = "#autoLOC_SCANsat_ScanInfoStatus", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]
		public string scanStatus = "";
		[KSPField(groupName = "scaninfo", groupDisplayName = "#autoLOC_SCANsat_ScanInfo", guiName = "#autoLOC_SCANsat_ScanInfoAltitude", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]
		public string scanAltitude = "";
		[KSPField(groupName = "scaninfo", groupDisplayName = "#autoLOC_SCANsat_ScanInfo", guiName = "#autoLOC_SCANsat_ScanInfoType", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]
		public string scanType = "";
		[KSPField(groupName = "scaninfo", groupDisplayName = "#autoLOC_SCANsat_ScanInfo", guiName = "#autoLOC_SCANsat_ScanInfoFOV", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]
		public string scanFOV = "0";
		[KSPField(groupName = "scaninfo", groupDisplayName = "#autoLOC_SCANsat_ScanInfo", guiName = "#autoLOC_SCANsat_ScanInfoPower", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]
		public string scanPower = "0";
		[KSPField(groupName = "scaninfo", groupDisplayName = "#autoLOC_SCANsat_ScanInfo", guiName = "#autoLOC_SCANsat_ScanInfoDaylight", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]
		public string scanDaylight = "";

		private string powerMessage;

		public bool scanningNow
		{
			get { return scanning; }
		}

		private bool powerIsProblem;
		private int powerTimer;
		private Animation anim = null;

		protected BaseField scanInfoStatus;
		protected BaseField scanInfoAltitude;
		protected BaseField scanInfoType;
		protected BaseField scanInfoFOV;
		protected BaseField scanInfoPower;
		protected BaseField scanInfoDaylight;

		protected bool UpdateScannerInfo = true;

		public override void OnAwake()
		{
			base.OnAwake();
			scanInfoStatus = Fields["scanStatus"];
			scanInfoAltitude = Fields["scanAltitude"];
			scanInfoType = Fields["scanType"];
			scanInfoFOV = Fields["scanFOV"];
			scanInfoPower = Fields["scanPower"];
			scanInfoDaylight = Fields["scanDaylight"];
		}

		/* SAT: KSP entry points */
		public override void OnStart(StartState state)
		{
			if (state == StartState.Editor)
			{
				Log.Message("start: in editor");
				Events["editorExtend"].active = !string.IsNullOrEmpty(animationName);
				scanInfoAltitude.guiActive = false;
				scanInfoStatus.guiActive = false;
				scanInfoType.guiActive = false;
				scanInfoFOV.guiActive = false;
				scanInfoPower.guiActive = false;
				scanInfoDaylight.guiActive = false;
			}
			else
			{
				scanType = getTypeString();
				scanAltitude = getAltString();
				scanPower = getECString();
				Log.Message("start: live");
				GameEvents.onVesselSOIChanged.Add(ChangeSOI);
			}
			if (!string.IsNullOrEmpty(animationName))
			{
				Animation[] a = part.FindModelAnimators(animationName);
				if (a.Length == 0)
				{
					Log.Message("animation '" + animationName + "' not found");
				}
				else
				{
					Log.Message("using animation #1 out of " + a.Length.ToString() + " animations named '" + animationName + "'");
					anim = a[0];
					anim.playAutomatically = false;
					anim.cullingType = AnimationCullingType.BasedOnRenderers;
					anim[animationName].wrapMode = WrapMode.Once;
					anim[animationName].speed = 0;
				}
			}
			if (scanName != null)
			{
				Events["startScan"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_SCANsat_StartScan"), scanName);
				Events["stopScan"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_SCANsat_StopScan"), scanName);
				Actions["startScanAction"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_SCANsat_StartScan"), scanName);
				Actions["stopScanAction"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_SCANsat_StopScan"), scanName);
				Actions["toggleScanAction"].guiName = string.Format("{0}: {1}", Localizer.Format("#autoLOC_SCANsat_ToggleScan"), scanName);
			}

			if (sensorType == 0)
			{
				// here, we override all event and action labels
				// and we also disable the analyze button (it does nothing)
				Events["startScan"].active = false;
				Events["stopScan"].active = false;
				Events["editorExtend"].active = false;
				Actions["startScanAction"].active = false;
				Actions["stopScanAction"].active = false;
				Actions["toggleScanAction"].active = false;
			}

			if (scanning)
			{
				animate(1, 1);
			}

			powerIsProblem = false;
			Log.Message("sensorType: " + sensorType.ToString() + " fov: " + fov.ToString() + " min_alt: " + min_alt.ToString() + " max_alt: " + max_alt.ToString() + " best_alt: " + best_alt.ToString());
		}

		private void OnDestroy()
		{
			GameEvents.onVesselSOIChanged.Remove(ChangeSOI);
		}

		protected virtual void Update()
		{
			if (!HighLogic.LoadedSceneIsFlight)
			{
				return;
			}

			if (!FlightGlobals.ready)
			{
				return;
			}

			if (sensorType == 0)
			{
				return;
			}

			Events["startScan"].active = !scanning && !powerIsProblem;
			Events["stopScan"].active = scanning || powerIsProblem;

			SCANdata data = SCANUtil.getData(vessel.mainBody);

			if (data == null)
			{
				return;
			}

			if (part.PartActionWindow != null && UpdateScannerInfo)
			{
				scanAlt(data, scanning);
			}
		}

		protected virtual void FixedUpdate()
		{
			if (!HighLogic.LoadedSceneIsFlight)
			{
				return;
			}

			if (!FlightGlobals.ready)
			{
				return;
			}

			if (SCANcontroller.controller == null)
			{
				return;
			}

			if (powerIsProblem)
			{
				if (powerTimer < 30)
				{
					powerTimer++;
					return;
				}

				addStatic();
				registerScanner();
			}

			if (scanning)
			{
				if (sensorType != 0 || SCANcontroller.controller.isVesselKnown(vessel.id, (SCANtype)sensorType))
				{
					if (!resHandler.UpdateModuleResourceInputs(ref powerMessage, 1, 0.9, false, true))
					{
						unregisterScanner();
						powerIsProblem = true;
						powerTimer = 0;
					}
					else
					{
						powerIsProblem = false;
					}
				}
				else
				{
					unregisterScanner();
				}
			}
		}

		public override string GetInfo()
		{
			if (sensorType == 0)
			{
				return "";
			}

			StringBuilder sb = StringBuilderCache.Acquire();

			sb.Append(base.GetInfo());

			if (min_alt != 0)
			{
				sb.Append(Localizer.Format("#autoLOC_SCANsat_AltitudeMin", (min_alt / 1000).ToString("F0")));
			}

			if (best_alt != min_alt)
			{
				sb.Append(Localizer.Format("#autoLOC_SCANsat_AltitudeBest", (best_alt / 1000).ToString("F0")));
			}

			if (max_alt != 0)
			{
				sb.Append(Localizer.Format("#autoLOC_SCANsat_AltitudeMax", (max_alt / 1000).ToString("F0")));
			}

			if (fov != 0)
			{
				sb.Append(Localizer.Format("#autoLOC_SCANsat_FOV", fov.ToString("F1") + ""));
			}

			sb.AppendLine();

			sb.Append(Localizer.Format("#autoLOC_SCANsat_Daylight", RUIutils.GetYesNoUIString(requireLight)));

			sb.AppendLine();
			sb.AppendLine();
			sb.Append(Localizer.Format("#autoLOC_SCANsat_Types"));

			if ((sensorType & (short)SCANtype.AltimetryLoRes) != 0)
			{
				sb.AppendLine();
				sb.Append(SCANtype.AltimetryLoRes.ToString());
			}
			if ((sensorType & (short)SCANtype.AltimetryHiRes) != 0)
			{
				sb.AppendLine();
				sb.Append(SCANtype.AltimetryHiRes.ToString());
			}
			if ((sensorType & (short)SCANtype.Biome) != 0)
			{
				sb.AppendLine();
				sb.Append(SCANtype.Biome.ToString());
			}
			if ((sensorType & (short)SCANtype.Anomaly) != 0)
			{
				sb.AppendLine();
				sb.Append(SCANtype.Anomaly.ToString());
			}
			if ((sensorType & (short)SCANtype.AnomalyDetail) != 0)
			{
				sb.AppendLine();
				sb.Append(SCANtype.AnomalyDetail.ToString());
			}
			if ((sensorType & (short)SCANtype.VisualLoRes) != 0)
			{
				sb.AppendLine();
				sb.Append(SCANtype.VisualLoRes.ToString());
			}
			if ((sensorType & (short)SCANtype.VisualHiRes) != 0)
			{
				sb.AppendLine();
				sb.Append(SCANtype.VisualHiRes.ToString());
			}
			if ((sensorType & (short)SCANtype.ResourceLoRes) != 0)
			{
				sb.AppendLine();
				sb.Append(SCANtype.ResourceLoRes.ToString());
			}
			if ((sensorType & (short)SCANtype.ResourceHiRes) != 0)
			{
				sb.AppendLine();
				sb.Append(SCANtype.ResourceHiRes.ToString());
			}

			sb.AppendLine();
			sb.Append(resHandler.PrintModuleResources(1));

			return sb.ToStringAndRelease();
		}

		/* SCAN: context (right click) buttons in FLIGHT */
		[KSPEvent(guiActive = true, guiName = "Start RADAR Scan", groupName = "scaninfo", active = true)]
		public void startScan()
		{
			if (!ToolbarManager.ToolbarAvailable && SCANcontroller.controller != null)
			{
				if (!SCAN_Settings_Config.Instance.StockToolbar && SCAN_UI_MainMap.Instance != null && !SCAN_UI_MainMap.Instance.IsVisible)
				{
					SCAN_UI_MainMap.Instance.Open();
				}
			}
			registerScanner();
			animate(1, 0);
		}

		[KSPEvent(guiActive = true, guiName = "Stop RADAR Scan", groupName = "scaninfo", active = true, requireFullControl = false)]
		public void stopScan()
		{
			unregisterScanner();
			powerIsProblem = false;
			animate(-1, 1);
		}

		/* SCAN: context (right click) buttons in EDTIOR */
		[KSPEvent(guiActiveEditor = true, guiName = "Extend", groupName = "scaninfo", active = true)]
		public void editorExtend()
		{
			Events["editorExtend"].active = false;
			Events["editorRetract"].active = true;
			animate(1, 0);
		}

		[KSPEvent(guiActiveEditor = true, guiName = "Retract", groupName = "scaninfo", active = false)]
		public void editorRetract()
		{
			Events["editorExtend"].active = true;
			Events["editorRetract"].active = false;
			animate(-1, 1);
		}

		/* SCAN: trivial function to do animation */
		private void animate(float speed, float time)
		{
			if (anim != null && anim[animationName] != null)
			{
				anim[animationName].speed = speed;
				if (!anim.IsPlaying(animationName))
				{
					anim[animationName].wrapMode = WrapMode.Clamp;
					anim[animationName].normalizedTime = time;
					anim.Play(animationName);
				}
			}
		}

		/* SCAN: actions for ... something ... */
		[KSPAction("Start Scan")]
		public void startScanAction(KSPActionParam param)
		{
			startScan();
		}

		[KSPAction("Stop Scan")]
		public void stopScanAction(KSPActionParam param)
		{
			stopScan();
		}

		[KSPAction("Toggle Scan")]
		public void toggleScanAction(KSPActionParam param)
		{
			if (scanning)
			{
				stopScan();
			}
			else
			{
				startScan();
			}
		}

		/* SCAN: add static (a warning that we're low on electric charge) */
		private void addStatic()
		{
			if (SCANcontroller.controller == null)
			{
				return;
			}

			//if (SCANcontroller.controller.mainMap == null)
			//	return;

			//if (SCANcontroller.controller.mainMap.Map == null)
			//	return;

			//for (int i = 0; i < 1000; i++)
			//{
			//	SCANcontroller.controller.mainMap.Map.SetPixel(UnityEngine.Random.Range(0, 360), UnityEngine.Random.Range(0, 180), palette.lerp(palette.black, palette.white, UnityEngine.Random.value));
			//}
		}

		/* SCAN: register scanners without going through animation */
		private void registerScanner()
		{
			scanning = true;
			powerTimer = 0;
			if (sensorType > 0 && SCANcontroller.controller != null)
			{
				SCANcontroller.controller.registerSensor(vessel, (SCANtype)sensorType, fov, min_alt, max_alt, best_alt, requireLight);
			}
		}

		protected void unregisterScanner()
		{
			scanning = false;
			if (sensorType > 0 && SCANcontroller.controller != null)
			{
				SCANcontroller.controller.unregisterSensor(vessel, (SCANtype)sensorType, fov, min_alt, max_alt, best_alt, requireLight);
			}
		}

		private void scanAlt(SCANdata d, bool scan)
		{
			//scanAltitude = Localizer.Format("#autoLOC_SCANsat_Unknown");
			//scanAltitude = scanAltRange;
			float alt = (float)vessel.altitude;
			if (!SCAN_Settings_Config.Instance.BackgroundScanning)
			{
				scanStatus = Localizer.Format("#autoLOC_SCANsat_All_Disabled");
				scanInfoAltitude.guiActive = false;
				scanInfoStatus.guiActive = true;
				scanInfoType.guiActive = false;
				scanInfoFOV.guiActive = false;
				scanInfoPower.guiActive = false;
				scanInfoDaylight.guiActive = false;
			}
			else if (d.Disabled)
			{
				scanStatus = string.Format("{0}: {1}", SCANUtil.displayNameFromBody(d.Body), Localizer.Format("#autoLOC_SCANsat_Disabled"));
				scanInfoAltitude.guiActive = true;
				scanInfoStatus.guiActive = true;
				scanInfoType.guiActive = true;
				scanInfoFOV.guiActive = false;
				scanInfoPower.guiActive = false;
				scanInfoDaylight.guiActive = false;
			}
			else if (powerIsProblem)
			{
				scanStatus = powerMessage;
				scanInfoAltitude.guiActive = true;
				scanInfoStatus.guiActive = true;
				scanInfoType.guiActive = true;
				scanInfoFOV.guiActive = false;
				scanInfoPower.guiActive = true;
				scanInfoDaylight.guiActive = false;
			}
			else if (alt < min_alt)
			{
				scanStatus = Localizer.Format("#autoLOC_SCANsat_TooLow");
				scanInfoAltitude.guiActive = true;
				scanInfoStatus.guiActive = true;
				scanInfoType.guiActive = true;
				scanInfoFOV.guiActive = false;
				scanInfoDaylight.guiActive = false;
				if (scan)
				{
					scanInfoPower.guiActive = true;
				}
				else
				{
					scanInfoPower.guiActive = false;
				}
			}
			else if (alt < best_alt)
			{
				scanStatus = Localizer.Format("#autoLOC_SCANsat_SubOptimal");
				scanInfoAltitude.guiActive = true;
				scanInfoStatus.guiActive = true;
				scanInfoType.guiActive = true;
				scanInfoFOV.guiActive = true;
				scanInfoPower.guiActive = true;
				if (scan)
				{
					scanInfoFOV.guiActive = true;
					scanInfoPower.guiActive = true;
					scanFOV = string.Format("{0}", CurrentFOV(alt).ToString("N1"));

					if (requireLight && SCAN_Settings_Config.Instance.DaylightCheck)
					{
						scanInfoDaylight.guiActive = true;
						scanDaylight = RUIutils.GetYesNoUIString(
							!SCANUtil.InDarkness(vessel.orbit.getPositionAtUT(Planetarium.GetUniversalTime()), vessel.mainBody.position, SCANUtil.LocalSun(vessel.mainBody).position)
							);
					}
					else
					{
						scanInfoDaylight.guiActive = false;
					}
				}
				else
				{
					scanInfoFOV.guiActive = false;
					scanInfoPower.guiActive = false;
					scanInfoDaylight.guiActive = false;
				}

			}
			else if (alt >= best_alt && alt <= max_alt)
			{
				scanStatus = Localizer.Format("#autoLOC_SCANsat_Ideal");
				scanInfoAltitude.guiActive = true;
				scanInfoStatus.guiActive = true;
				scanInfoType.guiActive = true;
				if (scan)
				{
					scanInfoFOV.guiActive = true;
					scanInfoPower.guiActive = true;
					scanFOV = string.Format("{0}", CurrentFOV(alt).ToString("N1"));
					if (requireLight && SCAN_Settings_Config.Instance.DaylightCheck)
					{
						scanInfoDaylight.guiActive = true;
						scanDaylight = RUIutils.GetYesNoUIString(
							!SCANUtil.InDarkness(vessel.orbit.getPositionAtUT(Planetarium.GetUniversalTime()), vessel.mainBody.position, SCANUtil.LocalSun(vessel.mainBody).position)
							);
					}
					else
					{
						scanInfoDaylight.guiActive = false;
					}
				}
				else
				{
					scanInfoFOV.guiActive = false;
					scanInfoPower.guiActive = false;
					scanInfoDaylight.guiActive = false;
				}

			}
			else if (alt > max_alt)
			{
				scanStatus = Localizer.Format("#autoLOC_SCANsat_TooHigh");
				scanInfoAltitude.guiActive = true;
				scanInfoStatus.guiActive = true;
				scanInfoType.guiActive = true;
				scanInfoFOV.guiActive = false;
				scanInfoDaylight.guiActive = false;
				if (scan)
				{
					scanInfoPower.guiActive = true;
				}
				else
				{
					scanInfoPower.guiActive = false;
				}
			}
		}

		private void ChangeSOI(GameEvents.HostedFromToAction vc)
		{
			scanAltitude = getAltString();
		}

		private string getTypeString()
		{
			StringBuilder sb = StringBuilderCache.Acquire();

			if ((sensorType & (short)SCANtype.AltimetryLoRes) != 0)
			{
				sb.Append("Alt Lo");
			}
			if ((sensorType & (short)SCANtype.AltimetryHiRes) != 0)
			{
				if (sb.Length > 0)
				{
					sb.Append(", ");
				}

				sb.Append("Alt Hi");
			}
			if ((sensorType & (short)SCANtype.Biome) != 0)
			{
				if (sb.Length > 0)
				{
					sb.Append(", ");
				}

				sb.Append("Biome");
			}
			if ((sensorType & (short)SCANtype.Anomaly) != 0)
			{
				if (sb.Length > 0)
				{
					sb.Append(", ");
				}

				sb.Append("Anomaly");
			}
			if ((sensorType & (short)SCANtype.AnomalyDetail) != 0)
			{
				if (sb.Length > 0)
				{
					sb.Append(", ");
				}

				sb.Append("BTDT");
			}
			if ((sensorType & (short)SCANtype.VisualLoRes) != 0)
			{
				if (sb.Length > 0)
				{
					sb.Append(", ");
				}

				sb.Append("Vis Lo");
			}
			if ((sensorType & (short)SCANtype.VisualHiRes) != 0)
			{
				if (sb.Length > 0)
				{
					sb.Append(", ");
				}

				sb.Append("Vis Hi");
			}
			if ((sensorType & (short)SCANtype.ResourceLoRes) != 0)
			{
				if (sb.Length > 0)
				{
					sb.Append(", ");
				}

				sb.Append("Res Lo");
			}
			if ((sensorType & (short)SCANtype.ResourceHiRes) != 0)
			{
				if (sb.Length > 0)
				{
					sb.Append(", ");
				}

				sb.Append("Res Hi");
			}

			return sb.ToStringAndRelease();
		}

		private string getAltString()
		{
			float ba = Math.Min(best_alt, (float)(vessel.mainBody.sphereOfInfluence - vessel.mainBody.Radius));

			if (ba >= max_alt)
			{
				return string.Format("{0} - {1}km", (min_alt / 1000).ToString("N0"), (ba / 1000).ToString("N0"));
			}
			else
			{
				return string.Format("{0} - {1}km: > {2}km Ideal", (min_alt / 1000).ToString("N0"), (max_alt / 1000).ToString("N0"), (ba / 1000).ToString("N0"));
			}
		}

		private string getECString()
		{
			float ec = 0;

			for (int i = resHandler.inputResources.Count - 1; i >= 0; i--)
			{
				if (resHandler.inputResources[i].name == "ElectricCharge")
				{
					ec = (float)resHandler.inputResources[i].rate;

					break;
				}
			}

			return string.Format("{0}EC/s", ec.ToString("N1"));
		}

		private float CurrentFOV(float alt)
		{
			float f = fov;
			float ba = Math.Min(best_alt, (float)(vessel.mainBody.sphereOfInfluence - vessel.mainBody.Radius));

			if (alt < ba)
			{
				f = (alt / ba) * f;
			}

			f = f * (float)(Planetarium.fetch.Home.Radius / vessel.mainBody.Radius);

			if (f > 20)
			{
				f = 20;
			}

			return f;
		}

	}
}


================================================
FILE: SCANsat/SCAN_Platform/Extensions/Colors/UnityEngine.Color_.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN Color Extensions - a few extensions for the Color class for converting between color types
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Reflection;
using System.Collections.Generic;
using SCANsat;

using SG = System.Globalization;
using Log = SCANsat.SCAN_Platform.Logging.ConsoleLogger;

namespace UnityEngine
{
	public static class Color_
	{

		private static Func minT = (a, b, c) => Mathf.Min(Mathf.Min(b, c), a);
		private static Func maxT = (a, b, c) => Mathf.Max(Mathf.Max(b, c), a);
		private static Func approxEq = Mathf.Approximately;

		public static Dictionary knownColors;

		private const float SOME_THING_R = 0.2126f;
		private const float SOME_THING_G = 0.7175f;
		private const float SOME_THING_B = 0.0722f;
		private const SG.NumberStyles HEX_STYLE = SG.NumberStyles.HexNumber;

		public static float Luminance(this Color c)
		{
			return SOME_THING_R * (c.r)
				+ SOME_THING_G * (c.g)
				+ SOME_THING_B * (c.b);
		}

		public static Color Random(this Color color, float minClamp = 0.5f)
		{
			var randCol = UnityEngine.Random.onUnitSphere * 3;
			randCol.x = Mathf.Clamp(randCol.x, minClamp, 1f);
			randCol.y = Mathf.Clamp(randCol.y, minClamp, 1f);
			randCol.z = Mathf.Clamp(randCol.z, minClamp, 1f);
			return new Color(randCol.x, randCol.y, randCol.z, 1f);
		}

		public static float Brightness(this Color c)
		{
			float maxv = maxT(c.r, c.g, c.b);
			return maxv;
		}

		public static float Saturation(this Color c)
		{
			float maxv = maxT(c.r, c.g, c.b);
			float minv = minT(c.r, c.g, c.b);
			float sum = maxv + minv;


			if (SCANUtil.ApproxEq(minv, maxv))
			{
				return 0.0f;
			}

			if (sum > 1f)
			{
				sum = 2f - sum;
			}

			return (maxv - minv) / sum;
		}

		public static float Hue(this Color c)
		{
			float h = 0.0f;
			float maxv = maxT(c.r, c.g, c.b);
			float minv = minT(c.r, c.g, c.b);
			float diff = maxv - minv;

			if (approxEq(minv, maxv))
			{
				return h;
			}

			float r_dist = (maxv - c.r) / diff;
			float g_dist = (maxv - c.g) / diff;
			float b_dist = (maxv - c.b) / diff;

			if (c.r == maxv)
			{
				h = b_dist - g_dist;
			}
			else if (c.g == maxv)
			{
				h = 2 + r_dist - b_dist;
			}
			else
			{
				h = 4 + g_dist - r_dist;
			}

			h *= 60;
			if (h < 0)
			{
				h += 360;
			}

			if (h > 360)
			{
				h -= 360;
			}

			h /= 360;

			return h;
		}

		//I found this useful little snippet here: http://www.splinter.com.au/converting-hsv-to-rgb-colour-using-c/
		//This takes a color's hue and saturation and converts it to the maximum brightness using an HSV color
		public static Color maxBright(this Color c)
		{
			Color maxC = c;
			float sat = c.Saturation();
			float hue = c.Hue();
			float r, g, b;

			if (sat <= 0)
			{
				r = g = b = 0;
			}
			else
			{
				float h = hue * 6;
				int i = (int)Math.Floor(h);
				float f = h - i;
				float pv = 1 - sat;
				float qv = 1 - sat * f;
				float tv = 1 - sat * (1 - f);

				switch (i)
				{
					case 0:
						r = 1;
						g = tv;
						b = pv;
						break;
					case 1:
						r = qv;
						g = 1;
						b = pv;
						break;
					case 2:
						r = pv;
						g = 1;
						b = tv;
						break;
					case 3:
						r = pv;
						g = qv;
						b = 1;
						break;
					case 4:
						r = tv;
						g = pv;
						b = 1;
						break;
					case 5:
						r = 1;
						g = pv;
						b = qv;
						break;

					default:
						r = g = b = 1;
						break;
				}
			}

			r = clamp(r);
			g = clamp(g);
			b = clamp(b);

			maxC = new Color(r, g, b);

			return maxC;
		}

		private static float clamp(float f)
		{
			if (f < 0)
			{
				return 0.0f;
			}

			if (f > 1)
			{
				return 1.0f;
			}

			return f;
		}


		public static string ToHex(this Color c)
		{
			return ((Color32)c).r.ToString("X2")
				+ ((Color32)c).g.ToString("X2")
				+ ((Color32)c).b.ToString("X2");
		}

		public static string ToRGBString(this Color c)
		{
			return c.r.ToString("F4") + ","
				+ c.g.ToString("F4") + ","
				+ c.b.ToString("F4");
		}

		public static Color FromHex(this Color c, string s)
		{
			byte r = byte.Parse(s.Substring(0, 2), HEX_STYLE);
			byte g = byte.Parse(s.Substring(2, 2), HEX_STYLE);
			byte b = byte.Parse(s.Substring(4, 2), HEX_STYLE);
			return new Color(r / 255f, g / 255f, b / 255f, 1);
		}

		public static void initColorTable()
		{

			switch (knownColors == null)
			{
				case true: knownColors = new Dictionary(); break;
				case false: return;
			}

			// find all of the Colors that UnityEngine.Color exports.
			foreach (var prop in typeof(Color).GetProperties(BindingFlags.Public | BindingFlags.Static))
			{
				if (prop.DeclaringType.IsAbstract)
				{
					continue;
				}

				if (prop.GetGetMethod().ReturnType != typeof(Color))
				{
					continue;
				}

				var name = "Color." + prop.Name;
				Color col = (Color)prop.GetValue(null, null);

				if (knownColors.ContainsKey(col))
				{
					var collision = "";
					knownColors.TryGetValue(col, out collision);
					//Log.Debug("{0} -> {1} and {2}", col, collision, name);
				}
				else
				{
					knownColors.Add(col, name);
					//Log.Debug("{0} -> {1}", col, name);
				}
			}

			// find all of the Colors that XKCDColors exports.
			foreach (var prop in typeof(XKCDColors).GetProperties())
			{
				if (prop.GetGetMethod().ReturnType != typeof(Color))
				{
					continue;
				}

				var name = "XKCDColor." + prop.Name;
				Color col = (Color)prop.GetValue(null, null);

				if (knownColors.ContainsKey(col))
				{
					var collision = "";
					knownColors.TryGetValue(col, out collision);
					//Log.Debug("{0} -> {1} and {2}", col, collision, name);
				}
				else
				{
					knownColors.Add(col, name);
					//Log.Debug("{0} -> {1}", col, name);
				}
			}

		}
	}
}



================================================
FILE: SCANsat/SCAN_Platform/Extensions/ConfigNodes/ConfigExtensions.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Log = KSPBuildTools.Log;

namespace SCANsat.SCAN_Platform.Extensions.ConfigNodes
{
	public static class ConfigExtensions
	{

		public static string parse(this ConfigNode node, string name, string original)
		{
			if (node.HasValue(name))
			{
				return node.GetValue(name);
			}

			return original;
		}

		public static int parse(this ConfigNode node, string name, int original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			int i = original;

			if (int.TryParse(node.GetValue(name), out i))
			{
				return i;
			}

			return original;
		}

		public static uint parse(this ConfigNode node, string name, uint original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			uint i = original;

			if (uint.TryParse(node.GetValue(name), out i))
			{
				return i;
			}

			return original;
		}

		public static float parse(this ConfigNode node, string name, float original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			float f = original;

			if (float.TryParse(node.GetValue(name), out f))
			{
				return f;
			}

			return original;
		}

		public static float? parse(this ConfigNode node, string name, float? original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			float f = original == null ? 0 : (float)original;

			if (float.TryParse(node.GetValue(name), out f))
			{
				return (float?)f;
			}

			return original;
		}

		public static double parse(this ConfigNode node, string name, double original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			double d = original;

			if (double.TryParse(node.GetValue(name), out d))
			{
				return d;
			}

			return original;
		}

		public static bool parse(this ConfigNode node, string name, bool original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			bool b = original;

			if (bool.TryParse(node.GetValue(name), out b))
			{
				return b;
			}

			return original;
		}

		public static Color parse(this ConfigNode node, string name, Color original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			Color c = original;

			try
			{
				c = ConfigNode.ParseColor(node.GetValue(name));
			}
			catch (Exception e)
			{
				Log.Error("Error while reading Color value; using default value...\n" + e);
			}

			return c;
		}

		public static Color32 parse(this ConfigNode node, string name, Color32 original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			Color32 c = original;

			try
			{
				c = ConfigNode.ParseColor32(node.GetValue(name));
			}
			catch (Exception e)
			{
				Log.Error("Error while reading Color32 value; using default value...\n" + e);
			}

			return c;
		}

		public static List parse(this ConfigNode node, string name, char separator, List original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			return node.GetValue(name).Split(separator).ToList();
		}

		public static Vector2d parse(this ConfigNode node, string name, Vector2d original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			Vector2d v = original;

			string[] values = node.GetValue(name).Split('|');

			if (values.Length != 2)
			{
				return v;
			}

			double first = original.x;
			double second = original.y;

			if (!double.TryParse(values[0], out first))
			{
				first = original.x;
			}

			if (!double.TryParse(values[1], out second))
			{
				second = original.y;
			}

			v.x = first;
			v.y = second;

			return v;
		}

		public static Guid parse(this ConfigNode node, string name, Guid original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			Guid g = original;

			try
			{
				g = new Guid(node.GetValue(name));
			}
			catch (Exception e)
			{
				Log.Error("Error while reading Guid value; creating new value...\n" + e);
			}

			return g;
		}

		public static List parse(this ConfigNode node, string name, List original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			string source = node.GetValue(name);

			if (string.IsNullOrEmpty(source))
			{
				return original;
			}
			else
			{
				List ids = new List();

				string[] sA = source.Split('|');
				for (int i = 0; i < sA.Length; i++)
				{
					try
					{
						Guid g = new Guid(sA[i]);

						if (g == null)
						{
							continue;
						}

						if (!ids.Contains(g))
						{
							ids.Add(g);
						}
					}
					catch (Exception e)
					{
						SCANUtil.SCANlog("Guid invalid:\n{0}", e);
						continue;
					}
				}

				return ids;
			}
		}

		public static Vessel parse(this ConfigNode node, string name, Vessel original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			Vessel v = original;

			string s = node.GetValue(name);

			if (string.IsNullOrEmpty(s))
			{
				return original;
			}
			else
			{
				try
				{
					Guid id = new Guid(s);

					v = FlightGlobals.Vessels.FirstOrDefault(a => a.id == id);

					if (v == null)
					{
						return original;
					}
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Vessel invalid:\n{0}", e);
					return original;
				}
			}

			return v;
		}

		public static CelestialBody parse(this ConfigNode node, string name, CelestialBody original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			CelestialBody c = original;

			string s = node.GetValue(name);

			int body;

			if (!int.TryParse(s, out body))
			{
				return c;
			}

			if (FlightGlobals.Bodies.Count > body)
			{
				c = FlightGlobals.Bodies[body];
			}
			else
			{
				return original;
			}

			return c;
		}

		public static ScienceSubject parse(this ConfigNode node, string name, ScienceSubject original)
		{
			if (!node.HasValue(name))
			{
				return original;
			}

			ScienceSubject subject = original;

			string id = node.GetValue(name);

			subject = ResearchAndDevelopment.GetSubjectByID(id);

			if (subject != null)
			{
				return subject;
			}

			return original;
		}

		public static string vector2ToString(this Vector2d v)
		{
			return v.x.ToString("F6") + "|" + v.y.ToString("F6");
		}


	}
}


================================================
FILE: SCANsat/SCAN_Platform/Extensions/MJExtensions.cs
================================================
#region license
/*
 * This extension is from MechJeb; Used with permission from r4m0n: https://github.com/MuMech/MechJeb2/blob/master/MechJeb2/OrbitExtensions.cs
*/
#endregion

using System;
using System.Collections.Generic;

namespace SCANsat
{

	public static class OrbitExtensions
	{
		//Returns whether a has an ascending node with b. This can be false
		//if a is hyperbolic and the would-be ascending node is within the opening
		//angle of the hyperbola.
		public static bool AscendingNodeExists(this Orbit a, Orbit b)
		{
			return Math.Abs(JUtil.ClampDegrees180(a.AscendingNodeTrueAnomaly(b))) <= a.MaximumTrueAnomaly();
		}
		//Gives the true anomaly (in a's orbit) at which a crosses its ascending node
		//with b's orbit.
		//The returned value is always between 0 and 360.
		public static double AscendingNodeTrueAnomaly(this Orbit a, Orbit b)
		{
			Vector3d vectorToAN = Vector3d.Cross(a.SwappedOrbitNormal(), b.SwappedOrbitNormal());
			return a.TrueAnomalyFromVector(vectorToAN);

		}
		//For hyperbolic orbits, the true anomaly only takes on values in the range
		// -M < true anomaly < +M for some M. This function computes M.
		public static double MaximumTrueAnomaly(this Orbit o)
		{
			if (o.eccentricity < 1)
			{
				return 180;
			}

			return 180 / Math.PI * Math.Acos(-1 / o.eccentricity);
		}
		//normalized vector perpendicular to the orbital plane
		//convention: as you look down along the orbit normal, the satellite revolves counterclockwise
		public static Vector3d SwappedOrbitNormal(this Orbit o)
		{
			return -(o.GetOrbitNormal().xzy).normalized;
		}

		//Returns whether a has a descending node with b. This can be false
		//if a is hyperbolic and the would-be descending node is within the opening
		//angle of the hyperbola.
		public static bool DescendingNodeExists(this Orbit a, Orbit b)
		{
			return Math.Abs(JUtil.ClampDegrees180(a.DescendingNodeTrueAnomaly(b))) <= a.MaximumTrueAnomaly();
		}
		//Gives the true anomaly (in a's orbit) at which a crosses its descending node
		//with b's orbit.
		//The returned value is always between 0 and 360.
		public static double DescendingNodeTrueAnomaly(this Orbit a, Orbit b)
		{
			return JUtil.ClampDegrees360(a.AscendingNodeTrueAnomaly(b) + 180);
		}
		//Returns the next time at which a will cross its ascending node with b.
		//For elliptical orbits this is a time between UT and UT + a.period.
		//For hyperbolic orbits this can be any time, including a time in the past if
		//the ascending node is in the past.
		//NOTE: this function will throw an ArgumentException if a is a hyperbolic orbit and the "ascending node"
		//occurs at a true anomaly that a does not actually ever attain
		public static double TimeOfAscendingNode(this Orbit a, Orbit b, double UT)
		{
			return a.TimeOfTrueAnomaly(a.AscendingNodeTrueAnomaly(b), UT);
		}
		//Returns the next time at which a will cross its descending node with b.
		//For elliptical orbits this is a time between UT and UT + a.period.
		//For hyperbolic orbits this can be any time, including a time in the past if
		//the descending node is in the past.
		//NOTE: this function will throw an ArgumentException if a is a hyperbolic orbit and the "descending node"
		//occurs at a true anomaly that a does not actually ever attain
		public static double TimeOfDescendingNode(this Orbit a, Orbit b, double UT)
		{
			return a.TimeOfTrueAnomaly(a.DescendingNodeTrueAnomaly(b), UT);
		}
		//NOTE: this function can throw an ArgumentException, if o is a hyperbolic orbit with an eccentricity
		//large enough that it never attains the given true anomaly
		public static double TimeOfTrueAnomaly(this Orbit o, double trueAnomaly, double UT)
		{
			return o.UTAtMeanAnomaly(o.GetMeanAnomalyAtEccentricAnomaly(o.GetEccentricAnomalyAtTrueAnomaly(trueAnomaly)), UT);
		}
		//The next time at which the orbiting object will reach the given mean anomaly.
		//For elliptical orbits, this will be a time between UT and UT + o.period
		//For hyperbolic orbits, this can be any time, including a time in the past, if
		//the given mean anomaly occurred in the past
		public static double UTAtMeanAnomaly(this Orbit o, double meanAnomaly, double UT)
		{
			double currentMeanAnomaly = o.MeanAnomalyAtUT(UT);
			double meanDifference = meanAnomaly - currentMeanAnomaly;
			if (o.eccentricity < 1)
			{
				meanDifference = JUtil.ClampRadiansTwoPi(meanDifference);
			}

			return UT + meanDifference / o.MeanMotion();
		}
		//Converts an eccentric anomaly into a mean anomaly.
		//For an elliptical orbit, the returned value is between 0 and 2pi
		//For a hyperbolic orbit, the returned value is any number
		public static double GetMeanAnomalyAtEccentricAnomaly(this Orbit o, double E)
		{
			double e = o.eccentricity;
			if (e < 1)
			{ //elliptical orbits
				return JUtil.ClampRadiansTwoPi(E - (e * Math.Sin(E)));
			} //hyperbolic orbits
			return (e * Math.Sinh(E)) - E;
		}
		//Originally by Zool, revised by The_Duck
		//Converts a true anomaly into an eccentric anomaly.
		//For elliptical orbits this returns a value between 0 and 2pi
		//For hyperbolic orbits the returned value can be any number.
		//NOTE: For a hyperbolic orbit, if a true anomaly is requested that does not exist (a true anomaly
		//past the true anomaly of the asymptote) then an ArgumentException is thrown
		public static double GetEccentricAnomalyAtTrueAnomaly(this Orbit o, double trueAnomaly)
		{
			double e = o.eccentricity;
			trueAnomaly = JUtil.ClampDegrees360(trueAnomaly);
			trueAnomaly = trueAnomaly * (Math.PI / 180);

			if (e < 1)
			{ //elliptical orbits
				double cosE = (e + Math.Cos(trueAnomaly)) / (1 + e * Math.Cos(trueAnomaly));
				double sinE = Math.Sqrt(1 - (cosE * cosE));
				if (trueAnomaly > Math.PI)
				{
					sinE *= -1;
				}

				return JUtil.ClampRadiansTwoPi(Math.Atan2(sinE, cosE));
			}
			else
			{  //hyperbolic orbits
				double coshE = (e + Math.Cos(trueAnomaly)) / (1 + e * Math.Cos(trueAnomaly));
				if (coshE < 1)
				{
					throw new ArgumentException("OrbitExtensions.GetEccentricAnomalyAtTrueAnomaly: True anomaly of " + trueAnomaly + " radians is not attained by orbit with eccentricity " + o.eccentricity);
				}

				double E = JUtil.Acosh(coshE);
				if (trueAnomaly > Math.PI)
				{
					E *= -1;
				}

				return E;
			}
		}
		//The mean anomaly of the orbit.
		//For elliptical orbits, the value return is always between 0 and 2pi
		//For hyperbolic orbits, the value can be any number.
		public static double MeanAnomalyAtUT(this Orbit o, double UT)
		{
			double ret = o.meanAnomalyAtEpoch + o.MeanMotion() * (UT - o.epoch);
			if (o.eccentricity < 1)
			{
				ret = JUtil.ClampRadiansTwoPi(ret);
			}

			return ret;
		}
		//mean motion is rate of increase of the mean anomaly
		public static double MeanMotion(this Orbit o)
		{
			return Math.Sqrt(o.referenceBody.gravParameter / Math.Abs(Math.Pow(o.semiMajorAxis, 3)));
		}
		//Converts a direction, specified by a Vector3d, into a true anomaly.
		//The vector is projected into the orbital plane and then the true anomaly is
		//computed as the angle this vector makes with the vector pointing to the periapsis.
		//The returned value is always between 0 and 360.
		public static double TrueAnomalyFromVector(this Orbit o, Vector3d vec)
		{
			Vector3d projected = Vector3d.Exclude(o.SwappedOrbitNormal(), vec);
			Vector3d vectorToPe = o.eccVec.xzy;
			double angleFromPe = Math.Abs(Vector3d.Angle(vectorToPe, projected));

			//If the vector points to the infalling part of the orbit then we need to do 360 minus the
			//angle from Pe to get the true anomaly. Test this by taking the the cross product of the
			//orbit normal and vector to the periapsis. This gives a vector that points to center of the 
			//outgoing side of the orbit. If vectorToAN is more than 90 degrees from this vector, it occurs
			//during the infalling part of the orbit.
			if (Math.Abs(Vector3d.Angle(projected, Vector3d.Cross(o.SwappedOrbitNormal(), vectorToPe))) < 90)
			{
				return angleFromPe;
			}
			return 360 - angleFromPe;
		}
		//distance from the center of the planet
		public static double Radius(this Orbit o, double UT)
		{
			return o.SwappedRelativePositionAtUT(UT).magnitude;
		}
		//position relative to the primary
		public static Vector3d SwappedRelativePositionAtUT(this Orbit o, double UT)
		{
			return o.getRelativePositionAtUT(UT).xzy;
		}
	}
}


================================================
FILE: SCANsat/SCAN_Platform/Extensions/Math/UnityEngine.Mathf_.cs
================================================
using System;
namespace UnityEngine
{
	public static class Mathf_
	{

		public static float Mathf_Round(this float f, int precision)
		{
			if (precision < -4 || precision > 4)
			{
				throw new ArgumentOutOfRangeException("[SCANsat] Precision Must Be Between -4 And 4 For Rounding Operation");
			}

			if (precision >= 0)
			{
				return (float)Math.Round(f, precision);
			}
			else
			{
				precision = (int)Math.Pow(10, Math.Abs(precision));
				if (f >= 0)
				{
					f += (5 * precision / 10);
				}
				else
				{
					f -= (5 * precision / 10);
				}

				return (float)Math.Round(f - (f % precision), 0);
			}
		}
	}
}



================================================
FILE: SCANsat/SCAN_Platform/Extensions/StringExtensions.cs
================================================
using KSP.Localization;

namespace SCANsat
{
	public static class StringExtensions
	{
		public static string LocalizeBodyName(this string input)
		{
			return Localizer.Format("<<1>>", input);
		}
	}
}


================================================
FILE: SCANsat/SCAN_Platform/Logging.cs
================================================
using System;
using Log = KSPBuildTools.Log;


// TODO: remove this file and fixup references to call KSPBuildTools.Log directly
namespace SCANsat.SCAN_Platform.Logging
{
	public class ConsoleLogger
	{
		[System.Diagnostics.Conditional("DEBUG")]
		public static void Debug(string message, params object[] strParams)
		{
			Log.Debug(string.Format(message, strParams));
		}

		public static void Now(string message, params object[] strParams)
		{
			Log.Message(string.Format(message, strParams));
		}

		public static void Main()
		{
		}
	}
}

================================================
FILE: SCANsat/SCAN_Platform/SCAN_CLZF2.cs
================================================
namespace SCANsat.SCAN_Platform
{
	/*
	 * Found here:
	 * http://forum.unity3d.com/threads/152579-LZF-compression-and-decompression-for-Unity
	 * 
	 * Only change for SCANsat: Moved to SCANsat namespace.
	 * 
	 * Original licensing information follows:
	 */
	/* 
	 * Improved version to C# LibLZF Port:
	 * Copyright (c) 2010 Roman Atachiants 
	 * 
	 * Original CLZF Port:
	 * Copyright (c) 2005 Oren J. Maurice 
	 * 
	 * Original LibLZF Library & Algorithm:
	 * Copyright (c) 2000-2008 Marc Alexander Lehmann 
	 * 
	 * Redistribution and use in source and binary forms, with or without modifica-
	 * tion, are permitted provided that the following conditions are met:
	 * 
	 *   1.  Redistributions of source code must retain the above copyright notice,
	 *       this list of conditions and the following disclaimer.
	 * 
	 *   2.  Redistributions in binary form must reproduce the above copyright
	 *       notice, this list of conditions and the following disclaimer in the
	 *       documentation and/or other materials provided with the distribution.
	 * 
	 *   3.  The name of the author may not be used to endorse or promote products
	 *       derived from this software without specific prior written permission.
	 * 
	 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
	 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
	 * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
	 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
	 * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
	 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
	 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
	 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
	 * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
	 * OF THE POSSIBILITY OF SUCH DAMAGE.
	 *
	 * Alternatively, the contents of this file may be used under the terms of
	 * the GNU General Public License version 2 (the "GPL"), in which case the
	 * provisions of the GPL are applicable instead of the above. If you wish to
	 * allow the use of your version of this file only under the terms of the
	 * GPL and not to allow others to use your version of this file under the
	 * BSD license, indicate your decision by deleting the provisions above and
	 * replace them with the notice and other provisions required by the GPL. If
	 * you do not delete the provisions above, a recipient may use your version
	 * of this file under either the BSD or the GPL.
	 */
	using System;

	/* Benchmark with Alice29 Canterbury Corpus
			---------------------------------------
			(Compression) Original CLZF C#
			Raw = 152089, Compressed = 101092
			 8292,4743 ms.
			---------------------------------------
			(Compression) My LZF C#
			Raw = 152089, Compressed = 101092
			 33,0019 ms.
			---------------------------------------
			(Compression) Zlib using SharpZipLib
			Raw = 152089, Compressed = 54388
			 8389,4799 ms.
			---------------------------------------
			(Compression) QuickLZ C#
			Raw = 152089, Compressed = 83494
			 80,0046 ms.
			---------------------------------------
			(Decompression) Original CLZF C#
			Decompressed = 152089
			 16,0009 ms.
			---------------------------------------
			(Decompression) My LZF C#
			Decompressed = 152089
			 15,0009 ms.
			---------------------------------------
			(Decompression) Zlib using SharpZipLib
			Decompressed = 152089
			 3577,2046 ms.
			---------------------------------------
			(Decompression) QuickLZ C#
			Decompressed = 152089
			 21,0012 ms.
		*/

	/// 
	/// Improved C# LZF Compressor, a very small data compression library. The compression algorithm is extremely fast. 
	public static class SCAN_CLZF2
	{
		private static readonly uint HLOG = 14;
		private static readonly uint HSIZE = (1 << 14);
		private static readonly uint MAX_LIT = (1 << 5);
		private static readonly uint MAX_OFF = (1 << 13);
		private static readonly uint MAX_REF = ((1 << 8) + (1 << 3));
		/// 
		/// Hashtable, that can be allocated only once
		/// 
		private static readonly long[] HashTable = new long[HSIZE];
		// Compresses inputBytes
		public static byte[] Compress(byte[] inputBytes)
		{
			// Starting guess, increase it later if needed
			int outputByteCountGuess = inputBytes.Length * 2;
			byte[] tempBuffer = new byte[outputByteCountGuess];
			int byteCount = lzf_compress(inputBytes, ref tempBuffer);
			// If byteCount is 0, then increase buffer and try again
			while (byteCount == 0)
			{
				outputByteCountGuess *= 2;
				tempBuffer = new byte[outputByteCountGuess];
				byteCount = lzf_compress(inputBytes, ref tempBuffer);
			}
			byte[] outputBytes = new byte[byteCount];
			Buffer.BlockCopy(tempBuffer, 0, outputBytes, 0, byteCount);
			return outputBytes;
		}
		// Decompress outputBytes
		public static byte[] Decompress(byte[] inputBytes)
		{
			// Starting guess, increase it later if needed
			int outputByteCountGuess = inputBytes.Length * 2;
			byte[] tempBuffer = new byte[outputByteCountGuess];
			int byteCount = lzf_decompress(inputBytes, ref tempBuffer);
			// If byteCount is 0, then increase buffer and try again
			while (byteCount == 0)
			{
				outputByteCountGuess *= 2;
				tempBuffer = new byte[outputByteCountGuess];
				byteCount = lzf_decompress(inputBytes, ref tempBuffer);
			}
			byte[] outputBytes = new byte[byteCount];
			Buffer.BlockCopy(tempBuffer, 0, outputBytes, 0, byteCount);
			return outputBytes;
		}

		/// 
		/// Compresses the data using LibLZF algorithm
		/// 
		/// Reference to the data to compress
		/// Reference to a buffer which will contain the compressed data
		/// The size of the compressed archive in the output buffer
		public static int lzf_compress(byte[] input, ref byte[] output)
		{
			int inputLength = input.Length;
			int outputLength = output.Length;
			Array.Clear(HashTable, 0, (int)HSIZE);
			long hslot;
			uint iidx = 0;
			uint oidx = 0;
			long reference;
			uint hval = (uint)(((input[iidx]) << 8) | input[iidx + 1]); // FRST(in_data, iidx);
			long off;
			int lit = 0;
			for (; ; )
			{
				if (iidx < inputLength - 2)
				{
					hval = (hval << 8) | input[iidx + 2];
					hslot = ((hval ^ (hval << 5)) >> (int)(((3 * 8 - HLOG)) - hval * 5) & (HSIZE - 1));
					reference = HashTable[hslot];
					HashTable[hslot] = (long)iidx;
					if ((off = iidx - reference - 1) < MAX_OFF
						&& iidx + 4 < inputLength
						&& reference > 0
						&& input[reference + 0] == input[iidx + 0]
						&& input[reference + 1] == input[iidx + 1]
						&& input[reference + 2] == input[iidx + 2])
					{
						/* match found at *reference++ */
						uint len = 2;
						uint maxlen = (uint)inputLength - iidx - len;
						maxlen = maxlen > MAX_REF ? MAX_REF : maxlen;
						if (oidx + lit + 1 + 3 >= outputLength)
						{
							return 0;
						}

						do
						{
							len++;
						}
						while (len < maxlen && input[reference + len] == input[iidx + len]);
						if (lit != 0)
						{
							output[oidx++] = (byte)(lit - 1);
							lit = -lit;
							do
							{
								output[oidx++] = input[iidx + lit];
							}
							while ((++lit) != 0);
						}
						len -= 2;
						iidx++;
						if (len < 7)
						{
							output[oidx++] = (byte)((off >> 8) + (len << 5));
						}
						else
						{
							output[oidx++] = (byte)((off >> 8) + (7 << 5));
							output[oidx++] = (byte)(len - 7);
						}
						output[oidx++] = (byte)off;
						iidx += len - 1;
						hval = (uint)(((input[iidx]) << 8) | input[iidx + 1]);
						hval = (hval << 8) | input[iidx + 2];
						HashTable[((hval ^ (hval << 5)) >> (int)(((3 * 8 - HLOG)) - hval * 5) & (HSIZE - 1))] = iidx;
						iidx++;
						hval = (hval << 8) | input[iidx + 2];
						HashTable[((hval ^ (hval << 5)) >> (int)(((3 * 8 - HLOG)) - hval * 5) & (HSIZE - 1))] = iidx;
						iidx++;
						continue;
					}
				}
				else if (iidx == inputLength)
				{
					break;
				}
				/* one more literal byte we must copy */
				lit++;
				iidx++;
				if (lit == MAX_LIT)
				{
					if (oidx + 1 + MAX_LIT >= outputLength)
					{
						return 0;
					}

					output[oidx++] = (byte)(MAX_LIT - 1);
					lit = -lit;
					do
					{
						output[oidx++] = input[iidx + lit];
					}
					while ((++lit) != 0);
				}
			}
			if (lit != 0)
			{
				if (oidx + lit + 1 >= outputLength)
				{
					return 0;
				}

				output[oidx++] = (byte)(lit - 1);
				lit = -lit;
				do
				{
					output[oidx++] = input[iidx + lit];
				}
				while ((++lit) != 0);
			}
			return (int)oidx;
		}

		/// 
		/// Decompresses the data using LibLZF algorithm
		/// 
		/// Reference to the data to decompress
		/// Reference to a buffer which will contain the decompressed data
		/// Returns decompressed size
		public static int lzf_decompress(byte[] input, ref byte[] output)
		{
			int inputLength = input.Length;
			int outputLength = output.Length;
			uint iidx = 0;
			uint oidx = 0;
			do
			{
				uint ctrl = input[iidx++];
				if (ctrl < (1 << 5))
				{ /* literal run */
					ctrl++;
					if (oidx + ctrl > outputLength)
					{
						//SET_ERRNO (E2BIG);
						return 0;
					}
					do
					{
						output[oidx++] = input[iidx++];
					}
					while ((--ctrl) != 0);
				}
				else
				{ /* back reference */
					uint len = ctrl >> 5;
					int reference = (int)(oidx - ((ctrl & 0x1f) << 8) - 1);
					if (len == 7)
					{
						len += input[iidx++];
					}

					reference -= input[iidx++];
					if (oidx + len + 2 > outputLength)
					{
						//SET_ERRNO (E2BIG);
						return 0;
					}
					if (reference < 0)
					{
						//SET_ERRNO (EINVAL);
						return 0;
					}
					output[oidx++] = output[reference++];
					output[oidx++] = output[reference++];
					do
					{
						output[oidx++] = output[reference++];
					}
					while ((--len) != 0);
				}
			} while (iidx < inputLength);
			return (int)oidx;
		}
	}

}

================================================
FILE: SCANsat/SCAN_Platform/SCAN_ConfigNodeStorage.cs
================================================
using System;

using Log = SCANsat.SCAN_Platform.Logging.ConsoleLogger;


namespace SCANsat.SCAN_Platform
{
	public abstract class SCAN_ConfigNodeStorage : IPersistenceLoad, IPersistenceSave
	{

		Func timeNow = () => string.Format("{0:ddMMyyyy-HHmmss}", DateTime.Now);

		public SCAN_ConfigNodeStorage() { } // FIXME: should be private?
		public SCAN_ConfigNodeStorage(string filePath) { FilePath = filePath; } // FIXME: should be private?

		private string _FilePath;
		public string FilePath
		{
			get { return _FilePath; }
			set { _FilePath = System.IO.Path.Combine(KSPUtil.ApplicationRootPath, "GameData/" + value + ".cfg").Replace("\\", "/"); }
		}

		private string topNodeName;
		public string TopNodeName
		{
			get { return topNodeName; }
			internal set { topNodeName = value; }
		}
		public string FileName { get { return System.IO.Path.GetFileName(FilePath); } }
		public bool FileExists { get { return System.IO.File.Exists(FilePath); } }

		void IPersistenceLoad.PersistenceLoad() { OnDecodeFromConfigNode(); }
		void IPersistenceSave.PersistenceSave() { OnEncodeToConfigNode(); }

		public virtual void OnDecodeFromConfigNode() { }
		public virtual void OnEncodeToConfigNode() { }
		public virtual void onSavePost() { }

		public bool Load() { return Load(FilePath); }
		public bool Load(string fileFullName)
		{
			try
			{
				Log.Debug("Loading ConfigNode");
				if (FileExists)
				{
					ConfigNode cnToLoad = GameDatabase.Instance.GetConfigNode(topNodeName);
					ConfigNode.LoadObjectFromConfig(this, cnToLoad);
					return true;
				}
				else
				{
					Log.Now("File could not be found to load({0})", fileFullName);
					return false;
				}
			}
			catch (Exception ex)
			{
				Log.Now("Failed to Load ConfigNode from file ({0}) - Error:{1}", fileFullName, ex);
				Log.Now("Storing old config - {0}", fileFullName + ".err-" + timeNow);
				System.IO.File.Copy(fileFullName, fileFullName + ".err-" + timeNow, true);
				return false;
			}
		}

		public bool LoadSavedCopy()
		{
			try
			{
				Log.Debug("Loading ConfigNode");
				if (FileExists)
				{
					ConfigNode cnToLoad = ConfigNode.Load(FilePath);
					ConfigNode cnUnwrapped = cnToLoad.GetNode(this.GetType().Name);
					ConfigNode.LoadObjectFromConfig(this, cnUnwrapped);
					return true;
				}
				else
				{
					Log.Now("File could not be found to load after saving new copy ({0})", FilePath);
					return false;
				}
			}
			catch (Exception ex)
			{
				Log.Now("Failed to Load ConfigNode from file after saving ({0}) - Error:{1}", FilePath, ex.Message);
				return false;
			}
		}

		public bool Save()
		{
			Log.Debug("Saving ConfigNode");
			return Save(FilePath);
		}
		public bool Save(string fileFullName)
		{
			try
			{
				ConfigNode cnToSave = AsConfigNode;
				ConfigNode cnSaveWrapper = new ConfigNode(GetType().Name);
				cnSaveWrapper.AddNode(cnToSave);
				cnSaveWrapper.Save(fileFullName);
				onSavePost();
				return true;
			}
			catch (Exception ex)
			{
				Log.Now("Failed to Save ConfigNode to file({0})-Error:{1}", fileFullName, ex.Message);
				return false;
			}
		}

		public ConfigNode AsConfigNode
		{
			get
			{
				try
				{
					ConfigNode cnTemp = new ConfigNode(GetType().Name);
					cnTemp = ConfigNode.CreateConfigFromObject(this, cnTemp);
					return cnTemp;
				}
				catch (Exception ex)
				{
					Log.Now("Failed to generate ConfigNode-Error;{0}", ex.Message);
					return new ConfigNode(GetType().Name);
				}
			}
		}

		internal static string _AssemblyName { get { return System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; } }
		internal static string _AssemblyLocation { get { return System.Reflection.Assembly.GetExecutingAssembly().Location; } }
		internal static string _AssemblyFolder { get { return System.IO.Path.GetDirectoryName(_AssemblyLocation); } }
	}
}


================================================
FILE: SCANsat/SCAN_Platform/SCAN_MBE.cs
================================================
#region license
/* 
 *  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANsat - MonoBehaviour Extended
 * 
 * A modified form of TriggerAu's MonoBehaviour Extended class:
 * http://forum.kerbalspaceprogram.com/threads/66503-KSP-Plugin-Framework
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 *
 */
#endregion
using System;

using UnityEngine;

using Log = SCANsat.SCAN_Platform.Logging.ConsoleLogger;


namespace SCANsat.SCAN_Platform
{
	public abstract class SCAN_MBE : MonoBehaviour
	{
		//#region Constructor
		////private MonoBehaviourExtended()
		////{
		////}
		////internal static MonoBehaviourExtended CreateComponent(GameObject AttachTo)
		////{
		////    MonoBehaviourExtended monoReturn;
		////    monoReturn = AttachTo.AddComponent();
		////    return monoReturn;
		////}
		//static SCAN_MBE()
		//{
		//	UnityEngine.Random.seed = (int)(DateTime.Now - DateTime.Now.Date).TotalSeconds;
		//	Log.Now("Seed Generated...");
		//}
		//#endregion
		internal T AddComponent() where T : UnityEngine.Component { return gameObject.AddComponent(); }

		private static bool _seedGenerated;
		private bool _RepeatRunning;
		private bool _OnGUI_FirstRun;
		private float _RepeatInitialWait;
		private float _RepeatSecs;
		private double LooperUTLastStart { get; set; }
		private double LooperUTStart { get; set; }
		internal TimeSpan LooperDuration { get; private set; }
		internal double LooperUTPeriod { get; private set; }
		internal bool LooperRunning { get { return _RepeatRunning; } }

		internal float LooperRate
		{
			get { return _RepeatSecs; }
			private set
			{
				Log.Debug("Setting RepeatSecs to {0}", value);
				_RepeatSecs = value;
				if (LooperRunning)
				{
					RestartLooper();
				}
			}
		}

		internal float SetRepeatTimesPerSecond(Int32 dxdt) { return (float)(1 / (float)dxdt); }
		internal float SetRepeatTimesPerSecond(float dxdt) { return (float)(1 / dxdt); }
		internal float SetRepeatRate(float NewSeconds) { return NewSeconds; }
		internal float LooperInitialWait
		{
			get { return _RepeatInitialWait; }
			set { _RepeatInitialWait = value; }
		}

		protected void RestartLooper() { StopLooper(); StartLooper(); }

		protected bool StartLooper(Int32 TimesPerSec)
		{
			Log.Debug("Starting the repeating function");
			StopLooper();                           // stop it if its running
			SetRepeatTimesPerSecond(TimesPerSec);   // set the new value
			return StartLooper();                   // start it and return the result
		}
		protected bool StartLooper()
		{
			try
			{
				Log.Debug("Invoking the repeating function");
				this.InvokeRepeating("LooperWrapper", _RepeatInitialWait, LooperRate);
				_RepeatRunning = true;
			}
			catch (Exception) { Log.Now("Unable to invoke the repeating function"); }

			return _RepeatRunning;
		}
		protected bool StopLooper()
		{
			try
			{
				Log.Debug("Cancelling the repeating function");
				this.CancelInvoke("LooperWrapper");
				_RepeatRunning = false;
			}
			catch (Exception) { Log.Now("Unable to cancel the repeating function"); }
			return _RepeatRunning;
		}

		protected virtual void Looper()
		{
			//Log.Debug("WorkerBase"); 
		}

		private void LooperWrapper()
		{
			DateTime Duration = DateTime.Now;                   // record the start date
			LooperUTLastStart = LooperUTStart;                  // ... and last invocation
			LooperUTStart = Planetarium.GetUniversalTime(); // ... and this too
			LooperUTPeriod = LooperUTStart - LooperUTLastStart;// and diff!

			Looper();   // do the work (overload this)

			LooperDuration = (DateTime.Now - Duration);
		}

		//See this for info on order of execuction
		//  http://docs.unity3d.com/Documentation/Manual/ExecutionOrder.html
		protected virtual void Awake()
		{
			Log.Debug("MBE Awakened");

			if (!_seedGenerated)
			{
				UnityEngine.Random.InitState((int)(DateTime.Now - DateTime.Now.Date).TotalSeconds);

				_seedGenerated = true;
			}
		}       // 1.
				//internal virtual void OnEnable()		{ }								// 2.
		protected virtual void Start() { Log.Debug("MBE Started"); }        // 3.
		protected virtual void FixedUpdate() { }                                // 4a. called (>1) per frame
		protected virtual void Update() { }                             // 4b.   ""   (=1) per frame
																		// 4c.        
		protected virtual void LateUpdate() { }                             // 4d.   ""   (=1) per frame
																			//internal virtual void OnGUI()			{ }								// 5.    ""   (>1) per frame
																			// 5a. (layout and repaint)
																			// 5a. (layout and input) (1 per input)
		protected virtual void OnGUIEvery() { }
		protected virtual void OnGUI_FirstRun() { Log.Debug("Running OnGUI OnceOnly Code"); }
		//internal virtual void OnDisable()		{ }								// 6.
		protected virtual void OnDestroy() { Log.Debug("MBE Destroy-ing"); }    // 7.

		private void OnGUI()
		{
			if (!_OnGUI_FirstRun)
			{
				_OnGUI_FirstRun = true;                     // set the flag so this only runs once
															//if (!SCAN_SkinsLibrary._Initialized)
															//SCAN_SkinsLibrary.InitSkinList();		// set up the skins library
				OnGUI_FirstRun();                           // then actually *do* the firstrun stuff
			}
			OnGUIEvery();
		}

	}
}


================================================
FILE: SCANsat/SCAN_Reflection/SCANfinePrint.cs
================================================
using System;
using System.Reflection;
using FinePrint;
using FinePrint.Contracts.Parameters;
using FinePrint.Utilities;
using UnityEngine;

namespace SCANsat.SCAN_Reflection
{
	static class SCANfinePrint
	{
		internal static bool FinePrintFlightBand = false;
		internal static bool FinePrintStationaryWaypoint = false;

		private static bool FinePrintFlightBandRun = false;
		private static bool FinePrintStationaryWaypointRun = false;

		private static FieldInfo _FinePrintFlightBand;
		private static FieldInfo _FinePrintStationaryWaypoint;


		internal static Waypoint FinePrintStationaryWaypointObject(StationaryPointParameter p)
		{
			Waypoint w = null;
			try
			{
				w = (Waypoint)_FinePrintStationaryWaypoint.GetValue(p);
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error in detecting FinePrint Stationary Waypoint object: {0}", e);
			}

			return w;
		}

		internal static void Initialize()
		{
			FinePrintStationaryWaypoint = FinePrintStationaryWaypointReflection();
			FinePrintFlightBand = FinePrintFlightBandReflection();
		}

		internal static FlightBand FinePrintFlightBandValue(SurveyWaypointParameter p)
		{
			FlightBand b = FlightBand.NONE;
			try
			{
				b = (FlightBand)_FinePrintFlightBand.GetValue(p);
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error in detecting FinePrint FlightBand object: {0}", e);
			}

			return b;
		}

		private static bool FinePrintStationaryWaypointReflection()
		{
			if (_FinePrintStationaryWaypoint != null)
			{
				return true;
			}

			if (FinePrintStationaryWaypointRun)
			{
				return false;
			}

			FinePrintStationaryWaypointRun = true;

			try
			{
				Type sType = typeof(StationaryPointParameter);

				var field = sType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);

				_FinePrintStationaryWaypoint = field[0];

				if (_FinePrintStationaryWaypoint == null)
				{
					SCANUtil.SCANlog("FinePrint Stationary Waypoint Field Not Found");
					return false;
				}

				SCANUtil.SCANlog("FinePrint Stationary Waypoint Field Assigned");

				return _FinePrintStationaryWaypoint != null;
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error in assigning FinePrint Stationary Waypoint method: {0}", e);
			}

			return false;
		}

		private static bool FinePrintFlightBandReflection()
		{
			if (_FinePrintFlightBand != null)
			{
				return true;
			}

			if (FinePrintFlightBandRun)
			{
				return false;
			}

			FinePrintFlightBandRun = true;

			try
			{
				Type sType = typeof(SurveyWaypointParameter);

				var field = sType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);

				_FinePrintFlightBand = field[2];

				if (_FinePrintFlightBand == null)
				{
					SCANUtil.SCANlog("FinePrint FlightBand Field Not Found");
					return false;
				}

				SCANUtil.SCANlog("FinePrint FlightBand Field Assigned");

				return _FinePrintFlightBand != null;
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error in assigning FinePrint FlightBand method: {0}", e);
			}

			return false;
		}
	}
}

================================================
FILE: SCANsat/SCAN_Reflection/SCANkopernicus.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANreflection - assigns reflection methods at startup
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Linq;
using System.Reflection;
using UnityEngine;
using Log = KSPBuildTools.Log;

namespace SCANsat.SCAN_Reflection
{
	static class SCANkopernicus
	{
		public static bool KopernicusLoaded = false;

		private static Type x_ScaledSpaceOnDemand_Type = null;
		private static MethodInfo x_ScaledSpaceOnDemand_LoadTextures = null;
		private static MethodInfo x_ScaledSpaceOnDemand_UnloadTextures = null;

		private static Type x_PQSMod_OnDemandHandler_Type = null;

		internal static void Initialize(AssemblyLoader.LoadedAssembly kopernicusAssembly)
		{
			try
			{
				x_ScaledSpaceOnDemand_Type = kopernicusAssembly.assembly.GetType("Kopernicus.OnDemand.ScaledSpaceOnDemand");
				x_ScaledSpaceOnDemand_LoadTextures = x_ScaledSpaceOnDemand_Type.GetMethod("LoadTextures", BindingFlags.Instance | BindingFlags.Public);
				x_ScaledSpaceOnDemand_UnloadTextures = x_ScaledSpaceOnDemand_Type.GetMethod("UnloadTextures", BindingFlags.Instance | BindingFlags.Public);

				x_PQSMod_OnDemandHandler_Type = kopernicusAssembly.assembly.GetType("Kopernicus.OnDemand.PQSMod_OnDemandHandler");
			}
			catch(Exception e)
			{
				Log.Exception(e);
			}

			if (x_ScaledSpaceOnDemand_Type == null || x_ScaledSpaceOnDemand_LoadTextures == null || x_ScaledSpaceOnDemand_UnloadTextures == null || x_PQSMod_OnDemandHandler_Type == null)
			{
				Log.Error("SCANsat: Unable to reflect Kopernicus OnDemand methods");
			}
			else
			{
				KopernicusLoaded = true;
			}
		}

		internal static void LoadOnDemand(CelestialBody body)
		{
			if (!KopernicusLoaded) return;

			Component scaledSpaceOnDemand = body.scaledBody.GetComponent(x_ScaledSpaceOnDemand_Type);

			if (scaledSpaceOnDemand == null) return;

			SCANUtil.SCANlog("Loading Kopernicus On Demand Scaled Space Map For {0}", body.bodyName);
			x_ScaledSpaceOnDemand_LoadTextures.Invoke(scaledSpaceOnDemand, null);
		}

		internal static void UnloadOnDemand(CelestialBody body)
		{
			if (!KopernicusLoaded) return;

			Component scaledSpaceOnDemand = body.scaledBody.GetComponent(x_ScaledSpaceOnDemand_Type);

			if (scaledSpaceOnDemand == null) return;

			SCANUtil.SCANlog("Unloading Kopernicus On Demand Scaled Space Map For {0}", body.bodyName);
			x_ScaledSpaceOnDemand_UnloadTextures.Invoke(scaledSpaceOnDemand, null);
		}

		private static PQSMod GetOnDemandHandlerPQSMod(CelestialBody body)
		{
			return body.GetComponentsInChildren(x_PQSMod_OnDemandHandler_Type, true).FirstOrDefault() as PQSMod;
		}

		internal static void LoadPQS(CelestialBody body)
		{
			if (!KopernicusLoaded) return;

			PQSMod KopernicusOnDemand = GetOnDemandHandlerPQSMod(body);

			if (KopernicusOnDemand == null)
			{
				return;
			}

			SCANUtil.SCANlog("Loading Kopernicus On Demand PQSMod For {0}", body.bodyName);
			KopernicusOnDemand.OnQuadPreBuild(null);
		}

		internal static void UnloadPQS(CelestialBody body)
		{
			if (!KopernicusLoaded) return;

			PQSMod KopernicusOnDemand = GetOnDemandHandlerPQSMod(body);

			if (KopernicusOnDemand == null)
			{
				return;
			}

			KopernicusOnDemand.OnSphereInactive();

			SCANUtil.SCANlog("Unloading Kopernicus On Demand PQSMod For {0}", body.bodyName);
		}
	}
}


================================================
FILE: SCANsat/SCAN_Reflection/SCANparallaxContinued.cs
================================================
using System;
using System.Linq;
using System.Reflection;
using UnityEngine;
using Log = KSPBuildTools.Log;

namespace SCANsat.SCAN_Reflection
{
	static class SCANparallaxContinued
	{
		static MethodInfo x_ParallaxScaledBody_Load = null;
		static MethodInfo x_ParallaxScaledBody_SetScaledMaterialParams = null;
		static FieldInfo x_ParallaxScaledBody_scaledMaterial = null;
		
		static FieldInfo x_ConfigLoader_parallaxScaledBodies = null;

		internal static bool ParallaxContinuedLoaded = false;

		internal static void Initialize(AssemblyLoader.LoadedAssembly parallaxAssembly)
		{
			try
			{
				Type parallaxScaledBody_Type = parallaxAssembly.assembly.GetType("Parallax.ParallaxScaledBody");
				x_ParallaxScaledBody_Load = parallaxScaledBody_Type.GetMethod("Load", BindingFlags.Instance | BindingFlags.Public);
				x_ParallaxScaledBody_scaledMaterial = parallaxScaledBody_Type.GetField("scaledMaterial", BindingFlags.Instance | BindingFlags.Public);
				//x_ParallaxScaledBody_SetScaledMaterialParams = parallaxScaledBody_Type.GetMethod("SetScaledMaterialParams", BindingFlags.Instance | BindingFlags.Public);

				Type parallaxConfigLoader_Type = parallaxAssembly.assembly.GetType("Parallax.ConfigLoader");
				x_ConfigLoader_parallaxScaledBodies = parallaxConfigLoader_Type.GetField("parallaxScaledBodies", BindingFlags.Static | BindingFlags.Public);
			}
			catch (Exception e)
			{
				Log.Exception(e);
			}

			if (x_ParallaxScaledBody_Load == null || x_ParallaxScaledBody_scaledMaterial == null || x_ConfigLoader_parallaxScaledBodies == null)
			{
				Log.Error("Failed to initialize Parallax Continued reflection methods");
			}
			else
			{
				ParallaxContinuedLoaded = true;
			}
		}

		internal static void LoadParallax(CelestialBody body, ref Material material)
		{
			if (!ParallaxContinuedLoaded) return;

			var parallaxBodies = x_ConfigLoader_parallaxScaledBodies.GetValue(null) as System.Collections.IDictionary;

			if (parallaxBodies == null) return;

			if (parallaxBodies.Contains(body.name))
			{
				var parallaxBody = parallaxBodies[body.name];

				if (parallaxBody != null)
				{
					Log.Message($"Loading Parallax Continued data for {body.name}");
					x_ParallaxScaledBody_Load.Invoke(parallaxBody, null);
					material = x_ParallaxScaledBody_scaledMaterial.GetValue(parallaxBody) as Material;

#if DEBUG
					for (int propertyIndex = 0; propertyIndex < material.shader.GetPropertyCount(); ++propertyIndex)
					{
						var propertyType = material.shader.GetPropertyType(propertyIndex);
						var propertyName = material.shader.GetPropertyName(propertyIndex);
						object propertyValue = null;

						switch (propertyType)
						{
							case UnityEngine.Rendering.ShaderPropertyType.Color: propertyValue = material.GetColor(propertyName); break;
							case UnityEngine.Rendering.ShaderPropertyType.Vector: propertyValue = material.GetVector(propertyName); break;
							case UnityEngine.Rendering.ShaderPropertyType.Float: propertyValue = material.GetFloat(propertyName); break;
							case UnityEngine.Rendering.ShaderPropertyType.Range: propertyValue = material.GetFloat(propertyName); break;
							case UnityEngine.Rendering.ShaderPropertyType.Texture: propertyValue = material.GetTexture(propertyName); break;
						}

						Log.Debug($"Property {propertyIndex} is {propertyType} named {propertyName} with value {propertyValue}");
					}
#endif
				}
			}
		}
	}
}

================================================
FILE: SCANsat/SCAN_Settings_Config.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_Settings_Config - serializable object that stores settings in an external file
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.IO;
using System.Reflection;
using UnityEngine;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;

namespace SCANsat
{
	[KSPAddon(KSPAddon.Startup.MainMenu, true)]
	public class SCAN_Settings_Config : MonoBehaviour
	{
		[Persistent]
		public bool BackgroundScanning = true;
		[Persistent]
		public int TimeWarpResolution = 12;
		[Persistent]
		public bool ShowGroundTracks = true;
		[Persistent]
		public bool GroundTracksActiveOnly = true;
		[Persistent]
		public bool MechJebTarget = false;
		[Persistent]
		public bool MechJebTargetLoad = false;
		[Persistent]
		public bool OverlayTooltips = true;
		[Persistent]
		public bool WindowTooltips = true;
		[Persistent]
		public bool LegendTooltips = true;
		[Persistent]
		public bool StockToolbar = true;
		[Persistent]
		public bool ToolbarMenu = true;
		[Persistent]
		public bool StockUIStyle = false;
		[Persistent]
		public int MapGenerationSpeed = 2;
		[Persistent]
		public float UIScale = 1;
		[Persistent]
		public bool BiomeLock = true;
		[Persistent]
		public bool RequireNarrowBand = true;
		[Persistent]
		public bool DisableStockResource = false;
		[Persistent]
		public bool InstantScan = true;
		[Persistent]
		public bool UseStockTreshold = true;
		[Persistent]
		public float StockTreshold = 0.9f;
		[Persistent]
		public bool HideZeroResources = true;
		[Persistent]
		public int Interpolation = 8;
		[Persistent]
		public int ResourceMapHeight = 256;
		[Persistent]
		public int BiomeMapHeight = 512;
		[Persistent]
		public float CoverageTransparency = 0.2f;
		[Persistent]
		public bool TrueGreyScale = false;
		[Persistent]
		public bool ExportCSV = false;
		[Persistent]
		public float UnscannedTransparency = 0.4f;
		[Persistent]
		public float BackgroundTransparency = 0.4f;
		[Persistent]
		public float BiomeTransparency = 0.4f;
		[Persistent]
		public bool MapVignette = false;
		[Persistent]
		public bool BigMapBiomeBorder = true;
		[Persistent]
		public bool BigMapStockBiomes = true;
		[Persistent]
		public bool ZoomMapBiomeBorder = true;
		[Persistent]
		public bool SmallMapBiomeBorder = false;
		[Persistent]
		public bool SmallMapStockBiomes = true;
		[Persistent]
		public bool DaylightCheck = true;
		[Persistent]
		public Color MapBackgroundColor = palette.grey;
		[Persistent]
		public Color UnscannedColor = palette.grey;
		[Persistent]
		public Color LowBiomeColor = palette.xkcd_CamoGreen;
		[Persistent]
		public Color HighBiomeColor = palette.xkcd_Marigold;
		[Persistent]
		public float SlopeCutoff = 1;
		[Persistent]
		public Color BottomLowSlopeColor = palette.xkcd_PukeGreen;
		[Persistent]
		public Color BottomHighSlopeColor = palette.xkcd_Lemon;
		[Persistent]
		public Color TopLowSlopeColor = palette.xkcd_Lemon;
		[Persistent]
		public Color TopHighSlopeColor = palette.xkcd_OrangeRed;
		[Persistent]
		public Color32 LoResAltimetryTrackColor = palette.cb_blue * new Vector4(1, 1, 1, 0.4f);
		[Persistent]
		public Color32 HiResAltimetryTrackColor = palette.cb_reddishPurple * new Vector4(1, 1, 1, 0.4f);
		[Persistent]
		public Color32 BiomeTrackColor = palette.cb_yellow * new Vector4(1, 1, 1, 0.4f);
		[Persistent]
		public Color32 AnomalyTrackColor = palette.cb_orange * new Vector4(1, 1, 1, 0.4f);
		[Persistent]
		public Color32 AnomalyDetailTrackColor = palette.xkcd_DarkGreenAlpha;
		[Persistent]
		public Color32 LoResVisualTrackColor = palette.xkcd_DarkGreenAlpha;
		[Persistent]
		public Color32 HiResVisualTrackColor = palette.xkcd_DarkGreenAlpha;
		[Persistent]
		public Color32 FuzzyResourceTrackColor = palette.cb_bluishGreen * new Vector4(1, 1, 1, 0.4f);
		[Persistent]
		public Color32 HiResResourceTrackColor = palette.xkcd_DarkGreenAlpha;
		[Persistent]
		public bool CheatMapFill = false;
		[Persistent]
		public int BigMapWidth = 720;
		[Persistent]
		public Vector2 ZoomMapSize = new Vector2(360, 240);
		[Persistent]
		public Vector2 BigMapPosition = new Vector2(400, -400);
		[Persistent]
		public Vector2 MainMapPosition = new Vector2(100, -200);
		[Persistent]
		public Vector2 ZoomMapPosition = new Vector2(400, -400);
		[Persistent]
		public Vector2 InstrumentsPosition = new Vector2(100, -500);
		[Persistent]
		public Vector2 OverlayPosition = new Vector2(600, -200);
		[Persistent]
		public bool VisibleMapsActive = true;

		private const string filePath = "GameData/SCANsat/PluginData/Settings.cfg";
		private const string directoryPath = "GameData/SCANsat/PluginData";
		private string fullPath;

		private static bool loaded;
		private static SCAN_Settings_Config instance;

		public static SCAN_Settings_Config Instance
		{
			get { return instance; }
		}

		private void Awake()
		{
			if (loaded)
			{
				Destroy(gameObject);
				return;
			}

			DontDestroyOnLoad(gameObject);

			loaded = true;

			instance = this;

			fullPath = Path.Combine(KSPUtil.ApplicationRootPath, filePath).Replace("\\", "/");

			if (Load())
			{
				SCANUtil.SCANlog("Settings file loaded");
			}
			else
			{
				if (Save())
				{
					SCANUtil.SCANlog("Settings file generated at:\n{0}", filePath);
				}
			}

			GameEvents.onGameStateSaved.Add(GameSaved);
		}

		private void GameSaved(Game g)
		{
			if (HighLogic.CurrentGame == g)
			{
				Save();
			}
		}

		public bool Load()
		{
			bool b = false;

			try
			{
				if (File.Exists(fullPath))
				{
					ConfigNode node = ConfigNode.Load(fullPath);
					ConfigNode unwrapped = node.GetNode(GetType().Name);
					ConfigNode.LoadObjectFromConfig(this, unwrapped);
					b = true;
				}
				else
				{
					SCANUtil.SCANlog("Settings file could not be found [{0}]", fullPath);
					b = false;
				}
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error while loading settings file from [{0}]\n{1}", fullPath, e);
				b = false;
			}

			return b;
		}

		public bool Save()
		{
			bool b = false;

			try
			{
				string dirPath = Path.Combine(KSPUtil.ApplicationRootPath, directoryPath).Replace("\\", "/");

				if (!Directory.Exists(dirPath))
				{
					Directory.CreateDirectory(dirPath);
					SCANUtil.SCANlog("Settings directory not found; generating PluginData directory at:\n{0}", dirPath);
				}

				ConfigNode node = AsConfigNode();
				ConfigNode wrapper = new ConfigNode(GetType().Name);
				wrapper.AddNode(node);
				wrapper.Save(fullPath);
				b = true;
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error while saving settings file from [{0}]\n{1}", fullPath, e);
				b = false;
			}

			return b;
		}

		private ConfigNode AsConfigNode()
		{
			try
			{
				ConfigNode node = new ConfigNode(GetType().Name);

				node = ConfigNode.CreateConfigFromObject(this, node);
				return node;
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Failed to generate settings file node...\n{0}", e);
				return new ConfigNode(GetType().Name);
			}
		}
	}
}


================================================
FILE: SCANsat/SCAN_Toolbar/SCANappLauncher.cs
================================================
#region license
/*
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 * 
 * SCANappLauncher - A class to initialize and destroy the stock app launcher button
 *
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
*/
#endregion

using System.Collections;
using SCANsat.SCAN_Platform;
using SCANsat.SCAN_UI;
using SCANsat.SCAN_UI.UI_Framework;
using SCANsat.SCAN_Unity;
using SCANsat.Unity.Unity;
using SCANsat.Unity.Interfaces;
using KSP.UI;
using KSP.UI.Screens;
using UnityEngine;

namespace SCANsat.SCAN_Toolbar
{
	public class SCANappLauncher : MonoBehaviour, ISCAN_Toolbar
	{
		private ApplicationLauncherButton SCANappLauncherButton = null;
		private bool _inMenu;
		private bool _sticky;
		private bool _hovering;
		private SCANsat.Unity.Unity.SCAN_Toolbar uiElement;
		private static SCANappLauncher instance;

		public static SCANappLauncher Instance
		{
			get { return instance; }
		}

		public SCANsat.Unity.Unity.SCAN_Toolbar UIElement
		{
			get { return uiElement; }
		}

		public ApplicationLauncherButton SCANAppButton
		{
			get { return SCANappLauncherButton; }
		}

		public Canvas TooltipCanvas
		{
			get { return UIMasterController.Instance.tooltipCanvas; }
		}

		public bool TooltipsOn
		{
			get { return SCAN_Settings_Config.Instance.WindowTooltips; }
		}

		public bool IsVisible
		{
			get { return _sticky && uiElement != null; }
		}

		public float Scale
		{
			get { return GameSettings.UI_SCALE_APPS; }
		}

		public void ProcessTooltips()
		{
			if (uiElement != null)
			{
				uiElement.ProcessTooltips();
			}
		}

		private void Start()
		{
			instance = this;

			setupToolbar();

			GameEvents.OnGameSettingsApplied.Add(settingsApplied);
		}

		public void ToggleToolbarType()
		{
			removeButton(HighLogic.LoadedScene);

			StartCoroutine(addButton());
		}

		private void OnDestroy()
		{
			GameEvents.onGUIApplicationLauncherUnreadifying.Remove(removeButton);

			if (SCANappLauncherButton != null)
			{
				removeButton(HighLogic.LoadedScene);
			}

			GameEvents.OnGameSettingsApplied.Remove(settingsApplied);

			instance = null;
		}

		private void settingsApplied()
		{
			if (!_sticky || uiElement == null)
			{
				return;
			}

			uiElement.gameObject.SetActive(false);
			DestroyImmediate(uiElement.gameObject);

			OpenMenu();
		}

		private void setupToolbar()
		{
			StartCoroutine(addButton());
		}

		IEnumerator addButton()
		{
			while (!ApplicationLauncher.Ready)
			{
				yield return null;
			}

			if (HighLogic.LoadedScene == GameScenes.FLIGHT)
			{
				if (SCAN_Settings_Config.Instance.ToolbarMenu)
				{
					SCANappLauncherButton = ApplicationLauncher.Instance.AddModApplication(OnTrue, OnFalse, HoverMenuIn, HoverMenuOut, null, null, ApplicationLauncher.AppScenes.FLIGHT | ApplicationLauncher.AppScenes.MAPVIEW, SCAN_UI_Loader.SmallMapAppIcon.texture);
					ApplicationLauncher.Instance.EnableMutuallyExclusive(SCANappLauncherButton);
				}
				else
				{
					SCANappLauncherButton = ApplicationLauncher.Instance.AddModApplication(toggleFlight, toggleFlight, null, null, null, null, ApplicationLauncher.AppScenes.FLIGHT | ApplicationLauncher.AppScenes.MAPVIEW, SCAN_UI_Loader.SmallMapAppIcon.texture);

					if (SCAN_UI_MainMap.Instance.IsVisible)
					{
						SCANappLauncherButton.SetTrue(false);
					}
				}
			}
			else if (HighLogic.LoadedScene == GameScenes.SPACECENTER || HighLogic.LoadedScene == GameScenes.TRACKSTATION)
			{
				SCANappLauncherButton = ApplicationLauncher.Instance.AddModApplication(toggleKSC, toggleKSC, null, null, null, null, ApplicationLauncher.AppScenes.SPACECENTER | ApplicationLauncher.AppScenes.TRACKSTATION, SCAN_UI_Loader.BigMapAppIcon.texture);
			}

			GameEvents.onGUIApplicationLauncherUnreadifying.Add(removeButton);
		}

		private void removeButton(GameScenes scene)
		{
			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				Destroy(uiElement.gameObject);
			}

			if (SCANappLauncherButton != null)
			{
				ApplicationLauncher.Instance.RemoveModApplication(SCANappLauncherButton);
				SCANappLauncherButton = null;
			}
		}

		private void toggleFlight()
		{
			if (SCAN_UI_MainMap.Instance.IsVisible)
			{
				SCAN_UI_MainMap.Instance.Close();
			}
			else
			{
				SCAN_UI_MainMap.Instance.Open();
			}
		}

		private void toggleKSC()
		{
			if (SCAN_UI_BigMap.Instance.IsVisible)
			{
				SCAN_UI_BigMap.Instance.Close();
			}
			else
			{
				SCAN_UI_BigMap.Instance.Open();
			}
		}

		private void OnTrue()
		{
			_sticky = true;

			if (uiElement == null)
			{
				OpenMenu();
			}
		}

		private void OnFalse()
		{
			_sticky = false;

			CloseMenu();

			uiElement = null;
		}

		private void HoverMenuIn()
		{
			_hovering = true;

			if (_sticky || uiElement != null)
			{
				return;
			}

			OpenMenu();
		}

		private void HoverMenuOut()
		{
			_hovering = false;

			if (!_sticky)
			{
				StartCoroutine(HoverOutWait());
			}
		}

		private IEnumerator HoverOutWait()
		{
			int timer = 0;

			while (timer < 2)
			{
				timer++;
				yield return null;
			}

			if (!_inMenu)
			{
				CloseMenu();
			}
		}

		public Vector3 GetAnchor()
		{
			if (SCANappLauncherButton == null)
			{
				return Vector3.zero;
			}

			Vector3 anchor = SCANappLauncherButton.GetAnchor();

			anchor.x -= 3;
			anchor.y += 20;

			return anchor;
		}

		private void OpenMenu()
		{
			if (SCAN_UI_Loader.ToolbarPrefab == null)
			{
				return;
			}

			uiElement = (Instantiate(SCAN_UI_Loader.ToolbarPrefab, GetAnchor(), Quaternion.identity) as GameObject).GetComponent();

			if (uiElement == null)
			{
				return;
			}

			uiElement.transform.SetParent(UIMasterController.Instance.appCanvas.transform);

			uiElement.Setup(this);
		}

		private void CloseMenu()
		{
			if (uiElement != null)
			{
				uiElement.FadeOut();
			}
		}

		private IEnumerator MenuHoverOutWait()
		{
			int timer = 0;

			while (timer < 2)
			{
				timer++;
				yield return null;
			}

			if (!_hovering && !_sticky)
			{
				CloseMenu();
			}
		}

		public bool InMenu
		{
			get { return _inMenu; }
			set
			{
				_inMenu = value;

				if (!value)
				{
					StartCoroutine(MenuHoverOutWait());
				}
			}
		}

		public bool MainMap
		{
			get { return SCAN_UI_MainMap.Instance.IsVisible; }
			set
			{
				if (value)
				{
					SCAN_UI_MainMap.Instance.Open();
				}
				else
				{
					SCAN_UI_MainMap.Instance.Close();
				}
			}
		}

		public bool BigMap
		{
			get { return SCAN_UI_BigMap.Instance.IsVisible; }
			set
			{
				if (value)
				{
					SCAN_UI_BigMap.Instance.Open();
				}
				else
				{
					SCAN_UI_BigMap.Instance.Close();
				}
			}
		}

		public bool ZoomMap
		{
			get { return SCAN_UI_ZoomMap.Instance.IsVisible; }
			set
			{
				if (value)
				{
					SCAN_UI_ZoomMap.Instance.Open(true);
				}
				else
				{
					SCAN_UI_ZoomMap.Instance.Close();
				}
			}
		}

		public bool Overlay
		{
			get { return SCAN_UI_Overlay.Instance.IsVisible; }
			set
			{
				if (value)
				{
					SCAN_UI_Overlay.Instance.Open();
				}
				else
				{
					SCAN_UI_Overlay.Instance.Close();
				}
			}
		}

		public bool Instruments
		{
			get { return SCAN_UI_Instruments.Instance.IsVisible; }
			set
			{
				if (value)
				{
					SCAN_UI_Instruments.Instance.Open();
				}
				else
				{
					SCAN_UI_Instruments.Instance.Close();
				}
			}
		}

		public bool Settings
		{
			get { return SCAN_UI_Settings.Instance.IsVisible; }
			set
			{
				if (value)
				{
					SCAN_UI_Settings.Instance.Open();
				}
				else
				{
					SCAN_UI_Settings.Instance.Close();
				}
			}
		}
	}
}


================================================
FILE: SCANsat/SCAN_Toolbar/SCANtoolbar.cs
================================================
#region license
/*
 *  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANtoolbar -	optional integration with Blizzy's toolvar
 *
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 *
 * Created by David to allow the SCANsat plugin to function through the toolbar interface
 */
#endregion

using System.IO;
using UnityEngine;
using SCANsat.SCAN_Platform;
using SCANsat.SCAN_Unity;

namespace SCANsat.SCAN_Toolbar
{
	[KSPAddon(KSPAddon.Startup.AllGameScenes, false)]
	public class SCANtoolbar : MonoBehaviour
	{
		private IButton SCANButton;
		private IButton MapButton;
		private IButton SmallButton;
		private IButton OverlayButton;
		private IButton KSCButton;
		private IButton ZoomButton;

		private void Awake()
		{
			if (!ToolbarManager.ToolbarAvailable)
			{
				Destroy(gameObject); // bail if we don't have a toolbar
				return;
			}

			if (HighLogic.LoadedSceneIsFlight)
			{
				SCANButton = ToolbarManager.Instance.add("SCANsat", "UIMenu");
				MapButton = ToolbarManager.Instance.add("SCANsat", "BigMap");
				SmallButton = ToolbarManager.Instance.add("SCANsat", "SmallMap");
				OverlayButton = ToolbarManager.Instance.add("SCANsat", "Overlay");
				ZoomButton = ToolbarManager.Instance.add("SCANsat", "ZoomMap");

				//Fall back to some default toolbar icons if someone deletes the SCANsat icons or puts them in the wrong folder
				if (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, "GameData/SCANsat/Icons/SCANsat_Icon.png").Replace("\\", "/")))
				{
					SCANButton.TexturePath = "SCANsat/Icons/SCANsat_Icon"; // S.C.A.N
				}
				else
				{
					SCANButton.TexturePath = "000_Toolbar/toolbar-dropdown";
				}

				if (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, "GameData/SCANsat/Icons/SCANsat_Map_Icon.png").Replace("\\", "/")))
				{
					MapButton.TexturePath = "SCANsat/Icons/SCANsat_Map_Icon"; // from in-game biome map of Kerbin
				}
				else
				{
					MapButton.TexturePath = "000_Toolbar/move-cursor";
				}

				if (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, "GameData/SCANsat/Icons/SCANsat_SmallMap_Icon.png").Replace("\\", "/")))
				{
					SmallButton.TexturePath = "SCANsat/Icons/SCANsat_SmallMap_Icon"; // from unity, edited by DG
				}
				else
				{
					SmallButton.TexturePath = "000_Toolbar/resize-cursor";
				}

				if (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, "GameData/SCANsat/Icons/SCANsat_OverlayToolbar_Icon.png").Replace("\\", "/")))
				{
					OverlayButton.TexturePath = "SCANsat/Icons/SCANsat_OverlayToolbar_Icon";
				}
				else
				{
					OverlayButton.TexturePath = "000_Toolbar/resize-cursor";
				}

				if (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, "GameData/SCANsat/Icons/SCANsat_ZoomToolbar_Icon.png").Replace("\\", "/")))
				{
					ZoomButton.TexturePath = "SCANsat/Icons/SCANsat_ZoomToolbar_Icon";
				}
				else
				{
					ZoomButton.TexturePath = "000_Toolbar/resize-cursor";
				}

				SCANButton.ToolTip = "SCANsat";
				MapButton.ToolTip = "SCANsat Big Map";
				SmallButton.ToolTip = "SCANsat Small Map";
				OverlayButton.ToolTip = "SCANsat Overlay Controller";
				ZoomButton.ToolTip = "SCANsat Zoom Map";

				SCANButton.OnClick += (e) =>
					{
						if (SCANcontroller.controller != null)
						{
							toggleMenu(SCANButton);
						}
					};
				MapButton.OnClick += (e) =>
					{
						if (SCAN_UI_BigMap.Instance != null)
						{
							if (SCAN_UI_BigMap.Instance.IsVisible)
							{
								SCAN_UI_BigMap.Instance.Close();
							}
							else
							{
								SCAN_UI_BigMap.Instance.Open();
							}
						}
					};
				SmallButton.OnClick += (e) =>
					{
						if (SCAN_UI_MainMap.Instance != null)
						{
							if (SCAN_UI_MainMap.Instance.IsVisible)
							{
								SCAN_UI_MainMap.Instance.Close();
							}
							else
							{
								SCAN_UI_MainMap.Instance.Open();
							}
						}
					};
				OverlayButton.OnClick += (e) =>
					{
						if (SCAN_UI_Overlay.Instance != null)
						{
							if (SCAN_UI_Overlay.Instance.IsVisible)
							{
								SCAN_UI_Overlay.Instance.Close();
							}
							else
							{
								SCAN_UI_Overlay.Instance.Open();
							}
						}
					};
				ZoomButton.OnClick += (e) =>
					{
						if (SCAN_UI_ZoomMap.Instance != null)
						{
							if (SCAN_UI_ZoomMap.Instance.IsVisible)
							{
								SCAN_UI_ZoomMap.Instance.Close();
							}
							else
							{
								SCAN_UI_ZoomMap.Instance.Open(true);
							}
						}
					};
			}
			else if (HighLogic.LoadedScene == GameScenes.SPACECENTER || HighLogic.LoadedScene == GameScenes.TRACKSTATION)
			{
				KSCButton = ToolbarManager.Instance.add("SCANsat", "KSCMap");

				if (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, "GameData/SCANsat/Icons/SCANsat_Map_Icon.png").Replace("\\", "/")))
				{
					KSCButton.TexturePath = "SCANsat/Icons/SCANsat_Map_Icon"; // from in-game biome map of Kerbin
				}
				else
				{
					KSCButton.TexturePath = "000_Toolbar/move-cursor";
				}

				KSCButton.ToolTip = "SCANsat KSC Map";

				KSCButton.OnClick += (e) =>
					{
						if (SCAN_UI_BigMap.Instance != null)
						{
							if (SCAN_UI_BigMap.Instance.IsVisible)
							{
								SCAN_UI_BigMap.Instance.Close();
							}
							else
							{
								SCAN_UI_BigMap.Instance.Open();
							}
						}
					};
			}
			else
			{
				Destroy(gameObject);
			}
		}

		private void toggleMenu(IButton menu)
		{
			if (menu.Drawable == null)
			{
				createMenu(menu);
			}
			else
			{
				destroyMenu(menu);
			}
		}

		private void createMenu(IButton menu)
		{
			if (!ToolbarManager.ToolbarAvailable)
			{
				return; // bail if we don't have a toolbar
			}

			PopupMenuDrawable list = new PopupMenuDrawable();

			IButton smallMap = list.AddOption("Small Map");
			IButton instrument = list.AddOption("Instruments");
			IButton bigMap = list.AddOption("Big Map");
			IButton zoomMap = list.AddOption("Zoom Map");
			IButton settings = list.AddOption("Settings");
			IButton resource = list.AddOption("Planetary Overlay");

			smallMap.OnClick += (e2) =>
				{
					if (SCAN_UI_MainMap.Instance != null)
					{
						if (SCAN_UI_MainMap.Instance.IsVisible)
						{
							SCAN_UI_MainMap.Instance.Close();
						}
						else
						{
							SCAN_UI_MainMap.Instance.Open();
						}
					}
				};
			instrument.OnClick += (e2) =>
				{
					if (SCAN_UI_Instruments.Instance != null)
					{
						if (SCAN_UI_Instruments.Instance.IsVisible)
						{
							SCAN_UI_Instruments.Instance.Close();
						}
						else
						{
							SCAN_UI_Instruments.Instance.Open();
						}
					}
				};
			bigMap.OnClick += (e2) =>
				{
					if (SCAN_UI_BigMap.Instance != null)
					{
						if (SCAN_UI_BigMap.Instance.IsVisible)
						{
							SCAN_UI_BigMap.Instance.Close();
						}
						else
						{
							SCAN_UI_BigMap.Instance.Open();
						}
					}
				};
			zoomMap.OnClick += (e2) =>
				{
					if (SCAN_UI_ZoomMap.Instance != null)
					{
						if (SCAN_UI_ZoomMap.Instance.IsVisible)
						{
							SCAN_UI_ZoomMap.Instance.Close();
						}
						else
						{
							SCAN_UI_ZoomMap.Instance.Open(true);
						}
					}
				};
			settings.OnClick += (e2) =>
				{
					if (SCAN_UI_Settings.Instance != null)
					{
						if (SCAN_UI_Settings.Instance.IsVisible)
						{
							SCAN_UI_Settings.Instance.Close();
						}
						else
						{
							SCAN_UI_Settings.Instance.Open();
						}
					}
				};
			resource.OnClick += (e2) =>
				{
					if (SCAN_UI_Overlay.Instance != null)
					{
						if (SCAN_UI_Overlay.Instance.IsVisible)
						{
							SCAN_UI_Overlay.Instance.Close();
						}
						else
						{
							SCAN_UI_Overlay.Instance.Open();
						}
					}
				};
			list.OnAnyOptionClicked += () => destroyMenu(menu);
			menu.Drawable = list;
		}

		private void destroyMenu(IButton menu)
		{
			((PopupMenuDrawable)menu.Drawable).Destroy();
			menu.Drawable = null;
		}

		internal void OnDestroy()
		{
			if (SCANButton != null)
			{
				SCANButton.Destroy();
			}

			if (MapButton != null)
			{
				MapButton.Destroy();
			}

			if (SmallButton != null)
			{
				SmallButton.Destroy();
			}

			if (KSCButton != null)
			{
				KSCButton.Destroy();
			}

			if (OverlayButton != null)
			{
				OverlayButton.Destroy();
			}

			if (ZoomButton != null)
			{
				ZoomButton.Destroy();
			}
		}

	}
}


================================================
FILE: SCANsat/SCAN_Toolbar/SCANtoolbarwrapper.cs
================================================
#region license
/*
Copyright (c) 2013-2014, Maik Schreiber
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using UnityEngine;


namespace SCANsat.SCAN_Toolbar
{



	/**********************************************************\
	*          --- DO NOT EDIT BELOW THIS COMMENT ---          *
	*                                                          *
	* This file contains classes and interfaces to use the     *
	* Toolbar Plugin without creating a hard dependency on it. *
	*                                                          *
	* There is nothing in this file that needs to be edited    *
	* by hand.                                                 *
	*                                                          *
	*          --- DO NOT EDIT BELOW THIS COMMENT ---          *
	\**********************************************************/



	/// 
	/// The global tool bar manager.
	/// 
	public partial class ToolbarManager : IToolbarManager
	{
		/// 
		/// Whether the Toolbar Plugin is available.
		/// 
		public static bool ToolbarAvailable
		{
			get
			{
				if (toolbarAvailable == null)
				{
					toolbarAvailable = Instance != null;
				}
				return (bool)toolbarAvailable;
			}
		}

		/// 
		/// The global tool bar manager instance.
		/// 
		public static IToolbarManager Instance
		{
			get
			{
				if ((toolbarAvailable != false) && (instance_ == null))
				{
					Type type = ToolbarTypes.getType("Toolbar.ToolbarManager");
					if (type != null)
					{
						object realToolbarManager = ToolbarTypes.getStaticProperty(type, "Instance").GetValue(null, null);
						instance_ = new ToolbarManager(realToolbarManager);
					}
				}
				return instance_;
			}
		}
	}

	#region interfaces

	/// 
	/// A toolbar manager.
	/// 
	public interface IToolbarManager
	{
		/// 
		/// Adds a new button.
		/// 
		/// 
		/// To replace an existing button, just add a new button using the old button's namespace and ID.
		/// Note that the new button will inherit the screen position of the old button.
		/// 
		/// The new button's namespace. This is usually the plugin's name. Must not include special characters like '.'
		/// The new button's ID. This ID must be unique across all buttons in the namespace. Must not include special characters like '.'
		/// The button created.
		IButton add(string ns, string id);
	}

	/// 
	/// Represents a clickable button.
	/// 
	public interface IButton
	{
		/// 
		/// The text displayed on the button. Set to null to hide text.
		/// 
		/// 
		/// The text can be changed at any time to modify the button's appearance. Note that since this will also
		/// modify the button's size, this feature should be used sparingly, if at all.
		/// 
		/// 
		string Text
		{
			set;
			get;
		}

		/// 
		/// The color the button text is displayed with. Defaults to Color.white.
		/// 
		/// 
		/// The text color can be changed at any time to modify the button's appearance.
		/// 
		Color TextColor
		{
			set;
			get;
		}

		/// 
		/// The path of a texture file to display an icon on the button. Set to null to hide icon.
		/// 
		/// 
		/// 
		/// A texture path on a button will have precedence over text. That is, if both text and texture path
		/// have been set on a button, the button will show the texture, not the text.
		/// 
		/// 
		/// The texture size must not exceed 24x24 pixels.
		/// 
		/// 
		/// The texture path must be relative to the "GameData" directory, and must not specify a file name suffix.
		/// Valid example: MyAddon/Textures/icon_mybutton
		/// 
		/// 
		/// The texture path can be changed at any time to modify the button's appearance.
		/// 
		/// 
		/// 
		string TexturePath
		{
			set;
			get;
		}

		/// 
		/// The button's tool tip text. Set to null if no tool tip is desired.
		/// 
		/// 
		/// Tool Tip Text Should Always Use Headline Style Like This.
		/// 
		string ToolTip
		{
			set;
			get;
		}

		/// 
		/// Whether this button is currently visible or not. Can be used in addition to or as a replacement for .
		/// 
		/// 
		/// Setting this property to true does not affect the player's ability to hide the button using the configuration.
		/// Conversely, setting this property to false does not enable the player to show the button using the configuration.
		/// 
		bool Visible
		{
			set;
			get;
		}

		/// 
		/// Determines this button's visibility. Can be used in addition to or as a replacement for .
		/// 
		/// 
		/// The return value from IVisibility.Visible is subject to the same rules as outlined for
		/// .
		/// 
		IVisibility Visibility
		{
			set;
			get;
		}

		/// 
		/// Whether this button is currently effectively visible or not. This is a combination of
		///  and .
		/// 
		/// 
		/// Note that the toolbar is not visible in certain game scenes, for example the loading screens. This property
		/// does not reflect button invisibility in those scenes. In addition, this property does not reflect the
		/// player's configuration of the button's visibility.
		/// 
		bool EffectivelyVisible
		{
			get;
		}

		/// 
		/// Whether this button is currently enabled (clickable) or not. This does not affect the player's ability to
		/// position the button on their toolbar.
		/// 
		bool Enabled
		{
			set;
			get;
		}

		/// 
		/// Whether this button is currently "important." Set to false to return to normal button behaviour.
		/// 
		/// 
		/// 
		/// This can be used to temporarily force the button to be shown on screen regardless of the toolbar being
		/// currently in auto-hidden mode. For example, a button that signals the arrival of a private message in
		/// a chat room could mark itself as "important" as long as the message has not been read.
		/// 
		/// 
		/// Setting this property does not change the appearance of the button. Use  to
		/// change the button's icon.
		/// 
		/// 
		/// Setting this property to true does not affect the player's ability to hide the button using the
		/// configuration.
		/// 
		/// 
		/// This feature should be used only sparingly, if at all, since it forces the button to be displayed on
		/// screen even when it normally wouldn't.
		/// 
		/// 
		bool Important
		{
			set;
			get;
		}

		/// 
		/// A drawable that is tied to the current button. This can be anything from a popup menu to
		/// an informational window. Set to null to hide the drawable.
		/// 
		IDrawable Drawable
		{
			set;
			get;
		}

		/// 
		/// Event handler that can be registered with to receive "on click" events.
		/// 
		/// 
		/// 
		/// IButton button = ...
		/// button.OnClick += (e) => {
		///     Debug.Log("button clicked, mouseButton: " + e.MouseButton);
		/// };
		/// 
		/// 
		event ClickHandler OnClick;

		/// 
		/// Event handler that can be registered with to receive "on mouse enter" events.
		/// 
		/// 
		/// 
		/// IButton button = ...
		/// button.OnMouseEnter += (e) => {
		///     Debug.Log("mouse entered button");
		/// };
		/// 
		/// 
		event MouseEnterHandler OnMouseEnter;

		/// 
		/// Event handler that can be registered with to receive "on mouse leave" events.
		/// 
		/// 
		/// 
		/// IButton button = ...
		/// button.OnMouseLeave += (e) => {
		///     Debug.Log("mouse left button");
		/// };
		/// 
		/// 
		event MouseLeaveHandler OnMouseLeave;

		/// 
		/// Permanently destroys this button so that it is no longer displayed.
		/// Should be used when a plugin is stopped to remove leftover buttons.
		/// 
		void Destroy();
	}

	/// 
	/// A drawable that is tied to a particular button. This can be anything from a popup menu
	/// to an informational window.
	/// 
	public interface IDrawable
	{
		/// 
		/// Update any information. This is called once per frame.
		/// 
		void Update();

		/// 
		/// Draws GUI widgets for this drawable. This is the equivalent to the OnGUI() message in
		/// .
		/// 
		/// 
		/// The drawable will be positioned near its parent toolbar according to the drawable's current
		/// width/height.
		/// 
		/// The left/top position of where to draw this drawable.
		/// The current width/height of this drawable.
		Vector2 Draw(Vector2 position);
	}

	#endregion

	#region events

	/// 
	/// Event describing a click on a button.
	/// 
	public partial class ClickEvent : EventArgs
	{
		/// 
		/// The button that has been clicked.
		/// 
		public readonly IButton Button;

		/// 
		/// The mouse button which the button was clicked with.
		/// 
		/// 
		/// Is 0 for left mouse button, 1 for right mouse button, and 2 for middle mouse button.
		/// 
		public readonly int MouseButton;
	}

	/// 
	/// An event handler that is invoked whenever a button has been clicked.
	/// 
	/// An event describing the button click.
	public delegate void ClickHandler(ClickEvent e);

	/// 
	/// Event describing the mouse pointer moving about a button.
	/// 
	public abstract partial class MouseMoveEvent
	{
		/// 
		/// The button in question.
		/// 
		public readonly IButton button;
	}

	/// 
	/// Event describing the mouse pointer entering a button's area.
	/// 
	public partial class MouseEnterEvent : MouseMoveEvent
	{
	}

	/// 
	/// Event describing the mouse pointer leaving a button's area.
	/// 
	public partial class MouseLeaveEvent : MouseMoveEvent
	{
	}

	/// 
	/// An event handler that is invoked whenever the mouse pointer enters a button's area.
	/// 
	/// An event describing the mouse pointer entering.
	public delegate void MouseEnterHandler(MouseEnterEvent e);

	/// 
	/// An event handler that is invoked whenever the mouse pointer leaves a button's area.
	/// 
	/// An event describing the mouse pointer leaving.
	public delegate void MouseLeaveHandler(MouseLeaveEvent e);

	#endregion

	#region visibility

	/// 
	/// Determines visibility of a button.
	/// 
	/// 
	public interface IVisibility
	{
		/// 
		/// Whether a button is currently visible or not.
		/// 
		/// 
		bool Visible
		{
			get;
		}
	}

	/// 
	/// Determines visibility of a button in relation to the currently running game scene.
	/// 
	/// 
	/// 
	/// IButton button = ...
	/// button.Visibility = new GameScenesVisibility(GameScenes.EDITOR, GameScenes.SPH);
	/// 
	/// 
	/// 
	public class GameScenesVisibility : IVisibility
	{
		public bool Visible
		{
			get
			{
				return (bool)visibleProperty.GetValue(realGameScenesVisibility, null);
			}
		}

		private object realGameScenesVisibility;
		private PropertyInfo visibleProperty;

		public GameScenesVisibility(params GameScenes[] gameScenes)
		{
			Type gameScenesVisibilityType = ToolbarTypes.getType("Toolbar.GameScenesVisibility");
			realGameScenesVisibility = Activator.CreateInstance(gameScenesVisibilityType, new object[] { gameScenes });
			visibleProperty = ToolbarTypes.getProperty(gameScenesVisibilityType, "Visible");
		}
	}

	#endregion

	#region drawable

	/// 
	/// A drawable that draws a popup menu.
	/// 
	public partial class PopupMenuDrawable : IDrawable
	{
		/// 
		/// Event handler that can be registered with to receive "any menu option clicked" events.
		/// 
		public event Action OnAnyOptionClicked
		{
			add
			{
				onAnyOptionClickedEvent.AddEventHandler(realPopupMenuDrawable, value);
			}
			remove
			{
				onAnyOptionClickedEvent.RemoveEventHandler(realPopupMenuDrawable, value);
			}
		}

		private object realPopupMenuDrawable;
		private MethodInfo updateMethod;
		private MethodInfo drawMethod;
		private MethodInfo addOptionMethod;
		private MethodInfo addSeparatorMethod;
		private MethodInfo destroyMethod;
		private EventInfo onAnyOptionClickedEvent;

		public PopupMenuDrawable()
		{
			Type popupMenuDrawableType = ToolbarTypes.getType("Toolbar.PopupMenuDrawable");
			realPopupMenuDrawable = Activator.CreateInstance(popupMenuDrawableType, null);
			updateMethod = ToolbarTypes.getMethod(popupMenuDrawableType, "Update");
			drawMethod = ToolbarTypes.getMethod(popupMenuDrawableType, "Draw");
			addOptionMethod = ToolbarTypes.getMethod(popupMenuDrawableType, "AddOption");
			addSeparatorMethod = ToolbarTypes.getMethod(popupMenuDrawableType, "AddSeparator");
			destroyMethod = ToolbarTypes.getMethod(popupMenuDrawableType, "Destroy");
			onAnyOptionClickedEvent = ToolbarTypes.getEvent(popupMenuDrawableType, "OnAnyOptionClicked");
		}

		public void Update()
		{
			updateMethod.Invoke(realPopupMenuDrawable, null);
		}

		public Vector2 Draw(Vector2 position)
		{
			return (Vector2)drawMethod.Invoke(realPopupMenuDrawable, new object[] { position });
		}

		/// 
		/// Adds a new option to the popup menu.
		/// 
		/// The text of the option.
		/// A button that can be used to register clicks on the menu option.
		public IButton AddOption(string text)
		{
			object realButton = addOptionMethod.Invoke(realPopupMenuDrawable, new object[] { text });
			return new Button(realButton, new ToolbarTypes());
		}

		/// 
		/// Adds a separator to the popup menu.
		/// 
		public void AddSeparator()
		{
			addSeparatorMethod.Invoke(realPopupMenuDrawable, null);
		}

		/// 
		/// Destroys this drawable. This must always be called before disposing of this drawable.
		/// 
		public void Destroy()
		{
			destroyMethod.Invoke(realPopupMenuDrawable, null);
		}
	}

	#endregion

	#region private implementations

	public partial class ToolbarManager : IToolbarManager
	{
		private static bool? toolbarAvailable = null;
		private static IToolbarManager instance_;

		private object realToolbarManager;
		private MethodInfo addMethod;
		private Dictionary buttons = new Dictionary();
		private ToolbarTypes types = new ToolbarTypes();

		private ToolbarManager(object realToolbarManager)
		{
			this.realToolbarManager = realToolbarManager;

			addMethod = ToolbarTypes.getMethod(types.iToolbarManagerType, "add");
		}

		public IButton add(string ns, string id)
		{
			object realButton = addMethod.Invoke(realToolbarManager, new object[] { ns, id });
			IButton button = new Button(realButton, types);
			buttons.Add(realButton, button);
			return button;
		}
	}

	internal class Button : IButton
	{
		private object realButton;
		private ToolbarTypes types;
		private Delegate realClickHandler;
		private Delegate realMouseEnterHandler;
		private Delegate realMouseLeaveHandler;

		internal Button(object realButton, ToolbarTypes types)
		{
			this.realButton = realButton;
			this.types = types;

			realClickHandler = attachEventHandler(types.button.onClickEvent, "clicked", realButton);
			realMouseEnterHandler = attachEventHandler(types.button.onMouseEnterEvent, "mouseEntered", realButton);
			realMouseLeaveHandler = attachEventHandler(types.button.onMouseLeaveEvent, "mouseLeft", realButton);
		}

		private Delegate attachEventHandler(EventInfo @event, string methodName, object realButton)
		{
			MethodInfo method = GetType().GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance);
			Delegate d = Delegate.CreateDelegate(@event.EventHandlerType, this, method);
			@event.AddEventHandler(realButton, d);
			return d;
		}

		public string Text
		{
			set
			{
				types.button.textProperty.SetValue(realButton, value, null);
			}
			get
			{
				return (string)types.button.textProperty.GetValue(realButton, null);
			}
		}

		public Color TextColor
		{
			set
			{
				types.button.textColorProperty.SetValue(realButton, value, null);
			}
			get
			{
				return (Color)types.button.textColorProperty.GetValue(realButton, null);
			}
		}

		public string TexturePath
		{
			set
			{
				types.button.texturePathProperty.SetValue(realButton, value, null);
			}
			get
			{
				return (string)types.button.texturePathProperty.GetValue(realButton, null);
			}
		}

		public string ToolTip
		{
			set
			{
				types.button.toolTipProperty.SetValue(realButton, value, null);
			}
			get
			{
				return (string)types.button.toolTipProperty.GetValue(realButton, null);
			}
		}

		public bool Visible
		{
			set
			{
				types.button.visibleProperty.SetValue(realButton, value, null);
			}
			get
			{
				return (bool)types.button.visibleProperty.GetValue(realButton, null);
			}
		}

		public IVisibility Visibility
		{
			set
			{
				object functionVisibility = null;
				if (value != null)
				{
					functionVisibility = Activator.CreateInstance(types.functionVisibilityType, new object[] { new Func(() => value.Visible) });
				}
				types.button.visibilityProperty.SetValue(realButton, functionVisibility, null);
				visibility_ = value;
			}
			get
			{
				return visibility_;
			}
		}
		private IVisibility visibility_;

		public bool EffectivelyVisible
		{
			get
			{
				return (bool)types.button.effectivelyVisibleProperty.GetValue(realButton, null);
			}
		}

		public bool Enabled
		{
			set
			{
				types.button.enabledProperty.SetValue(realButton, value, null);
			}
			get
			{
				return (bool)types.button.enabledProperty.GetValue(realButton, null);
			}
		}

		public bool Important
		{
			set
			{
				types.button.importantProperty.SetValue(realButton, value, null);
			}
			get
			{
				return (bool)types.button.importantProperty.GetValue(realButton, null);
			}
		}

		public IDrawable Drawable
		{
			set
			{
				object functionDrawable = null;
				if (value != null)
				{
					functionDrawable = Activator.CreateInstance(types.functionDrawableType, new object[] {
						new Action(() => value.Update()),
						new Func((pos) => value.Draw(pos))
					});
				}
				types.button.drawableProperty.SetValue(realButton, functionDrawable, null);
				drawable_ = value;
			}
			get
			{
				return drawable_;
			}
		}
		private IDrawable drawable_;

		public event ClickHandler OnClick;

		private void clicked(object realEvent)
		{
			if (OnClick != null)
			{
				OnClick(new ClickEvent(realEvent, this));
			}
		}

		public event MouseEnterHandler OnMouseEnter;

		private void mouseEntered(object realEvent)
		{
			if (OnMouseEnter != null)
			{
				OnMouseEnter(new MouseEnterEvent(this));
			}
		}

		public event MouseLeaveHandler OnMouseLeave;

		private void mouseLeft(object realEvent)
		{
			if (OnMouseLeave != null)
			{
				OnMouseLeave(new MouseLeaveEvent(this));
			}
		}

		public void Destroy()
		{
			detachEventHandler(types.button.onClickEvent, realClickHandler, realButton);
			detachEventHandler(types.button.onMouseEnterEvent, realMouseEnterHandler, realButton);
			detachEventHandler(types.button.onMouseLeaveEvent, realMouseLeaveHandler, realButton);

			types.button.destroyMethod.Invoke(realButton, null);
		}

		private void detachEventHandler(EventInfo @event, Delegate d, object realButton)
		{
			@event.RemoveEventHandler(realButton, d);
		}
	}

	public partial class ClickEvent : EventArgs
	{
		internal ClickEvent(object realEvent, IButton button)
		{
			Type type = realEvent.GetType();
			Button = button;
			MouseButton = (int)type.GetField("MouseButton", BindingFlags.Public | BindingFlags.Instance).GetValue(realEvent);
		}
	}

	public abstract partial class MouseMoveEvent : EventArgs
	{
		internal MouseMoveEvent(IButton button)
		{
			this.button = button;
		}
	}

	public partial class MouseEnterEvent : MouseMoveEvent
	{
		internal MouseEnterEvent(IButton button)
			: base(button)
		{
		}
	}

	public partial class MouseLeaveEvent : MouseMoveEvent
	{
		internal MouseLeaveEvent(IButton button)
			: base(button)
		{
		}
	}

	internal class ToolbarTypes
	{
		internal readonly Type iToolbarManagerType;
		internal readonly Type functionVisibilityType;
		internal readonly Type functionDrawableType;
		internal readonly ButtonTypes button;

		internal ToolbarTypes()
		{
			iToolbarManagerType = getType("Toolbar.IToolbarManager");
			functionVisibilityType = getType("Toolbar.FunctionVisibility");
			functionDrawableType = getType("Toolbar.FunctionDrawable");

			Type iButtonType = getType("Toolbar.IButton");
			button = new ButtonTypes(iButtonType);
		}

		internal static Type getType(string name)
		{
			Type type = null;
			AssemblyLoader.loadedAssemblies.TypeOperation(t =>
			{
				if (t.FullName == name)
				{
					type = t;
				}
			});
			return type;
		}

		internal static PropertyInfo getProperty(Type type, string name)
		{
			return type.GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
		}

		internal static PropertyInfo getStaticProperty(Type type, string name)
		{
			return type.GetProperty(name, BindingFlags.Public | BindingFlags.Static);
		}

		internal static EventInfo getEvent(Type type, string name)
		{
			return type.GetEvent(name, BindingFlags.Public | BindingFlags.Instance);
		}

		internal static MethodInfo getMethod(Type type, string name)
		{
			return type.GetMethod(name, BindingFlags.Public | BindingFlags.Instance);
		}
	}

	internal class ButtonTypes
	{
		internal readonly Type iButtonType;
		internal readonly PropertyInfo textProperty;
		internal readonly PropertyInfo textColorProperty;
		internal readonly PropertyInfo texturePathProperty;
		internal readonly PropertyInfo toolTipProperty;
		internal readonly PropertyInfo visibleProperty;
		internal readonly PropertyInfo visibilityProperty;
		internal readonly PropertyInfo effectivelyVisibleProperty;
		internal readonly PropertyInfo enabledProperty;
		internal readonly PropertyInfo importantProperty;
		internal readonly PropertyInfo drawableProperty;
		internal readonly EventInfo onClickEvent;
		internal readonly EventInfo onMouseEnterEvent;
		internal readonly EventInfo onMouseLeaveEvent;
		internal readonly MethodInfo destroyMethod;

		internal ButtonTypes(Type iButtonType)
		{
			this.iButtonType = iButtonType;

			textProperty = ToolbarTypes.getProperty(iButtonType, "Text");
			textColorProperty = ToolbarTypes.getProperty(iButtonType, "TextColor");
			texturePathProperty = ToolbarTypes.getProperty(iButtonType, "TexturePath");
			toolTipProperty = ToolbarTypes.getProperty(iButtonType, "ToolTip");
			visibleProperty = ToolbarTypes.getProperty(iButtonType, "Visible");
			visibilityProperty = ToolbarTypes.getProperty(iButtonType, "Visibility");
			effectivelyVisibleProperty = ToolbarTypes.getProperty(iButtonType, "EffectivelyVisible");
			enabledProperty = ToolbarTypes.getProperty(iButtonType, "Enabled");
			importantProperty = ToolbarTypes.getProperty(iButtonType, "Important");
			drawableProperty = ToolbarTypes.getProperty(iButtonType, "Drawable");
			onClickEvent = ToolbarTypes.getEvent(iButtonType, "OnClick");
			onMouseEnterEvent = ToolbarTypes.getEvent(iButtonType, "OnMouseEnter");
			onMouseLeaveEvent = ToolbarTypes.getEvent(iButtonType, "OnMouseLeave");
			destroyMethod = ToolbarTypes.getMethod(iButtonType, "Destroy");
		}
	}

	#endregion
}


================================================
FILE: SCANsat/SCAN_UI/SCANsatRPM.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANsat - RPM - A class to handle RasterPropMonitor integration; IVA maps
 * 
 * Based on Mihara's original SCANsatRPM code:
 * https://github.com/Mihara/RasterPropMonitor
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using UnityEngine;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Globalization;
using SCANsat.SCAN_Map;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_PartModules;
using SCANsat.SCAN_UI.UI_Framework;
using SCANsat.SCAN_Unity;

namespace SCANsat.SCAN_UI
{
	public class JSISCANsatRPM : InternalModule
	{
		[KSPField]
		public int buttonUp = 0;
		[KSPField]
		public int buttonDown = 1;
		[KSPField]
		public int buttonEnter = 2;
		[KSPField]
		public int buttonEsc = 3;
		[KSPField]
		public int buttonHome = 4;
		[KSPField]
		public int buttonRight = 5;
		[KSPField]
		public int buttonLeft = 6;
		[KSPField]
		public int buttonR9 = 7;
		[KSPField]
		public int buttonR10 = 8;
		[KSPField]
		public int startLine = 0;
		[KSPField]
		public int stopLine = 0;
		[KSPField]
		public int mapDivider = 2;
		[KSPField]
		public int resourceInterpolation = 4;
		[KSPField]
		public int maxZoom = 20;
		[KSPField]
		public float iconPixelSize = 8f;
		[KSPField]
		public Vector2 iconShadowShift = new Vector2(1, 1);
		[KSPField]
		public float redrawEdge = 0.8f;
		[KSPField]
		public string iconColorSelf = string.Empty;
		private Color iconColorSelfValue = new Color(1f, 1f, 1f, 0.6f);
		[KSPField]
		public string iconColorTarget = string.Empty;
		private Color iconColorTargetValue = new Color32(255, 235, 4, 153);
		[KSPField]
		public string iconColorUnvisitedAnomaly = string.Empty;
		private Color iconColorUnvisitedAnomalyValue = new Color(1f, 0f, 0f, 0.5f);
		[KSPField]
		public string iconColorVisitedAnomaly = string.Empty;
		private Color iconColorVisitedAnomalyValue = new Color(0f, 1f, 0f, 0.5f);
		[KSPField]
		public string iconColorShadow = string.Empty;
		private Color iconColorShadowValue = new Color(0f, 0f, 0f, 0.5f);
		[KSPField]
		public string iconColorAP = string.Empty;
		private Color iconColorAPValue = new Color(0f, 1f, 0f, 0.5f);
		[KSPField]
		public string iconColorPE = string.Empty;
		private Color iconColorPEValue = new Color(1f, 0f, 0f, 0.5f);
		[KSPField]
		public string iconColorNode = string.Empty;
		private Color iconColorNodeValue = XKCDColors.Aqua;
		[KSPField]
		public string iconColorANDN = string.Empty;
		private Color iconColorANDNValue = XKCDColors.Mauve;
		[KSPField]
		public string trailColor = string.Empty;
		private Color trailColorValue = new Color(0f, 0f, 1f, 0.6f);
		[KSPField]
		public float zoomModifier = 1.5f;
		[KSPField]
		public string scaleBar;
		[KSPField]
		public string scaleLabels;
		[KSPField]
		public string scaleLevels = "500000,200000,100000,50000,20000,10000,5000,1000";
		[KSPField]
		public Vector2 scaleBarPosition = new Vector2(16, 16);
		[KSPField]
		public float scaleBarSizeLimit = 512 / 2 - 16;
		[KSPField]
		public int trailLimit = 100;
		[KSPField]
		public float trailPointEvery = 30;
		[KSPField]
		public int orbitPoints = 120;
		// That ends our glut of configurable values.
		private bool showLines;
		private int mapMode;
		private int zoomLevel;
		private int screenWidth;
		private int screenHeight;
		private Vector2d mapSizeScale;
		private double mapCenterLong, mapCenterLat;
		private SCANmap map;
		private CelestialBody orbitingBody;
		private Vessel targetVessel;
		private double redrawDeviation;
		private SCANanomaly[] localAnomalies;
		private List localWaypoints;
		private Material iconMaterial;
		private SCANsat.SCAN_PartModules.SCANRPMStorage sat;
		internal RPMPersistence persist;
		private string persistentVarName;
		private double pixelsPerKm;
		private Texture2D scaleBarTexture, scaleLabelTexture;
		private float[] scaleLevelValues;
		private float scaleLabelSpan;
		private readonly List trail = new List();
		private static Material trailMaterial;
		private double trailCounter;
		private Rect screenSpace;
		private bool pageActiveState;
		private double start;
		private readonly List mapMarkup = new List();
		private readonly Color scaleTint = new Color(0.5f, 0.5f, 0.5f, 0.5f);
		private bool resourceOverlay;
		private List loadedResources = new List();
		private int currentResource;
		private bool drawAnomaly;
		// Neutral tint.
		private bool satFound;
		private bool satModuleFound = true;

		private bool TestForActiveSCANsat()
		{
			if (satFound)
			{
				return true;
			}

			foreach (ScenarioModule thatScenario in ScenarioRunner.GetLoadedModules())
			{
				if (thatScenario.ClassName == "SCANcontroller")
				{
					satFound = true;
					return true;
				}
			}
			return false;
		}
		// Analysis disable once UnusedParameter
		public bool MapRenderer(RenderTexture screen, float cameraAspect)
		{
			// Just in case.
			if (!HighLogic.LoadedSceneIsFlight)
			{
				return false;
			}

			if (!TestForActiveSCANsat())
			{
				return false;
			}

			if (screenWidth == 0 || screenHeight == 0)
			{

				if (satModuleFound)
				{
					int? loadedMode = persist.RPMMode;
					mapMode = loadedMode ?? 0;
					int? loadedZoom = persist.RPMZoom;
					zoomLevel = loadedZoom ?? 0;

					if (SCANconfigLoader.GlobalResource)
					{
						loadedResources = SCANcontroller.setLoadedResourceList();

						int? loadedResource = persist.RPMResource;
						currentResource = loadedResource ?? 0;

						if (currentResource >= loadedResources.Count - 1)
						{
							currentResource = 0;
						}
						else if (currentResource < 0)
						{
							currentResource = 0;
						}

						if (loadedResources.Count > 0)
						{
							loadedResources[currentResource].CurrentBodyConfig(vessel.mainBody.bodyName);
						}
					}

				}
				else
				{
					mapMode = 0;
					zoomLevel = 0;
				}
				screenWidth = screen.width;
				screenHeight = screen.height;
				iconMaterial = new Material(Shader.Find("KSP/Alpha/Cutoff"));

				screenSpace = new Rect(0, 0, screenWidth, screenHeight);

				RedrawMap();

				return false;
			}

			// In case SCANsat is present but not working, we can't run any of our code. :(
			if (map == null)
			{
				return false;
			}

			start = Planetarium.GetUniversalTime();

			Graphics.Blit(map.Map, screen);
			GL.PushMatrix();
			GL.LoadPixelMatrix(0, screenWidth, screenHeight, 0);

			// Markup lines are the lowest layer.
			if (showLines)
			{
				foreach (MapMarkupLine vectorLine in mapMarkup)
				{
					if (vectorLine.body == orbitingBody && vectorLine.points.Count > 0)
					{
						DrawTrail(vectorLine.points, vectorLine.color, Vector2d.zero);
					}
				}
			}

			// Trails go above markup lines
			if (showLines && trailLimit > 0 && trail.Count > 0)
			{
				DrawTrail(trail, trailColorValue, new Vector2d(vessel.longitude, vessel.latitude), true);
			}

			// Anomalies go above trails
			if (drawAnomaly)
			{
				foreach (SCANanomaly anomaly in localAnomalies)
				{
					if (anomaly.Known)
					{
						DrawIcon(anomaly.Longitude, anomaly.Latitude, SCANicon.orbitIconForVesselType(anomaly.Detail ? (VesselType)int.MaxValue : VesselType.Unknown),
							anomaly.Detail ? iconColorVisitedAnomalyValue : iconColorUnvisitedAnomalyValue);
					}
				}
				foreach (SCANwaypoint w in localWaypoints)
				{
					if (!w.LandingTarget)
					{
						if (w.Root != null)
						{
							if (w.Root.ContractState != Contracts.Contract.State.Active)
							{
								continue;
							}
						}
						if (w.Param != null)
						{
							if (w.Param.State != Contracts.ParameterState.Incomplete)
							{
								continue;
							}
						}
					}

					DrawIcon(w, iconColorVisitedAnomalyValue);
				}
			}

			// Target orbit and targets go above anomalies
			if (targetVessel != null && targetVessel.mainBody == orbitingBody)
			{
				if (showLines && JUtil.OrbitMakesSense(targetVessel))
				{
					DrawOrbit(targetVessel, targetVessel.orbit, start, iconColorTargetValue);
					// Connect our orbit and the target orbit with a line at the point of closest approach...
					if (JUtil.OrbitMakesSense(vessel))
					{
						double closestApproachMoment;
						JUtil.GetClosestApproach(vessel.orbit, targetVessel.orbit, out closestApproachMoment);
						Vector2d targetCoord, vesselCoord;
						bool targetCollision, vesselCollision;
						// Analysis disable once CompareOfFloatsByEqualityOperator
						if (closestApproachMoment != start &&
							GetPositionAtT(targetVessel, targetVessel.orbit, start, closestApproachMoment, out targetCoord, out targetCollision) && !targetCollision &&
							GetPositionAtT(vessel, targetVessel.orbit, start, closestApproachMoment, out vesselCoord, out vesselCollision) && !vesselCollision)
						{
							var endpoints = new List();
							endpoints.Add(targetCoord);
							endpoints.Add(vesselCoord);
							DrawTrail(endpoints, iconColorTargetValue, Vector2d.zero);
						}
					}
				}
				DrawIcon(targetVessel.longitude, targetVessel.latitude, SCANicon.orbitIconForVesselType(targetVessel.vesselType), iconColorTargetValue);
				if (showLines)
				{
					DrawOrbitIcon(targetVessel, SCANicon.OrbitIcon.Ap, iconColorTargetValue);
					DrawOrbitIcon(targetVessel, SCANicon.OrbitIcon.Pe, iconColorTargetValue);
				}


			}
			// Own orbit goes above that.
			if (showLines && JUtil.OrbitMakesSense(vessel))
			{
				DrawOrbit(vessel, vessel.orbit, start, iconColorSelfValue);
				DrawOrbitIcon(vessel, SCANicon.OrbitIcon.Ap, iconColorAPValue);
				DrawOrbitIcon(vessel, SCANicon.OrbitIcon.Pe, iconColorPEValue);
				if (targetVessel != null && JUtil.OrbitMakesSense(targetVessel))
				{
					if (vessel.orbit.AscendingNodeExists(targetVessel.orbit))
					{
						DrawOrbitIcon(vessel, SCANicon.OrbitIcon.AN, iconColorANDNValue, vessel.orbit.TimeOfAscendingNode(targetVessel.orbit, start));
					}

					if (vessel.orbit.DescendingNodeExists(targetVessel.orbit))
					{
						DrawOrbitIcon(vessel, SCANicon.OrbitIcon.DN, iconColorANDNValue, vessel.orbit.TimeOfDescendingNode(targetVessel.orbit, start));
					}
				}
				// And the maneuver node and post-maneuver orbit: 
				if (vessel.patchedConicSolver != null)
				{
					ManeuverNode node = vessel.patchedConicSolver.maneuverNodes.Count > 0 ? vessel.patchedConicSolver.maneuverNodes[0] : null;
					if (node != null)
					{
						DrawOrbit(vessel, node.nextPatch, node.UT, iconColorNodeValue);
						DrawOrbitIcon(vessel, SCANicon.OrbitIcon.ManeuverNode, iconColorNodeValue, node.UT);
					}
				}
			}
			// Own icon goes above that
			DrawIcon(vessel.longitude, vessel.latitude, SCANicon.orbitIconForVesselType(vessel.vesselType), iconColorSelfValue);
			// And scale goes above everything.
			DrawScale();

			GL.PopMatrix();

			return true;
		}

		private void DrawOrbitIcon(Vessel thatVessel, SCANicon.OrbitIcon iconType, Color iconColor, double givenPoint = 0)
		{
			double timePoint = start;
			switch (iconType)
			{
				case SCANicon.OrbitIcon.Ap:
					timePoint += thatVessel.orbit.timeToAp;
					break;
				case SCANicon.OrbitIcon.Pe:
					timePoint += thatVessel.orbit.timeToPe;
					break;
				case SCANicon.OrbitIcon.AN:
				case SCANicon.OrbitIcon.DN:
				case SCANicon.OrbitIcon.ManeuverNode:
					timePoint = givenPoint;
					break;
				default:
					iconType = SCANicon.orbitIconForVesselType(thatVessel.vesselType);
					break;
			}

			if (JUtil.OrbitMakesSense(thatVessel))
			{
				bool collision;
				Vector2d coord;
				if (GetPositionAtT(thatVessel, thatVessel.orbit, start, timePoint, out coord, out collision) && !collision)
				{
					DrawIcon(coord.x, coord.y, iconType, iconColor);
				}
			}
		}

		private static bool GetPositionAtT(Vessel thatVessel, Orbit thatOrbit, double initial, double timePoint, out Vector2d coordinates, out bool collision)
		{
			coordinates = Vector2d.zero;
			collision = false;
			if (double.IsNaN(thatOrbit.getObtAtUT(initial + timePoint)))
			{
				return false;
			}

			double rotOffset = 0;
			if (thatVessel.mainBody.rotates)
			{
				rotOffset = (360 * ((timePoint - initial) / thatVessel.mainBody.rotationPeriod)) % 360;
			}
			Vector3d pos = thatOrbit.getPositionAtUT(timePoint);
			if (thatOrbit.Radius(timePoint) < thatVessel.mainBody.Radius + thatVessel.mainBody.getElevation(pos))
			{
				collision = true;
				return false;
			}
			coordinates = new Vector2d(thatVessel.mainBody.GetLongitude(pos) - rotOffset, thatVessel.mainBody.GetLatitude(pos));
			return true;
		}

		private void DrawOrbit(Vessel thatVessel, Orbit thatOrbit, double startMoment, Color32 thatColor)
		{
			if (orbitPoints == 0)
			{
				return;
			}

			double dTstep = Math.Floor(thatOrbit.period / orbitPoints);
			var points = new List();
			for (double timePoint = startMoment; timePoint < (startMoment + thatOrbit.period); timePoint += dTstep)
			{
				bool collision;
				Vector2d coord;
				if (GetPositionAtT(thatVessel, thatOrbit, start, timePoint, out coord, out collision))
				{
					points.Add(coord);
				}

				if (collision)
				{
					break;
				}
			}
			DrawTrail(points, thatColor, Vector2d.zero);
		}

		private void DrawTrail(IList points, Color32 lineColor, Vector2d endPoint, bool hasEndpoint = false)
		{
			if (points.Count < 2)
			{
				return;
			}

			GL.Begin(GL.LINES);
			trailMaterial.SetPass(0);
			GL.Color(lineColor);
			float xStart, yStart;
			// actualMapWidth is the width of the virtual map (accounting for
			// zoom level).  We use this value to determine if a particular
			// line segment wraps around from the right edge to the left edge.
			// We compute the value once here, instead of doing it every single
			// segment.
			float actualMapWidth = (float)mapSizeScale.x * screenWidth;

			xStart = (float)longitudeToPixels(points[0].x, points[0].y);
			yStart = (float)latitudeToPixels(points[0].x, points[0].y);
			for (int i = 1; i < points.Count; i++)
			{
				float xEnd = (float)longitudeToPixels(points[i].x, points[i].y);
				float yEnd = (float)latitudeToPixels(points[i].x, points[i].y);
				DrawLine(xStart, yStart, xEnd, yEnd, screenSpace, actualMapWidth);

				xStart = xEnd;
				yStart = yEnd;
			}
			if (hasEndpoint)
			{
				DrawLine(xStart, yStart, (float)longitudeToPixels(endPoint.x, endPoint.y), (float)latitudeToPixels(endPoint.x, endPoint.y), screenSpace, actualMapWidth);
			}

			GL.End();
		}

		private static void DrawLine(float xStart, float yStart, float xEnd, float yEnd, Rect screenSpace, float actualMapWidth)
		{
			var start = new Vector2(xStart, yStart);
			var end = new Vector2(xEnd, yEnd);

			if (!screenSpace.Contains(start) && !screenSpace.Contains(end))
			{
				return;
			}

			// We order these so we don't have to mess with absolute values.
			float leftX = Math.Min(start.x, end.x);
			float rightX = Math.Max(start.x, end.x);

			// MOARdV:
			// We treat the map as a cylinder here, since it is one as far as
			// the rectangular projection of it is concerned.
			// Compute the x component of the Manhattan distance between the
			// two points, and compare that to the distance if we move the
			// left end point one scaled map width to the right (moving it to
			// the right of the right end point).  If the repositioned point
			// is closer than the original point, we infer that the line
			// segment wraps around the edge of the map.  This will always be
			// true as long as we don't generate a line segment longer than
			// 1/2 of the map's width.  If the two points are diametrically
			// opposed to each other on the map, we don't have enough
			// information to guess which way is the right way, so do nothing.
			// The Manhattan distance of the original arrangement of points
			// is rightX - leftX.  The MD of the repositioned point is
			// (leftX + actualMapWidth) - rightX.  Move like terms and
			// divide by two, and here's what you get:
			if (leftX + actualMapWidth * 0.5f < rightX)
			{
				if (start.x < end.x)
				{
					end.x -= actualMapWidth;
				}
				else
				{
					start.x -= actualMapWidth;
				}
			}

			GL.Vertex(start);
			GL.Vertex(end);

		}

		private void DrawScale()
		{
			if (scaleBarTexture == null || scaleLabelTexture == null)
			{
				return;
			}

			var scaleBarRect = new Rect();
			scaleBarRect.x = scaleBarPosition.x;
			scaleBarRect.height = scaleLabelTexture.height / scaleLevelValues.Length;
			scaleBarRect.y = screenHeight - scaleBarPosition.y - scaleBarRect.height;

			int scaleID = 0;
			for (int i = scaleLevelValues.Length; i-- > 0;)
			{
				if (scaleLevelValues[i] * pixelsPerKm < scaleBarSizeLimit)
				{
					scaleBarRect.width = (float)(scaleLevelValues[i] * pixelsPerKm);
					scaleID = i;
					break;
				}
			}
			Graphics.DrawTexture(scaleBarRect, scaleBarTexture, new Rect(0, 0, 1f, 1f), 4, 4, 4, 4, scaleTint);

			scaleBarRect.x += scaleBarRect.width;
			scaleBarRect.width = scaleLabelTexture.width;
			Graphics.DrawTexture(scaleBarRect, scaleLabelTexture, new Rect(0f, scaleID * scaleLabelSpan, 1f, scaleLabelSpan), 0, 0, 0, 0, scaleTint);
		}

		private void DrawIcon(double longitude, double latitude, SCANicon.OrbitIcon icon, Color iconColor)
		{
			Vector2 pos = new Vector2((float)(longitudeToPixels(longitude, latitude)), (float)(latitudeToPixels(longitude, latitude)));

			SCANicon.drawOrbitIconGL((int)pos.x, (int)pos.y, icon, iconColor, iconColorShadowValue, iconMaterial, 16, true);
		}

		private void DrawIcon(SCANwaypoint p, Color iconColor)
		{
			Rect pos = new Rect((float)(longitudeToPixels(p.Longitude, p.Latitude)), (float)(latitudeToPixels(p.Longitude, p.Latitude)), 16, 16);

			if (!p.LandingTarget)
			{
				pos.x -= 8;
				pos.y -= 16;
				SCANuiUtil.drawMapIconGL(pos, SCAN_UI_Loader.WaypointIcon.texture, iconColor, iconMaterial, iconColorShadowValue, true);
			}
			else
			{
				pos.x -= 8;
				pos.y -= 8;
				SCANuiUtil.drawMapIconGL(pos, SCAN_UI_Loader.MechJebIcon.texture, iconColor, iconMaterial, iconColorShadowValue, true);
			}
		}

		private double longitudeToPixels(double longitude, double latitude)
		{
			return rescaleLongitude((map.projectLongitude(longitude, latitude) + 180d) % 360d) * (screenWidth / 360d);
		}

		private double latitudeToPixels(double longitude, double latitude)
		{
			// MOARdV:
			// I haven't thoroughly tested this, nor have I looked at the
			// source, but I believe map.project* are mapping the lat/lon
			// to a 360 x 180 2D surface that repeats in the X direction
			// like a cylinder.  On that assumption, we don't want to apply
			// the remainder operator to latitude - that would cause a value
			// of 181 to become 1, for instance, moving the point from one
			// pole to the other.  We have to translate the latitude by 90 to
			// put the baseline latitude in the range [0,180] instead of
			// [-90, +90].
			double projLat = map.projectLatitude(longitude, latitude);
			double translatedLat = 90.0 + projLat - map.Lat_Offset;
			double scaledLat = translatedLat * mapSizeScale.y;
			double pix = scaledLat * screenHeight / 180.0;

			// Invert the y value
			return screenHeight - pix;
		}

		private double rescaleLongitude(double lon)
		{
			return Clamp(lon - map.Lon_Offset, 360d) * mapSizeScale.x;
		}

		private static double Clamp(double value, double clamp)
		{
			value = value % clamp;
			if (value < 0)
			{
				return value + clamp;
			}

			return value;
		}

		public void ButtonProcessor(int buttonID)
		{
			if (screenWidth == 0 || screenHeight == 0)
			{
				return;
			}

			if (buttonID == buttonUp)
			{
				ChangeZoom(false);
			}
			else if (buttonID == buttonDown)
			{
				ChangeZoom(true);
			}
			else if (buttonID == buttonEnter)
			{
				ChangeMapMode(true);
			}
			else if (buttonID == buttonEsc)
			{
				// Whatever possessed him to do THAT?
				if (satModuleFound)
				{
					persist.RPMColor = !persist.RPMColor;
				}

				map.ColorMap = persist.RPMColor;
				RedrawMap();
			}
			else if (buttonID == buttonHome)
			{
				showLines = !showLines;
				if (satModuleFound)
				{
					persist.RPMLines = showLines;
				}
			}
			else if (buttonID == buttonRight)
			{
				resourceOverlay = !resourceOverlay;
				if (SCANconfigLoader.GlobalResource)
				{
					RedrawMap();
				}

				if (satModuleFound)
				{
					persist.RPMDrawResource = resourceOverlay;
				}
			}
			else if (buttonID == buttonLeft)
			{
				drawAnomaly = !drawAnomaly;
				if (satModuleFound)
				{
					persist.RPMAnomaly = drawAnomaly;
				}
			}
			else if (buttonID == buttonR9)
			{
				ChangeResource(true);
			}
			else if (buttonID == buttonR10)
			{
				ChangeResource(false);
			}
		}

		private void ChangeMapMode(bool up)
		{
			int mapTypeCount = SCANmapType.mapTypeNames.Length;
			mapMode += up ? 1 : -1;
			mapMode = (mapMode + mapTypeCount) % mapTypeCount;

			if (satModuleFound)
			{
				persist.RPMMode = mapMode;
			}

			RedrawMap();
		}

		private void ChangeZoom(bool up)
		{
			int oldZoom = zoomLevel;
			zoomLevel += up ? 1 : -1;
			if (zoomLevel < 0)
			{
				zoomLevel = 0;
			}

			if (zoomLevel > maxZoom)
			{
				zoomLevel = maxZoom;
			}

			if (zoomLevel != oldZoom)
			{
				if (satModuleFound)
				{
					persist.RPMZoom = zoomLevel;
				}

				RedrawMap();
			}
		}

		private void ChangeResource(bool up)
		{
			if (loadedResources.Count <= 0)
			{
				return;
			}

			int oldResource = currentResource;

			currentResource += up ? 1 : -1;

			if (currentResource < 0)
			{
				currentResource = loadedResources.Count - 1;
			}

			if (currentResource >= loadedResources.Count)
			{
				currentResource = 0;
			}

			if (currentResource != oldResource)
			{
				resourceOverlay = true;
				if (satModuleFound)
				{
					persist.RPMResource = currentResource;
					persist.RPMDrawResource = true;
				}
				RedrawMap();
			}
		}

		public void PageActive(bool status, int pageNumber)
		{
			pageActiveState = status;
			if (status)
			{
				Debug.Log("JSISCANsatRPM: Active on page " + pageNumber);
			}
			else
			{
				Debug.Log("JSISCANsatRPM: Inactive.");
			}
		}

		public override void OnUpdate()
		{
			if (!JUtil.IsActiveVessel(vessel) || !satFound)
			{
				return;
			}

			if ((Planetarium.GetUniversalTime() - trailPointEvery) > trailCounter)
			{
				trailCounter = Planetarium.GetUniversalTime();
				LeaveTrail();
			}

			if (!JUtil.IsInIVA())
			{
				return;
			}

			if (pageActiveState && map != null && !map.isMapComplete())
			{
				map.getPartialMap();
			}

			targetVessel = FlightGlobals.fetch.VesselTarget as Vessel;

			if (UpdateCheck() || orbitingBody != vessel.mainBody)
			{
				if (orbitingBody != vessel.mainBody)
				{
					trail.Clear();
				}

				RedrawMap();
			}
		}

		private void RedrawMap()
		{
			orbitingBody = vessel.mainBody;
			if (map == null)
			{
				map = new SCANmap(orbitingBody, false, mapSource.RPM);
				map.ColorMap = persist.RPMColor;
				map.setProjection(MapProjection.Rectangular);
			}
			map.setBody(orbitingBody);
			map.setSize(screenWidth / mapDivider, screenHeight / mapDivider, resourceInterpolation, startLine, stopLine);
			map.MapScale *= (zoomLevel * zoomLevel + zoomModifier);
			mapCenterLong = vessel.longitude;
			mapCenterLat = vessel.latitude;
			// That's really just sweeping the problem under the carpet instead of fixing it, but meh.
			if (zoomLevel == 0)
			{
				mapCenterLat = 0;
			}

			map.centerAround(mapCenterLong, mapCenterLat);
			if (SCANconfigLoader.GlobalResource && loadedResources.Count > 0)
			{
				if (currentResource >= loadedResources.Count - 1)
				{
					currentResource = 0;
				}
				else if (currentResource < 0)
				{
					currentResource = 0;
				}

				map.Resource = loadedResources[currentResource];
				map.Resource.CurrentBodyConfig(orbitingBody.bodyName);
			}
			calcTerrainLimits(orbitingBody);
			map.resetMap((mapType)mapMode, false, SCANconfigLoader.GlobalResource && resourceOverlay);

			// Compute and store the map scale factors in mapSizeScale.  We
			// use these values for every segment when drawing trails, so it
			// makes sense to compute it only when it changes.
			mapSizeScale = new Vector2d(360.0 * map.MapScale / map.MapWidth, 180.0 * map.MapScale / map.MapHeight);
			redrawDeviation = redrawEdge * 180 / (zoomLevel * zoomLevel + zoomModifier);
			try
			{
				SCANdata data = SCANUtil.getData(orbitingBody);
				if (data != null)
				{
					localAnomalies = data.Anomalies;
					localWaypoints = data.Waypoints;
				}
			}
			catch
			{
				Debug.Log("JSISCANsatRPM: Could not get a list of anomalies, what happened?");
			}
			// MATH!
			double kmPerDegreeLon = (2 * Math.PI * (orbitingBody.Radius / 1000d)) / 360d;
			double pixelsPerDegree = Math.Abs(longitudeToPixels(mapCenterLong + (((mapCenterLong + 1) > 360) ? -1 : 1), mapCenterLat) - longitudeToPixels(mapCenterLong, mapCenterLat));
			pixelsPerKm = pixelsPerDegree / kmPerDegreeLon;
		}

		private void calcTerrainLimits(CelestialBody b)
		{
			if (map.MType == mapType.Slope)
			{
				return;
			}

			int w = map.MapWidth / 4;
			int h = map.MapHeight / 4;

			float max = -200000;
			float min = 100000;

			float resourceMax = 0;
			float resourceMin = 100;

			for (int i = 0; i < map.MapHeight; i += 4)
			{
				for (int j = 0; j < map.MapWidth; j += 4)
				{
					double lat = (i * 1.0f / map.MapScale) - 90f + map.Lat_Offset;
					double lon = (j * 1.0f / map.MapScale) - 180f + map.Lon_Offset;
					double la = lat, lo = lon;
					lat = map.unprojectLatitude(lo, la);
					lon = map.unprojectLongitude(lo, la);

					float terrain = (float)SCANUtil.getElevation(b, lon, lat);

					if (map.Resource != null)
					{
						float resource = SCANUtil.ResourceOverlay(lat, lon, map.Resource.Name, orbitingBody, false) * 100f;

						if (resource < resourceMin)
						{
							resourceMin = resource;
						}

						if (resource > resourceMax)
						{
							resourceMax = resource;
						}
					}
					else
					{
						resourceMax = 100;
						resourceMin = 0;
					}

					if (terrain < min)
					{
						min = terrain;
					}

					if (terrain > max)
					{
						max = terrain;
					}
				}
			}

			if (min > max)
			{
				min = max - 1f;
			}

			if (min == max)
			{
				min = max - 1f;
			}

			if (map.Resource != null && map.Resource.CurrentBody != null && resourceMin < map.Resource.CurrentBody.MinValue)
			{
				resourceMin = map.Resource.CurrentBody.MinValue;
			}

			if (resourceMin >= resourceMax)
			{
				resourceMax = resourceMin + 1f;
			}

			if (resourceMin < 0)
			{
				resourceMin = 0;
			}

			if (map.Resource != null && map.Resource.CurrentBody != null && resourceMax > map.Resource.CurrentBody.MaxValue)
			{
				resourceMax = map.Resource.CurrentBody.MaxValue;
			}

			if (resourceMin >= resourceMax)
			{
				resourceMin = resourceMax - 1f;
			}

			map.setCustomRange(min, max, resourceMin, resourceMax);
		}

		private bool UpdateCheck()
		{
			if (map == null)
			{
				return false;
			}
			// Do not flush map when timewarping.
			if (TimeWarp.WarpMode == TimeWarp.Modes.HIGH && TimeWarp.CurrentRateIndex != 0)
			{
				return false;
			}

			if (Math.Abs(vessel.longitude - mapCenterLong) > redrawDeviation)
			{
				return true;
			}
			// Same sweeping.
			if (Math.Abs(vessel.latitude - mapCenterLat) > redrawDeviation && zoomLevel > 0)
			{
				return true;
			}

			return false;
		}

		private void LeaveTrail()
		{
			if (trailLimit > 0)
			{
				trail.Add(new Vector2d(vessel.longitude, vessel.latitude));
				if (trail.Count > trailLimit)
				{
					trail.RemoveRange(0, trail.Count - trailLimit);
				}
			}
		}

		private void Start()
		{
			// Referencing the parent project should work, shouldn't it.
			persistentVarName = "scansat" + internalProp.propID;

			try
			{
				sat = part.FindModulesImplementing().FirstOrDefault();
			}
			catch
			{
				Debug.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");
				sat = null;
			}

			if (sat != null)
			{
				satModuleFound = true;
				if (sat.RPMList.Count > 0)
				{
					foreach (RPMPersistence RPMProp in sat.RPMList)
					{
						if (RPMProp.RPMID == persistentVarName)
						{
							persist = RPMProp;
							break;
						}
					}
				}
				if (persist == null)
				{
					persist = new RPMPersistence(persistentVarName);
					sat.RPMList.Add(persist);
				}
				showLines = persist.RPMLines;
				drawAnomaly = persist.RPMAnomaly;
				resourceOverlay = persist.RPMDrawResource;
			}
			else
			{
				satModuleFound = false;
			}

			// Arrrgh.
			if (!string.IsNullOrEmpty(iconColorSelf))
			{
				iconColorSelfValue = ConfigNode.ParseColor32(iconColorSelf);
			}

			if (!string.IsNullOrEmpty(iconColorTarget))
			{
				iconColorTargetValue = ConfigNode.ParseColor32(iconColorTarget);
			}

			if (!string.IsNullOrEmpty(iconColorUnvisitedAnomaly))
			{
				iconColorUnvisitedAnomalyValue = ConfigNode.ParseColor32(iconColorUnvisitedAnomaly);
			}

			if (!string.IsNullOrEmpty(iconColorVisitedAnomaly))
			{
				iconColorVisitedAnomalyValue = ConfigNode.ParseColor32(iconColorVisitedAnomaly);
			}

			if (!string.IsNullOrEmpty(iconColorShadow))
			{
				iconColorShadowValue = ConfigNode.ParseColor32(iconColorShadow);
			}

			if (!string.IsNullOrEmpty(iconColorAP))
			{
				iconColorAPValue = ConfigNode.ParseColor32(iconColorAP);
			}

			if (!string.IsNullOrEmpty(iconColorPE))
			{
				iconColorPEValue = ConfigNode.ParseColor32(iconColorPE);
			}

			if (!string.IsNullOrEmpty(iconColorANDN))
			{
				iconColorANDNValue = ConfigNode.ParseColor32(iconColorANDN);
			}

			if (!string.IsNullOrEmpty(iconColorNode))
			{
				iconColorNodeValue = ConfigNode.ParseColor32(iconColorNode);
			}

			if (!string.IsNullOrEmpty(trailColor))
			{
				trailColorValue = ConfigNode.ParseColor32(trailColor);
			}

			trailMaterial = JUtil.DrawLineMaterial();

			LeaveTrail();

			if (!string.IsNullOrEmpty(scaleBar) && !string.IsNullOrEmpty(scaleLabels) && !string.IsNullOrEmpty(scaleLevels))
			{
				scaleBarTexture = GameDatabase.Instance.GetTexture(scaleBar, false);
				scaleLabelTexture = GameDatabase.Instance.GetTexture(scaleLabels, false);
				var scales = new List();
				foreach (string scl in scaleLevels.Split(','))
				{
					float scale;
					if (float.TryParse(scl.Trim(), out scale))
					{
						scales.Add(scale / 1000);
					}
				}
				scaleLevelValues = scales.ToArray();
				Array.Sort(scaleLevelValues);
				scaleLabelSpan = 1f / scaleLevelValues.Length;
			}

			// Now the fun bit: Locate all cfg files depicting map features anywhere.

			foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes("JSISCANSATVECTORMARK"))
			{
				mapMarkup.Add(new MapMarkupLine(node));
			}
		}

		private class MapMarkupLine
		{
			public CelestialBody body;
			public Color32 color;
			public List points = new List();

			public MapMarkupLine(ConfigNode node)
			{
				if (!node.HasData)
				{
					throw new ArgumentException("Map markup section with no data?!");
				}

				if (node.HasValue("body"))
				{
					string bodyName = node.GetValue("body").ToLower();
					foreach (CelestialBody thatBody in FlightGlobals.fetch.bodies)
					{
						if (thatBody.GetName().ToLower() == bodyName)
						{
							body = thatBody;
							break;
						}
					}
					if (body == null)
					{
						throw new ArgumentException("No celestial body matching '" + bodyName + "'.");
					}
				}
				else
				{
					throw new ArgumentException("Found a map markup section that does not say which celestial body it refers to.");
				}

				color = Color.white;
				if (node.HasValue("color"))
				{
					color = ConfigNode.ParseColor32(node.GetValue("color"));
				}
				// Now to actually load in the points...

				foreach (string pointData in node.GetValues("vertex"))
				{
					string[] tokens = pointData.Split(',');
					if (tokens.Length != 2)
					{
						throw new ArgumentException("Incorrect vertex format.");
					}

					double x, y;
					if (!(double.TryParse(tokens[0].Trim(), NumberStyles.Any, CultureInfo.InvariantCulture, out x) &&
						double.TryParse(tokens[1].Trim(), NumberStyles.Any, CultureInfo.InvariantCulture, out y)))
					{
						throw new ArgumentException("Could not parse a vertex position.");
					}

					if (x > 180d || x < -180d || y > 90d || y < -90d)
					{
						throw new ArgumentException("Vertex positions must be in degrees appropriate to longitude and latitude.");
					}

					points.Add(new Vector2d(x, y));
				}
			}
		}
	}

	internal class RPMPersistence
	{
		internal int RPMMode, RPMZoom = 0;
		internal int RPMResource = 0;
		internal bool RPMColor = true;
		internal bool RPMLines = true;
		internal bool RPMAnomaly = true;
		internal bool RPMDrawResource = true;
		internal string RPMID;

		internal RPMPersistence(string id)
		{
			RPMID = id;
		}

		internal RPMPersistence(string id, int mode, bool color, int zoom, bool lines, bool anomaly, bool drawResource, int resource)
		{
			RPMID = id;
			RPMMode = mode;
			RPMColor = color;
			RPMZoom = zoom;
			RPMLines = lines;
			RPMResource = resource;
			RPMDrawResource = drawResource;
			RPMAnomaly = anomaly;
		}
	}

}




================================================
FILE: SCANsat/SCAN_UI/UI_Framework/SCANEdgeDetect.cs
================================================

using UnityEngine;
using SCANsat.SCAN_Unity;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;

namespace SCANsat.SCAN_UI.UI_Framework
{
	public class SCANEdgeDetect : MonoBehaviour
	{
		private float _sensitivityDepth = 0.8f;
		private float _sensitivityNormals = 0.6f;
		private float _sampleDist = 0.8f;

		private Material _edgeDetectMaterial = null;

		private Texture2D _rampTexture;

		private void Start()
		{
			SetMaterial();
		}

		private void OnDestroy()
		{
			if (_rampTexture != null)
			{
				Destroy(_rampTexture);
				_rampTexture = null;
			}
		}

		private void SetMaterial()
		{
			_edgeDetectMaterial = new Material(SCAN_UI_Loader.EdgeDetectShader);

			_rampTexture = new Texture2D(256, 1, TextureFormat.RGB24, false);

			// ramp texture to render everything in dark shades of Amber,
			// except originally dark lines, which become bright Amber
			for (int i = 0; i < 256; ++i)
			{
				_rampTexture.SetPixel(i, 0, palette.lerp(palette.black, palette.xkcd_Amber, i / 1024f));
			}

			for (int i = 0; i < 10; ++i)
			{
				_rampTexture.SetPixel(i, 0, palette.xkcd_Amber);
			}

			_rampTexture.Apply();

			_edgeDetectMaterial.SetTexture("_RampTex", _rampTexture);
			Vector2 sensitivity = new Vector2(_sensitivityDepth, _sensitivityNormals);
			_edgeDetectMaterial.SetVector("_Sensitivity", new Vector4(sensitivity.x, sensitivity.y, 1.0f, sensitivity.y));
			_edgeDetectMaterial.SetFloat("_SampleDistance", _sampleDist);
		}

		private void OnEnable()
		{
			SetCameraFlag();
		}

		private void SetCameraFlag()
		{
			GetComponent().depthTextureMode |= DepthTextureMode.DepthNormals;
		}

		//Camera RenderTexture will be applied here
		[ImageEffectOpaque]
		void OnRenderImage(RenderTexture source, RenderTexture destination)
		{
			if (_edgeDetectMaterial == null)
			{
				SetMaterial();
			}

			Graphics.Blit(source, destination, _edgeDetectMaterial);
		}
	}
}


================================================
FILE: SCANsat/SCAN_UI/UI_Framework/SCANcolorUtil.cs
================================================
#region license
/*
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 * 
 * SCANpalette - manages colors and palettes of colors
 *
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
*/
#endregion

using System;
using System.Text;
using UnityEngine;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_Palettes;

namespace SCANsat.SCAN_UI.UI_Framework
{
	public class SCANcolorUtil
	{

		// Basic Colors
		// 	(these are here just so that all references to some color are the same throughout
		//		SCANsat)
		public static Color black = Color.black;
		public static Color32 Black = (Color32)black;
		public static Color white = Color.white;
		public static Color32 White = (Color32)white;
		public static Color red = Color.red;
		public static Color32 Red = (Color32)red;
		public static Color grey = Color.grey;
		public static Color32 Grey = (Color32)grey;
		public static Color clear = Color.clear;
		public static Color32 Clear = new Color32(0, 0, 0, 0);
		public static Color magenta = Color.magenta;
		public static Color yellow = Color.yellow;
		public static Color cyan = Color.cyan;
		public static Color blue = Color.blue;
		public static Color green = Color.green;
		public static Color mechjebYellow = new Color(1.0f, 0.56f, 0.0f);

		public static Color lerp(Color a, Color b, float t)
		{
			return Color.Lerp(a, b, t);
		}

		public static Color32 lerp(Color32 a, Color32 b, float t)
		{
			return Color32.Lerp(a, b, t);
		}

		// XKCD Colors
		// 	(these are collected here for the same reason)

		public static Color xkcd_Amber = XKCDColors.Amber;
		public static Color xkcd_ArmyGreen = XKCDColors.ArmyGreen;
		public static Color xkcd_PukeGreen = XKCDColors.PukeGreen;
		public static Color xkcd_Lemon = XKCDColors.Lemon;
		public static Color xkcd_OrangeRed = XKCDColors.OrangeRed;
		public static Color xkcd_CamoGreen = XKCDColors.CamoGreen;
		public static Color xkcd_Marigold = XKCDColors.Marigold;
		public static Color xkcd_Puce = XKCDColors.Puce;
		public static Color xkcd_DarkTeal = XKCDColors.DarkTeal;
		public static Color xkcd_DarkPurple = XKCDColors.DarkPurple;
		public static Color xkcd_DarkGrey = XKCDColors.DarkGrey;
		public static Color xkcd_LightGrey = XKCDColors.LightGrey;
		public static Color xkcd_PurplyPink = XKCDColors.PurplyPink;
		public static Color xkcd_Magenta = XKCDColors.Magenta;
		public static Color xkcd_YellowGreen = XKCDColors.YellowGreen;
		public static Color xkcd_LightRed = XKCDColors.LightRed;
		public static Color xkcd_Cerulean = XKCDColors.Cerulean;
		public static Color xkcd_Yellow = XKCDColors.Yellow;
		public static Color xkcd_Red = XKCDColors.Red;
		public static Color xkcd_White = XKCDColors.White;
		public static Color xkcd_DarkGreenAlpha = XKCDColors.DarkGreen * new Vector4(1, 1, 1, 0.4f);


		// colourblind barrier-free colours, according to Masataka Okabe and Kei Ito
		// http://jfly.iam.u-tokyo.ac.jp/color/

		public static Color cb_skyBlue = new Color(0.35f, 0.7f, 0.9f);      // sky blue
		public static Color cb_bluishGreen = new Color(0f, 0.6f, 0.5f);     // bluish green
		public static Color cb_yellow = new Color(0.95f, 0.9f, 0.25f);  // yellow
		public static Color cb_blue = new Color(0f, 0.45f, 0.7f);       // blue
		public static Color cb_vermillion = new Color(0.8f, 0.4f, 0f);      // vermillion
		public static Color cb_reddishPurple = new Color(0.8f, 0.6f, 0.7f);     // reddish purple
		public static Color cb_orange = new Color(0.9f, 0.6f, 0f);      // orange

		public static Color32 CB_skyBlue = (Color32)cb_skyBlue;
		public static Color32 CB_bluishGreen = (Color32)cb_bluishGreen;
		public static Color32 CB_yellow = (Color32)cb_yellow;
		public static Color32 CB_blue = (Color32)cb_blue;
		public static Color32 CB_vermillion = (Color32)cb_vermillion;
		public static Color32 CB_reddishPurple = (Color32)cb_reddishPurple;
		public static Color32 CB_orange = (Color32)cb_orange;
		public static Color32 XKCD_DarkGreenAlpha = (Color32)(XKCDColors.DarkGreen * new Vector4(1, 1, 1, 0.4f));

		/* SOLARIZED colors: currently unused, so commented out */
		/*
		public static Color sol_base03 	= new Color32(0,43,54,255);
		public static Color sol_base02 	= new Color32(7,54,66,255);
		public static Color sol_base01 	= new Color32(88,110,117,255);
		public static Color sol_base00 	= new Color32(101,123,131,255);
		public static Color sol_base0 	= new Color32(131,148,150,255);
		public static Color sol_base1 	= new Color32(147,161,161,255);
		public static Color sol_base2 	= new Color32(238,232,213,255);
		public static Color sol_base3 	= new Color32(253,246,227,255);
		public static Color sol_yellow 	= new Color32(181,137,0,255);
		public static Color sol_orange 	= new Color32(203,75,22,255);
		public static Color sol_red 		= new Color32(45,220,50,255);
		public static Color sol_magenta 	= new Color32(211,54,130,255);
		public static Color sol_violet 	= new Color32(108,113,196,255);
		public static Color sol_blue 		= new Color32(38,139,210,255);
		public static Color sol_cyan 		= new Color32(42,161,152,255);
		public static Color sol_green 	= new Color32(133,153,0,255);
		*/
		public static Color[] heightGradient = {
			xkcd_ArmyGreen,
			xkcd_Yellow,
			xkcd_Red,
			xkcd_Magenta,
			xkcd_White,
			xkcd_White
		};

		public static Color32 combineColors(Color32[] colors)
		{
			float r = 0;
			float g = 0;
			float b = 0;
			float a = 0;

			int count = 0;

			for (int i = colors.Length - 1; i >= 0; i--)
			{
				Color32 c = colors[i];

				r += (c.r * c.r);
				g += (c.g * c.g);
				b += (c.b * c.b);
				a += (c.a * c.a);

				count++;
			}

			r /= count;
			g /= count;
			b /= count;
			a /= count;

			Color32 col = new Color32((byte)Mathf.Sqrt(r), (byte)Mathf.Sqrt(g), (byte)Mathf.Sqrt(b), (byte)Mathf.Sqrt(a));

			return col;
		}

		public static Color32[] redline;

		public static Color32[] small_redline;

		public static Color32 heightToColor(float val, bool color, SCANterrainConfig terrain, float min = 0, float max = 0, float range = 0, bool useCustomRange = false)
		{
			Color32[] c = terrain.ColorPal.ColorsArray;
			if (terrain.PalRev)
			{
				c = terrain.ColorPal.ColorsReverse;
			}

			if (useCustomRange)
			{
				if (color)
				{
					return heightToColor(val, max, min, range, terrain.ClampTerrain, terrain.PalDis, c, true);
				}
				else
				{
					return heightToColor(val, max, min, range, terrain.PalDis);
				}
			}
			else
			{
				if (color)
				{
					return heightToColor(val, terrain.MaxTerrain, terrain.MinTerrain, terrain.TerrainRange, terrain.ClampTerrain, terrain.PalDis, c);
				}
				else
				{
					return heightToColor(val, terrain.MaxTerrain, terrain.MinTerrain, terrain.TerrainRange, terrain.PalDis);
				}
			}
		}

		private static Color32 heightToColor(float val, float max, float min, float range, bool discrete)
		{
			Color32 c = Black;
			val -= min;
			if (SCAN_Settings_Config.Instance.TrueGreyScale)
			{
				val = Mathf.Clamp(val, 0, range) / range;
				c = lerp(Black, White, val);
			}
			else
			{
				if (discrete)
				{
					val = (GreyScalePalette.ColorsReverse.Length) * Mathf.Clamp(val, 0, range) / range;
					if (Math.Floor(val) > GreyScalePalette.ColorsReverse.Length - 1)
					{
						val = GreyScalePalette.ColorsReverse.Length - 0.01f;
					}

					c = GreyScalePalette.ColorsReverse[(int)Math.Floor(val)];
				}
				else
				{
					val = (GreyScalePalette.ColorsReverse.Length - 1) * Mathf.Clamp(val, 0, range) / range;
					if (Math.Floor(val) > GreyScalePalette.ColorsReverse.Length - 2)
					{
						val = GreyScalePalette.ColorsReverse.Length - 1.01f;
					}

					c = lerp(GreyScalePalette.ColorsReverse[(int)Math.Floor(val)], GreyScalePalette.ColorsReverse[(int)Math.Floor(val) + 1], val - (int)Math.Floor(val));
				}
			}
			return c;
		}

		internal static Color32 heightToColor(float val, float max, float min, float range, float? clamp, bool discrete, Color32[] p, bool useCustomRange = false)
		{
			Color32 c = Black;
			if (clamp != null)
			{
				if (!useCustomRange)
				{
					if (clamp < min + 10f)
					{
						clamp = min + 10f;
					}

					if (clamp > max - 10f)
					{
						clamp = max - 10f;
					}
				}

				if (val <= (float)clamp)
				{
					float newRange;

					if (useCustomRange)
					{
						if (max < (float)clamp)
						{
							newRange = max - min;
						}
						else
						{
							newRange = (float)clamp - min;
						}
					}
					else
					{
						newRange = (float)clamp - min;
					}

					val -= min;

					val = Mathf.Clamp(val, 0, newRange) / newRange;

					if (discrete)
					{
						c = p[(int)Math.Round(val)];
					}
					else
					{
						c = lerp(p[0], p[1], val);
					}
				}
				else
				{
					float newRange;

					if (useCustomRange)
					{
						if (min > (float)clamp)
						{
							newRange = max - min;
							val -= min;
						}
						else
						{
							newRange = max - (float)clamp;
							val -= (float)clamp;
						}
					}
					else
					{
						newRange = max - (float)clamp;
						val -= (float)clamp;
					}

					if (discrete)
					{
						val = (p.Length - 2) * Mathf.Clamp(val, 0, newRange) / newRange;
						if (Math.Floor(val) > p.Length - 3)
						{
							val = p.Length - 2.01f;
						}

						c = p[(int)Math.Floor(val) + 2];
					}
					else
					{
						val = (p.Length - 3) * Mathf.Clamp(val, 0, newRange) / newRange;
						if (Math.Floor(val) > p.Length - 4)
						{
							val = p.Length - 3.01f;
						}

						c = lerp(p[(int)Math.Floor(val) + 2], p[(int)Math.Floor(val) + 3], val - (int)Math.Floor(val));
					}
				}
			}
			else
			{
				val -= min;
				if (discrete)
				{
					val = (p.Length) * Mathf.Clamp(val, 0, range) / range;
					if (Math.Floor(val) > p.Length - 1)
					{
						val = p.Length - 0.01f;
					}

					c = p[(int)Math.Floor(val)];
				}
				else
				{
					val = (p.Length - 1) * Mathf.Clamp(val, 0, range) / range;
					if (Math.Floor(val) > p.Length - 2)
					{
						val = p.Length - 1.01f;
					}

					c = lerp(p[(int)Math.Floor(val)], p[(int)Math.Floor(val) + 1], val - (int)Math.Floor(val));
				}
			}
			return c;
		}

		public static string colorHex(Color32 c)
		{
			return string.Format("#{0}{1}{2}", c.r.ToString("X2"), c.g.ToString("X2"), c.b.ToString("X2"));
		}

		public static string coloredNoQuote(Color c, string text)
		{
			return string.Format("{1}", colorHex(c), text);
		}

		public static string c_good_hex
		{
			get
			{
				if (SCANcontroller.controller.mainMapColor)
				{
					return "009980";
				}
				else
				{
					return "59b3e6";
				}
			}
		}

		public static string c_bad_hex
		{
			get { return "e69900"; }
		}

		public static string c_grey_hex
		{
			get { return "808080"; }
		}

		internal static Color c_good
		{
			get
			{
				if (SCANcontroller.controller.mainMapColor)
				{
					return cb_bluishGreen;
				}
				else
				{
					return cb_skyBlue;
				}
			}
		}
		internal static Color c_bad
		{
			get
			{
				return cb_orange;
			}
		}
		internal static Color c_ugly
		{
			get
			{
				if (SCANcontroller.controller.mainMapColor)
				{
					return xkcd_LightRed;
				}
				else
				{
					return cb_yellow;
				}
			}
		}

		internal static Color32 C_Good
		{
			get
			{
				if (SCANcontroller.controller.mainMapColor)
				{
					return CB_bluishGreen;
				}
				else
				{
					return CB_skyBlue;
				}
			}
		}
		internal static Color32 C_Bad
		{
			get
			{
				return CB_orange;
			}
		}
		private static SCANPaletteType currentPaletteSet;
		private static SCANPalette greyScalePalette;

		public static SCANPaletteType SetCurrentPalettesType(SCANPaletteKind type)
		{
			return SCANconfigLoader.SCANPalettes.GetPaletteType(type);
		}

		public static SCANPalette GreyScalePalette
		{
			get
			{
				if (greyScalePalette == null)
				{
					Color32[] 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) };

					greyScalePalette = new SCANPalette(c, "GreyScalePalette", SCANPaletteKind.Fixed, c.Length);
				}

				return greyScalePalette;
			}
		}

		public static SCANPaletteType CurrentPalettes
		{
			get { return currentPaletteSet; }
			internal set
			{
				currentPaletteSet = value;
			}
		}

		public static string[] GetPaletteKindNames()
		{
			SCANPaletteKind[] v = (SCANPaletteKind[])Enum.GetValues(typeof(SCANPaletteKind));

			string[] r = new string[v.Length - 1];

			for (int i = 0; i < v.Length - 1; ++i)
			{
				r[i] = v[i].ToString();
			}

			return r;
		}

		public static Color32 ConvertToGrayscale(Color32 color)
		{
			double r, g, b, l;

			r = color.r / 255f;
			g = color.g / 255f;
			b = color.b / 255f;

			r *= 0.2126f;
			g *= 0.7152f;
			b *= 0.0722f;

			l = r + g + b;

			if (l >= 1)
			{
				l = 1;
			}

			if (l <= 0)
			{
				l = 0;
			}

			byte lum = (byte)Math.Round(l * 255d);

			return new Color32(lum, lum, lum, color.a);
		}

		public static HslColor ConvertRgbToHsl(Color32 color)
		{
			return ConvertRgbToHsl((color.r / 255d), (color.g / 255d), (color.b / 255d));
		}

		//Converts an RGB color to an HSL color.
		public static HslColor ConvertRgbToHsl(double r, double b, double g)
		{
			double delta, min, max;
			double h, s, l;

			min = Math.Min(Math.Min(r, g), b);
			max = Math.Max(Math.Max(r, g), b);

			l = (min + max) / 2d;

			if (min == max)
			{
				s = 0;
				h = 0;
			}
			else
			{
				delta = max - min;

				if (l < 0.5)
				{
					s = (delta) / (max + min);
				}
				else
				{
					s = (delta) / (2 - max - min);
				}

				if (r == max)
				{
					h = (g - b) / delta;
				}
				else if (g == max)
				{
					h = 2 + ((b - r) / delta);
				}
				else
				{
					h = 4 + ((r - g) / delta);
				}

				h *= 60;

				if (h <= 0)
				{
					h += 360;
				}

				h = 360 - h;
			}

			return new HslColor() { H = h, S = s, L = l };
		}

		// Converts an HSL color to an RGB color.
		public static Color32 ConvertHslToRgb(double h, double s, double l)
		{
			double r = 0, g = 0, b = 0;

			if (s == 0)
			{
				r = l;
				g = l;
				b = l;
			}
			else
			{
				double tr, tg, tb;

				double t1, t2, th;

				if (l < 0.5)
				{
					t1 = l * (1 + s);
				}
				else
				{
					t1 = (l + s) - (l * s);
				}

				t2 = 2 * l - t1;

				th = h / 360d;

				tr = th + (1d / 3d);
				tg = th;
				tb = th - (1d / 3d);

				r = ColorTest(tr, t1, t2);
				g = ColorTest(tg, t1, t2);
				b = ColorTest(tb, t1, t2);
			}

			return new Color32((byte)Math.Round(r * 255d), (byte)Math.Round(g * 255d), (byte)Math.Round(b * 255d), 255);
		}

		private static double ColorTest(double c, double t1, double t2)
		{
			if (c < 0)
			{
				c += 1d;
			}

			if (c > 1)
			{
				c -= 1d;
			}

			if (6d * c < 1d)
			{
				return t2 + (t1 - t2) * 6d * c;
			}

			if (2d * c < 1d)
			{
				return t1;
			}

			if (3d * c < 2d)
			{
				return t2 + (t1 - t2) * ((2d / 3d) - c) * 6d;
			}

			return t2;
		}

	}

	public struct HslColor
	{
		/// 
		/// The Hue, ranges between 0 and 360
		/// 
		public double H;

		/// 
		/// The saturation, ranges between 0 and 1
		/// 
		public double S;

		// The luminence, ranges between 0 and 1
		public double L;

		public float normalizedH
		{
			get
			{
				return (float)H / 360f;
			}

			set
			{
				H = (double)value * 360;
			}
		}

		public float normalizedS
		{
			get
			{
				return (float)S;
			}
			set
			{
				S = (double)value;
			}
		}

		public float normalizedVL
		{
			get
			{
				return (float)L;
			}
			set
			{
				L = (double)value;
			}
		}

		public HslColor(double h, double s, double l)
		{
			this.H = h;
			this.S = s;
			this.L = l;
		}

		public override string ToString()
		{
			return "{" + H.ToString("f2") + "," + S.ToString("f2") + "," + L.ToString("f2") + "}";
		}
	}
}



================================================
FILE: SCANsat/SCAN_UI/UI_Framework/SCANicon.cs
================================================
#region license
/* 
 *  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANsat - Static class to handle icon types
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 *
 */
#endregion
using System;
using System.IO;
using System.Reflection;
using UnityEngine;

using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;

namespace SCANsat.SCAN_UI.UI_Framework
{
	public class SCANicon
	{
		private static Rect pos_icon = new Rect(0, 0, 0, 0);
		private static Rect grid_pos;

		internal static void drawOrbitIconGL(int x, int y, OrbitIcon icon, Color c, Color shadow, Material iconMat, int size = 32 /*px*/, bool outline = false)
		{
			// PX [0..n]
			// ORIGIN: NorthWest
			pos_icon.x = x - (size / 2);
			pos_icon.y = y - (size / 2);
			pos_icon.width = size;
			pos_icon.height = size;

			// UV [0..1]
			// Origin: SouthWest
			grid_pos.width = 0.2f;
			grid_pos.height = 0.2f;
			grid_pos.x = 0.2f * ((int)icon % 5);
			grid_pos.y = 0.2f * (4 - (int)icon / 5);

			SCANuiUtil.drawMapIconGL(pos_icon, SCANmainMenuLoader.OrbitIconsMap, c, iconMat, shadow, outline, grid_pos, true);
		}

		public enum OrbitIcon : int
		{
			Pe = 0,
			Ap = 1,
			AN = 2,
			DN = 3,
			Plane = 4,
			Ship = 5,
			Debris = 6,
			Planet = 7,
			Mystery = 8,
			Relay = 9,
			Encounter = 10,
			Exit = 11,
			EVA = 12,
			Ball = 13,
			TargetTop = 15,
			TargetBottom = 16,
			ManeuverNode = 17,
			Station = 18,
			SpaceObject = 19,
			Rover = 20,
			Probe = 21,
			Base = 22,
			Lander = 23,
			Flag = 24,
		}
		internal static OrbitIcon orbitIconForVesselType(VesselType type)
		{
			switch (type)
			{
				case VesselType.Base:
					return OrbitIcon.Base;
				case VesselType.Debris:
					return OrbitIcon.Debris;
				case VesselType.EVA:
					return OrbitIcon.EVA;
				case VesselType.Flag:
					return OrbitIcon.Flag;
				case VesselType.Lander:
					return OrbitIcon.Lander;
				case VesselType.Plane:
					return OrbitIcon.Plane;
				case VesselType.Probe:
					return OrbitIcon.Probe;
				case VesselType.Relay:
					return OrbitIcon.Relay;
				case VesselType.Rover:
					return OrbitIcon.Rover;
				case VesselType.Ship:
					return OrbitIcon.Ship;
				case VesselType.Station:
					return OrbitIcon.Station;
				case VesselType.SpaceObject:
					return OrbitIcon.SpaceObject;
				case VesselType.Unknown:
					return OrbitIcon.Mystery;
				default:
					return OrbitIcon.Mystery;
			}
		}
	}
}



================================================
FILE: SCANsat/SCAN_UI/UI_Framework/SCANremoteView.cs
================================================
#region license
/*
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * RemoteView - A camera looking at a GameObject, rendering to a texture.
 *
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
*/
#endregion

using SCANsat.SCAN_Data;
using System.Collections.Generic;
using SCANsat.SCAN_Unity;
using UnityEngine;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;


namespace SCANsat.SCAN_UI.UI_Framework
{
	public class SCANremoteView
	{
		private const float MAX_DISTANCE = 400;
		private const float MIN_DISTANCE = 15;
		private const float MAX_DISTANCE_UP = 75;
		private const float MIN_DISTANCE_UP = 30;

		private static Camera cam;
		private static GameObject camgo;
		private RenderTexture rt;
		private int updateFrame, width, height;
		private List cons;
		private List rocs;
		private Bounds bounds;
		private int activeCon;
		private int activeROC;
		public GameObject lookat;
		public CrashObjectName lookdetail;
		public SCANROC rocDetail;
		public bool rocsMode;

		public void Initialize(int w, int h)
		{
			width = w;
			height = h;
		}

		public void setup(GameObject focus)
		{
			if (lookat != focus)
			{
				lookdetail = null;

				bounds = new Bounds(focus.transform.position, Vector3.zero);
				foreach (MeshRenderer c in focus.GetComponentsInChildren())
				{
					bounds.Encapsulate(c.bounds);
				}

				cons = new List();

				foreach (CrashObjectName con in focus.GetComponentsInChildren())
				{
					cons.Add(con);
				}
			}
			lookat = focus;

			rocDetail = null;

			rocsMode = false;
		}

		public void setup(List rocList, Vessel v)
		{
			if (rocList == null)
			{
				return;
			}

			double nearest = -1;

			rocs = new List();

			for (int i = rocList.Count - 1; i >= 0; i--)
			{
				SCANROC roc = rocList[i];

				if (!roc.Known)
				{
					continue;
				}

				rocs.Add(roc);

				double d = (roc.Roc.transform.position - v.transform.position).sqrMagnitude;

				if (d < nearest || nearest < 0)
				{
					lookat = roc.Roc.gameObject;
					rocDetail = roc;
					nearest = d;
				}
			}

			if (lookat != null)
			{
				bounds = new Bounds(lookat.transform.position, Vector3.zero);
				foreach (MeshRenderer c in lookat.GetComponentsInChildren())
				{
					bounds.Encapsulate(c.bounds);
				}
			}
			else
			{
				bounds = new Bounds();
			}

			lookdetail = null;

			rocsMode = true;
		}

		public bool valid(GameObject focus)
		{
			if (focus == null)
			{
				return false;
			}

			if (focus != lookat)
			{
				return false;
			}

			return true;
		}

		public bool validROC()
		{
			if (!rocsMode)
			{
				return false;
			}

			if (rocDetail.Roc == null)
			{
				return false;
			}

			if (lookat != rocDetail.Roc.gameObject)
			{
				return false;
			}

			return true;
		}

		public void free()
		{
			GameObject.Destroy(camgo);
			RenderTexture.Destroy(rt);
			cam = null;
			camgo = null;
			rt = null;
		}

		private void updateCamera()
		{
			if (updateFrame > Time.frameCount - 5)
			{
				return;
			}

			if (rt == null || rt.width != width || rt.height != height)
			{
				RenderTextureFormat format = RenderTextureFormat.RGB565;

				if (!SystemInfo.SupportsRenderTextureFormat(format))
				{
					format = RenderTextureFormat.Default;
				}

				rt = new RenderTexture(width, height, 32, format);
				rt.Create();
			}

			if (camgo == null)
			{
				camgo = new GameObject();
			}

			if (cam == null)
			{
				cam = camgo.AddComponent();
				//Add image processing component to camera game object
				camgo.AddComponent();
				cam.enabled = false;

				cam.targetTexture = rt;
				cam.aspect = width * 1f / height;
				cam.fieldOfView = 90;
			}

			Vector3 pos_target = lookat.transform.position;

			if (lookdetail != null)
			{
				pos_target = lookdetail.transform.position;
			}

			if (rocDetail != null)
			{
				pos_target = rocDetail.Roc.transform.position;
			}

			Vector3 pos_cam = FlightGlobals.ActiveVessel.transform.position;
			Vector3 target_up = (pos_target - FlightGlobals.currentMainBody.transform.position).normalized;
			Vector3 dir = (pos_target - pos_cam).normalized;

			float dist = 100;
			float bound = Mathf.Max(bounds.size.x, Mathf.Max(bounds.size.y, bounds.size.z));

			dist = Mathf.Clamp(bound * 1.5f, MIN_DISTANCE, MAX_DISTANCE);
			float distUp = Mathf.Clamp(bound * 1.5f, MIN_DISTANCE_UP, MAX_DISTANCE_UP);

			pos_cam = pos_target - dir * dist / 1.75f + target_up * distUp / 2f;
			Vector3 cam_up = (pos_cam - FlightGlobals.currentMainBody.transform.position).normalized;

			cam.transform.position = pos_cam;
			cam.transform.LookAt(pos_target, cam_up);
			cam.farClipPlane = dist * 3;

			cam.Render();

			updateFrame = Time.frameCount;
		}

		public Texture getTexture()
		{
			updateCamera();
			return rt;
		}

		public string getInfoString()
		{
			if (!rocsMode && cons.Count > 0)
			{
				return string.Format("> Identified {0} structure{1}", cons.Count.ToString(), cons.Count > 1 ? "s" : "");
			}
			else if (rocsMode)
			{
				return string.Format("> Identified {0} surface object{1}", rocs.Count.ToString(), rocs.Count > 1 ? "s" : "");
			}
			else
			{
				return "";
			}
		}

		public string getAnomalyDataString(bool mouse, bool anomalyKnown)
		{
			string sname = lookat.name;

			Vector3 lookvec = lookat.transform.position;

			bool distance = false;

			if (!rocsMode && cons.Count > 0)
			{
				float scroll = Input.GetAxis("Mouse ScrollWheel");

				lookdetail = cons[activeCon];

				if (mouse && scroll != 0)
				{
					activeCon += (scroll > 0 ? 1 : -1);

					if (activeCon >= cons.Count)
					{
						activeCon = 0;
					}
					else if (activeCon < 0)
					{
						activeCon = cons.Count - 1;
					}

					lookdetail = cons[activeCon];

					bounds = new Bounds(lookdetail.transform.position, Vector3.zero);
					foreach (MeshRenderer c in lookdetail.GetComponentsInChildren())
					{
						bounds.Encapsulate(c.bounds);
					}
				}

				lookvec = lookdetail.transform.position;
				sname = lookdetail.objectName;

				rocDetail = null;

				distance = anomalyKnown;
			}
			else if (rocsMode && rocs.Count > 0)
			{
				float scroll = Input.GetAxis("Mouse ScrollWheel");

				if (mouse && scroll != 0)
				{
					activeROC += (scroll > 0 ? 1 : -1);

					if (activeROC >= rocs.Count)
					{
						activeROC = 0;
					}
					else if (activeROC < 0)
					{
						activeROC = rocs.Count - 1;
					}

					rocDetail = rocs[activeROC];
					lookat = rocDetail.Roc.gameObject;

					bounds = new Bounds(lookat.transform.position, Vector3.zero);
					foreach (MeshRenderer c in lookat.GetComponentsInChildren())
					{
						bounds.Encapsulate(c.bounds);
					}
				}

				lookvec = rocDetail.Roc.transform.position;
				sname = rocDetail.Scanned ? rocDetail.Name : "Unknown";

				lookdetail = null;

				distance = true;
			}

			if (distance)
			{
				string dist = SCANuiUtil.distanceString((FlightGlobals.ActiveVessel.transform.position - lookvec).magnitude, 2000);

				return string.Format("{0}\n{1}", sname, dist);
			}
			else
			{
				return string.Format("\n{0}", sname);
			}
		}

	}
}


================================================
FILE: SCANsat/SCAN_UI/UI_Framework/SCANuiUtil.cs
================================================
#region license
/* 
 *  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANsat - UI Utilities methods
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 *
 */
#endregion

using System;
using System.Linq;
using System.Text;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_Map;
using SCANsat.SCAN_Unity;
using SCANsat.SCAN_UI.UI_Framework;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;
using UnityEngine;

namespace SCANsat.SCAN_UI.UI_Framework
{
	static class SCANuiUtil
	{
		#region UI Utilities

		internal static string getResourceAbundance(CelestialBody Body, double lat, double lon, bool fuzzy, SCANresourceGlobal resource)
		{
			if (fuzzy)
			{
				return resourceLabel(true, lat, lon, resource, Body);
			}
			else if (narrowBandInOrbit(Body, lat, resource))
			{
				return resourceLabel(false, lat, lon, resource, Body);
			}
			else
			{
				return resourceLabel(true, lat, lon, resource, Body);
			}
		}

		internal static bool narrowBandInOrbit(CelestialBody b, double lat, SCANresourceGlobal resource)
		{
			if (SCAN_Settings_Config.Instance.RequireNarrowBand)
			{
				if (resource == null)
				{
					return false;
				}

				bool scanner = false;

				foreach (Vessel vessel in FlightGlobals.Vessels)
				{
					if (vessel.protoVessel.protoPartSnapshots.Count <= 1)
					{
						continue;
					}

					VesselType vType = vessel.vesselType;

					if (vType == VesselType.Debris || vType == VesselType.Unknown
						|| vType == VesselType.EVA || vType == VesselType.Flag
						|| vType == VesselType.DeployedScienceController || vType == VesselType.DeployedSciencePart)
					{
						continue;
					}

					if (vessel.mainBody != b)
					{
						continue;
					}

					if ((vessel.loaded ? vessel.situation : vessel.protoVessel.situation) != Vessel.Situations.ORBITING)
					{
						continue;
					}

					if ((inc(vessel.orbit.inclination) + 5) < Math.Abs(lat))
					{
						continue;
					}

					if (SCAN_Settings_Config.Instance.DisableStockResource)
					{
						var scanners = from pref in vessel.protoVessel.protoPartSnapshots
									   where pref.modules.Any(a => a.moduleName == "SCANsat")
									   select pref;

						if (scanners.Count() > 0)
						{
							foreach (var p in scanners)
							{
								if (p.partInfo == null)
								{
									continue;
								}

								ConfigNode node = p.partInfo.partConfig;

								if (node == null)
								{
									continue;
								}

								var moduleNodes = from nodes in node.GetNodes("MODULE")
												  where nodes.GetValue("name") == "SCANsat"
												  select nodes;

								foreach (ConfigNode moduleNode in moduleNodes)
								{
									if (moduleNode == null)
									{
										continue;
									}

									if (!moduleNode.HasValue("sensorType"))
									{
										continue;
									}

									string type = moduleNode.GetValue("sensorType");

									int sType = 0;

									if (!int.TryParse(type, out sType))
									{
										continue;
									}

									if (((SCANtype)sType & SCANtype.ResourceHiRes) == SCANtype.Nothing)
									{
										continue;
									}

									if (moduleNode.HasValue("max_alt") && !vessel.Landed)
									{
										string alt = moduleNode.GetValue("max_alt");

										float f = 0;

										if (!float.TryParse(alt, out f))
										{
											continue;
										}

										if (f < vessel.altitude)
										{
											scanner = false;
											continue;
										}
									}

									scanner = true;
									break;
								}
								if (scanner)
								{
									break;
								}
							}
							if (scanner)
							{
								break;
							}
						}

						scanners = from pref in vessel.protoVessel.protoPartSnapshots
								   where pref.modules.Any(a => a.moduleName == "ModuleSCANresourceScanner")
								   select pref;

						if (scanners.Count() > 0)
						{
							foreach (var p in scanners)
							{
								if (p.partInfo == null)
								{
									continue;
								}

								ConfigNode node = p.partInfo.partConfig;

								if (node == null)
								{
									continue;
								}

								var moduleNodes = from nodes in node.GetNodes("MODULE")
												  where nodes.GetValue("name") == "ModuleSCANresourceScanner"
												  select nodes;

								foreach (ConfigNode moduleNode in moduleNodes)
								{
									if (moduleNode == null)
									{
										continue;
									}

									if (!moduleNode.HasValue("sensorType"))
									{
										continue;
									}

									string type = moduleNode.GetValue("sensorType");

									int sType = 0;

									if (!int.TryParse(type, out sType))
									{
										continue;
									}

									if (((SCANtype)sType & SCANtype.ResourceHiRes) == SCANtype.Nothing)
									{
										continue;
									}

									if (moduleNode.HasValue("max_alt") && !vessel.Landed)
									{
										string alt = moduleNode.GetValue("max_alt");

										float f = 0;

										if (!float.TryParse(alt, out f))
										{
											continue;
										}

										if (f < vessel.altitude)
										{
											scanner = false;
											continue;
										}
									}

									scanner = true;
									break;
								}
								if (scanner)
								{
									break;
								}
							}
							if (scanner)
							{
								break;
							}
						}
					}
					else
					{
						if (vessel.altitude > 1000000)
						{
							continue;
						}

						var scanners = from pref in vessel.protoVessel.protoPartSnapshots
									   where pref.modules.Any(a => a.moduleName == "ModuleKerbNetAccess")
									   select pref;

						if (scanners.Count() == 0)
						{
							continue;
						}

						foreach (var p in scanners)
						{
							if (p.partInfo == null)
							{
								continue;
							}

							ConfigNode node = p.partInfo.partConfig;

							if (node == null)
							{
								continue;
							}

							var moduleNodes = from nodes in node.GetNodes("MODULE")
											  where nodes.GetValue("name") == "ModuleKerbNetAccess"
											  select nodes;

							foreach (ConfigNode moduleNode in moduleNodes)
							{
								if (!moduleNode.HasNode("DISPLAY_MODES"))
								{
									continue;
								}

								ConfigNode displayMode = moduleNode.GetNode("DISPLAY_MODES");

								if (!displayMode.HasValue("Mode"))
								{
									continue;
								}

								foreach (string mode in displayMode.GetValues("Mode"))
								{
									string[] subMode = mode.Split(',');

									if (subMode[0].Trim() != "Resources")
									{
										continue;
									}

									scanner = true;
									break;
								}

								if (scanner)
								{
									break;
								}
							}
							if (scanner)
							{
								break;
							}
						}
						if (scanner)
						{
							break;
						}
					}
				}

				if (!scanner)
				{
					return false;
				}
			}

			return true;
		}

		internal static string resourceLabel(bool fuzz, double lat, double lon, SCANresourceGlobal resource, CelestialBody b)
		{
			if (fuzz)
			{
				return string.Format("{0}: {1}", resource.DisplayName, LoResourceGroup(SCANUtil.ResourceOverlay(lat, lon, resource.Name, b, SCAN_Settings_Config.Instance.BiomeLock)));
			}
			else
			{
				return string.Format("{0}: {1}", resource.DisplayName, SCANUtil.ResourceOverlay(lat, lon, resource.Name, b, SCAN_Settings_Config.Instance.BiomeLock).ToString("P2"));
			}
		}

		internal static string LoResourceGroup(float abundance)
		{
			if (abundance > 0)
			{
				abundance = Mathf.Floor(abundance * 100 / 5) * 5;

				return string.Format("{0}-{1}%", abundance.ToString("F0"), (abundance + 5).ToString("F0"));
			}
			else
			{
				return "0%";
			}
		}

		private static double inc(double d)
		{
			d = Math.Abs(d);

			if (d > 90)
			{
				d = 180 - d;
			}

			return d;
		}

		internal static string getMouseOverElevation(double Lon, double Lat, SCANdata d, int precision, bool high)
		{
			if (high)
			{
				return string.Format("{0}m", SCANUtil.getElevation(d.Body, Lon, Lat).ToString(string.Format("N{0}", precision.ToString())));
			}
			else
			{
				return string.Format("{0}m", (((int)SCANUtil.getElevation(d.Body, Lon, Lat) / 500) * 500).ToString());
			}
		}

		internal static void getMouseOverElevation(StringBuilder sb, double Lon, double Lat, SCANdata d, int precision, bool high)
		{

			if (high)
			{
				sb.Append(SCANUtil.getElevation(d.Body, Lon, Lat).ToString(string.Format("N{0}", precision.ToString())));
				sb.Append("m");
			}
			else
			{
				sb.Append((((int)SCANUtil.getElevation(d.Body, Lon, Lat) / 500) * 500).ToString());
				sb.Append("m");
			}
		}

		private const char WEST = 'W';
		private const char EAST = 'E';
		private const char SOUTH = 'S';
		private const char NORTH = 'N';
		private const char HOURS = '°';
		private const string MINUTES = "'";
		private const string SECONDS = "\"";

		/* UI: conversions to and from DMS */
		/* FIXME: These do not belong here. And they are only used once! */

		private static void toDMS(StringBuilder sb, double thing, char neg, char pos, string precFormat = "F2")
		{
			if (thing >= 0)
			{
				neg = pos;
			}

			thing = Math.Abs(thing);

			sb.Append(Math.Floor(thing).ToString());
			sb.Append(HOURS);
			thing = (thing - Math.Floor(thing)) * 60;

			sb.Append(Math.Floor(thing).ToString());
			sb.Append(MINUTES);
			thing = (thing - Math.Floor(thing)) * 60;

			sb.Append(thing.ToString(precFormat));
			sb.Append(SECONDS);

			sb.Append(neg);
		}

		internal static void toDMS(StringBuilder sb, double lat, double lon)
		{
			toDMS(sb, lat, SOUTH, NORTH);
			sb.Append(" ");
			toDMS(sb, lon, WEST, EAST);
		}

		internal static string distanceString(double dist, double cutoff, double cutoff2 = double.MaxValue)
		{
			if (dist < cutoff)
			{
				return string.Format("{0}m", dist.ToString("N1"));
			}
			else if (dist < cutoff2)
			{
				return string.Format("{0}km", (dist / 1000d).ToString("N2"));
			}
			else
			{
				return string.Format("{0}km", (dist / 1000d).ToString("N0"));
			}
		}

		//Reset window positions;
		internal static void resetMainMapPos()
		{
			if (SCAN_UI_MainMap.Instance == null)
			{
				return;
			}

			SCAN_UI_MainMap.Instance.ResetPosition();
		}

		internal static void resetInstUIPos()
		{
			if (SCAN_UI_Instruments.Instance == null)
			{
				return;
			}

			SCAN_UI_Instruments.Instance.ResetPosition();
		}

		internal static void resetBigMapPos()
		{
			if (SCAN_UI_BigMap.Instance == null)
			{
				return;
			}

			SCAN_UI_BigMap.Instance.ResetPosition();
		}

		internal static void resetOverlayControllerPos()
		{
			if (SCAN_UI_Overlay.Instance == null)
			{
				return;
			}

			SCAN_UI_Overlay.Instance.ResetPosition();
		}

		internal static void resetZoomMapPos()
		{
			if (SCAN_UI_ZoomMap.Instance == null)
			{
				return;
			}

			SCAN_UI_ZoomMap.Instance.ResetPosition();
		}

		#endregion

		#region Texture/Icon labels

		internal 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)
		{
			if (texCoords)
			{
				if (outline)
				{
					iconMat.color = shadow;
					pos.x -= 1;
					Graphics.DrawTexture(pos, tex, texPos, 0, 0, 0, 0, iconMat);
					pos.x += 2;
					Graphics.DrawTexture(pos, tex, texPos, 0, 0, 0, 0, iconMat);
					pos.x -= 1;
					pos.y -= 1;
					Graphics.DrawTexture(pos, tex, texPos, 0, 0, 0, 0, iconMat);
					pos.y += 2;
					Graphics.DrawTexture(pos, tex, texPos, 0, 0, 0, 0, iconMat);
					pos.y -= 1;
				}
				iconMat.color = c;

				Graphics.DrawTexture(pos, tex, texPos, 0, 0, 0, 0, iconMat);
			}
			else
			{
				if (outline)
				{
					iconMat.color = shadow;
					pos.x -= 1;
					Graphics.DrawTexture(pos, tex, 0, 0, 0, 0, iconMat);
					pos.x += 2;
					Graphics.DrawTexture(pos, tex, 0, 0, 0, 0, iconMat);
					pos.x -= 1;
					pos.y -= 1;
					Graphics.DrawTexture(pos, tex, 0, 0, 0, 0, iconMat);
					pos.y += 2;
					Graphics.DrawTexture(pos, tex, 0, 0, 0, 0, iconMat);
					pos.y -= 1;
				}
				iconMat.color = c;

				Graphics.DrawTexture(pos, tex);
			}

		}

		#endregion

		#region MechJeb Target Overlay

		/*These methods borrowed from MechJeb GLUtils: 
		 * https://github.com/MuMech/MechJeb2/blob/master/MechJeb2/GLUtils.cs
		 * 
		*/
		internal static void drawTargetOverlay(CelestialBody body, double latitude, double longitude, Color c)
		{
			double rotation = 0;
			double radius = 0;
			Vector3d up = body.GetSurfaceNVector(latitude, longitude);
			var height = SCANUtil.getElevation(body, longitude, latitude);
			if (height < body.Radius)
			{
				height = body.Radius;
			}

			Vector3d center = body.position + height * up;

			if (occluded(center, body))
			{
				return;
			}

			Vector3d north = Vector3d.Exclude(up, body.transform.up).normalized;

			radius = body.Radius / 15;

			GLTriangleMap(new Vector3d[3] { center, center + radius * (QuaternionD.AngleAxis(rotation - 55, up) * north), center + radius * (QuaternionD.AngleAxis(rotation - 35, up) * north) }, c);

			GLTriangleMap(new Vector3d[3] { center, center + radius * (QuaternionD.AngleAxis(rotation + 55, up) * north), center + radius * (QuaternionD.AngleAxis(rotation + 35, up) * north) }, c);

			GLTriangleMap(new Vector3d[3] { center, center + radius * (QuaternionD.AngleAxis(rotation - 145, up) * north), center + radius * (QuaternionD.AngleAxis(rotation - 125, up) * north) }, c);

			GLTriangleMap(new Vector3d[3] { center, center + radius * (QuaternionD.AngleAxis(rotation + 145, up) * north), center + radius * (QuaternionD.AngleAxis(rotation + 125, up) * north) }, c);
		}

		internal static void drawGroundTrackTris(CelestialBody body, Vessel v, double width, Color c)
		{
			double lat = SCANUtil.fixLatShift(v.latitude);
			double lon = SCANUtil.fixLonShift(v.longitude);

			Vector3d center = v.transform.position;

			if (occluded(center, body))
			{
				return;
			}

			var height = SCANUtil.getElevation(body, lon, lat);
			if (height < body.Radius)
			{
				height = body.Radius;
			}

			Vector3d up = body.GetSurfaceNVector(lat, lon);

			Vector3d srfCenter = body.position + height * up;

			Vector3d VelFor = Vector3.ProjectOnPlane(v.obt_velocity, up).normalized;
			Vector3d vesselPerp = Vector3d.Cross(VelFor, up).normalized;

			Vector3d left = srfCenter + width * vesselPerp;
			Vector3d right = srfCenter - width * vesselPerp;

			GLTriangleMap(new Vector3d[3] { center, left, right }, c);
		}

		private static bool occluded(Vector3d pos, CelestialBody body)
		{
			if (Vector3d.Distance(pos, body.position) < body.Radius - 100)
			{
				return true;
			}

			Renderer scaledR = body.scaledBody.GetComponent();

			if (!scaledR.isVisible)
			{
				return true;
			}

			Vector3d camPos = ScaledSpace.ScaledToLocalSpace(PlanetariumCamera.Camera.transform.position);

			if (Vector3d.Angle(camPos - pos, body.position - pos) > 90)
			{
				return false;
			}

			double bodyDistance = Vector3d.Distance(camPos, body.position);
			double separationAngle = Vector3d.Angle(pos - camPos, body.position - camPos);
			double altitude = bodyDistance * Math.Sin(Math.PI / 180 * separationAngle);
			return (altitude < body.Radius);
		}

		private static Material mat;

		private static void GLTriangleMap(Vector3d[] vert, Color c)
		{
			GL.PushMatrix();
			if (mat == null)
			{
				mat = new Material(Shader.Find("Legacy Shaders/Particles/Additive"));
			}

			mat.SetPass(0);
			GL.LoadOrtho();
			GL.Begin(GL.TRIANGLES);
			GL.Color(c);
			GLVertexMap(vert[0]);
			GLVertexMap(vert[1]);
			GLVertexMap(vert[2]);
			GL.End();
			GL.PopMatrix();
		}

		private static void GLVertexMap(Vector3d pos)
		{
			Vector3 screenPoint = PlanetariumCamera.Camera.WorldToViewportPoint(ScaledSpace.LocalToScaledSpace(pos));
			GL.Vertex3(screenPoint.x, screenPoint.y, 0);
		}

		#endregion

		#region Planet Overlay Textures

		private static double fixLon(double Lon)
		{
			if (Lon <= 180)
			{
				Lon = 180 - Lon;
			}
			else
			{
				Lon = (Lon - 180) * -1;
			}

			Lon -= 90;
			if (Lon < -180)
			{
				Lon += 360;
			}

			return Lon;
		}

		private static double unFixLon(double Lon)
		{
			Lon += 90;

			Lon = (Lon - 180) * -1;

			if (Lon < 0)
			{
				Lon += 360;
			}

			Lon -= 180;

			return Lon;
		}

		internal static void generateOverlayResourceValues(ref float[,] values, int height, SCANdata data, SCANresourceGlobal resource, int stepScale = 8)
		{
			int width = height * 2;
			float scale = height / 180f;

			if (values == null || height * width != values.Length)
			{
				values = new float[width, height];
			}

			for (int j = 0; j < height; j += stepScale)
			{
				double lat = (j / scale) - 90;
				for (int i = 0; i < width; i += stepScale)
				{
					double lon = fixLon(i / scale);

					values[i, j] = SCANUtil.ResourceOverlay(lat, lon, resource.Name, data.Body, SCAN_Settings_Config.Instance.BiomeLock) * 100;
				}
			}
		}

		internal static void generateOverlayResourcePixels(ref Color32[] pix, ref float[,] values, int height, SCANdata data, SCANresourceGlobal resource, System.Random r, int stepScale, float transparency = 0f)
		{
			int width = height * 2;
			float scale = height / 180f;

			if (pix == null || height * width != pix.Length)
			{
				pix = new Color32[width * height];
			}

			for (int i = stepScale / 2; i >= 1; i /= 2)
			{
				interpolate(values, height, width, i, i, i, r, true);
				interpolate(values, height, width, 0, i, i, r, true);
				interpolate(values, height, width, i, 0, i, r, true);
			}

			for (int i = 0; i < width; i++)
			{
				double lon = fixLon(i / scale);
				for (int j = 0; j < height; j++)
				{
					double lat = (j / scale) - 90;

					pix[j * width + i] = resourceToColor32(palette.Clear, resource, resource.CurrentBody.MinValue, resource.CurrentBody.MaxValue, values[i, j], data, lon, lat, transparency);
				}
			}
		}

		internal static Texture2D drawResourceTexture(ref Texture2D map, ref Color32[] pix, ref float[,] values, int height, SCANdata data, SCANresourceGlobal resource, int stepScale = 8, float transparency = 0f)
		{
			int width = height * 2;
			float scale = height / 180f;

			if (map == null || pix == null || values == null || map.height != height)
			{
				map = new Texture2D(width, height, TextureFormat.ARGB32, true);
				pix = new Color32[width * height];
				values = new float[width, height];
			}

			System.Random r = new System.Random(ResourceScenario.Instance.gameSettings.Seed);

			for (int j = 0; j < height; j += stepScale)
			{
				double lat = (j / scale) - 90;
				for (int i = 0; i < width; i += stepScale)
				{
					double lon = fixLon(i / scale);

					values[i, j] = SCANUtil.ResourceOverlay(lat, lon, resource.Name, data.Body, SCAN_Settings_Config.Instance.BiomeLock) * 100;
				}
			}

			for (int i = stepScale / 2; i >= 1; i /= 2)
			{
				interpolate(values, height, width, i, i, i, r, true);
				interpolate(values, height, width, 0, i, i, r, true);
				interpolate(values, height, width, i, 0, i, r, true);
			}

			for (int i = 0; i < width; i++)
			{
				double lon = fixLon(i / scale);
				for (int j = 0; j < height; j++)
				{
					double lat = (j / scale) - 90;

					pix[j * width + i] = resourceToColor32(palette.Clear, resource, resource.CurrentBody.MinValue, resource.CurrentBody.MaxValue, values[i, j], data, lon, lat, transparency);
				}
			}

			map.SetPixels32(pix);
			map.Apply();

			return map;
		}

		internal static Texture2D drawBiomeMap(ref Texture2D map, ref Color32[] pix, SCANdata data, float transparency, int height = 256, bool useStock = false, bool whiteBorder = false)
		{
			if (!useStock && !whiteBorder)
			{
				return drawBiomeMap(ref map, ref pix, data, height);
			}

			int width = height * 2;
			float scale = (width * 1f) / 360f;
			double[] mapline = new double[width];

			if (map == null || pix == null || map.height != height)
			{
				map = new Texture2D(width, height, TextureFormat.ARGB32, true);
				pix = new Color32[width * height];
			}

			for (int j = 0; j < height; j++)
			{
				double lat = (j / scale) - 90;
				for (int i = 0; i < width; i++)
				{
					double lon = fixLon(i / scale);

					if (!SCANUtil.isCovered(lon, lat, data, SCANtype.Biome))
					{
						pix[j * width + i] = palette.lerp(palette.Clear, palette.Grey, transparency);
						continue;
					}

					float biomeIndex = (float)SCANUtil.getBiomeIndexFraction(data.Body, lon, lat);

					if (whiteBorder && i > 0 && mapline[i - 1] != biomeIndex || (j > 0 && mapline[i] != biomeIndex))
					{
						pix[j * width + i] = palette.White;
					}
					else if (useStock)
					{
						pix[j * width + i] = palette.lerp((Color32)SCANUtil.getBiome(data.Body, lon, lat).mapColor, palette.Clear, SCAN_Settings_Config.Instance.BiomeTransparency);
					}
					else
					{
						pix[j * width + i] = palette.lerp(palette.lerp(SCANcontroller.controller.lowBiomeColor32, SCANcontroller.controller.highBiomeColor32, biomeIndex), palette.Clear, SCAN_Settings_Config.Instance.BiomeTransparency);
					}
				}
			}

			map.SetPixels32(pix);
			map.Apply();

			return map;
		}

		private static Texture2D drawBiomeMap(ref Texture2D m, ref Color32[] p, SCANdata d, int h)
		{
			if (d.Body.BiomeMap == null)
			{
				return null;
			}

			if (m == null || m.height != h)
			{
				m = new Texture2D(h * 2, h, TextureFormat.RGBA32, true);
			}

			if (p == null || p.Length != h * h * 2)
			{
				//p = new Color32[m.width * m.height];
				p = new Color32[m.width];
			}

			float scale = m.width / 360f;

			for (int j = 0; j < m.height; j++)
			{
				//if (j % 2 != 0)
				//	continue;

				double lat = (j / scale) - 90;
				for (int i = 0; i < m.width; i++)
				{
					//if (i % 2 != 0)
					//	continue;

					double lon = fixLon(i / scale);

					//if (SCANUtil.isCovered(lon, lat, d, SCANtype.Biome))
					//	p[j * m.width + i] = (Color32)SCANUtil.getBiomeCached(d.Body, lon, lat).mapColor;
					//else
					//	p[j * m.width + i] = palette.Clear;

					if (SCANUtil.isCovered(lon, lat, d, SCANtype.Biome))
					{
						p[i] = (Color32)SCANUtil.getBiomeCached(d.Body, lon, lat).mapColor;
					}
					else
					{
						p[i] = palette.Clear;
					}
				}

				m.SetPixels32(0, j, m.width, 1, p);
			}

			//for (int i = 2 / 2; i >= 1; i /= 2)
			//{
			//	SCANuiUtil.interpolate(p, m.height, m.width, i, i, i, null);
			//	SCANuiUtil.interpolate(p, m.height, m.width, 0, i, i, null);
			//	SCANuiUtil.interpolate(p, m.height, m.width, i, 0, i, null);
			//}

			//m.SetPixels32(p);

			m.Apply();

			return m;
		}

		internal static void drawTerrainMap(ref Color32[] pix, ref float[,] values, SCANdata data, int height, int stepScale)
		{
			int width = height * 2;
			float scale = height / 180f;

			if (pix == null)
			{
				pix = new Color32[width * height];
			}

			for (int i = 0; i < width; i++)
			{
				double lon = fixLon(i / scale);
				for (int j = 0; j < height; j++)
				{
					double lat = (j / scale) - 90;

					Color32 c = palette.Clear;

					if (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry))
					{
						if (SCANUtil.isCovered(lon, lat, data, SCANtype.AltimetryHiRes))
						{
							c = palette.heightToColor(values[i, j], true, data.TerrainConfig);
						}
						else
						{
							int ilon = SCANUtil.icLON(unFixLon(lon));
							int ilat = SCANUtil.icLAT(lat);
							int lo = ((int)(ilon * scale * 5)) / 5;
							int la = ((int)(ilat * scale * 5)) / 5;
							c = palette.heightToColor(values[lo, la], false, data.TerrainConfig);
						}

						c = palette.lerp(c, palette.Clear, 0.1f);
					}
					else
					{
						c = palette.Clear;
					}

					pix[j * width + i] = c;
				}
			}
		}

		internal static Texture2D drawSlopeMap(ref Texture2D map, ref Color32[] pix, ref float[,] values, SCANdata data, int height, int stepScale)
		{
			int width = height * 2;
			float scale = height / 180f;

			double run = ((data.Body.Radius * 2 * Math.PI) / width) / 3;

			if (map == null || pix == null || map.height != height)
			{
				map = new Texture2D(width, height, TextureFormat.ARGB32, true);
				pix = new Color32[width * height];
			}

			for (int j = 0; j < height; j++)
			{
				double lat = (j / scale) - 90;
				double runFixed = Math.Max(run * Math.Cos(Mathf.Deg2Rad * lat), 1);

				for (int i = 0; i < width; i++)
				{
					double lon = fixLon(i / scale);

					Color32 c = palette.Clear;

					if (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry))
					{
						double[] e = new double[5];
						float slope = 0;

						e[0] = values[i, j];

						Vector2 s = slipCoordinates(i + 1, j, width, height);
						e[1] = values[(int)s.x, (int)s.y];
						s = slipCoordinates(i - 1, j, width, height);
						e[2] = values[(int)s.x, (int)s.y];
						s = slipCoordinates(i, j + 1, width, height);
						e[3] = values[(int)s.x, (int)s.y];
						s = slipCoordinates(i, j - 1, width, height);
						e[4] = values[(int)s.x, (int)s.y];
						s = slipCoordinates(i + 1, j + 1, width, height);
						//e[5] = values[(int)s.x, (int)s.y];
						//s = slipCoordinates(i + 1, j - 1, width, height);
						//e[6] = values[(int)s.x, (int)s.y];
						//s = slipCoordinates(i - 1, j + 1, width, height);
						//e[7] = values[(int)s.x, (int)s.y];
						//s = slipCoordinates(i - 1, j - 1, width, height);
						//e[8] = values[(int)s.x, (int)s.y];

						if (data.Body.ocean)
						{
							for (int a = 0; a < 5; a++)
							{
								if (e[a] < 0)
								{
									e[a] = 0;
								}
							}
						}

						slope = (float)SCANUtil.slopeShort(e, runFixed);

						if (SCANUtil.isCovered(lon, lat, data, SCANtype.AltimetryHiRes))
						{
							float slopeNormal = slope / 30;

							if (slopeNormal > 1)
							{
								slopeNormal = 1;
							}

							if (slopeNormal < 0.6f)
							{
								c = palette.lerp(SCANcontroller.controller.lowSlopeColorOne32, SCANcontroller.controller.highSlopeColorOne32, slopeNormal);
							}
							else
							{
								c = palette.lerp(SCANcontroller.controller.lowSlopeColorTwo32, SCANcontroller.controller.highSlopeColorTwo32, slopeNormal);
							}
						}
						else
						{
							float slopeRoundNormal = (float)(Math.Round(slope / 5) * 5) / 30;

							if (slopeRoundNormal > 1)
							{
								slopeRoundNormal = 1;
							}

							if (slopeRoundNormal < 0.6f)
							{
								c = palette.lerp(SCANcontroller.controller.lowSlopeColorOne32, SCANcontroller.controller.highSlopeColorOne32, slopeRoundNormal);
							}
							else
							{
								c = palette.lerp(SCANcontroller.controller.lowSlopeColorTwo32, SCANcontroller.controller.highSlopeColorTwo32, slopeRoundNormal);
							}
						}

						c = palette.lerp(c, palette.Clear, 0.1f);
					}
					else
					{
						c = palette.Clear;
					}

					pix[j * width + i] = c;
				}
			}

			map.SetPixels32(pix);
			map.Apply();

			return map;
		}

		internal static void generateTerrainArray(ref float[,] values, int height, int stepScale, SCANdata data, int index)
		{
			int width = height * 2;
			float scale = height / 180f;

			values = new float[width, height];

			for (int i = 0; i < 360; i++)
			{
				for (int j = 0; j < 180; j++)
				{
					values[i * stepScale, j * stepScale] = data.HeightMapValue(index, (int)fixLon(i) + 180, j, true);
				}
			}

			for (int i = stepScale / 2; i >= 1; i /= 2)
			{
				SCANuiUtil.interpolate(values, height, width, i, i, i, null, false);
				SCANuiUtil.interpolate(values, height, width, 0, i, i, null, false);
				SCANuiUtil.interpolate(values, height, width, i, 0, i, null, false);
			}
		}

		private static Vector2 slipCoordinates(int x, int y, int width, int height)
		{
			if (y < 0)
			{
				y = Math.Abs(y);
				x += (width / 2);
			}

			else if (y > height)
			{
				while (y > 180)
				{
					y -= 180;
				}

				y = 180 - Math.Abs(y);
				x -= (width / 2);
			}

			y = (y + height) % height;
			x = (x + width) % width;

			return new Vector2(x, y);
		}

		internal static Texture2D drawLoDetailMap(ref Color32[] pix, ref float[,] values, SCANmap map, SCANdata data, int width, int height, int stepScale, bool withResources)
		{
			if (map.Map == null || pix == null || map.Map.height != height)
			{
				map.Map = new Texture2D(width, height, TextureFormat.ARGB32, false);
				pix = new Color32[width * height];
				values = new float[width, height];
			}

			for (int i = 0; i < width; i += stepScale)
			{
				for (int j = 0; j < height; j += stepScale)
				{
					double lon = (i * 1.0f / map.MapScale) - 180f + map.Lon_Offset;
					double lat = (j * 1.0f / map.MapScale) - 90f + map.Lat_Offset;
					double la = lat, lo = lon;
					lat = map.unprojectLatitude(lo, la);
					lon = map.unprojectLongitude(lo, la);

					values[i, j] = (float)SCANUtil.getElevation(data.Body, lon, lat);
				}
			}

			for (int i = stepScale / 2; i >= 1; i /= 2)
			{
				SCANuiUtil.interpolate(values, height, width, i, i, i, null, false, true);
				SCANuiUtil.interpolate(values, height, width, 0, i, i, null, false, true);
				SCANuiUtil.interpolate(values, height, width, i, 0, i, null, false, true);
			}

			for (int i = 0; i < width; i++)
			{
				for (int j = 0; j < height; j++)
				{
					if (map.UseCustomRange)
					{
						pix[j * width + i] = palette.heightToColor(values[i, j], true, data.TerrainConfig, map.CustomMin, map.CustomMax, map.CustomRange, true);
					}
					else
					{
						pix[j * width + i] = palette.heightToColor(values[i, j], true, data.TerrainConfig);
					}
				}
			}

			if (withResources)
			{
				stepScale = 2;

				generateResourceCache(ref values, height, width, stepScale, map.MapScale, map);

				for (int i = stepScale / 2; i >= 1; i /= 2)
				{
					SCANuiUtil.interpolate(values, height, width, i, i, i, null, false, true);
					SCANuiUtil.interpolate(values, height, width, 0, i, i, null, false, true);
					SCANuiUtil.interpolate(values, height, width, i, 0, i, null, false, true);
				}

				for (int i = 0; i < width; i++)
				{
					for (int j = 0; j < height; j++)
					{
						double lon = (i * 1.0f / map.MapScale) - 180f + map.Lon_Offset;
						double lat = (j * 1.0f / map.MapScale) - 90f + map.Lat_Offset;
						double la = lat, lo = lon;
						lat = map.unprojectLatitude(lo, la);
						lon = map.unprojectLongitude(lo, la);

						Color32 c = pix[j * width + i];

						pix[j * width + i] = resourceToColor32(c, map.Resource, map.Resource.CurrentBody.MinValue, map.Resource.CurrentBody.MaxValue, values[i, j], data, lon, lat);
					}
				}
			}

			map.Map.SetPixels32(pix);
			map.Map.Apply();

			return map.Map;
		}

		internal static void generateResourceCache(ref float[,] values, int height, int width, int stepScale, double scale, SCANmap map)
		{
			for (int j = 0; j < height; j += stepScale)
			{
				for (int i = 0; i < width; i += stepScale)
				{
					Vector2d coords;
					if (map.Projection == MapProjection.Orthographic)
					{
						double rLon = (i * 1.0f / scale) - 180f + map.Lon_Offset;
						double rLat = (j * 1.0f / scale) - 90f + map.Lat_Offset;

						double la = rLat, lo = rLon;
						rLat = map.unprojectLatitude(lo, la);
						rLon = map.unprojectLongitude(lo, la);

						if (double.IsNaN(rLat) || double.IsNaN(rLon) || rLat < -90 || rLat > 90 || rLon < -180 || rLon > 180)
						{
							values[i, j] = 0;
							continue;
						}

						coords = new Vector2d(rLon, rLat);
					}
					else
					{
						double rLon = SCANUtil.fixLonShift((i * 1.0f / scale) - 180f + map.Lon_Offset);
						double rLat = (j * 1.0f / scale) - 90f + map.Lat_Offset;
						coords = SCANUtil.fixRetardCoordinates(new Vector2d(rLon, rLat));
					}

					values[i, j] = SCANUtil.ResourceOverlay(coords.y, coords.x, map.Resource.Name, map.Body, SCAN_Settings_Config.Instance.BiomeLock) * 100f;
				}
			}
		}

		//internal static void generateResourceCache(Texture2D tex, int height, int width, int stepScale, double scale, SCANmap map)
		//{
		//	for (int j = 0; j < height; j += stepScale)
		//	{
		//		for (int i = 0; i < width; i += stepScale)
		//		{
		//			Vector2d coords;
		//			if (map.Projection == MapProjection.Orthographic)
		//			{
		//				double rLon = (i * 1.0f / scale) - 180f + map.Lon_Offset;
		//				double rLat = (j * 1.0f / scale) - 90f + map.Lat_Offset;

		//				double la = rLat, lo = rLon;
		//				rLat = map.unprojectLatitude(lo, la);
		//				rLon = map.unprojectLongitude(lo, la);

		//				if (double.IsNaN(rLat) || double.IsNaN(rLon) || rLat < -90 || rLat > 90 || rLon < -180 || rLon > 180)
		//				{
		//					tex.SetPixel(i, j, palette.clear);
		//					continue;
		//				}

		//				coords = new Vector2d(rLon, rLat);
		//			}
		//			else
		//			{
		//				double rLon = SCANUtil.fixLonShift((i * 1.0f / scale) - 180f + map.Lon_Offset);
		//				double rLat = (j * 1.0f / scale) - 90f + map.Lat_Offset;
		//				coords = SCANUtil.fixRetardCoordinates(new Vector2d(rLon, rLat));
		//			}

		//			float abundance = SCANUtil.ResourceOverlay(coords.y, coords.x, map.Resource.Name, map.Body, SCAN_Settings_Config.Instance.BiomeLock) * 100f;

		//			tex.SetPixel(i, j, resourceToColor(palette.clear, map.Resource, abundance, );
		//		}
		//	}
		//}

		private static float getLerp(System.Random rand, int l)
		{
			if (l == 0)
			{
				return 0.5f;
			}

			return (float)l / 100f + (float)rand.Next(100 - (l / 2)) / 100f;
		}

		private static void interpolate(Color32[] c, int height, int width, int x, int y, int step, System.Random r)
		{
			for (int j = y; j < height + y; j += 2 * step)
			{
				int ypos1 = j - step;
				if (ypos1 < 0)
				{
					ypos1 = 0;
				}

				int ypos2 = j + step;
				if (ypos2 >= height)
				{
					ypos2 = height - 1;
				}

				for (int i = x; i < width + x; i += 2 * step)
				{
					int xpos1 = i - step;
					if (xpos1 < 0)
					{
						xpos1 = 0;
					}

					int xpos2 = i + step;
					if (xpos2 >= width)
					{
						xpos2 = width - 1;
					}

					Color32 avgX = Color.clear;
					Color32 avgY = Color.clear;

					float lerp = 0.5f;

					if (x == y)
					{
						avgX = Color32.Lerp(c[ypos1 * width + xpos1], c[ypos2 * width + xpos2], lerp); //Mathf.Lerp(v[xpos1, ypos1], v[xpos2, ypos2], lerp);
						avgY = Color32.Lerp(c[ypos2 * width + xpos1], c[ypos1 * width + xpos2], lerp); //Mathf.Lerp(v[xpos1, ypos2], v[xpos2, ypos1], lerp);
					}
					else
					{
						avgX = Color32.Lerp(c[j * width + xpos1], c[j * width + xpos2], lerp); //Mathf.Lerp(v[xpos1, j], v[xpos2, j], lerp);
						avgY = Color32.Lerp(c[ypos2 * width + i], c[ypos1 * width + i], lerp); //Mathf.Lerp(v[i, ypos2], v[i, ypos1], lerp);
					}

					Color32 avgFinal = Color32.Lerp(avgX, avgY, lerp);

					c[j * width + i] = avgFinal;
				}
			}
		}

		internal static void interpolate(float[,] v, int height, int width, int x, int y, int step, System.Random r, bool softEdges, bool hardEdges = false)
		{
			for (int j = y; j < height + y; j += 2 * step)
			{
				int ypos1 = j - step;
				if (ypos1 < 0)
				{
					ypos1 = 0;
				}

				int ypos2 = j + step;
				if (ypos2 >= height)
				{
					ypos2 = height - 1;
				}

				for (int i = x; i < width + x; i += 2 * step)
				{
					int xpos1 = i - step;
					if (xpos1 < 0)
					{
						if (hardEdges)
						{
							xpos1 = 0;
						}
						else
						{
							xpos1 += width;
						}
					}
					int xpos2 = i + step;
					if (xpos2 >= width)
					{
						if (hardEdges)
						{
							xpos2 = width - 1;
						}
						else
						{
							xpos2 -= width;
						}
					}

					float avgX = 0;
					float avgY = 0;

					float lerp = 0.5f;
					if (softEdges)
					{
						lerp = getLerp(r, step * 2);
					}

					if (x == y)
					{
						avgX = Mathf.Lerp(v[xpos1, ypos1], v[xpos2, ypos2], lerp);
						avgY = Mathf.Lerp(v[xpos1, ypos2], v[xpos2, ypos1], lerp);
					}
					else
					{
						avgX = Mathf.Lerp(v[xpos1, j], v[xpos2, j], lerp);
						avgY = Mathf.Lerp(v[i, ypos2], v[i, ypos1], lerp);
					}

					float avgFinal = Mathf.Lerp(avgX, avgY, lerp);

					v[i, j] = avgFinal;
				}
			}
		}

		/* Converts resource amount to pixel color */
		internal static Color resourceToColor(Color BaseColor, SCANresourceGlobal Resource, float Abundance, SCANdata Data, double Lon, double Lat)
		{
			if (SCANUtil.isCovered(Lon, Lat, Data, SCANtype.ResourceHiRes))
			{
				if (Abundance >= Resource.CurrentBody.MinValue)
				{
					if (Abundance > Resource.CurrentBody.MaxValue)
					{
						Abundance = Resource.CurrentBody.MaxValue;
					}
				}
				else
				{
					Abundance = 0;
				}
			}
			else if (SCANUtil.isCovered(Lon, Lat, Data, SCANtype.ResourceLoRes))
			{
				Abundance = Mathf.RoundToInt(Abundance);
				if (Abundance >= Resource.CurrentBody.MinValue)
				{
					if (Abundance > Resource.CurrentBody.MaxValue)
					{
						Abundance = Resource.CurrentBody.MaxValue;
					}
				}
				else
				{
					Abundance = 0;
				}
			}
			else
			{
				return BaseColor;
			}

			if (Abundance == 0)
			{
				return palette.lerp(BaseColor, palette.grey, 0.3f);
			}
			else
			{
				return palette.lerp(palette.lerp(Resource.MinColor, Resource.MaxColor, (Abundance - Resource.CurrentBody.MinValue) / (Resource.CurrentBody.MaxValue - Resource.CurrentBody.MinValue)), BaseColor, Resource.Transparency / 100f);
			}
		}

		internal static Color32 resourceToColor32(Color32 BaseColor, SCANresourceGlobal Resource, float MinRange, float MaxRange, float Abundance, SCANdata Data, double Lon, double Lat, float Transparency = 0.3f)
		{
			if (SCANUtil.isCovered(Lon, Lat, Data, SCANtype.ResourceHiRes))
			{
				if (Abundance >= MinRange)
				{
					if (Abundance > MaxRange)
					{
						Abundance = MaxRange;
					}
				}
				else
				{
					Abundance = 0;
				}
			}
			else if (SCANUtil.isCovered(Lon, Lat, Data, SCANtype.ResourceLoRes))
			{
				if (Abundance > 0)
				{
					Abundance = Mathf.Floor(Abundance / 5) * 5 + 2.5f;

					if (Abundance >= MinRange)
					{
						if (Abundance > MaxRange)
						{
							Abundance = MaxRange;
						}
					}
					else
					{
						Abundance = 0;
					}
				}
			}
			else
			{
				return BaseColor;
			}

			if (Abundance == 0)
			{
				return palette.lerp(BaseColor, palette.Grey, Transparency);
			}
			else
			{
				return palette.lerp(palette.lerp(Resource.MinColor32, Resource.MaxColor32, (Abundance - MinRange) / (MaxRange - MinRange)), BaseColor, Resource.Transparency / 100f);
			}
		}

		#endregion
	}
}


================================================
FILE: SCANsat/SCAN_Unity/SCAN_TMP_InputField.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_TMP_InputField - An extension of TMP_InputField for updating certain elements of the input field
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using SCANsat.Unity;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
using TMPro;

namespace SCANsat.SCAN_Unity
{
	public class SCAN_TMP_InputField : TMP_InputField
	{
		private InputHandler _handler;

		new private void Awake()
		{
			base.Awake();

			_handler = GetComponent();

			onValueChanged.AddListener(new UnityAction(valueChanged));

			_handler.OnTextUpdate.AddListener(new UnityAction(UpdateText));
		}

		private void Update()
		{
			if (_handler != null)
			{
				_handler.IsFocused = isFocused;
			}
		}

		private void valueChanged(string s)
		{
			if (_handler == null)
			{
				return;
			}

			_handler.Text = s;

			_handler.OnValueChange.Invoke(s);
		}

		private void UpdateText(string t)
		{
			text = t;
		}
	}
}


================================================
FILE: SCANsat/SCAN_Unity/SCAN_TextMeshPro.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_TextMeshPro - An extension of TextMeshProUGUI for updating certain elements of the text
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using SCANsat.Unity;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using TMPro;

namespace SCANsat.SCAN_Unity
{
	public class SCAN_TextMeshPro : TextMeshProUGUI
	{
		private TextHandler _handler;

		new private void Awake()
		{
			m_isAlignmentEnumConverted = true;

			base.Awake();

			_handler = GetComponent();

			if (_handler == null)
			{
				return;
			}

			_handler.SetNormalColor(color);

			_handler.OnColorUpdate.AddListener(new UnityAction(UpdateColor));
			_handler.OnTextUpdate.AddListener(new UnityAction(UpdateText));
			_handler.OnFontChange.AddListener(new UnityAction(UpdateFontSize));
		}

		public void Setup(TextHandler h)
		{
			_handler = h;

			_handler.OnColorUpdate.AddListener(new UnityAction(UpdateColor));
			_handler.OnTextUpdate.AddListener(new UnityAction(UpdateText));
			_handler.OnFontChange.AddListener(new UnityAction(UpdateFontSize));
		}

		private void UpdateColor(Color c)
		{
			color = c;
		}

		private void UpdateText(string t)
		{
			text = t;

			_handler.PreferredSize = new Vector2(preferredWidth, preferredHeight);
		}

		private void UpdateFontSize(int i)
		{
			fontSize += i;
		}
	}
}


================================================
FILE: SCANsat/SCAN_Unity/SCAN_UI_BigMap.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_UI_BigMap - UI control object for SCANsat big map
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using SCANsat.SCAN_Toolbar;
using SCANsat.Unity.Interfaces;
using SCANsat.Unity;
using SCANsat.Unity.Unity;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_Map;
using SCANsat.SCAN_UI.UI_Framework;
using Contracts;
using KSP.UI;
using KSP.Localization;
using FinePrint;
using FinePrint.Utilities;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;
using KSPAchievements;

namespace SCANsat.SCAN_Unity
{
	public class SCAN_UI_BigMap : ISCAN_BigMap
	{
		//private const string HI = "HI ";
		//private const string LO = "LO ";
		//private const string MULTI = "MULTI";

		private bool _isVisible;

		private static SCANmap bigmap;
		private static CelestialBody body;
		private SCANdata data;
		private Vessel vessel;
		private bool updateMap;
		private StringBuilder infoString = new StringBuilder();
		private System.Random gen;
		private bool _inputLock;
		private const string controlLock = "SCANsatBig";
		private byte scanStatus;

		private SCANresourceGlobal currentResource;
		private List resources;

		private List mapFlags = new List();

		private SCAN_BigMap uiElement;

		private const int orbitSteps = 80;
		private List orbitLabels = new List();
		private Dictionary orbitMapLabels = new Dictionary();
		private const string Aplabel = "Ap";
		private const string Pelabel = "Pe";
		private const string Escapelabel = "Escape";
		private const string Encounterlabel = "Encounter";
		private const string Manlabel = "Man";
		private const string ManAplabel = "ManAp";
		private const string ManPelabel = "ManPe";
		private const string ManEscapelabel = "ManEscape";
		private const string ManEncounterlabel = "ManEncounter";

		private static Texture2D eqMap;
		private static bool[] eq_an;
		private static bool[] eq_dn;
		private static Color32[] eq_pix;
		private const int eq_height = 20;
		private const int eq_count = 100;
		private const int eq_update = 4;
		private int eq_timer;
		private Color32 c_dn = palette.CB_orange;
		private Color32 c_an = palette.CB_skyBlue;
		private Texture2D clearMap;
		private bool clearMapSet;

		private Texture2D gridMap;

		private Texture2D resourceLegend;
		private const int RESOURCELEGENDWIDTH = 90;

		private static SCAN_UI_BigMap instance;

		public static SCAN_UI_BigMap Instance
		{
			get { return instance; }
		}

		public static CelestialBody Body
		{
			get { return body; }
		}

		public SCAN_UI_BigMap()
		{
			instance = this;

			resources = SCANcontroller.setLoadedResourceList();

			GameEvents.onVesselChange.Add(vesselChange);
			GameEvents.onVesselWasModified.Add(vesselChange);
			GameEvents.onVesselSOIChanged.Add(soiChange);

			gen = new System.Random(Environment.TickCount.GetHashCode());

			initializeMap();

			if (HighLogic.LoadedSceneIsFlight && SCANcontroller.controller.bigMapVisible)
			{
				if (WaypointToggle)
				{
					SCANcontroller.controller.StartCoroutine(WaitForWaypoints());
				}
				else
				{
					Open();
				}
			}
		}

		private IEnumerator WaitForWaypoints()
		{
			while (!ContractSystem.loaded)
			{
				yield return null;
			}

			Open();
		}

		bool vesselChanged = false;

		private void vesselChange(Vessel V)
		{
			vessel = FlightGlobals.ActiveVessel;

			if (!_isVisible)
			{
				return;
			}

			vesselChanged = true;
		}

		private void soiChange(GameEvents.HostedFromToAction action)
		{
			if (!_isVisible)
			{
				return;
			}

			RefreshIcons();

			updateMap = true;
		}

		public void Open()
		{
			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.DestroyImmediate(uiElement.gameObject);
			}

			uiElement = GameObject.Instantiate(SCAN_UI_Loader.BigMapPrefab).GetComponent();

			if (uiElement == null)
			{
				return;
			}

			uiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);

			_isVisible = true;

			if (OrbitToggle && ShowOrbit)
			{
				Orbit o = vessel.orbit;

				orbitLabels.Clear();

				for (int i = 0; i < orbitSteps * 3; i++)
				{
					orbitLabels.Add(new SimpleLabelInfo(10, SCAN_UI_Loader.PlanetIcon));
				}

				if (!vessel.LandedOrSplashed)
				{
					UpdateOrbitIcons(o);
				}
			}

			uiElement.setMap(this);

			SetGridLines();

			SetTitle();

			uiElement.UpdateEQMapTexture(clearMap);
			clearMapSet = true;

			updateMap = true;

			if (HighLogic.LoadedSceneIsFlight)
			{
				SCANcontroller.controller.bigMapVisible = true;
			}

			if (SCAN_Settings_Config.Instance.StockToolbar)
			{
				if (HighLogic.LoadedSceneIsFlight)
				{
					if (SCAN_Settings_Config.Instance.ToolbarMenu)
					{
						if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
						{
							SCANappLauncher.Instance.UIElement.SetBigMapToggle(true);
						}
					}
				}
				else
				{
					if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.SCANAppButton != null)
					{
						SCANappLauncher.Instance.SCANAppButton.SetTrue(false);
					}
				}
			}
		}

		public void Close()
		{
			_isVisible = false;

			if (uiElement == null)
			{
				return;
			}

			uiElement.FadeOut();

			if (SCAN_Settings_Config.Instance.StockToolbar)
			{
				if (HighLogic.LoadedSceneIsFlight)
				{
					if (SCAN_Settings_Config.Instance.ToolbarMenu)
					{
						if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
						{
							SCANappLauncher.Instance.UIElement.SetBigMapToggle(false);
						}
					}
				}
				else
				{
					if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.SCANAppButton != null)
					{
						SCANappLauncher.Instance.SCANAppButton.SetFalse(false);
					}
				}
			}

			if (HighLogic.LoadedSceneIsFlight)
			{
				SCANcontroller.controller.bigMapVisible = false;
			}

			uiElement = null;
		}

		public void RefreshIcons()
		{
			if (!_isVisible || uiElement == null)
			{
				return;
			}

			uiElement.RefreshIcons();
		}

		private void initializeMap()
		{
			if (HighLogic.LoadedSceneIsFlight)
			{
				vessel = FlightGlobals.ActiveVessel;
			}

			if (body == null)
			{
				for (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)
				{
					CelestialBody b = FlightGlobals.Bodies[i];

					if (b.bodyName != SCANcontroller.controller.bigMapBody)
					{
						continue;
					}

					body = b;
					break;
				}

				if (body == null)
				{
					if (vessel == null)
					{
						body = FlightGlobals.Bodies[1];
					}
					else
					{
						body = vessel.mainBody;
					}
				}
			}

			data = SCANUtil.getData(body);

			if (data == null)
			{
				data = new SCANdata(body);
				SCANcontroller.controller.addToBodyData(body, data);
			}

			if (bigmap == null)
			{
				bigmap = new SCANmap(body, true, mapSource.BigMap);

				MapProjection p = MapProjection.Rectangular;
				mapType t = mapType.Altimetry;

				try
				{
					p = (MapProjection)Enum.Parse(typeof(MapProjection), SCANcontroller.controller.bigMapProjection, true);
					t = (mapType)Enum.Parse(typeof(mapType), SCANcontroller.controller.bigMapType, true);
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Error in parsing map projection and/or type\n{0}", e);

					p = MapProjection.Rectangular;
					t = mapType.Altimetry;
				}

				bigmap.Projection = p;
				bigmap.MType = t;
				bigmap.ResourceActive = SCANcontroller.controller.bigMapResourceOn;
				bigmap.ColorMap = SCANcontroller.controller.bigMapColor;
				bigmap.Terminator = SCANcontroller.controller.bigMapTerminator;

				if (SCAN_Settings_Config.Instance.BigMapWidth % 2 != 0)
				{
					SCAN_Settings_Config.Instance.BigMapWidth += 1;
				}

				bigmap.setWidth(SCAN_Settings_Config.Instance.BigMapWidth);
			}

			bigmap.setBody(body);

			currentResource = AssignResource(SCANcontroller.controller.bigMapResource);

			if (currentResource != null)
			{
				bigmap.Resource = currentResource;
			}

			if (eqMap == null)
			{
				RefreshEQMap();
			}

			AddOrbitMapLabels();

			clearMap = new Texture2D(1, 1, TextureFormat.ARGB32, false);

			clearMap.SetPixel(0, 0, palette.clear);
			clearMap.Apply();

			bigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);
		}

		private void AddOrbitMapLabels()
		{
			orbitMapLabels.Add(Aplabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.APMarker,
				pos = new Vector2(),
				baseColor = palette.cb_skyBlue,
				flash = false,
				width = 28,
				show = false
			});

			orbitMapLabels.Add(Pelabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.PEMarker,
				pos = new Vector2(),
				baseColor = palette.cb_skyBlue,
				flash = false,
				width = 28,
				show = false
			});

			orbitMapLabels.Add(Escapelabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.ExitMarker,
				pos = new Vector2(),
				baseColor = palette.cb_skyBlue,
				flash = false,
				width = 26,
				show = false
			});

			orbitMapLabels.Add(Encounterlabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.EncounterMarker,
				pos = new Vector2(),
				baseColor = palette.cb_skyBlue,
				flash = false,
				width = 26,
				show = false
			});

			orbitMapLabels.Add(Manlabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.ManeuverMarker,
				pos = new Vector2(),
				baseColor = palette.cb_reddishPurple,
				flash = false,
				width = 24,
				show = false
			});

			orbitMapLabels.Add(ManEscapelabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.ExitMarker,
				pos = new Vector2(),
				baseColor = palette.cb_reddishPurple,
				flash = false,
				width = 26,
				show = false
			});

			orbitMapLabels.Add(ManEncounterlabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.EncounterMarker,
				pos = new Vector2(),
				baseColor = palette.cb_reddishPurple,
				flash = false,
				width = 26,
				show = false
			});

			orbitMapLabels.Add(ManAplabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.APMarker,
				pos = new Vector2(),
				baseColor = palette.cb_reddishPurple,
				flash = false,
				width = 28,
				show = false
			});

			orbitMapLabels.Add(ManPelabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.PEMarker,
				pos = new Vector2(),
				baseColor = palette.cb_reddishPurple,
				flash = false,
				width = 28,
				show = false
			});
		}

		public void OnDestroy()
		{
			GameEvents.onVesselChange.Remove(vesselChange);
			GameEvents.onVesselWasModified.Remove(vesselChange);
			GameEvents.onVesselSOIChanged.Remove(soiChange);

			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.Destroy(uiElement.gameObject);
			}

			if (resourceLegend != null)
			{
				GameObject.Destroy(resourceLegend);
				resourceLegend = null;
			}

			if (gridMap != null)
			{
				GameObject.Destroy(gridMap);
				gridMap = null;
			}

			if (eqMap != null)
			{
				GameObject.Destroy(eqMap);
				eqMap = null;
			}

			SCANcontroller.controller.unloadPQS(bigmap.Body, mapSource.BigMap);
		}

		public void SetScale(float scale)
		{
			if (uiElement != null)
			{
				uiElement.SetScale(scale);
			}
		}

		public void ProcessTooltips()
		{
			if (uiElement != null)
			{
				uiElement.ProcessTooltips();
			}
		}

		public void Update()
		{
			if (vesselChanged)
			{
				RefreshIcons();
				vesselChanged = false;
			}

			if (!_isVisible || data == null || bigmap == null)
			{
				return;
			}

			if (uiElement == null)
			{
				return;
			}

			if (!bigmap.isMapComplete())
			{
				if (SCAN_Settings_Config.Instance.MapGenerationSpeed > 2)
				{
					bigmap.getPartialMap(false);
				}

				if (SCAN_Settings_Config.Instance.MapGenerationSpeed > 1)
				{
					bigmap.getPartialMap(false);
				}

				bigmap.getPartialMap(true);
			}

			if (OrbitToggle && ShowOrbit)
			{
				if (vessel != null && vessel.mainBody == body && !vessel.LandedOrSplashed)
				{
					Orbit o = vessel.orbit;

					UpdateOrbitIcons(o);

					if (o.PeA < 0)
					{
						if (!clearMapSet)
						{
							clearMapSet = true;
							uiElement.UpdateEQMapTexture(clearMap);
						}
					}
					else if (clearMapSet)
					{
						clearMapSet = false;
						if (bigmap.Projection != MapProjection.Polar)
						{
							uiElement.UpdateEQMapTexture(eqMap);
						}
					}

					if (eq_timer >= eq_update)
					{
						UpdateEQMap(o);
					}

					eq_timer++;

					if (eq_timer > eq_update)
					{
						eq_timer = 0;
					}
				}
			}

			if (updateMap)
			{
				updateMap = false;
				uiElement.UpdateMapTexture(bigmap.Map);

				if (OrbitToggle && ShowOrbit && bigmap.Projection != MapProjection.Polar && vessel.orbit.PeA > 0)
				{
					uiElement.UpdateEQMapTexture(eqMap);
				}
				else
				{
					uiElement.UpdateEQMapTexture(clearMap);
				}
			}
		}

		private void UpdateOrbitIcons(Orbit o)
		{
			double startUT = Planetarium.GetUniversalTime();
			double UT = startUT;
			Color col;

			for (int i = 0; i < orbitSteps * 2; i++)
			{
				SimpleLabelInfo info = orbitLabels[i];

				if (info == null)
				{
					continue;
				}

				int k = i - orbitSteps;

				if (k < 0)
				{
					UT = startUT - (orbitSteps + k) * (o.period / orbitSteps);
				}
				else
				{
					UT = startUT + k * o.period * (1f / orbitSteps);
				}

				if (double.IsNaN(UT))
				{
					info.show = false;
					continue;
				}

				if (UT < o.StartUT && o.StartUT != startUT)
				{
					info.show = false;
					continue;
				}

				if (UT > o.EndUT)
				{
					info.show = false;
					continue;
				}

				if (double.IsNaN(o.getObtAtUT(UT)))
				{
					info.show = false;
					continue;
				}

				Vector3d pos = o.getPositionAtUT(UT);

				double rotation = 0;

				if (body.rotates)
				{
					rotation = (360 * ((UT - startUT) / body.rotationPeriod)) % 360;
				}

				double alt = body.GetAltitude(pos);

				if (alt < 0)
				{
					if (k < 0)
					{
						for (int j = k; j < 0; j++)
						{
							orbitLabels[j + orbitSteps].show = false;
						}

						i = orbitSteps;
						continue;
					}

					for (int j = k; j < orbitSteps; j++)
					{
						orbitLabels[j + orbitSteps].show = false;
					}

					break;
				}

				double lo = body.GetLongitude(pos) - rotation;
				double la = body.GetLatitude(pos);

				double lon = (bigmap.projectLongitude(lo, la) + 180) % 360;
				double lat = (bigmap.projectLatitude(lo, la) + 90) % 180;

				lon = bigmap.scaleLongitude(lon);
				lat = bigmap.scaleLatitude(lat);

				if (lat < 0 || lon < 0 || lat > 180 || lon > 360)
				{
					info.show = false;
					continue;
				}

				lon = lon * bigmap.MapWidth / 360;
				lat = lat * bigmap.MapHeight / 180;

				if (k < 0)
				{
					col = palette.cb_orange;
				}
				else
				{
					if (body.atmosphere && body.atmosphereDepth >= alt)
					{
						col = palette.cb_reddishPurple;
					}
					else
					{
						col = palette.cb_skyBlue;
					}
				}

				info.show = true;
				info.color = col;
				info.pos = new Vector2((float)lon, (float)lat);
			}

			MapLabelInfo Ap = orbitMapLabels[Aplabel];

			Vector2 labelPos;

			if (o.ApA > 0 && mapPosAtT(o, o.timeToAp, startUT, out labelPos))
			{
				Ap.show = true;
				Ap.pos = labelPos;
				Ap.label = o.ApA.ToString("N0");
			}
			else
			{
				Ap.show = false;
			}

			orbitMapLabels[Aplabel] = Ap;

			MapLabelInfo Pe = orbitMapLabels[Pelabel];

			if (o.PeA > 0 && mapPosAtT(o, o.timeToPe, startUT, out labelPos))
			{
				Pe.show = true;
				Pe.pos = labelPos;
				Pe.label = o.PeA.ToString("N0");
			}
			else
			{
				Pe.show = false;
			}

			orbitMapLabels[Pelabel] = Pe;

			if (o.patchEndTransition == Orbit.PatchTransitionType.ESCAPE && mapPosAtT(o, o.EndUT, startUT, out labelPos))
			{
				MapLabelInfo Esc = orbitMapLabels[Escapelabel];

				Esc.show = true;
				Esc.pos = labelPos;

				orbitMapLabels[Escapelabel] = Esc;
			}
			else if (o.patchEndTransition == Orbit.PatchTransitionType.ENCOUNTER && mapPosAtT(o, o.EndUT, startUT, out labelPos))
			{
				MapLabelInfo Enc = orbitMapLabels[Encounterlabel];

				Enc.show = true;
				Enc.pos = labelPos;

				orbitMapLabels[Encounterlabel] = Enc;
			}
			else
			{
				MapLabelInfo Esc = orbitMapLabels[Escapelabel];
				Esc.show = false;
				orbitMapLabels[Escapelabel] = Esc;

				MapLabelInfo Enc = orbitMapLabels[Encounterlabel];
				Enc.show = false;
				orbitMapLabels[Encounterlabel] = Enc;
			}

			if (vessel.patchedConicSolver != null)
			{
				if (vessel.patchedConicSolver.maneuverNodes.Count > 0)
				{
					ManeuverNode n = vessel.patchedConicSolver.maneuverNodes[0];

					if (n.patch == o && n.nextPatch != null && n.nextPatch.activePatch && n.UT > startUT - o.period && mapPosAtT(o, n.UT - startUT, startUT, out labelPos))
					{
						MapLabelInfo Man = orbitMapLabels[Manlabel];

						Man.show = true;
						Man.pos = labelPos;

						orbitMapLabels[Manlabel] = Man;

						Orbit next = n.nextPatch;

						for (int i = 0; i < orbitSteps; i++)
						{
							SimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];

							double T = n.UT - startUT + i * next.period / orbitSteps;

							if (T + startUT > next.EndUT)
							{
								for (int j = i; j < orbitSteps; j++)
								{
									orbitLabels[orbitSteps * 2 + j].show = false;
								}

								info.show = false;

								break;
							}

							if (mapPosAtT(next, T, startUT, out labelPos))
							{
								info.color = palette.cb_reddishPurple;
								info.show = true;
								info.pos = labelPos;
							}
							else
							{
								info.show = false;
								continue;
							}
						}

						if (next.patchEndTransition == Orbit.PatchTransitionType.ESCAPE)
						{
							MapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];

							ManEsc.show = true;
							ManEsc.pos = labelPos;

							orbitMapLabels[ManEscapelabel] = ManEsc;
						}
						else if (next.patchEndTransition == Orbit.PatchTransitionType.ENCOUNTER)
						{
							MapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];

							ManEnc.show = true;
							ManEnc.pos = labelPos;

							orbitMapLabels[ManEncounterlabel] = ManEnc;
						}
						else
						{
							MapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];
							ManEsc.show = false;
							orbitMapLabels[ManEscapelabel] = ManEsc;

							MapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];
							ManEnc.show = false;
							orbitMapLabels[ManEncounterlabel] = ManEnc;
						}

						MapLabelInfo ManAp = orbitMapLabels[ManAplabel];

						if (next.timeToAp > 0 && n.UT + next.timeToAp < next.EndUT && mapPosAtT(next, n.UT - startUT + next.timeToAp, startUT, out labelPos))
						{
							ManAp.show = true;
							ManAp.pos = labelPos;
						}
						else
						{
							ManAp.show = false;
						}

						orbitMapLabels[ManAplabel] = ManAp;

						MapLabelInfo ManPe = orbitMapLabels[ManPelabel];

						if (next.timeToPe > 0 && n.UT + next.timeToPe < next.EndUT && mapPosAtT(next, n.UT - startUT + next.timeToPe, startUT, out labelPos))
						{
							ManPe.show = true;
							ManPe.pos = labelPos;
						}
						else
						{
							ManPe.show = false;
						}

						orbitMapLabels[ManPelabel] = ManPe;

					}
					else
					{
						MapLabelInfo Man = orbitMapLabels[Manlabel];
						Man.show = false;
						orbitMapLabels[Manlabel] = Man;

						MapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];
						ManEsc.show = false;
						orbitMapLabels[ManEscapelabel] = ManEsc;

						MapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];
						ManEnc.show = false;
						orbitMapLabels[ManEncounterlabel] = ManEnc;

						MapLabelInfo ManAp = orbitMapLabels[ManAplabel];
						ManAp.show = false;
						orbitMapLabels[ManAplabel] = ManAp;

						MapLabelInfo ManPe = orbitMapLabels[ManPelabel];
						ManPe.show = false;
						orbitMapLabels[ManPelabel] = ManPe;

						for (int i = 0; i < orbitSteps; i++)
						{
							SimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];
							info.show = false;
						}
					}

				}
				else
				{
					MapLabelInfo Man = orbitMapLabels[Manlabel];
					Man.show = false;
					orbitMapLabels[Manlabel] = Man;

					MapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];
					ManEsc.show = false;
					orbitMapLabels[ManEscapelabel] = ManEsc;

					MapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];
					ManEnc.show = false;
					orbitMapLabels[ManEncounterlabel] = ManEnc;

					MapLabelInfo ManAp = orbitMapLabels[ManAplabel];
					ManAp.show = false;
					orbitMapLabels[ManAplabel] = ManAp;

					MapLabelInfo ManPe = orbitMapLabels[ManPelabel];
					ManPe.show = false;
					orbitMapLabels[ManPelabel] = ManPe;

					for (int i = 0; i < orbitSteps; i++)
					{
						SimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];
						info.show = false;
					}
				}

			}
		}

		private void UpdateEQMap(Orbit o)
		{
			if (o.PeA < 0)
			{
				return;
			}

			if (bigmap.Projection == MapProjection.Polar)
			{
				return;
			}

			for (int i = eq_an.Length - 1; i >= 0; i--)
			{
				eq_an[i] = false;
				eq_dn[i] = false;
			}

			double startUT = Planetarium.GetUniversalTime();

			double TAAN = 360f - o.argumentOfPeriapsis; // true anomaly at ascending node
			double TADN = (TAAN + 180) % 360;           // true anomaly at descending node
			double MAAN = meanForTrue(TAAN, o.eccentricity);
			double MADN = meanForTrue(TADN, o.eccentricity);
			double tAN = (((MAAN - o.meanAnomaly * Mathf.Rad2Deg + 360) % 360) / 360f * o.period + startUT);
			double tDN = (((MADN - o.meanAnomaly * Mathf.Rad2Deg + 360) % 360) / 360f * o.period + startUT);

			for (int i = 0; i < 100; i++)
			{
				double UTAN = tAN + o.period * i;
				double UTDN = tDN + o.period * i;

				if (double.IsNaN(UTAN) || double.IsNaN(UTDN))
				{
					continue;
				}

				Vector3d pAN = o.getPositionAtUT(UTAN);
				Vector3d pDN = o.getPositionAtUT(UTDN);

				double rotAN = 0;
				double rotDN = 0;

				if (body.rotates)
				{
					rotAN = ((360 * ((UTAN - startUT) / body.rotationPeriod)) % 360);
					rotDN = ((360 * ((UTDN - startUT) / body.rotationPeriod)) % 360);
				}

				double loAN = body.GetLongitude(pAN) - rotAN;
				double loDN = body.GetLongitude(pDN) - rotDN;

				int lonAN = (int)(((bigmap.projectLongitude(loAN, 0) + 180) % 360) * eq_an.Length / 360f);
				int lonDN = (int)(((bigmap.projectLongitude(loDN, 0) + 180) % 360) * eq_dn.Length / 360f);

				if (lonAN >= 0 && lonAN < eq_an.Length)
				{
					eq_an[lonAN] = true;
				}

				if (lonDN >= 0 && lonDN < eq_dn.Length)
				{
					eq_dn[lonDN] = true;
				}
			}

			for (int y = 0; y < eq_height; y++)
			{
				bool down = y < eq_height / 2;
				Color32 lc = palette.Clear;

				for (int x = 0; x < eq_an.Length; x++)
				{
					bool cross;
					Color32 c = palette.Clear;

					if (down)
					{
						cross = eq_dn[x];
					}
					else
					{
						cross = eq_an[x];
					}

					if (cross)
					{
						if (y == 0 || y == eq_height - 1)
						{
							c = palette.Black;
						}
						else
						{
							if (lc.r == palette.Clear.r)
							{
								eq_pix[y * eq_an.Length + x - 1] = palette.Black;
							}

							c = down ? c_dn : c_an;
						}
					}
					else
					{
						if (lc.r != palette.Clear.r && lc.r != palette.Black.r)
						{
							c = palette.Black;
						}
					}

					eq_pix[y * eq_an.Length + x] = c;
					lc = c;
				}
			}

			eqMap.SetPixels32(eq_pix);
			eqMap.Apply();
		}

		private double meanForTrue(double TA, double e)
		{
			TA = TA * Mathf.Deg2Rad;

			double EA = Math.Acos((e + Math.Cos(TA)) / (1 + e * Math.Cos(TA)));

			if (TA > Math.PI)
			{
				EA = 2 * Math.PI - EA;
			}

			double MA = EA - e * Math.Sin(EA);

			// the mean anomaly isn't really an angle, but I'm a simple person
			return MA * Mathf.Rad2Deg;
		}

		private bool mapPosAtT(Orbit o, double dT, double startUT, out Vector2 labelPos)
		{
			labelPos = new Vector2();

			double UT = startUT + dT;

			if (double.IsNaN(UT))
			{
				return false;
			}

			try
			{
				if (double.IsNaN(o.getObtAtUT(UT)))
				{
					return false;
				}

				Vector3d pos = o.getPositionAtUT(UT);
				double rotation = 0;

				if (body.rotates)
				{
					rotation = (360 * (dT / vessel.mainBody.rotationPeriod)) % 360;
				}

				double lo = (body.GetLongitude(pos) - rotation);
				double la = (body.GetLatitude(pos));

				double lon = (bigmap.projectLongitude(lo, la) + 180) % 360;
				double lat = (bigmap.projectLatitude(lo, la) + 90) % 180;

				lat = bigmap.scaleLatitude(lat);
				lon = bigmap.scaleLongitude(lon);

				if (lat < 0 || lon < 0 || lat > 180 || lon > 360)
				{
					return false;
				}

				lon = lon * bigmap.MapWidth / 360;
				lat = lat * bigmap.MapHeight / 180;

				labelPos = new Vector2((float)lon, (float)lat);

				return true;
			}
			catch (Exception)
			{
				return false;
			}
		}

		private void RefreshEQMap()
		{
			if (eqMap == null || eqMap.width != bigmap.MapWidth)
			{
				eqMap = new Texture2D(bigmap.MapWidth, eq_height, TextureFormat.ARGB32, false);
			}

			eq_an = new bool[bigmap.MapWidth];
			eq_dn = new bool[bigmap.MapWidth];
			eq_pix = new Color32[bigmap.MapWidth * eq_height];

			for (int i = eq_pix.Length - 1; i >= 0; i--)
			{
				eq_pix[i] = palette.Clear;
			}

			eqMap.SetPixels32(eq_pix);
			eqMap.Apply();
		}

		private void SetGridLines()
		{
			if (uiElement == null)
			{
				return;
			}

			if (!GridToggle)
			{
				uiElement.UpdateGridTexture(clearMap);
			}
			else
			{
				GenerateGridMap();

				uiElement.UpdateGridTexture(gridMap);
			}
		}

		private void GenerateGridMap()
		{
			if (gridMap == null || gridMap.width != bigmap.MapWidth)
			{
				gridMap = new Texture2D(bigmap.MapWidth, bigmap.MapHeight, TextureFormat.ARGB32, false);
			}

			Color32[] pix = gridMap.GetPixels32();

			for (int i = pix.Length - 1; i >= 0; i--)
			{
				pix[i] = palette.Clear;
			}

			int x, y;
			for (double lat = -90; lat < 90; lat += 2)
			{
				for (double lon = -180; lon < 180; lon += 2)
				{
					if (lat % 30 == 0 || lon % 30 == 0)
					{
						x = (int)(bigmap.MapScale * ((bigmap.projectLongitude(lon, lat) + 180) % 360));
						y = (int)(bigmap.MapScale * ((bigmap.projectLatitude(lon, lat) + 90) % 180));

						pix[y * bigmap.MapWidth + x] = palette.White;

						if (x < bigmap.MapWidth - 1)
						{
							pix[(y * bigmap.MapWidth) + (x + 1)] = palette.Black;
						}

						if (x > 0)
						{
							pix[(y * bigmap.MapWidth) + (x - 1)] = palette.Black;
						}

						if (y < bigmap.MapHeight - 1)
						{
							pix[((y + 1) * bigmap.MapWidth) + x] = palette.Black;
						}

						if (y > 0)
						{
							pix[((y - 1) * bigmap.MapWidth) + x] = palette.Black;
						}
					}
				}
			}

			gridMap.SetPixels32(pix);

			gridMap.Apply();
		}

		public void SetMapSize()
		{
			if (!_isVisible || uiElement == null)
			{
				return;
			}

			uiElement.SetSize(Size);
		}

		private void SetTitle()
		{
			if (uiElement == null || bigmap == null)
			{
				return;
			}

			uiElement.UpdateTitle(string.Format("S.C.A.N. {0} Map of {1}", bigmap.MType, body.displayName.LocalizeBodyName()));
		}

		public string Version
		{
			get { return SCANmainMenuLoader.SCANsatVersion; }
		}

		public string CurrentProjection
		{
			get { return SCANcontroller.controller.bigMapProjection; }
			set
			{
				MapProjection p;

				try
				{
					p = (MapProjection)Enum.Parse(typeof(MapProjection), value, true);

					SCANcontroller.controller.bigMapProjection = value;
					bigmap.Projection = p;

					SetGridLines();

					bigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);

					updateMap = true;
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Error in parsing map projection type\n{0}", e);
				}
			}
		}

		public string CurrentMapType
		{
			get { return SCANcontroller.controller.bigMapType; }
			set
			{
				mapType t;

				try
				{
					t = (mapType)Enum.Parse(typeof(mapType), value, true);

					SCANcontroller.controller.bigMapType = value;
					bigmap.MType = t;
					bigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Error in parsing map type\n{0}", e);
				}

				SetTitle();
			}
		}

		public string CurrentResource
		{
			get { return SCANUtil.displayNameFromResource(SCANcontroller.controller.bigMapResource); }
			set
			{
				SCANcontroller.controller.bigMapResource = SCANUtil.resourceFromDisplayName(value);

				currentResource = AssignResource(SCANcontroller.controller.bigMapResource);

				if (currentResource == null)
				{
					bigmap.Resource = null;
				}
				else
				{
					bigmap.Resource = currentResource;
				}
			}
		}

		private SCANresourceGlobal AssignResource(string resource)
		{
			SCANresourceGlobal r = currentResource;

			if (r == null || r.Name != resource)
			{
				for (int i = resources.Count - 1; i >= 0; i--)
				{
					SCANresourceGlobal res = resources[i];

					if (res.Name != resource)
					{
						continue;
					}

					r = res;
					break;
				}
			}

			if (r == null)
			{
				r = SCANcontroller.GetFirstResource;
			}

			if (r != null)
			{
				r.CurrentBodyConfig(body.bodyName);
			}

			return r;
		}

		public string CurrentCelestialBody
		{
			get { return SCANUtil.displayNameFromBodyName(SCANcontroller.controller.bigMapBody); }
			set
			{
				string b = SCANUtil.bodyFromDisplayName(value);

				SCANdata bodyData = SCANUtil.getData(b);

				if (bodyData != null)
				{
					data = bodyData;
					body = data.Body;
					bigmap.setBody(body);

					if (OrbitToggle && ShowOrbit)
					{
						Orbit o = vessel.orbit;

						orbitLabels.Clear();

						for (int i = 0; i < orbitSteps * 3; i++)
						{
							orbitLabels.Add(new SimpleLabelInfo(10, SCAN_UI_Loader.PlanetIcon));
						}

						if (!vessel.LandedOrSplashed)
						{
							UpdateOrbitIcons(o);
						}
					}

					bigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);

					SCANcontroller.controller.bigMapBody = b;

					if (currentResource != null)
					{
						currentResource.CurrentBodyConfig(body.bodyName);
					}

					updateMap = true;
				}

				SetTitle();
			}
		}

		public string RandomWaypoint
		{
			get { return StringUtilities.GenerateSiteName(gen.Next(), body, false, true); }
		}

		public bool IsVisible
		{
			get { return _isVisible; }
			set
			{
				_isVisible = value;

				if (!value)
				{
					Close();
				}
			}
		}

		public bool ColorToggle
		{
			get { return SCANcontroller.controller.bigMapColor; }
			set
			{
				SCANcontroller.controller.bigMapColor = value;

				bigmap.ColorMap = value;
				bigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);
			}
		}

		public bool TerminatorToggle
		{
			get { return SCANcontroller.controller.bigMapTerminator; }
			set
			{
				SCANcontroller.controller.bigMapTerminator = value;

				bigmap.Terminator = value;
				bigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);
			}
		}

		public bool GridToggle
		{
			get { return SCANcontroller.controller.bigMapGrid; }
			set
			{
				SCANcontroller.controller.bigMapGrid = value;

				SetGridLines();
			}
		}

		public bool OrbitToggle
		{
			get { return SCANcontroller.controller.bigMapOrbit; }
			set
			{
				SCANcontroller.controller.bigMapOrbit = value;

				if (value && ShowOrbit)
				{
					Orbit o = vessel.orbit;

					orbitLabels.Clear();

					for (int i = 0; i < orbitSteps * 3; i++)
					{
						orbitLabels.Add(new SimpleLabelInfo(10, SCAN_UI_Loader.PlanetIcon));
					}

					if (!vessel.LandedOrSplashed)
					{
						UpdateOrbitIcons(o);
					}
				}

				updateMap = true;
			}
		}

		public bool WaypointToggle
		{
			get { return SCANcontroller.controller.bigMapWaypoint; }
			set
			{
				SCANcontroller.controller.bigMapWaypoint = value;

			}
		}

		public bool AnomalyToggle
		{
			get { return SCANcontroller.controller.bigMapAnomaly; }
			set
			{
				SCANcontroller.controller.bigMapAnomaly = value;

			}
		}

		public bool FlagToggle
		{
			get { return SCANcontroller.controller.bigMapFlag; }
			set
			{
				SCANcontroller.controller.bigMapFlag = value;

			}
		}

		public bool LegendToggle
		{
			get { return SCANcontroller.controller.bigMapLegend; }
			set { SCANcontroller.controller.bigMapLegend = value; }
		}

		public bool LegendAvailable
		{
			get
			{
				switch (bigmap.MType)
				{
					case mapType.Altimetry:
						return body.pqsController != null;
					case mapType.Biome:
						return body.BiomeMap != null && SCAN_Settings_Config.Instance.LegendTooltips;
				}

				return false;
			}
		}

		public bool ResourceToggle
		{
			get { return SCANcontroller.controller.bigMapResourceOn; }
			set
			{
				SCANcontroller.controller.bigMapResourceOn = value;

				bigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);
			}
		}

		public bool OrbitAvailable
		{
			get { return HighLogic.LoadedSceneIsFlight; }
		}

		public bool ShowOrbit
		{
			get
			{
				return HighLogic.LoadedSceneIsFlight
				&& vessel != null
				&& body != null
				&& vessel.mainBody == body
				&& GameVariables.Instance.GetOrbitDisplayMode(
					ScenarioUpgradeableFacilities.GetFacilityLevel(
					SpaceCenterFacility.TrackingStation)
					) == GameVariables.OrbitDisplayMode.PatchedConics;
			}
		}

		public bool ShowWaypoint
		{
			get { return HighLogic.LoadedScene != GameScenes.SPACECENTER; }
		}

		public bool ShowResource
		{
			get { return SCANcontroller.MasterResourceCount > 1; }
		}

		public bool MechJebAvailable
		{
			get { return SCANmainMenuLoader.MechJebLoaded && SCAN_Settings_Config.Instance.MechJebTarget && SCANcontroller.controller.MechJebLoaded; }
		}

		public bool LockInput
		{
			get { return _inputLock; }
			set
			{
				_inputLock = value;

				if (_inputLock)
				{
					InputLockManager.SetControlLock(controlLock);
				}
				else
				{
					InputLockManager.RemoveControlLock(controlLock);
				}
			}
		}

		public bool TooltipsOn
		{
			get { return SCAN_Settings_Config.Instance.WindowTooltips; }
		}

		public bool LegendTooltips
		{
			get { return SCAN_Settings_Config.Instance.LegendTooltips; }
		}

		public int OrbitSteps
		{
			get { return orbitSteps * 3; }
		}

		public int CurrentScene
		{
			get
			{
				switch (HighLogic.LoadedScene)
				{
					case GameScenes.FLIGHT:
						return 0;
					case GameScenes.TRACKSTATION:
						return 1;
					case GameScenes.SPACECENTER:
						return 2;
					default:
						return -1;
				}
			}
		}

		public float Scale
		{
			get { return SCAN_Settings_Config.Instance.UIScale; }
		}

		public float LoAltScan
		{
			get { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.AltimetryLoRes); }
		}

		public float HiAltScan
		{
			get { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.AltimetryHiRes); }
		}

		public float MultiScan
		{
			get { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.Biome); }
		}

		public float LoVisScan
		{
			get { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.VisualLoRes); }
		}

		public float HiVisScan
		{
			get { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.VisualHiRes); }
		}

		public float AnomalyScan
		{
			get { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.Anomaly); }
		}

		public float LoResScan
		{
			get { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes); }
		}

		public float HiResScan
		{
			get { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes); }
		}

		public byte ScanStatus
		{
			get { return scanStatus; }
		}

		public Sprite WaypointSprite
		{
			get { return SCAN_UI_Loader.WaypointIcon; }
		}

		public Canvas MainCanvas
		{
			get { return UIMasterController.Instance.dialogCanvas; }
		}

		public Canvas TooltipCanvas
		{
			get { return UIMasterController.Instance.tooltipCanvas; }
		}

		public Vector2 Position
		{
			get { return SCAN_Settings_Config.Instance.BigMapPosition; }
			set { SCAN_Settings_Config.Instance.BigMapPosition = value; }
		}

		public Vector2 Size
		{
			get
			{
				float width = SCAN_Settings_Config.Instance.BigMapWidth;
				float height = width / 2;

				return new Vector2(width, height);
			}
			set
			{
				SCAN_Settings_Config.Instance.BigMapWidth = (int)value.x;

				bigmap.setWidth(SCAN_Settings_Config.Instance.BigMapWidth);

				SetGridLines();

				RefreshEQMap();

				updateMap = true;
			}
		}

		public Texture2D LegendImage
		{
			get
			{
				if (bigmap.MapLegend == null)
				{
					bigmap.MapLegend = new SCANmapLegend();
				}

				if (data == null)
				{
					return null;
				}

				switch (bigmap.MType)
				{
					case mapType.Altimetry:
						return bigmap.MapLegend.getLegend(SCANcontroller.controller.bigMapColor, data.TerrainConfig);
					case mapType.Biome:
						if (body != null && body.BiomeMap != null && body.BiomeMap.Attributes != null)
						{
							return bigmap.MapLegend.getLegend(data, SCANcontroller.controller.bigMapColor, SCAN_Settings_Config.Instance.BigMapStockBiomes, body.BiomeMap.Attributes);
						}
						else
						{
							return null;
						}
				}

				return null;
			}
		}

		public Texture2D ResourceLegendImage
		{
			get
			{
				if (resourceLegend == null)
				{
					resourceLegend = new Texture2D(RESOURCELEGENDWIDTH, 1, TextureFormat.RGB24, false);
				}

				if (currentResource == null)
				{
					return null;
				}

				Color32[] pix = new Color32[RESOURCELEGENDWIDTH];

				for (int i = 0; i < RESOURCELEGENDWIDTH; i++)
				{
					float val = (i * 1f) / (RESOURCELEGENDWIDTH * 1f);
					pix[i] = palette.lerp(currentResource.MinColor32, currentResource.MaxColor32, val);
				}

				resourceLegend.SetPixels32(pix);
				resourceLegend.Apply();

				return resourceLegend;
			}
		}

		public Vector2 ResourceLegendLabels
		{
			get
			{
				if (currentResource != null)
				{
					SCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);

					if (resBody != null)
					{
						return new Vector2(resBody.MinValue / 100f, resBody.MaxValue / 100f);
					}

					return new Vector2(currentResource.DefaultMinValue / 100f, currentResource.DefaultMaxValue / 100f);
				}

				return new Vector2(0, 0.1f);
			}
		}

		public IList Projections
		{
			get { return new List(3) { "Rectangular", "KavrayskiyVII", "Polar" }; }
		}

		public IList MapTypes
		{
			get { return new List(3) { "Altimetry", "Slope", "Biome", "Visual" }; }
		}

		public IList Resources
		{
			get
			{
				List rList = new List();

				bool threshold;

				if (!SCAN_Settings_Config.Instance.HideZeroResources)
				{
					threshold = SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100) || SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100);
				}
				else
				{
					threshold = true;
				}

				for (int i = 0; i < resources.Count; i++)
				{
					SCANresourceGlobal res = resources[i];

					if (threshold)
					{
						SCANresourceBody resBody = res.getBodyConfig(body.bodyName);

						if (resBody != null)
						{
							if (resBody.DefaultZero)
							{
								continue;
							}
						}
						else if (res.DefaultZero)
						{
							continue;
						}
					}

					rList.Add(res.DisplayName);
				}

				return rList;
				//return new List(resources.Select(r => r.DisplayName));
			}
		}

		public IList CelestialBodies
		{
			get
			{

				var bodies = FlightGlobals.Bodies.Where(b => b.referenceBody == Planetarium.fetch.Sun && b.referenceBody != b);
				var orderedBodies = bodies.OrderBy(b => b.orbit.semiMajorAxis).ToList();

				List bodyList = SCANUtil.RecursiveCelestialBodies(orderedBodies);

				bool missingHome = true;

				for (int i = bodyList.Count - 1; i >= 0; i--)
				{
					string b = bodyList[i];

					if (b == FlightGlobals.GetHomeBody().displayName.LocalizeBodyName())
					{
						missingHome = false;
						break;
					}
				}

				if (missingHome)
				{
					List missingHomeBodies = SCANUtil.RecursiveCelestialBodies(new List() { FlightGlobals.GetHomeBody() });

					bodyList.InsertRange(0, missingHomeBodies);
				}

				if (HighLogic.LoadedSceneIsFlight)
				{
					for (int i = bodyList.Count - 1; i >= 0; i--)
					{
						string b = bodyList[i];

						if (b != FlightGlobals.currentMainBody.displayName.LocalizeBodyName())
						{
							continue;
						}

						bodyList.RemoveAt(i);
						bodyList.Insert(0, b);
						break;
					}
				}

				SCANdata sun = SCANcontroller.controller.getData(Planetarium.fetch.Sun.bodyName);

				if (sun != null)
				{
					bodyList.Add(sun.Body.displayName.LocalizeBodyName());
				}

				return bodyList;
			}
		}

		public IList LegendLabels
		{
			get
			{
				if (data == null)
				{
					return null;
				}

				string one = string.Format("|\n{0}", (((int)(data.TerrainConfig.MinTerrain / 100)) * 100).ToString("N0"));

				string two = string.Format("|\n{0}", (((int)((data.TerrainConfig.MinTerrain + (data.TerrainConfig.TerrainRange / 2)) / 100)) * 100).ToString("N0"));

				string three = string.Format("|\n{0}", (((int)(data.TerrainConfig.MaxTerrain / 100)) * 100).ToString("N0"));

				return new List(3) { one, two, three };
			}
		}

		public SimpleLabelInfo OrbitInfo(int index)
		{
			if (index < 0 || index >= orbitLabels.Count)
			{
				return null;
			}

			return orbitLabels[index];
		}

		public MapLabelInfo OrbitIconInfo(string id)
		{
			MapLabelInfo info;

			if (OrbitLabelList.TryGetValue(id, out info))
			{
				return info;
			}

			return new MapLabelInfo();
		}

		public Vector2 VesselPosition()
		{
			if (vessel == null)
			{
				return new Vector2();
			}

			return VesselPosition(vessel);
		}

		public Vector2 VesselPosition(Guid id)
		{
			Vessel v = null;

			for (int i = FlightGlobals.Vessels.Count - 1; i >= 0; i--)
			{
				v = FlightGlobals.Vessels[i];

				if (v.id == id)
				{
					break;
				}
			}

			return VesselPosition(v);
		}

		public Vector2 VesselPosition(Vessel v)
		{
			if (v == null)
			{
				return new Vector2();
			}

			double lat = SCANUtil.fixLat(bigmap.projectLatitude(v.longitude, v.latitude));
			double lon = SCANUtil.fixLon(bigmap.projectLongitude(v.longitude, v.latitude));
			lat = bigmap.scaleLatitude(lat);
			lon = bigmap.scaleLongitude(lon);

			lon = lon * bigmap.MapWidth / 360;
			lat = lat * bigmap.MapHeight / 180;

			return new Vector2((float)lon, (float)lat);
		}

		public Vector2 MapPosition(double lat, double lon)
		{
			double Lat = SCANUtil.fixLat(bigmap.projectLatitude(lon, lat));
			double Lon = SCANUtil.fixLon(bigmap.projectLongitude(lon, lat));
			Lat = bigmap.scaleLatitude(Lat);
			Lon = bigmap.scaleLongitude(Lon);

			Lon = Lon * bigmap.MapWidth / 360;
			Lat = Lat * bigmap.MapHeight / 180;

			return new Vector2((float)Lon, (float)Lat);
		}

		public Dictionary OrbitLabelList
		{
			get { return orbitMapLabels; }
		}

		public IList FlagInfoList
		{
			get
			{
				List vessels = new List();
				mapFlags.Clear();

				for (int i = FlightGlobals.Vessels.Count - 1; i >= 0; i--)
				{
					Vessel v = FlightGlobals.Vessels[i];

					if (v == null)
					{
						continue;
					}

					if (v.vesselType != VesselType.Flag)
					{
						continue;
					}

					if (v.mainBody != body)
					{
						continue;
					}

					mapFlags.Add(v);

					vessels.Add(new MapLabelInfo()
					{
						label = "",
						image = SCAN_UI_Loader.FlagIcon,
						pos = VesselPosition(v.id),
						baseColor = ColorToggle ? palette.cb_yellow : palette.cb_skyBlue,
						flash = false,
						width = 32,
						show = true
					});
				}

				return vessels;
			}
		}

		public Dictionary AnomalyInfoList
		{
			get
			{
				Dictionary anomalies = new Dictionary();

				if (data != null)
				{
					for (int i = data.Anomalies.Length - 1; i >= 0; i--)
					{
						SCANanomaly a = data.Anomalies[i];

						if (a == null)
						{
							continue;
						}

						if (!a.Known)
						{
							continue;
						}

						if (anomalies.ContainsKey(a.Name))
						{
							continue;
						}

						anomalies.Add(a.Name, new MapLabelInfo()
						{
							label = "",
							image = SCAN_UI_Loader.AnomalyIcon,
							pos = MapPosition(a.Latitude, a.Longitude),
							baseColor = a.Detail ? (ColorToggle ? palette.cb_yellow : palette.cb_skyBlue) : palette.xkcd_LightGrey,
							flash = false,
							width = 20,
							alignBottom = 8,
							show = true
						});
					}
				}

				return anomalies;
			}
		}

		public Dictionary WaypointInfoList
		{
			get
			{
				Dictionary waypoints = new Dictionary();

				if (data != null)
				{
					for (int i = data.Waypoints.Count - 1; i >= 0; i--)
					{
						SCANwaypoint w = data.Waypoints[i];

						if (w == null)
						{
							continue;
						}

						Vector2 wayPos = MapPosition(w.Latitude, w.Longitude);

						if (w.LandingTarget)
						{
							if (waypoints.ContainsKey(w.Seed))
							{
								continue;
							}

							waypoints.Add(w.Seed, new MapLabelInfo()
							{
								label = "",
								image = SCAN_UI_Loader.MechJebIcon,
								pos = wayPos,
								baseColor = palette.red,
								flash = false,
								width = 20,
								alignBottom = 0,
								show = true
							});
						}
						else
						{
							if (waypoints.ContainsKey(w.Seed))
							{
								continue;
							}

							waypoints.Add(w.Seed, new MapLabelInfo()
							{
								label = "",
								image = SCAN_UI_Loader.WaypointIcon,
								pos = wayPos,
								baseColor = palette.white,
								flash = false,
								width = 20,
								alignBottom = 10,
								show = true
							});
						}
					}
				}

				return waypoints;
			}
		}

		public KeyValuePair VesselInfo
		{
			get
			{
				if (vessel == null || vessel.mainBody != body)
				{
					return new KeyValuePair(new Guid(), new MapLabelInfo() { label = "null" });
				}

				return new KeyValuePair(vessel.id, new MapLabelInfo()
				{
					label = "",
					image = SCAN_UI_Loader.VesselIcon(vessel.vesselType),
					pos = VesselPosition(vessel),
					baseColor = ColorToggle ? palette.white : palette.cb_skyBlue,
					flashColor = palette.cb_yellow,
					flash = true,
					width = 28,
					show = true
				});
			}
		}

		private Vector2d MousePosition(Vector2 pos)
		{
			float mx = pos.x;
			float my = pos.y * -1f;

			double mlo = (mx * 360 / bigmap.MapWidth) - 180;
			double mla = 90 - (my * 180 / bigmap.MapHeight);

			double mlon = bigmap.unprojectLongitude(mlo, mla);
			double mlat = bigmap.unprojectLatitude(mlo, mla);

			return new Vector2d(mlon, mlat);
		}

		public string MapInfo(Vector2 mapPos)
		{
			scanStatus = 0;

			Vector2d pos = MousePosition(mapPos);

			double mlon = pos.x;
			double mlat = pos.y;

			if (mlon >= -180 && mlon <= 180 && mlat >= -90 && mlat <= 90)
			{
				return mouseOverInfo(mlon, mlat);
			}
			else
			{
				return "";
			}
		}

		private string mouseOverInfo(double lon, double lat)
		{
			if (infoString == null)
			{
				infoString = new StringBuilder();
			}

			infoString.Length = 0;

			bool altimetry = SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry);
			bool hires = SCANUtil.isCovered(lon, lat, data, SCANtype.AltimetryHiRes);

			scanStatus |= altimetry ? (byte)(1 << 0) : (byte)0;
			scanStatus |= hires ? (byte)(1 << 1) : (byte)0;

			if (altimetry)
			{
				infoString.Append(" Terrain Height: ");
				SCANuiUtil.getMouseOverElevation(infoString, lon, lat, data, 2, hires);

				if (hires)
				{
					double circum = body.Radius * 2 * Math.PI;
					double eqDistancePerDegree = circum / 360;
					double degreeOffset = 5 / eqDistancePerDegree;

					infoString.AppendFormat(" Slope: {0}°", SCANUtil.slope(SCANUtil.getElevation(body, lon, lat), body, lon, lat, degreeOffset).ToString("F1"));
				}
			}

			if (SCANUtil.isCovered(lon, lat, data, SCANtype.Biome))
			{
				if (body.BiomeMap != null)
				{
					infoString.Append(" Biome: ");
					SCANUtil.getBiomeDisplayName(infoString, body, lon, lat);
				}
				scanStatus |= (byte)(1 << 2);
			}

			if (SCANUtil.isCovered(lon, lat, data, SCANtype.VisualLoRes))
			{
				scanStatus |= (byte)(1 << 3);
			}

			if (SCANUtil.isCovered(lon, lat, data, SCANtype.VisualHiRes))
			{
				scanStatus |= (byte)(1 << 4);
			}

			if (SCANUtil.isCovered(lon, lat, data, SCANtype.Anomaly))
			{
				scanStatus |= (byte)(1 << 5);
			}

			if (SCANconfigLoader.GlobalResource && bigmap.Resource != null)
			{
				bool resourcesLo = SCANUtil.isCovered(lon, lat, data, SCANtype.ResourceLoRes);
				bool resourcesHi = SCANUtil.isCovered(lon, lat, data, SCANtype.ResourceHiRes);

				scanStatus |= resourcesLo ? (byte)(1 << 6) : (byte)0;
				scanStatus |= resourcesHi ? (byte)(1 << 7) : (byte)0;

				if (resourcesHi)
				{
					infoString.AppendFormat(" {0}", SCANuiUtil.getResourceAbundance(bigmap.Body, lat, lon, false, bigmap.Resource));
				}
				else if (resourcesLo)
				{
					infoString.AppendFormat(" {0}", SCANuiUtil.getResourceAbundance(bigmap.Body, lat, lon, true, bigmap.Resource));
				}
			}

			infoString.AppendLine();
			SCANuiUtil.toDMS(infoString, lat, lon);
			infoString.AppendFormat(" (lat: {0}° lon: {1}°)", lat.ToString("F2"), lon.ToString("F2"));

			double range = ContractDefs.Survey.MaximumTriggerRange;

			if (SCANcontroller.controller.bigMapWaypoint)
			{
				for (int i = data.Waypoints.Count - 1; i >= 0; i--)
				{
					SCANwaypoint p = data.Waypoints[i];

					if (!p.LandingTarget)
					{
						if (p.Root != null)
						{
							if (p.Root.ContractState != Contract.State.Active)
							{
								continue;
							}
						}
						if (p.Param != null)
						{
							if (p.Param.State != ParameterState.Incomplete)
							{
								continue;
							}
						}

						if (SCANUtil.mapLabelDistance(lat, lon, p.Latitude, p.Longitude, body) <= range)
						{
							infoString.AppendFormat(" Waypoint: {0}", p.Name);
							break;
						}
					}
					else if (SCANUtil.mapLabelDistance(lat, lon, p.Latitude, p.Longitude, body) <= range)
					{
						infoString.Append(" MechJect Target: ");
						SCANuiUtil.toDMS(infoString, p.Latitude, p.Longitude);
						break;
					}
				}
			}

			if (SCANcontroller.controller.bigMapAnomaly)
			{
				for (int i = data.Anomalies.Length - 1; i >= 0; i--)
				{
					SCANanomaly a = data.Anomalies[i];

					if (a.Known)
					{
						if (SCANUtil.mapLabelDistance(lat, lon, a.Latitude, a.Longitude, body) <= range)
						{
							if (a.Detail)
							{
								infoString.Append(" Anomaly: ");
								infoString.Append(a.Name);
							}
							else
							{
								infoString.Append(" Anomaly: Unknown");
							}
							break;
						}
					}
				}
			}

			if (SCANcontroller.controller.bigMapFlag)
			{
				for (int i = mapFlags.Count - 1; i >= 0; i--)
				{
					Vessel flag = mapFlags[i];

					if (SCANUtil.mapLabelDistance(lat, lon, flag.latitude, flag.longitude, body) <= range)
					{
						infoString.Append(" Flag: ");
						infoString.Append(flag.vesselName);
						break;
					}
				}
			}

			return infoString.ToString();
		}

		public string TooltipText(float xPos)
		{
			switch (bigmap.MType)
			{
				case mapType.Biome:
					if (body.BiomeMap == null || body.BiomeMap.Attributes == null)
					{
						return "";
					}

					int count = body.BiomeMap.Attributes.Length;

					int blockSize = (int)Math.Truncate(256 / (count * 1d));

					int current = (int)Math.Truncate((xPos * 256) / (blockSize * 1d));

					if (current >= count)
					{
						current = count - 1;
					}
					else if (current < 0)
					{
						current = 0;
					}

					return Localizer.Format(body.BiomeMap.Attributes[current].displayname);
				case mapType.Altimetry:
					float terrain = xPos * data.TerrainConfig.TerrainRange + data.TerrainConfig.MinTerrain;

					return string.Format("{0}m", terrain.ToString("N0"));
			}

			return "";
		}

		public void SetWaypoint(string id, Vector2 pos)
		{
			if (string.IsNullOrEmpty(id))
			{
				id = RandomWaypoint;
			}

			pos.y -= bigmap.MapHeight;

			Vector2d mapPos = MousePosition(pos);

			if (mapPos.x < -180 || mapPos.x > 180 || mapPos.y < -90 || mapPos.y > 90)
			{
				return;
			}

			Waypoint w = new Waypoint();

			w.name = id;
			w.isExplored = true;
			w.isNavigatable = true;
			w.isOnSurface = true;
			w.celestialName = body.GetName();
			w.latitude = mapPos.y;
			w.longitude = mapPos.x;
			w.seed = gen.Next(0, int.MaxValue);
			w.navigationId = new Guid();

			ScenarioCustomWaypoints.AddWaypoint(w);

			data.addCustomWaypoint(w);
		}

		public void SetMJWaypoint(Vector2 pos)
		{
			pos.y -= bigmap.MapHeight;

			Vector2d mapPos = MousePosition(pos);

			if (mapPos.x < -180 || mapPos.x > 180 || mapPos.y < -90 || mapPos.y > 90)
			{
				return;
			}

			SCANcontroller.controller.MJTargetSet.Invoke(mapPos, body);

			SCANwaypoint w = new SCANwaypoint(mapPos.y, mapPos.x, "MechJeb Landing Target");
			data.addToWaypoints(w);
		}

		public void ClickMap(Vector2 pos)
		{
			Vector2d mapPos = MousePosition(pos);

			if (SCANcontroller.controller.zoomMapVesselLock)
			{
				return;
			}

			if (SCAN_UI_ZoomMap.Instance == null)
			{
				return;
			}

			if (SCAN_UI_ZoomMap.Instance.IsVisible)
			{
				SCAN_UI_ZoomMap.Instance.Close();
			}

			SCAN_UI_ZoomMap.Instance.Open(false, mapPos.y, mapPos.x, bigmap);
		}

		public void RefreshMap()
		{
			bigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);

			uiElement.SetLegends(LegendToggle);
		}

		public void OpenMainMap()
		{
			if (SCAN_UI_MainMap.Instance.IsVisible)
			{
				SCAN_UI_MainMap.Instance.Close();
			}
			else
			{
				SCAN_UI_MainMap.Instance.Open();
			}
		}

		public void OpenZoomMap()
		{
			if (SCAN_UI_ZoomMap.Instance.IsVisible)
			{
				SCAN_UI_ZoomMap.Instance.Close();
			}
			else
			{
				SCAN_UI_ZoomMap.Instance.Open(true);
			}
		}

		public void OpenOverlay()
		{
			if (SCAN_UI_Overlay.Instance.IsVisible)
			{
				SCAN_UI_Overlay.Instance.Close();
			}
			else
			{
				SCAN_UI_Overlay.Instance.Open();
			}
		}

		public void OpenInstruments()
		{
			if (SCAN_UI_Instruments.Instance.IsVisible)
			{
				SCAN_UI_Instruments.Instance.Close();
			}
			else
			{
				SCAN_UI_Instruments.Instance.Open();
			}
		}

		public void OpenSettings()
		{
			if (SCAN_UI_Settings.Instance.IsVisible)
			{
				SCAN_UI_Settings.Instance.Close();
			}
			else
			{
				SCAN_UI_Settings.Instance.Open();
			}
		}

		public void IncreaseResourceCutoff()
		{
			if (currentResource != null)
			{
				SCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);

				if (resBody != null)
				{
					float divisor = resBody.MaxValue / 10f;
					float min = resBody.MinValue;

					float current = min / divisor;
					float floor = Mathf.Floor(current);

					floor += 1;

					resBody.MinValue = floor * divisor;

					if (floor * divisor >= resBody.MaxValue)
					{
						resBody.MinValue = resBody.MaxValue - divisor;
					}
				}

				bigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);


				if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)
				{
					SCAN_UI_ZoomMap.Instance.RefreshMap();
				}

				if (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)
				{
					SCAN_UI_Overlay.Instance.Refresh();
				}
			}
		}

		public void DecreaseResourceCutoff()
		{
			if (currentResource != null)
			{
				SCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);

				if (resBody != null)
				{
					float divisor = resBody.MaxValue / 10f;
					float min = resBody.MinValue;

					float current = min / divisor;
					float floor = Mathf.Floor(current);

					if (Mathf.FloorToInt(floor * 100) == Mathf.FloorToInt(current * 100))
					{
						floor -= 1;
					}

					resBody.MinValue = floor * divisor;

					if (floor * divisor >= resBody.MaxValue)
					{
						resBody.MinValue = resBody.MaxValue - divisor;
					}
				}

				bigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);

				if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)
				{
					SCAN_UI_ZoomMap.Instance.RefreshMap();
				}

				if (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)
				{
					SCAN_UI_Overlay.Instance.Refresh();
				}
			}
		}

		public void OpenResourceSettings()
		{
			if (SCAN_UI_Settings.Instance.IsVisible)
			{
				if (SCAN_UI_Settings.Instance.Page == 4)
				{
					if (SCAN_UI_Settings.Instance.IsCurrentResource(body.bodyName, currentResource.DisplayName))
					{
						SCAN_UI_Settings.Instance.Close();
					}
					else
					{
						SCAN_UI_Settings.Instance.Close();
						ISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;
						col.ResourcePlanet = body.bodyName;
						col.ResourceCurrent = currentResource.DisplayName;
						SCAN_UI_Settings.Instance.Open(4, true, true);
					}
				}
				else
				{
					SCAN_UI_Settings.Instance.Close();
					ISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;
					col.ResourcePlanet = body.bodyName;
					col.ResourceCurrent = currentResource.DisplayName;
					SCAN_UI_Settings.Instance.Open(4, true, true);
				}
			}
			else
			{
				ISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;
				col.ResourcePlanet = body.bodyName;
				col.ResourceCurrent = currentResource.DisplayName;
				SCAN_UI_Settings.Instance.Open(4, false, true);
			}
		}

		public void ExportMap()
		{
			if (bigmap.isMapComplete())
			{
				bigmap.exportPNG();
			}
		}

		public void setMapWidth(int width)
		{
			if (bigmap == null)
			{
				return;
			}

			bigmap.setWidth(width);
			SCAN_Settings_Config.Instance.BigMapWidth = bigmap.MapWidth;
		}

		public void ResetPosition()
		{
			SCAN_Settings_Config.Instance.BigMapPosition = new Vector2(400, -400);

			if (uiElement != null)
			{
				uiElement.SetPosition(SCAN_Settings_Config.Instance.BigMapPosition);
			}
		}

	}
}


================================================
FILE: SCANsat/SCAN_Unity/SCAN_UI_Color.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_UI_Color - UI control object for SCANsat color management window
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using SCANsat.Unity.Interfaces;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_Map;
using SCANsat.SCAN_Palettes;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;

namespace SCANsat.SCAN_Unity
{
	public class SCAN_UI_Color : ISCAN_Color
	{
		private string _resourceCurrent;
		private string _resourcePlanet;
		private string _terrainPlanet;
		private string _terrainPalette;
		private string _terrainPaletteStyle;

		private bool _mapVignette;
		private bool _biomeBigMapStockColor;
		private bool _biomeBigMapWhiteBorder;
		private bool _biomeZoomMapWhiteBorder;
		private bool _biomeSmallMapStockColor;
		private bool _biomeSmallMapWhiteBorder;
		private bool _terrainClampOn;
		private bool _terrainReverse;
		private bool _terrainDiscrete;


		private int _mapWidth;

		private bool _useMapWidth;
		private bool _pixelFiltering;
		private bool _normalMap;
		private bool _colorMap;

		private float _normalOpacity;
		private float _luminanceReduction;

		private static SCAN_UI_Color instance;

		public static SCAN_UI_Color Instance
		{
			get { return instance; }
		}

		private float _unscannedTransparency;
		private float _backgroundTransparency;
		private float _biomeTransparency;
		private float _slopeCutoff;
		private float _resourceMin;
		private float _resourceMax;
		private float _resourceTransparency;
		private float _terrainCurrentMin;
		private float _terrainCurrentMax;
		private float _terrainClamp;

		private int _terrainSize;

		private SCANterrainConfig currentTerrain;
		private SCANPaletteGroup currentPalette;

		private SCANresourceGlobal currentResource;
		private List loadedResources;

		public SCAN_UI_Color()
		{
			instance = this;
			if (HighLogic.LoadedScene == GameScenes.SPACECENTER || HighLogic.LoadedScene == GameScenes.TRACKSTATION)
			{
				_resourcePlanet = Planetarium.fetch.Home.bodyName;
			}
			else if (HighLogic.LoadedSceneIsFlight)
			{
				_resourcePlanet = FlightGlobals.currentMainBody.bodyName;
			}

			loadedResources = SCANcontroller.setLoadedResourceList();

			_terrainPlanet = _resourcePlanet;
		}

		public void Refresh()
		{
			_biomeBigMapStockColor = SCAN_Settings_Config.Instance.BigMapStockBiomes;
			_biomeBigMapWhiteBorder = SCAN_Settings_Config.Instance.BigMapBiomeBorder;
			_biomeZoomMapWhiteBorder = SCAN_Settings_Config.Instance.ZoomMapBiomeBorder;
			_biomeSmallMapStockColor = SCAN_Settings_Config.Instance.SmallMapStockBiomes;
			_biomeSmallMapWhiteBorder = SCAN_Settings_Config.Instance.SmallMapBiomeBorder;
			_biomeTransparency = SCAN_Settings_Config.Instance.BiomeTransparency * 100;

			_slopeCutoff = SCAN_Settings_Config.Instance.SlopeCutoff;

			//loadedResources = SCANcontroller.setLoadedResourceList();

			if (currentResource == null || currentResource.CurrentBody == null || currentResource.CurrentBody.Body.bodyName != _resourcePlanet)
			{
				currentResource = new SCANresourceGlobal(loadedResources[0]);
			}

			if (currentResource != null)
			{
				currentResource.CurrentBodyConfig(_resourcePlanet);
				_resourceCurrent = currentResource.DisplayName;
				_resourceMin = currentResource.CurrentBody.MinValue;
				_resourceMax = currentResource.CurrentBody.MaxValue;
				_resourceTransparency = currentResource.Transparency;
			}

			currentTerrain = SCANcontroller.getTerrainNode(_terrainPlanet);

			if (currentTerrain != null)
			{
				palette.CurrentPalettes = palette.SetCurrentPalettesType(currentTerrain.ColorPal.Kind);

				currentPalette = palette.CurrentPalettes.GetPaletteGroup(currentTerrain.ColorPal.Name);

				_terrainPalette = currentTerrain.ColorPal.Name;
				_terrainPaletteStyle = currentTerrain.ColorPal.Kind.ToString();

				_terrainCurrentMin = currentTerrain.MinTerrain;
				_terrainCurrentMax = currentTerrain.MaxTerrain;
				_terrainClampOn = currentTerrain.ClampTerrain != null;
				_terrainClamp = currentTerrain.ClampTerrain == null ? 0 : (float)currentTerrain.ClampTerrain;
				_terrainDiscrete = currentTerrain.PalDis;
				_terrainReverse = currentTerrain.PalRev;
				_terrainSize = currentTerrain.PalSize;
			}
		}

		public string ResourcePlanet
		{
			get { return currentResource.CurrentBody.Body.displayName.LocalizeBodyName(); }
			set
			{
				string body = SCANUtil.bodyFromDisplayName(value);

				_resourcePlanet = body;

				if (currentResource != null)
				{
					currentResource.CurrentBodyConfig(body);

					_resourceMin = currentResource.CurrentBody.MinValue;
					_resourceMax = currentResource.CurrentBody.MaxValue;
				}
			}
		}

		public string ResourceCurrent
		{
			get { return _resourceCurrent; }
			set
			{
				_resourceCurrent = value;

				if (currentResource == null || currentResource.DisplayName != value)
				{
					for (int i = loadedResources.Count - 1; i >= 0; i--)
					{
						SCANresourceGlobal res = loadedResources[i];

						if (res.DisplayName != value)
						{
							continue;
						}

						currentResource = res;
						break;
					}

					if (currentResource == null)
					{
						currentResource = SCANcontroller.GetFirstResource;
					}

					if (currentResource != null)
					{
						currentResource.CurrentBodyConfig(_resourcePlanet);

						_resourceCurrent = currentResource.DisplayName;
						_resourceMin = currentResource.CurrentBody.MinValue;
						_resourceMax = currentResource.CurrentBody.MaxValue;
						_resourceTransparency = currentResource.Transparency;
					}
				}
			}
		}

		public string TerrainPlanet
		{
			get { return currentTerrain.Body.displayName.LocalizeBodyName(); }
			set
			{
				string body = SCANUtil.bodyFromDisplayName(value);

				_terrainPlanet = body;

				currentTerrain = SCANcontroller.getTerrainNode(body);

				if (currentTerrain != null)
				{
					palette.CurrentPalettes = palette.SetCurrentPalettesType(currentTerrain.ColorPal.Kind);

					currentPalette = palette.CurrentPalettes.GetPaletteGroup(currentTerrain.ColorPal.Name);

					_terrainPalette = currentTerrain.ColorPal.Name;
					_terrainPaletteStyle = currentTerrain.ColorPal.Kind.ToString();

					_terrainCurrentMin = currentTerrain.MinTerrain;
					_terrainCurrentMax = currentTerrain.MaxTerrain;
					_terrainClampOn = currentTerrain.ClampTerrain != null;
					_terrainClamp = currentTerrain.ClampTerrain == null ? 0 : (float)currentTerrain.ClampTerrain;
					_terrainDiscrete = currentTerrain.PalDis;
					_terrainReverse = currentTerrain.PalRev;
					_terrainSize = currentTerrain.PalSize;
				}
			}
		}

		public string TerrainPalette
		{
			get { return _terrainPalette; }
			set
			{
				_terrainPalette = value;

				currentPalette = palette.CurrentPalettes.GetPaletteGroup(value);
			}
		}

		public string TerrainPaletteStyle
		{
			get { return _terrainPaletteStyle; }
			set
			{
				_terrainPaletteStyle = value;

				SCANPaletteKind kind = SCANPaletteKind.Diverging;

				try
				{
					kind = (SCANPaletteKind)Enum.Parse(typeof(SCANPaletteKind), value);
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Error in palette style type\n{0}", e);
				}

				palette.CurrentPalettes = palette.SetCurrentPalettesType(kind);

				currentPalette = palette.CurrentPalettes.GetFirstGroup();

				_terrainPalette = currentPalette.PaletteName;
			}
		}

		public bool MapVignette
		{
			get { return _mapVignette; }
			set { _mapVignette = value; }
		}

		public bool BiomeBigMapStockColor
		{
			get { return _biomeBigMapStockColor; }
			set { _biomeBigMapStockColor = value; }
		}

		public bool BiomeBigMapWhiteBorder
		{
			get { return _biomeBigMapWhiteBorder; }
			set { _biomeBigMapWhiteBorder = value; }
		}

		public bool BiomeZoomMapWhiteBorder
		{
			get { return _biomeZoomMapWhiteBorder; }
			set { _biomeZoomMapWhiteBorder = value; }
		}

		public bool BiomeSmallMapStockColor
		{
			get { return _biomeSmallMapStockColor; }
			set { _biomeSmallMapStockColor = value; }
		}

		public bool BiomeSmallMapWhiteBorder
		{
			get { return _biomeSmallMapWhiteBorder; }
			set { _biomeSmallMapWhiteBorder = value; }
		}

		public bool TerrainClampOn
		{
			get { return _terrainClampOn; }
			set { _terrainClampOn = value; }
		}

		public bool TerrainReverse
		{
			get { return _terrainReverse; }
			set { _terrainReverse = value; }
		}

		public bool TerrainDiscrete
		{
			get { return _terrainDiscrete; }
			set { _terrainDiscrete = value; }
		}

		public bool TerrainHasSize
		{
			get { return currentPalette.Kind != SCANPaletteKind.Fixed; }
		}


		public int MapWidth
		{
			get { return _mapWidth; }
			set { _mapWidth = value; }
		}

		public bool UseMapWidth
		{
			get { return _useMapWidth; }
			set { _useMapWidth = value; }
		}

		public bool PixelFiltering
		{
			get { return _pixelFiltering; }
			set { _pixelFiltering = value; }
		}

		public bool NormalMap
		{
			get { return _normalMap; }
			set { _normalMap = value; }
		}

		public bool ColorMap
		{
			get { return _colorMap; }
			set { _colorMap = value; }
		}

		public float NormalOpacity
		{
			get { return _normalOpacity; }
			set { _normalOpacity = value; }
		}

		public float LuminanceReduction
		{
			get { return _luminanceReduction; }
			set { _luminanceReduction = value; }
		}


		public float UnscannedTransparency
		{
			get { return _unscannedTransparency; }
			set { _unscannedTransparency = value; }
		}

		public float BackgroundTransparency
		{
			get { return _backgroundTransparency; }
			set { _backgroundTransparency = value; }
		}

		public float BiomeTransparency
		{
			get { return _biomeTransparency; }
			set { _biomeTransparency = value; }
		}

		public float SlopeCutoff
		{
			get { return _slopeCutoff; }
			set { _slopeCutoff = value; }
		}

		public float ResourceMin
		{
			get { return _resourceMin; }
			set { _resourceMin = value; }
		}

		public float ResourceMax
		{
			get { return _resourceMax; }
			set { _resourceMax = value; }
		}

		public float ResourceTransparency
		{
			get { return _resourceTransparency; }
			set { _resourceTransparency = value; }
		}

		public float TerrainCurrentMin
		{
			get { return _terrainCurrentMin; }
			set { _terrainCurrentMin = value; }
		}

		public float TerrainGlobalMin
		{
			get { return currentTerrain.DefaultMinHeight - SCANconfigLoader.SCANNode.RangeBelowMinHeight; }
		}

		public float TerrainCurrentMax
		{
			get { return _terrainCurrentMax; }
			set { _terrainCurrentMax = value; }
		}

		public float TerrainGlobalMax
		{
			get { return currentTerrain.DefaultMaxHeight + SCANconfigLoader.SCANNode.RangeAboveMaxHeight; }
		}

		public float TerrainClamp
		{
			get { return _terrainClamp; }
			set { _terrainClamp = value; }
		}

		public int TerrainSize
		{
			get { return _terrainSize; }
			set
			{
				_terrainSize = value;
			}
		}

		public int TerrainSizeMin
		{
			get { return 3; }
		}

		public int TerrainSizeMax
		{
			get
			{
				switch (currentTerrain.ColorPal.Kind)
				{
					case SCANPaletteKind.Diverging:
						return 11;
					case SCANPaletteKind.Qualitative:
						return 12;
					case SCANPaletteKind.Sequential:
						return 9;
				}

				return 12;
			}
		}

		public Color MapBackgroundColor
		{
			get { return SCAN_Settings_Config.Instance.MapBackgroundColor; }
		}

		public Color UnscannedColor
		{
			get { return SCAN_Settings_Config.Instance.UnscannedColor; }
		}

		public Color BiomeColorOne
		{
			get { return SCAN_Settings_Config.Instance.LowBiomeColor; }
		}

		public Color BiomeColorTwo
		{
			get { return SCAN_Settings_Config.Instance.HighBiomeColor; }
		}

		public Color SlopeColorOneLo
		{
			get { return SCAN_Settings_Config.Instance.BottomLowSlopeColor; }
		}

		public Color SlopeColorOneHi
		{
			get { return SCAN_Settings_Config.Instance.BottomHighSlopeColor; }
		}

		public Color SlopeColorTwoLo
		{
			get { return SCAN_Settings_Config.Instance.TopLowSlopeColor; }
		}

		public Color SlopeColorTwoHi
		{
			get { return SCAN_Settings_Config.Instance.TopHighSlopeColor; }
		}

		public Color ResourceColorOne
		{
			get { return currentResource.MinColor; }
		}

		public Color ResourceColorTwo
		{
			get { return currentResource.MaxColor; }
		}

		public Texture2D TerrainPaletteOld
		{
			get { return SCANmapLegend.getStaticLegend(currentTerrain); }
		}

		public Texture2D TerrainPaletteNew
		{
			get
			{
				Color32[] c = currentPalette.GetPalette(_terrainSize).ColorsArray;

				if (_terrainReverse)
				{
					c = currentPalette.GetPalette(_terrainSize).ColorsReverse;
				}

				return SCANmapLegend.getStaticLegend(_terrainCurrentMax, _terrainCurrentMin, _terrainCurrentMax - _terrainCurrentMin, _terrainClampOn ? (float?)_terrainClamp : null, _terrainDiscrete, c);
			}
		}

		public IList> TerrainPalettes
		{
			get
			{
				List> values = new List>();

				palette.CurrentPalettes.GenerateSwatches(_terrainSize);

				string[] names = palette.CurrentPalettes.GetGroupNames();

				for (int i = 0; i < palette.CurrentPalettes.Count; i++)
				{
					values.Add(new KeyValuePair(names[i], palette.CurrentPalettes.PaletteSwatch[i]));
				}

				return values;
			}
		}

		public IList Resources
		{
			get { return new List(loadedResources.Select(r => r.DisplayName)); }
		}

		public IList CelestialBodies
		{
			get
			{
				var bodies = FlightGlobals.Bodies.Where(b => b.referenceBody == Planetarium.fetch.Sun && b.referenceBody != b);

				var orderedBodies = bodies.OrderBy(b => b.orbit.semiMajorAxis).ToList();

				List bodyList = SCANUtil.RecursiveCelestialBodies(orderedBodies);

				bool missingHome = true;

				for (int i = bodyList.Count - 1; i >= 0; i--)
				{
					string b = bodyList[i];

					if (b == FlightGlobals.GetHomeBody().displayName.LocalizeBodyName())
					{
						missingHome = false;
						break;
					}
				}

				if (missingHome)
				{
					List missingHomeBodies = SCANUtil.RecursiveCelestialBodies(new List() { FlightGlobals.GetHomeBody() });

					bodyList.InsertRange(0, missingHomeBodies);
				}

				if (HighLogic.LoadedSceneIsFlight)
				{
					for (int i = bodyList.Count - 1; i >= 0; i--)
					{
						string b = bodyList[i];

						if (b != FlightGlobals.currentMainBody.displayName.LocalizeBodyName())
						{
							continue;
						}

						bodyList.RemoveAt(i);
						bodyList.Insert(0, b);
						break;
					}
				}

				bodyList.Add(Planetarium.fetch.Sun.displayName.LocalizeBodyName());

				return bodyList;
			}
		}

		public IList PaletteStyleNames
		{
			get { return new List(palette.GetPaletteKindNames()); }
		}

		public void MapApply(Color background, Color unscanned)
		{
			SCAN_Settings_Config.Instance.MapBackgroundColor = background;
			SCAN_Settings_Config.Instance.UnscannedColor = unscanned;

			SCAN_Settings_Config.Instance.MapVignette = _mapVignette;
			SCAN_Settings_Config.Instance.BackgroundTransparency = _backgroundTransparency / 100;
			SCAN_Settings_Config.Instance.UnscannedTransparency = _unscannedTransparency / 100;

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible)
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}
		}

		public void MapDefault()
		{
			SCAN_Settings_Config.Instance.MapBackgroundColor = palette.grey;
			SCAN_Settings_Config.Instance.UnscannedColor = palette.grey;

			SCAN_Settings_Config.Instance.MapVignette = false;
			SCAN_Settings_Config.Instance.BackgroundTransparency = 0.4f;
			SCAN_Settings_Config.Instance.UnscannedTransparency = 0.4f;

			_mapVignette = false;
			_backgroundTransparency = 40;
			_unscannedTransparency = 100;

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible)
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}
		}

		public void BiomeApply(Color one, Color two)
		{
			SCAN_Settings_Config.Instance.LowBiomeColor = one;
			SCAN_Settings_Config.Instance.HighBiomeColor = two;
			SCANcontroller.controller.lowBiomeColor32 = one;
			SCANcontroller.controller.highBiomeColor32 = two;

			SCAN_Settings_Config.Instance.BigMapStockBiomes = _biomeBigMapStockColor;
			SCAN_Settings_Config.Instance.BigMapBiomeBorder = _biomeBigMapWhiteBorder;
			SCAN_Settings_Config.Instance.ZoomMapBiomeBorder = _biomeZoomMapWhiteBorder;
			SCAN_Settings_Config.Instance.SmallMapStockBiomes = _biomeSmallMapStockColor;
			SCAN_Settings_Config.Instance.SmallMapBiomeBorder = _biomeSmallMapWhiteBorder;
			SCAN_Settings_Config.Instance.BiomeTransparency = _biomeTransparency / 100;

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == "Biome")
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && SCAN_UI_MainMap.Instance.MapType)
			{
				SCAN_UI_MainMap.Instance.resetImages();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == "Biome")
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}
		}

		public void BiomeDefault()
		{
			SCAN_Settings_Config.Instance.LowBiomeColor = palette.xkcd_CamoGreen;
			SCANcontroller.controller.lowBiomeColor32 = palette.xkcd_CamoGreen;
			SCAN_Settings_Config.Instance.HighBiomeColor = palette.xkcd_Marigold;
			SCANcontroller.controller.highBiomeColor32 = palette.xkcd_Marigold;

			SCAN_Settings_Config.Instance.BigMapStockBiomes = true;
			SCAN_Settings_Config.Instance.BigMapBiomeBorder = true;
			SCAN_Settings_Config.Instance.ZoomMapBiomeBorder = true;
			SCAN_Settings_Config.Instance.SmallMapStockBiomes = true;
			SCAN_Settings_Config.Instance.SmallMapBiomeBorder = false;
			SCAN_Settings_Config.Instance.BiomeTransparency = 0.4f;

			_biomeBigMapStockColor = true;
			_biomeBigMapWhiteBorder = true;
			_biomeZoomMapWhiteBorder = true;
			_biomeSmallMapStockColor = true;
			_biomeSmallMapWhiteBorder = false;
			_biomeTransparency = 40;

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == "Biome")
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && SCAN_UI_MainMap.Instance.MapType)
			{
				SCAN_UI_MainMap.Instance.resetImages();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == "Biome")
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}
		}

		public void SlopeApply(Color oneLow, Color oneHigh, Color twoLow, Color twoHigh)
		{
			SCAN_Settings_Config.Instance.BottomLowSlopeColor = oneLow;
			SCAN_Settings_Config.Instance.BottomHighSlopeColor = oneHigh;
			SCAN_Settings_Config.Instance.TopLowSlopeColor = twoLow;
			SCAN_Settings_Config.Instance.TopHighSlopeColor = twoHigh;
			SCANcontroller.controller.lowSlopeColorOne32 = oneLow;
			SCANcontroller.controller.highSlopeColorOne32 = oneHigh;
			SCANcontroller.controller.lowSlopeColorTwo32 = twoLow;
			SCANcontroller.controller.highSlopeColorTwo32 = twoHigh;

			SCAN_Settings_Config.Instance.SlopeCutoff = _slopeCutoff;

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == "Slope")
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == "Slope")
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}
		}

		public void SlopeDefault()
		{
			SCAN_Settings_Config.Instance.BottomLowSlopeColor = palette.xkcd_PukeGreen;
			SCAN_Settings_Config.Instance.BottomHighSlopeColor = palette.xkcd_Lemon;
			SCAN_Settings_Config.Instance.TopLowSlopeColor = palette.xkcd_Lemon;
			SCAN_Settings_Config.Instance.TopHighSlopeColor = palette.xkcd_OrangeRed;
			SCANcontroller.controller.lowSlopeColorOne32 = palette.xkcd_PukeGreen;
			SCANcontroller.controller.highSlopeColorOne32 = palette.xkcd_Lemon;
			SCANcontroller.controller.lowSlopeColorTwo32 = palette.xkcd_Lemon;
			SCANcontroller.controller.highSlopeColorTwo32 = palette.xkcd_OrangeRed;

			SCAN_Settings_Config.Instance.SlopeCutoff = 1;

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == "Slope")
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == "Slope")
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}
		}

		public void ResourceApply(Color one, Color two)
		{
			currentResource.CurrentBody.MinValue = _resourceMin;
			currentResource.CurrentBody.MaxValue = _resourceMax;
			currentResource.MinColor = one;
			currentResource.MaxColor = two;
			currentResource.Transparency = _resourceTransparency;

			SCANcontroller.updateSCANresource(currentResource, false);

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}

			if (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)
			{
				SCAN_UI_Overlay.Instance.Refresh();
			}
		}

		public void ResourceApplyToAll(Color one, Color two)
		{
			currentResource.CurrentBody.MinValue = _resourceMin;
			currentResource.CurrentBody.MaxValue = _resourceMax;
			currentResource.MinColor = one;
			currentResource.MaxColor = two;
			currentResource.Transparency = _resourceTransparency;

			SCANcontroller.updateSCANresource(currentResource, true);

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}

			if (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)
			{
				SCAN_UI_Overlay.Instance.Refresh();
			}
		}

		public void ResourceDefault()
		{
			currentResource.CurrentBody.MinValue = currentResource.CurrentBody.DefaultMinValue;
			currentResource.CurrentBody.MaxValue = currentResource.CurrentBody.DefaultMaxValue;
			currentResource.MinColor = currentResource.DefaultLowColor;
			currentResource.MaxColor = currentResource.DefaultHighColor;
			currentResource.Transparency = currentResource.DefaultTrans;

			_resourceMin = currentResource.CurrentBody.MinValue;
			_resourceMax = currentResource.CurrentBody.MaxValue;
			_resourceTransparency = currentResource.Transparency;

			SCANcontroller.updateSCANresource(currentResource, false);

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}

			if (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)
			{
				SCAN_UI_Overlay.Instance.Refresh();
			}
		}

		public void ResourceDefaultToAll()
		{
			currentResource.CurrentBody.MinValue = currentResource.CurrentBody.DefaultMinValue;
			currentResource.CurrentBody.MaxValue = currentResource.CurrentBody.DefaultMaxValue;
			currentResource.MinColor = currentResource.DefaultLowColor;
			currentResource.MaxColor = currentResource.DefaultHighColor;
			currentResource.Transparency = currentResource.DefaultTrans;

			_resourceMin = currentResource.CurrentBody.MinValue;
			_resourceMax = currentResource.CurrentBody.MaxValue;
			_resourceTransparency = currentResource.Transparency;

			SCANcontroller.updateSCANresource(currentResource, true);

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}

			if (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)
			{
				SCAN_UI_Overlay.Instance.Refresh();
			}
		}

		public void ResourceSaveToConfig(Color one, Color two)
		{
			currentResource.CurrentBody.MinValue = _resourceMin;
			currentResource.CurrentBody.MaxValue = _resourceMax;
			currentResource.MinColor = one;
			currentResource.MaxColor = two;
			currentResource.Transparency = _resourceTransparency;

			SCANcontroller.updateSCANresource(currentResource, false);

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}

			if (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)
			{
				SCAN_UI_Overlay.Instance.Refresh();
			}

			SCANconfigLoader.SCANNode.Save();
		}

		public void TerrainApply()
		{
			currentTerrain.MinTerrain = _terrainCurrentMin;
			currentTerrain.MaxTerrain = _terrainCurrentMax;
			currentTerrain.ClampTerrain = _terrainClampOn ? (float?)_terrainClamp : null;
			currentTerrain.PalDis = _terrainDiscrete;
			currentTerrain.PalRev = _terrainReverse;
			currentTerrain.PalSize = _terrainSize;

			currentTerrain.ColorPal = currentPalette.GetPalette(_terrainSize);

			SCANcontroller.updateTerrainConfig(currentTerrain);

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == "Altimetry")
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && !SCAN_UI_MainMap.Instance.MapType)
			{
				SCAN_UI_MainMap.Instance.resetImages();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == "Altimetry")
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}

			if (SCANcontroller.controller.overlaySelection == 1 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)
			{
				SCAN_UI_Overlay.Instance.Refresh();
			}
		}

		public void TerrainDefault()
		{
			currentTerrain.MinTerrain = currentTerrain.DefaultMinHeight;
			currentTerrain.MaxTerrain = currentTerrain.DefaultMaxHeight;
			currentTerrain.ClampTerrain = currentTerrain.DefaultClampHeight;
			currentTerrain.ColorPal = currentTerrain.DefaultPalette;
			currentTerrain.PalRev = currentTerrain.DefaultReverse;
			currentTerrain.PalDis = currentTerrain.DefaultDiscrete;
			currentTerrain.PalSize = currentTerrain.DefaultPaletteSize;

			SCANcontroller.updateTerrainConfig(currentTerrain);

			Refresh();

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == "Altimetry")
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && !SCAN_UI_MainMap.Instance.MapType)
			{
				SCAN_UI_MainMap.Instance.resetImages();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == "Altimetry")
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}

			if (SCANcontroller.controller.overlaySelection == 1 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)
			{
				SCAN_UI_Overlay.Instance.Refresh();
			}
		}

		public void TerrainSaveToConfig()
		{
			currentTerrain.MinTerrain = _terrainCurrentMin;
			currentTerrain.MaxTerrain = _terrainCurrentMax;
			currentTerrain.ClampTerrain = _terrainClampOn ? (float?)_terrainClamp : null;
			currentTerrain.PalDis = _terrainDiscrete;
			currentTerrain.PalRev = _terrainReverse;
			currentTerrain.PalSize = _terrainSize;

			SCANcontroller.updateTerrainConfig(currentTerrain);

			SCANconfigLoader.SCANNode.Save();

			if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == "Altimetry")
			{
				SCAN_UI_BigMap.Instance.RefreshMap();
			}

			if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && !SCAN_UI_MainMap.Instance.MapType)
			{
				SCAN_UI_MainMap.Instance.resetImages();
			}

			if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == "Altimetry")
			{
				SCAN_UI_ZoomMap.Instance.RefreshMap();
			}

			if (SCANcontroller.controller.overlaySelection == 1 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)
			{
				SCAN_UI_Overlay.Instance.Refresh();
			}
		}
	}
}


================================================
FILE: SCANsat/SCAN_Unity/SCAN_UI_Instruments.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_UI_Instruments - UI control object for SCANsat instruments readout
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using SCANsat.SCAN_Toolbar;
using SCANsat.Unity.Interfaces;
using SCANsat.Unity.Unity;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_UI.UI_Framework;
using SCANsat.SCAN_PartModules;
using FinePrint;
using FinePrint.Utilities;
using KSP.UI;

namespace SCANsat.SCAN_Unity
{
	public class SCAN_UI_Instruments : ISCAN_Instruments
	{
		private bool _isVisible;
		private bool _mouseInAnomaly;
		private SCANremoteView _anomalyView;
		private SCANtype sensors;
		private SCANdata data;
		private SCANanomaly nearest = null;
		private Vessel v;
		private List resourceScanners = new List();
		private List resources = new List();
		private int currentResource;
		private double degreeOffset;
		private double vlat, vlon;
		private float lastUpdate = 0f;
		private float updateInterval = 0.2f;
		private double maxAnomalyDistance = 20000;
		private double slopeAVG;
		private StringBuilder infoString = new StringBuilder();
		private string slopeString;

		private int oldLines;
		private int lines;

		private float rocUpdateTimer = 2;
		private int activeROCCount;

		private bool showAnomaly = true;

		private Texture anomalyTex;

		private SCAN_Instruments uiElement;

		private static SCAN_UI_Instruments instance;

		public static SCAN_UI_Instruments Instance
		{
			get { return instance; }
		}

		public SCAN_UI_Instruments()
		{
			instance = this;

			data = SCANUtil.getData(FlightGlobals.currentMainBody);

			if (data == null)
			{
				data = new SCANdata(FlightGlobals.currentMainBody);
				SCANcontroller.controller.addToBodyData(FlightGlobals.currentMainBody, data);
			}
			planetConstants(FlightGlobals.currentMainBody);

			v = FlightGlobals.ActiveVessel;
			resources = SCANcontroller.setLoadedResourceList();
			resetResourceList();

			GameEvents.onVesselSOIChanged.Add(soiChange);
			GameEvents.onVesselChange.Add(vesselChange);
			GameEvents.onVesselWasModified.Add(vesselChange);
		}

		private void soiChange(GameEvents.HostedFromToAction VC)
		{
			data = SCANUtil.getData(VC.to);
			if (data == null)
			{
				data = new SCANdata(VC.to);
				SCANcontroller.controller.addToBodyData(VC.to, data);
			}
			planetConstants(VC.to);
		}

		private bool vesselChanged = false;

		private void vesselChange(Vessel V)
		{
			v = FlightGlobals.ActiveVessel;
			vesselChanged = true;
		}

		public void SetScale(float scale)
		{
			if (uiElement != null)
			{
				uiElement.SetScale(scale);
			}
		}

		public void ProcessTooltips()
		{
			if (uiElement != null)
			{
				uiElement.ProcessTooltips();
			}
		}

		public void Update()
		{
			if (vesselChanged)
			{
				resetResourceList();
				vesselChanged = false;
			}

			if (!_isVisible || uiElement == null)
			{
				return;
			}

			vlat = SCANUtil.fixLatShift(v.latitude);
			vlon = SCANUtil.fixLonShift(v.longitude);

			sensors = SCANcontroller.controller.activeSensorsOnVessel(v.id, true);

			if (SCANUtil.isCovered(vlon, vlat, data, SCANtype.AltimetryLoRes))
			{
				sensors |= SCANtype.AltimetryLoRes;
			}

			if (SCANUtil.isCovered(vlon, vlat, data, SCANtype.AltimetryHiRes))
			{
				sensors |= SCANtype.AltimetryHiRes;
			}

			if (SCANUtil.isCovered(vlon, vlat, data, SCANtype.Biome))
			{
				sensors |= SCANtype.Biome;
			}

			if (SCANUtil.isCovered(vlon, vlat, data, SCANtype.Anomaly))
			{
				sensors |= SCANtype.Anomaly;
			}

			//for (int i = resources.Count - 1; i >= 0; i--)
			//{
			//    if (SCANUtil.isCovered(vlon, vlat, data, resources[i].SType))
			//        sensors |= resources[i].SType;
			//}

			if (SCANUtil.isCovered(vlon, vlat, data, SCANtype.ResourceLoRes))
			{
				sensors |= SCANtype.ResourceLoRes;
			}

			if (SCANUtil.isCovered(vlon, vlat, data, SCANtype.ResourceHiRes))
			{
				sensors |= SCANtype.ResourceHiRes;
			}

			if (SCANcontroller.controller.SerenityLoaded)
			{
				if (Time.realtimeSinceStartup > rocUpdateTimer)
				{
					rocUpdateTimer = Time.realtimeSinceStartup + 2;
					activeROCCount = ROCCount(true);
				}
				else
				{
					activeROCCount = ROCCount(false);
				}
			}

			infoString.Length = 0;

			locationInfo();
			altInfo();
			biomeInfo();
			resourceInfo();
			anomalyInfo();
			BTDTInfo();

			uiElement.SetAnomalyButtons();

			if (oldLines != lines)
			{
				oldLines = lines;

				if (ResourceButtons)
				{
					uiElement.SetResourceButtons(lines);
				}
			}

			uiElement.UpdateText(infoString.ToString());
		}

		public void OnDestroy()
		{
			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.Destroy(uiElement.gameObject);
			}

			GameEvents.onVesselSOIChanged.Remove(soiChange);
			GameEvents.onVesselChange.Remove(vesselChange);
			GameEvents.onVesselWasModified.Remove(vesselChange);
		}

		public void Open()
		{
			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.DestroyImmediate(uiElement.gameObject);
			}

			uiElement = GameObject.Instantiate(SCAN_UI_Loader.InstrumentsPrefab).GetComponent();

			if (uiElement == null)
			{
				return;
			}

			uiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);

			_isVisible = true;

			uiElement.SetInstruments(this);

			if (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)
			{
				if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
				{
					SCANappLauncher.Instance.UIElement.SetInstrumentToggle(true);
				}
			}
		}

		public void Close()
		{
			_isVisible = false;

			oldLines = 0;

			if (uiElement == null)
			{
				return;
			}

			uiElement.FadeOut();

			if (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)
			{
				if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
				{
					SCANappLauncher.Instance.UIElement.SetInstrumentToggle(false);
				}
			}

			uiElement = null;
		}

		public string Version
		{
			get { return SCANmainMenuLoader.SCANsatVersion; }
		}

		public string Readout
		{
			get { return infoString.ToString(); }
		}

		public string ResourceName
		{
			get { return resources[currentResource].DisplayName; }
		}

		public string TypingText
		{
			get { return ""; }
		}

		public string AnomalyText
		{
			get { return ""; }
		}

		public bool IsVisible
		{
			get { return _isVisible; }
			set
			{
				_isVisible = value;

				if (!value)
				{
					Close();
					infoString.Release();
				}
			}
		}

		public bool ResourceButtons
		{
			get { return SCANcontroller.MasterResourceCount > 1; }
		}

		public bool AnomalyButtons
		{
			get
			{
				if (!SCANcontroller.controller.SerenityLoaded)
				{
					return false;
				}

				if (data == null)
				{
					return false;
				}

				if (nearest == null)
				{
					return false;
				}

				return activeROCCount > 0;
			}
		}

		private int ROCCount(bool update)
		{
			if (data == null)
			{
				return 0;
			}

			List rocs = data.ROCS(update);

			if (rocs == null)
			{
				return 0;
			}

			int c = 0;

			for (int i = rocs.Count - 1; i >= 0; i--)
			{
				if (rocs[i].Known)
				{
					c++;
				}
			}

			return c;
		}

		public bool MouseAnomaly
		{
			get { return _mouseInAnomaly; }
			set { _mouseInAnomaly = value; }
		}

		public bool TooltipsOn
		{
			get { return SCAN_Settings_Config.Instance.WindowTooltips; }
		}

		public float Scale
		{
			get { return SCAN_Settings_Config.Instance.UIScale; }
		}

		public Texture AnomalyCamera
		{
			get { return null; }
		}

		public Canvas TooltipCanvas
		{
			get { return UIMasterController.Instance.tooltipCanvas; }
		}

		public Vector2 Position
		{
			get { return SCAN_Settings_Config.Instance.InstrumentsPosition; }
			set { SCAN_Settings_Config.Instance.InstrumentsPosition = value; }
		}

		public void ClampToScreen(RectTransform rect)
		{
			UIMasterController.ClampToScreen(rect, Vector2.zero);
		}

		public void NextResource()
		{
			currentResource += 1;

			if (currentResource >= resources.Count)
			{
				currentResource = 0;
			}
		}

		public void PreviousResource()
		{
			currentResource -= 1;

			if (currentResource < 0)
			{
				currentResource = resources.Count - 1;
			}
		}

		public void NextAnomaly()
		{
			showAnomaly = !showAnomaly;
		}

		private void locationInfo()
		{
			infoString.AppendFormat("Lat: {0}°, Lon: {1}°", vlat.ToString("F2"), vlon.ToString("F2"));

			lines = 1;

			for (int i = data.Waypoints.Count - 1; i >= 0; i--)
			{
				SCANwaypoint p = data.Waypoints[i];

				if (p.LandingTarget)
				{
					double distance = SCANUtil.waypointDistance(vlat, vlon, v.altitude, p.Latitude, p.Longitude, v.altitude, data.Body);
					if (distance <= 15000)
					{
						infoString.AppendLine();
						infoString.AppendFormat("Target Dist: {0}m", distance.ToString("N1"));
						lines++;
					}
					continue;
				}

				if (p.Band == FlightBand.NONE)
				{
					continue;
				}

				if (p.Root != null)
				{
					if (p.Root.ContractState != Contracts.Contract.State.Active)
					{
						continue;
					}
				}

				if (p.Param != null)
				{
					if (p.Param.State != Contracts.ParameterState.Incomplete)
					{
						continue;
					}
				}

				double range = waypointRange(p);

				if (SCANUtil.waypointDistance(vlat, vlon, v.altitude, p.Latitude, p.Longitude, v.altitude, data.Body) <= range)
				{
					infoString.AppendLine();
					infoString.AppendFormat("Waypoint: {0}", p.Name);
					lines++;
					break;
				}
			}
		}

		private void altInfo()
		{
			double h = v.altitude;
			double pqs = 0;
			if (v.mainBody.pqsController != null)
			{
				pqs = v.PQSAltitude();
				if (pqs > 0 || !v.mainBody.ocean)
				{
					h -= pqs;
				}
			}
			if (h < 0)
			{
				h = v.altitude;
			}

			bool drawSlope = false;

			switch (v.situation)
			{
				case Vessel.Situations.LANDED:
				case Vessel.Situations.PRELAUNCH:
					infoString.AppendLine();
					infoString.AppendFormat("Terrain: {0}m", pqs.ToString("N1"));
					lines++;
					drawSlope = true;
					break;
				case Vessel.Situations.SPLASHED:
					double d = Math.Abs(pqs) - Math.Abs(h);
					if ((sensors & SCANtype.Altimetry) != SCANtype.Nothing)
					{
						infoString.AppendLine();
						infoString.AppendFormat("Depth: {0}", SCANuiUtil.distanceString(Math.Abs(d), 10000));
						lines++;
					}
					else
					{
						d = ((int)(d / 100)) * 100;
						infoString.AppendLine();
						infoString.AppendFormat("Depth: {0}", SCANuiUtil.distanceString(Math.Abs(d), 10000));
						lines++;
					}
					drawSlope = false;
					break;
				default:
					if (h < 1000 || (sensors & SCANtype.AltimetryHiRes) != SCANtype.Nothing)
					{
						infoString.AppendLine();
						infoString.AppendFormat("Altitude: {0}", SCANuiUtil.distanceString(h, 100000));
						lines++;
						drawSlope = true;
					}
					else if ((sensors & SCANtype.AltimetryLoRes) != SCANtype.Nothing)
					{
						h = ((int)(h / 500)) * 500;
						infoString.AppendLine();
						infoString.AppendFormat("Altitude: {0}", SCANuiUtil.distanceString(h, 100000));
						lines++;
						drawSlope = false;
					}
					break;
			}

			if (drawSlope)
			{
				//Calculate slope less frequently; the rapidly changing value makes it difficult to read otherwise
				if (v.mainBody.pqsController != null)
				{
					float deltaTime = 1f;
					if (Time.deltaTime != 0)
					{
						deltaTime = TimeWarp.deltaTime / Time.deltaTime;
					}

					if (deltaTime > 5)
					{
						deltaTime = 5;
					}

					if (((Time.time * deltaTime) - lastUpdate) > updateInterval)
					{
						lastUpdate = Time.time;

						slopeAVG = SCANUtil.slope(pqs, v.mainBody, vlon, vlat, degreeOffset);
						slopeString = string.Format("Slope: {0}°", slopeAVG.ToString("F2"));
					}

					infoString.AppendLine();
					infoString.Append(slopeString);
					lines++;
				}
			}
		}

		private void biomeInfo()
		{
			if ((sensors & SCANtype.Biome) != SCANtype.Nothing && v.mainBody.BiomeMap != null)
			{
				infoString.AppendLine();
				infoString.AppendFormat("Biome: {0}", SCANUtil.getBiomeDisplayName(v.mainBody, vlon, vlat));
				lines++;
			}
		}

		private void resourceInfo()
		{
			if (v.mainBody.pqsController == null)
			{
				return;
			}

			if (SCAN_Settings_Config.Instance.RequireNarrowBand)
			{
				bool tooHigh = false;
				bool scanner = false;

				for (int i = resourceScanners.Count - 1; i >= 0; i--)
				{
					SCANresourceDisplay s = resourceScanners[i];

					if (s == null)
					{
						continue;
					}

					if (s.ResourceName != resources[currentResource].Name)
					{
						continue;
					}

					if (ResourceUtilities.GetAltitude(v) > s.MaxAbundanceAltitude && !v.Landed)
					{
						tooHigh = true;
						continue;
					}

					scanner = true;
					tooHigh = false;
					break;
				}

				resourceLabel(resources[currentResource], tooHigh, scanner);
			}
			else
			{
				resourceLabel(resources[currentResource], false, true);
			}
		}

		private void resourceLabel(SCANresourceGlobal r, bool high, bool onboard)
		{
			if ((sensors & SCANtype.ResourceHiRes) != SCANtype.Nothing)
			{
				if (high || !onboard)
				{
					infoString.AppendLine();
					infoString.AppendFormat("{0}: {1}", r.DisplayName, SCANUtil.ResourceOverlay(vlat, vlon, r.Name, v.mainBody, SCAN_Settings_Config.Instance.BiomeLock).ToString("P0"));
				}
				else
				{
					infoString.AppendLine();
					infoString.AppendFormat("{0}: {1}", r.DisplayName, SCANUtil.ResourceOverlay(vlat, vlon, r.Name, v.mainBody, SCAN_Settings_Config.Instance.BiomeLock).ToString("P2"));
				}
			}
			else if ((sensors & SCANtype.ResourceLoRes) != SCANtype.Nothing)
			{
				infoString.AppendLine();
				infoString.AppendFormat("{0}: {1}", r.DisplayName, SCANuiUtil.LoResourceGroup(SCANUtil.ResourceOverlay(vlat, vlon, r.Name, v.mainBody, SCAN_Settings_Config.Instance.BiomeLock)));
			}
			else if (ResourceButtons)
			{
				infoString.AppendLine();
				infoString.AppendFormat("{0}: No Data", r.DisplayName);
			}
		}

		private void anomalyInfo()
		{
			nearest = null;
			double nearest_dist = -1;

			for (int i = data.Anomalies.Length - 1; i >= 0; i--)
			{
				SCANanomaly a = data.Anomalies[i];

				if (!a.Known && !a.Detail)
				{
					continue;
				}

				double d = (a.Mod.transform.position - v.transform.position).magnitude;

				if (d < nearest_dist || nearest_dist < 0)
				{
					if (d < maxAnomalyDistance)
					{
						nearest = a;
						nearest_dist = d;
					}
				}
			}

			if ((showAnomaly || activeROCCount <= 0) && nearest != null)
			{
				infoString.AppendLine();

				if (nearest.Detail && nearest.Known)
				{
					infoString.Append(string.Format("{0}: {1}", nearest.Name, SCANuiUtil.distanceString(nearest_dist, 2000)));
				}
				else
				{
					if (nearest.Detail)
					{
						infoString.Append(nearest.Name);
					}
					else if (nearest.Known)
					{
						infoString.Append(string.Format("Unknown Anomaly: {0}", SCANuiUtil.distanceString(nearest_dist, 2000)));
					}
				}
			}
			else if (SCANcontroller.controller.SerenityLoaded && activeROCCount > 0)
			{
				infoString.AppendLine();

				infoString.AppendFormat("{0} Features Detected", activeROCCount.ToString());
			}
		}

		private void BTDTInfo()
		{
			if ((sensors & SCANtype.AnomalyDetail) == SCANtype.Nothing)
			{
				uiElement.SetDetailState(false);

				if (_anomalyView != null)
				{
					_anomalyView.free();
				}

				_anomalyView = null;

				return;
			}

			if (activeROCCount <= 0 && (nearest == null || !nearest.Detail || nearest.Mod == null))
			{
				uiElement.SetDetailState(false);

				if (_anomalyView != null)
				{
					_anomalyView.free();
				}

				_anomalyView = null;

				return;
			}

			if ((showAnomaly || activeROCCount <= 0) && nearest != null)
			{
				if (_anomalyView == null)
				{
					_anomalyView = new SCANremoteView();
					_anomalyView.Initialize(320, 240);
					_anomalyView.setup(nearest.Mod.gameObject);
				}

				if (!_anomalyView.valid(nearest.Mod.gameObject))
				{
					uiElement.SetDetailState(false);

					if (_anomalyView != null)
					{
						_anomalyView.free();
					}

					_anomalyView = null;

					return;
				}
			}
			else if (SCANcontroller.controller.SerenityLoaded && activeROCCount > 0)
			{
				if (_anomalyView == null)
				{
					_anomalyView = new SCANremoteView();
					_anomalyView.Initialize(320, 240);
					_anomalyView.setup(data.ROCS(true), v);
				}

				if (!_anomalyView.validROC())
				{
					uiElement.SetDetailState(false);

					if (_anomalyView != null)
					{
						_anomalyView.free();
					}

					_anomalyView = null;

					return;
				}
			}
			else
			{
				uiElement.SetDetailState(false);

				if (_anomalyView != null)
				{
					_anomalyView.free();
				}

				_anomalyView = null;

				return;
			}

			uiElement.SetDetailState(true);

			anomalyTex = _anomalyView.getTexture();

			uiElement.UpdateAnomaly(anomalyTex);

			uiElement.UpdateAnomalyText(_anomalyView.getInfoString());

			if ((showAnomaly || activeROCCount <= 0) && nearest != null)
			{
				uiElement.UpdateAnomalyName(_anomalyView.getAnomalyDataString(_mouseInAnomaly, nearest.Known));
			}
			else
			{
				uiElement.UpdateAnomalyName(_anomalyView.getAnomalyDataString(_mouseInAnomaly, false));
			}
		}

		private string distanceString(double dist)
		{
			if (dist < 5000)
			{
				return string.Format("{0}m", dist.ToString("N1"));
			}

			return string.Format("{0}km", (dist / 1000).ToString("N3"));
		}

		private double waypointRange(SCANwaypoint p)
		{
			double min = ContractDefs.Survey.MinimumTriggerRange;
			double max = ContractDefs.Survey.MaximumTriggerRange;

			switch (p.Band)
			{
				case FlightBand.GROUND:
					return min;
				case FlightBand.LOW:
					return (min + max) / 2;
				case FlightBand.HIGH:
					return max;
				default:
					return max;
			}
		}

		private void planetConstants(CelestialBody b)
		{
			double circum = b.Radius * 2 * Math.PI;
			double eqDistancePerDegree = circum / 360;
			degreeOffset = 5 / eqDistancePerDegree;
		}

		public void resetResourceList()
		{
			resourceScanners = new List();

			if (v == null)
			{
				return;
			}

			foreach (SCANresourceDisplay s in v.FindPartModulesImplementing())
			{
				if (s == null)
				{
					continue;
				}

				if (resourceScanners.Contains(s))
				{
					continue;
				}

				resourceScanners.Add(s);
			}
		}

		public void ResetPosition()
		{
			SCAN_Settings_Config.Instance.InstrumentsPosition = new Vector2(100, -500);

			if (uiElement != null)
			{
				uiElement.SetPosition(SCAN_Settings_Config.Instance.InstrumentsPosition);
			}
		}
	}
}


================================================
FILE: SCANsat/SCAN_Unity/SCAN_UI_Loader.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_UI_Loader - Script for loading in all UI objects
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using SCANsat.SCAN_Data;
using SCANsat.Unity;
using SCANsat.Unity.Unity;
using SCANsat.SCAN_Palettes;
using KSP.UI;
using KSP.UI.Screens;
using KSP.Localization;
using TMPro;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;

namespace SCANsat.SCAN_Unity
{
	[KSPAddon(KSPAddon.Startup.MainMenu, true)]
	public class SCAN_UI_Loader : MonoBehaviour
	{
		private const string prefabAssetName = "scan_prefabs.scan";
		private const string unitySkinAssetName = "scan_unity_skin.scan";
		private const string iconAssetName = "scan_icons.scan";
		private const string shadersAssetName = "scan_shaders.scan";

		private static bool loaded;
		private static bool skinLoaded;
		private static bool prefabsLoaded;
		private static bool spritesLoaded;
		private static bool iconsLoaded;
		private static bool shadersLoaded;
		private static bool tmpProcessed;
		private static bool tmpInputProcessed;
		private static bool tooltipsProcessed;
		private static bool prefabsProcessed;
		private static bool clearLoaded;
		private static bool toggleLoaded;
		private static bool appLoaded;

		private static UISkinDef _unitySkinDef;

		private static Sprite _podIcon;
		private static Sprite _planeIcon;
		private static Sprite _probeIcon;
		private static Sprite _debrisIcon;
		private static Sprite _baseIcon;
		private static Sprite _stationIcon;
		private static Sprite _landerIcon;
		private static Sprite _roverIcon;
		private static Sprite _relayIcon;
		private static Sprite _asteroidIcon;
		private static Sprite _evaIcon;
		private static Sprite _planetIcon;
		private static Sprite _mysteryIcon;
		private static Sprite _flagIcon;
		private static Sprite _scienceControllerIcon;
		private static Sprite _apMarker;
		private static Sprite _peMarker;
		private static Sprite _maneuverMarker;
		private static Sprite _encounterMarker;
		private static Sprite _exitMarker;
		private static Sprite _anomalyIcon;
		private static Sprite _rocIcon;
		private static Sprite _waypointIcon;

		private static Sprite _clearSprite;
		private static Sprite _toggleNormal;
		private static Sprite _toggleHover;
		private static Sprite _toggleActive;
		private static Sprite _toggleOn;
		private static Sprite _toggleOnHover;
		private static Sprite _toggleOnActive;
		private static Sprite _unityToggleOnHover;

		private static Sprite _appButtonNormal;
		private static Sprite _appButtonHover;
		private static Sprite _appButtonActive;
		private static Sprite _appButtonDisabled;
		private static Sprite _appBackground;

		private static Sprite _kspTooltipBackground;
		private static Sprite _unityTooltipBackground;

		private static Sprite _smallMapAppIcon;
		private static Sprite _bigMapAppIcon;

		private static Sprite _mechJebIcon;

		private static Shader _edgeDetectShader;

		private static GameObject[] loadedPrefabs;

		private static GameObject _mainMapPrefab;
		private static GameObject _bigMapPrefab;
		private static GameObject _zoomMapPrefab;
		private static GameObject _instrumentsPrefab;
		private static GameObject _overlayPrefab;
		private static GameObject _settingsPrefab;
		private static GameObject _toolbarPrefab;
		private static GameObject _tooltipPrefab;

		public static GameObject MainMapPrefab
		{
			get { return _mainMapPrefab; }
		}

		public static GameObject BigMapPrefab
		{
			get { return _bigMapPrefab; }
		}

		public static GameObject ZoomMapPrefab
		{
			get { return _zoomMapPrefab; }
		}

		public static GameObject InstrumentsPrefab
		{
			get { return _instrumentsPrefab; }
		}

		public static GameObject OverlayPrefab
		{
			get { return _overlayPrefab; }
		}

		public static GameObject SettingsPrefab
		{
			get { return _settingsPrefab; }
		}

		public static GameObject ToolbarPrefab
		{
			get { return _toolbarPrefab; }
		}

		public static UISkinDef UnitySkinDef
		{
			get { return _unitySkinDef; }
		}

		public static Sprite PodIcon
		{
			get { return _podIcon; }
		}

		public static Sprite PlaneIcon
		{
			get { return _planeIcon; }
		}

		public static Sprite ProbeIcon
		{
			get { return _probeIcon; }
		}

		public static Sprite DebrisIcon
		{
			get { return _debrisIcon; }
		}

		public static Sprite BaseIcon
		{
			get { return _baseIcon; }
		}

		public static Sprite StationIcon
		{
			get { return _stationIcon; }
		}

		public static Sprite LanderIcon
		{
			get { return _landerIcon; }
		}

		public static Sprite RoverIcon
		{
			get { return _roverIcon; }
		}

		public static Sprite RelayIcon
		{
			get { return _relayIcon; }
		}

		public static Sprite AsteroidIcon
		{
			get { return _asteroidIcon; }
		}

		public static Sprite EVAIcon
		{
			get { return _evaIcon; }
		}

		public static Sprite PlanetIcon
		{
			get { return _planetIcon; }
		}

		public static Sprite MysteryIcon
		{
			get { return _mysteryIcon; }
		}

		public static Sprite FlagIcon
		{
			get { return _flagIcon; }
		}

		public static Sprite APMarker
		{
			get { return _apMarker; }
		}

		public static Sprite PEMarker
		{
			get { return _peMarker; }
		}

		public static Sprite ManeuverMarker
		{
			get { return _maneuverMarker; }
		}

		public static Sprite EncounterMarker
		{
			get { return _encounterMarker; }
		}

		public static Sprite ExitMarker
		{
			get { return _exitMarker; }
		}

		public static Sprite AnomalyIcon
		{
			get { return _anomalyIcon; }
		}

		public static Sprite ROCIcon
		{
			get { return _rocIcon; }
		}

		public static Sprite WaypointIcon
		{
			get { return _waypointIcon; }
		}

		public static Sprite VesselIcon(VesselType type)
		{
			switch (type)
			{
				case VesselType.Base:
					return _baseIcon;
				case VesselType.Debris:
					return _debrisIcon;
				case VesselType.EVA:
					return _evaIcon;
				case VesselType.Flag:
					return _flagIcon;
				case VesselType.Lander:
					return _landerIcon;
				case VesselType.Plane:
					return _planeIcon;
				case VesselType.Probe:
					return _probeIcon;
				case VesselType.Relay:
					return _relayIcon;
				case VesselType.Rover:
					return _roverIcon;
				case VesselType.Ship:
					return _podIcon;
				case VesselType.SpaceObject:
					return _asteroidIcon;
				case VesselType.Station:
					return _stationIcon;
				case VesselType.Unknown:
					return _mysteryIcon;
				case VesselType.DeployedScienceController:
				case VesselType.DeployedSciencePart:
					return _scienceControllerIcon;
				default:
					return _mysteryIcon;
			}
		}

		public static Sprite SmallMapAppIcon
		{
			get { return _smallMapAppIcon; }
		}

		public static Sprite BigMapAppIcon
		{
			get { return _bigMapAppIcon; }
		}

		public static Sprite MechJebIcon
		{
			get { return _mechJebIcon; }
		}

		public static Shader EdgeDetectShader
		{
			get { return _edgeDetectShader; }
		}

		public static void ResetUIStyle()
		{
			if (loadedPrefabs != null)
			{
				processUIPrefabs();
			}
		}

		private static string path;

		private void Awake()
		{
			if (loaded)
			{
				Destroy(gameObject);
				return;
			}

			path = KSPUtil.ApplicationRootPath + "GameData/SCANsat/Resources/";

			SCANUtil.SCANlog("Processing SCANsat asset bundles...");

			StartCoroutine(loadResources());
		}

		private IEnumerator loadResources()
		{
			while (ApplicationLauncher.Instance == null)
			{
				yield return null;
			}

			while (SCAN_Settings_Config.Instance == null)
			{
				yield return null;
			}

			if (!shadersLoaded)
			{
				loadShaders();
			}

			if (!spritesLoaded)
			{
				loadTextures();
			}

			if (!skinLoaded)
			{
				loadUnitySkin();
			}

			if (!iconsLoaded)
			{
				loadIcons();
			}

			if (!prefabsLoaded)
			{
				loadPrefabBundle();
			}

			palette.CurrentPalettes = palette.SetCurrentPalettesType(SCANPaletteKind.Diverging);

			if (shadersLoaded && spritesLoaded && skinLoaded && iconsLoaded && prefabsLoaded)
			{
				SCANUtil.SCANlog("All SCANsat asset bundles loaded");
			}
			else
			{
				SCANUtil.SCANlog("Error in loading SCANsat asset bundles\nSome UI elements may be non-functional");
			}

			loaded = true;
		}

		private static void loadShaders()
		{
			AssetBundle shaders = AssetBundle.LoadFromFile(path + shadersAssetName);

			if (shaders == null)
			{
				return;
			}

			Shader[] loadedShaders = shaders.LoadAllAssets();

			if (loadedShaders == null)
			{
				return;
			}

			for (int i = loadedShaders.Length - 1; i >= 0; i--)
			{
				Shader s = loadedShaders[i];

				if (s.name == "Hidden/EdgeDetectColors")
				{
					_edgeDetectShader = s;
				}
			}

			SCANUtil.SCANlog("Shader asset bundle loaded; using platform bundle: {0}", shadersAssetName);

			//shaders.Unload(false);

			shadersLoaded = true;
		}

		private static void loadTextures()
		{
			if (!clearLoaded)
			{
				Texture2D clear = new Texture2D(1, 1);
				clear.SetPixel(1, 1, palette.clear);
				clear.Apply();

				_clearSprite = Sprite.Create(clear, new Rect(0, 0, 1, 1), new Vector2(0.5f, 0.5f));

				clearLoaded = true;
			}

			if (!toggleLoaded)
			{
				UnityEngine.GUISkin skin = HighLogic.Skin;

				if (skin == null)
				{
					return;
				}

				if (skin.toggle.normal.background != null)
				{
					if (skin.toggle.normal.background.width > 33 && skin.toggle.normal.background.height > 33)
					{
						_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));
					}
					else
					{
						_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));
					}
				}

				if (skin.toggle.hover.background != null)
				{
					if (skin.toggle.hover.background.width > 33 && skin.toggle.hover.background.height > 33)
					{
						_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));
					}
					else
					{
						_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));
					}
				}

				if (skin.toggle.active.background != null)
				{
					if (skin.toggle.active.background.width > 33 && skin.toggle.active.background.height > 33)
					{
						_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));
					}
					else
					{
						_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));
					}
				}

				if (skin.toggle.onNormal.background != null)
				{
					if (skin.toggle.onNormal.background.width > 33 && skin.toggle.onNormal.background.height > 33)
					{
						_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));
					}
					else
					{
						_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));
					}
				}

				if (skin.toggle.onHover.background != null)
				{
					if (skin.toggle.onHover.background.width > 33 && skin.toggle.onHover.background.height > 33)
					{
						_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));
					}
					else
					{
						_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));
					}
				}

				if (skin.toggle.onActive.background != null)
				{
					if (skin.toggle.onActive.background.width > 33 && skin.toggle.onActive.background.height > 33)
					{
						_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));
					}
					else
					{
						_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));
					}
				}

				toggleLoaded = true;
			}

			if (!appLoaded)
			{
				if (ApplicationLauncher.Instance != null)
				{
					UIRadioButton button = ApplicationLauncher.Instance.listItemPrefab.toggleButton;

					_appButtonNormal = button.stateFalse.normal;
					_appButtonHover = button.stateTrue.highlight;
					_appButtonActive = button.stateTrue.pressed;
					_appButtonDisabled = button.stateTrue.disabled;

					Image background = ApplicationLauncher.Instance.listItemPrefab.GetComponent();

					if (background != null)
					{
						_appBackground = background.sprite;
					}

					appLoaded = true;
				}
			}

			if (clearLoaded && toggleLoaded && appLoaded)
			{
				spritesLoaded = true;
			}
		}

		private static void loadUnitySkin()
		{
			_unitySkinDef = new UISkinDef();

			SkinInit(_unitySkinDef);

			AssetBundle skin = AssetBundle.LoadFromFile(path + unitySkinAssetName);

			if (skin == null)
			{
				return;
			}

			Sprite[] skinSprites = skin.LoadAllAssets();

			if (skinSprites == null)
			{
				return;
			}

			for (int i = skinSprites.Length - 1; i >= 0; i--)
			{
				Sprite s = skinSprites[i];

				if (s.name == "window")
				{
					_unitySkinDef.window.normal.background = s;
				}
				else if (s.name == "box")
				{
					_unitySkinDef.box.normal.background = s;
				}
				else if (s.name == "button")
				{
					_unitySkinDef.button.normal.background = s;
				}
				else if (s.name == "button hover")
				{
					_unitySkinDef.button.highlight.background = s;
				}
				else if (s.name == "button on")
				{
					_unitySkinDef.button.active.background = s;
				}
				else if (s.name == "toggle_border")
				{
					_unitySkinDef.toggle.normal.background = s;
				}
				else if (s.name == "SCAN_Toggle_Hover_Border")
				{
					_unitySkinDef.toggle.highlight.background = s;
				}
				else if (s.name == "toggle active_border")
				{
					_unitySkinDef.toggle.active.background = s;
				}
				else if (s.name == "SCAN_Toggle_Border")
				{
					_unitySkinDef.toggle.disabled.background = s;
				}
				else if (s.name == "SCAN_Toggle_On_Hover_Border")
				{
					_unityToggleOnHover = s;
				}
				else if (s.name == "textfield")
				{
					_unitySkinDef.textField.normal.background = s;
				}
				else if (s.name == "textfield hover")
				{
					_unitySkinDef.textField.highlight.background = s;
				}
				else if (s.name == "textfield on")
				{
					_unitySkinDef.textField.active.background = s;
				}
				else if (s.name == "horizontal scrollbar")
				{
					_unitySkinDef.horizontalScrollbar.normal.background = s;
				}
				else if (s.name == "horizontal scrollbar thumb")
				{
					_unitySkinDef.horizontalScrollbarThumb.normal.background = s;
				}
				else if (s.name == "vertical scrollbar")
				{
					_unitySkinDef.verticalScrollbar.normal.background = s;
				}
				else if (s.name == "vertical scrollbar thumb")
				{
					_unitySkinDef.verticalScrollbarThumb.normal.background = s;
				}
				else if (s.name == "horizontalslider")
				{
					_unitySkinDef.horizontalSlider.normal.background = s;
				}
				else if (s.name == "slider thumb")
				{
					_unitySkinDef.horizontalSliderThumb.normal.background = s;
				}
				else if (s.name == "slider thumb hover")
				{
					_unitySkinDef.horizontalSliderThumb.highlight.background = s;
				}
				else if (s.name == "slider thumb active")
				{
					_unitySkinDef.horizontalSliderThumb.active.background = s;
				}
				else if (s.name == "verticalslider")
				{
					_unitySkinDef.verticalSlider.normal.background = s;
				}
				else if (s.name == "slider thumb")
				{
					_unitySkinDef.verticalSliderThumb.normal.background = s;
				}
				else if (s.name == "slider thumb hover")
				{
					_unitySkinDef.verticalSliderThumb.highlight.background = s;
				}
				else if (s.name == "slider thumb active")
				{
					_unitySkinDef.verticalSliderThumb.active.background = s;
				}
				else if (s.name == "tooltip")
				{
					_unityTooltipBackground = s;
				}
			}

			SCANUtil.SCANlog("Unity skin asset bundle loaded");

			//images.Unload(false);

			skinLoaded = true;
		}

		private static void SkinInit(UISkinDef skin)
		{
			skin.window = new UIStyle();
			skin.box = new UIStyle();
			skin.button = new UIStyle();
			skin.toggle = new UIStyle();
			skin.textField = new UIStyle();
			skin.horizontalScrollbar = new UIStyle();
			skin.horizontalScrollbarThumb = new UIStyle();
			skin.verticalScrollbar = new UIStyle();
			skin.verticalScrollbarThumb = new UIStyle();
			skin.horizontalSlider = new UIStyle();
			skin.horizontalSliderThumb = new UIStyle();
			skin.verticalSlider = new UIStyle();
			skin.verticalSliderThumb = new UIStyle();

			skin.window.normal = new UIStyleState();
			skin.box.normal = new UIStyleState();
			skin.button.normal = new UIStyleState();
			skin.button.highlight = new UIStyleState();
			skin.button.active = new UIStyleState();
			skin.toggle.normal = new UIStyleState();
			skin.toggle.highlight = new UIStyleState();
			skin.toggle.active = new UIStyleState();
			skin.toggle.disabled = new UIStyleState();
			skin.textField.normal = new UIStyleState();
			skin.textField.highlight = new UIStyleState();
			skin.textField.active = new UIStyleState();
			skin.horizontalScrollbar.normal = new UIStyleState();
			skin.horizontalScrollbarThumb.normal = new UIStyleState();
			skin.verticalScrollbar.normal = new UIStyleState();
			skin.verticalScrollbarThumb.normal = new UIStyleState();
			skin.horizontalSlider.normal = new UIStyleState();
			skin.horizontalSliderThumb.normal = new UIStyleState();
			skin.horizontalSliderThumb.highlight = new UIStyleState();
			skin.horizontalSliderThumb.active = new UIStyleState();
			skin.verticalSlider.normal = new UIStyleState();
			skin.verticalSliderThumb.normal = new UIStyleState();
			skin.verticalSliderThumb.highlight = new UIStyleState();
			skin.verticalSliderThumb.active = new UIStyleState();
		}

		private static void loadIcons()
		{
			AssetBundle icons = AssetBundle.LoadFromFile(path + iconAssetName);

			if (icons == null)
			{
				return;
			}

			Sprite[] iconSprites = icons.LoadAllAssets();

			if (iconSprites == null)
			{
				return;
			}

			for (int i = iconSprites.Length - 1; i >= 0; i--)
			{
				Sprite s = iconSprites[i];

				if (s.name == "PodIcon")
				{
					_podIcon = s;
				}
				else if (s.name == "PlaneIcon")
				{
					_planeIcon = s;
				}
				else if (s.name == "ProbeIcon")
				{
					_probeIcon = s;
				}
				else if (s.name == "DebrisIcon")
				{
					_debrisIcon = s;
				}
				else if (s.name == "StationIcon")
				{
					_stationIcon = s;
				}
				else if (s.name == "LanderIcon")
				{
					_landerIcon = s;
				}
				else if (s.name == "RoverIcon")
				{
					_roverIcon = s;
				}
				else if (s.name == "RelayIcon")
				{
					_relayIcon = s;
				}
				else if (s.name == "AsteroidIcon")
				{
					_asteroidIcon = s;
				}
				else if (s.name == "EVAIcon")
				{
					_evaIcon = s;
				}
				else if (s.name == "BaseIcon")
				{
					_baseIcon = s;
				}
				else if (s.name == "PlanetIcon")
				{
					_planetIcon = s;
				}
				else if (s.name == "MysteryIcon")
				{
					_mysteryIcon = s;
				}
				else if (s.name == "FlagIcon")
				{
					_flagIcon = s;
				}
				else if (s.name == "DeployedScienceIcon")
				{
					_scienceControllerIcon = s;
				}
				else if (s.name == "APMarker")
				{
					_apMarker = s;
				}
				else if (s.name == "PEMarker")
				{
					_peMarker = s;
				}
				else if (s.name == "ManeuverMarker")
				{
					_maneuverMarker = s;
				}
				else if (s.name == "EncounterMarker")
				{
					_encounterMarker = s;
				}
				else if (s.name == "ExitMarker")
				{
					_exitMarker = s;
				}
				else if (s.name == "AnomalyIconOutline")
				{
					_anomalyIcon = s;
				}
				else if (s.name == "SCAN_TargetIcon")
				{
					_rocIcon = s;
				}
				else if (s.name == "SCAN_WayPointIcon_Outline")
				{
					_waypointIcon = s;
				}
				else if (s.name == "SCANsat_AppLauncherSmall_Icon")
				{
					_smallMapAppIcon = s;
				}
				else if (s.name == "SCANsat_AppLauncherLarge_Icon")
				{
					_bigMapAppIcon = s;
				}
				else if (s.name == "SCAN_MechJebIcon")
				{
					_mechJebIcon = s;
				}
				else if (s.name == "KSP_Tooltip")
				{
					_kspTooltipBackground = s;
				}
			}

			SCANUtil.SCANlog("Icon asset bundle loaded");

			iconsLoaded = true;
		}

		private static void loadPrefabBundle()
		{
			AssetBundle prefabs = AssetBundle.LoadFromFile(path + prefabAssetName);

			if (prefabs == null)
			{
				return;
			}

			loadedPrefabs = prefabs.LoadAllAssets();

			if (loadedPrefabs == null)
			{
				return;
			}

			if (!tmpProcessed)
			{
				processTMPPrefabs();
			}

			if (!tooltipsProcessed && _tooltipPrefab != null)
			{
				processTooltips();
			}

			if (!prefabsProcessed)
			{
				processUIPrefabs();
			}

			if (tmpProcessed && tooltipsProcessed && prefabsProcessed)
			{
				SCANUtil.SCANlog("UI prefab bundle loaded and processed");
			}
			else
			{
				SCANUtil.SCANlog("Error in processing UI prefab bundle\nSome UI elements may be affected or non-functional");
			}

			//prefabs.Unload(false);

			prefabsLoaded = true;
		}

		private static void processTMPPrefabs()
		{
			for (int i = loadedPrefabs.Length - 1; i >= 0; i--)
			{
				GameObject o = loadedPrefabs[i];

				if (o.name == "SCAN_MainMap")
				{
					_mainMapPrefab = o;
				}
				else if (o.name == "SCAN_BigMap")
				{
					_bigMapPrefab = o;
				}
				else if (o.name == "SCAN_ZoomMap")
				{
					_zoomMapPrefab = o;
				}
				else if (o.name == "SCAN_Instruments")
				{
					_instrumentsPrefab = o;
				}
				else if (o.name == "SCAN_Overlay")
				{
					_overlayPrefab = o;
				}
				else if (o.name == "SCAN_Settings")
				{
					_settingsPrefab = o;
				}
				else if (o.name == "SCAN_Toolbar")
				{
					_toolbarPrefab = o;
				}
				else if (o.name == "SCAN_Tooltip")
				{
					_tooltipPrefab = o;
				}

				if (o != null)
				{
					processTMP(o);

					if (!tmpInputProcessed)
					{
						processInputFields(o);
					}
				}
			}

			tmpProcessed = true;
			tmpInputProcessed = true;
		}

		private static void processTMP(GameObject obj)
		{
			TextHandler[] handlers = obj.GetComponentsInChildren(true);

			if (handlers == null)
			{
				return;
			}

			for (int i = 0; i < handlers.Length; i++)
			{
				TextHandler handler = handlers[i];

				if (handler.LocalizedText)
				{
					handler.SetLocalText(GetStringWithName(handler.LocalizeName));
				}

				TMProFromText(handler);
			}
		}

		private static void TMProFromText(TextHandler handler)
		{
			if (handler == null)
			{
				return;
			}

			Text text = handler.GetComponent();

			if (text == null)
			{
				return;
			}

			string t = text.text;
			Color c = text.color;
			int i = text.fontSize;
			bool r = text.raycastTarget;
			FontStyles sty = TMPProUtil.FontStyle(text.fontStyle);
			TextAlignmentOptions align = TMPProUtil.TextAlignment(text.alignment);
			float spacing = text.lineSpacing;
			GameObject obj = text.gameObject;

			MonoBehaviour.DestroyImmediate(text);

			SCAN_TextMeshPro tmp = obj.AddComponent();

			tmp.text = t;
			tmp.color = c;
			tmp.fontSize = i;
			tmp.raycastTarget = r;
			tmp.alignment = align;
			tmp.fontStyle = sty;
			tmp.lineSpacing = spacing;

			tmp.font = UISkinManager.TMPFont; //Resources.Load("Fonts/Calibri SDF", typeof(TMP_FontAsset)) as TMP_FontAsset;
			if (handler.Outline)
			{
				tmp.fontSharedMaterial = Resources.Load("Fonts/Materials/Calibri Dropshadow Outline", typeof(Material)) as Material;

				//TMP throws an error if we try to set the outline variables before accessing the font material
				//Anything that calls the font property's Get method seems to be sufficient
				if (tmp.fontMaterial) { }

				tmp.outlineColor = palette.black;
				tmp.outlineWidth = handler.OutlineWidth;
			}
			else
			{
				tmp.fontSharedMaterial = Resources.Load("Fonts/Materials/Calibri Dropshadow", typeof(Material)) as Material;
			}

			tmp.enableWordWrapping = true;

			tmp.isOverlay = false;
			tmp.richText = true;
		}

		private static void processInputFields(GameObject obj)
		{
			InputHandler[] handlers = obj.GetComponentsInChildren(true);

			if (handlers == null)
			{
				return;
			}

			for (int i = 0; i < handlers.Length; i++)
			{
				TMPInputFromInput(handlers[i]);
			}
		}

		private static void TMPInputFromInput(InputHandler handler)
		{
			if (handler == null)
			{
				return;
			}

			InputField input = handler.GetComponent();

			if (input == null)
			{
				return;
			}

			int limit = input.characterLimit;
			TMP_InputField.ContentType content = GetTMPContentType(input.contentType);
			float caretBlinkRate = input.caretBlinkRate;
			int caretWidth = input.caretWidth;
			Color selectionColor = input.selectionColor;
			GameObject obj = input.gameObject;

			RectTransform viewport = handler.GetComponentInChildren().rectTransform;
			SCAN_TextMeshPro placholder = handler.GetComponentsInChildren()[0];
			SCAN_TextMeshPro textComponent = handler.GetComponentsInChildren()[1];

			if (viewport == null || placholder == null || textComponent == null)
			{
				return;
			}

			MonoBehaviour.DestroyImmediate(input);

			SCAN_TMP_InputField tmp = obj.AddComponent();

			tmp.textViewport = viewport;
			tmp.placeholder = placholder;
			tmp.textComponent = textComponent;

			tmp.characterLimit = limit;
			tmp.contentType = content;
			tmp.caretBlinkRate = caretBlinkRate;
			tmp.caretWidth = caretWidth;
			tmp.selectionColor = selectionColor;

			tmp.readOnly = false;
			tmp.shouldHideMobileInput = false;

			tmp.fontAsset = UISkinManager.TMPFont;
		}

		private static TMP_InputField.ContentType GetTMPContentType(InputField.ContentType type)
		{
			switch (type)
			{
				case InputField.ContentType.Alphanumeric:
					return TMP_InputField.ContentType.Alphanumeric;
				case InputField.ContentType.Autocorrected:
					return TMP_InputField.ContentType.Autocorrected;
				case InputField.ContentType.Custom:
					return TMP_InputField.ContentType.Custom;
				case InputField.ContentType.DecimalNumber:
					return TMP_InputField.ContentType.DecimalNumber;
				case InputField.ContentType.EmailAddress:
					return TMP_InputField.ContentType.EmailAddress;
				case InputField.ContentType.IntegerNumber:
					return TMP_InputField.ContentType.IntegerNumber;
				case InputField.ContentType.Name:
					return TMP_InputField.ContentType.Name;
				case InputField.ContentType.Password:
					return TMP_InputField.ContentType.Password;
				case InputField.ContentType.Pin:
					return TMP_InputField.ContentType.Pin;
				case InputField.ContentType.Standard:
					return TMP_InputField.ContentType.Standard;
				default:
					return TMP_InputField.ContentType.Standard;
			}
		}

		private static void processTooltips()
		{
			for (int i = loadedPrefabs.Length - 1; i >= 0; i--)
			{
				GameObject o = loadedPrefabs[i];

				TooltipHandler[] handlers = o.GetComponentsInChildren(true);

				if (handlers == null)
				{
					return;
				}

				for (int j = 0; j < handlers.Length; j++)
				{
					processTooltip(handlers[j]);
				}
			}

			tooltipsProcessed = true;
		}

		private static void processTooltip(TooltipHandler handler)
		{
			if (handler == null)
			{
				return;
			}

			handler.Prefab = _tooltipPrefab;
			handler.TooltipText = GetStringWithName(handler.TooltipName);

			toggleTooltip(handler, SCAN_Settings_Config.Instance.WindowTooltips);
		}

		private static string GetStringWithName(string tag)
		{
			return Localizer.Format("#autoLOC_SCANsat_" + tag);
		}

		public static void ToggleTooltips(bool isOn)
		{
			for (int i = loadedPrefabs.Length - 1; i >= 0; i--)
			{
				GameObject o = loadedPrefabs[i];

				TooltipHandler[] handlers = o.GetComponentsInChildren(true);

				if (handlers == null)
				{
					return;
				}

				for (int j = 0; j < handlers.Length; j++)
				{
					toggleTooltip(handlers[j], isOn);
				}
			}
		}

		private static void toggleTooltip(TooltipHandler handler, bool isOn)
		{
			if (handler == null)
			{
				return;
			}

			handler.IsActive = isOn && !handler.HelpTip;
		}

		private static void processUIPrefabs()
		{
			for (int i = loadedPrefabs.Length - 1; i >= 0; i--)
			{
				GameObject o = loadedPrefabs[i];

				if (o != null)
				{
					processUIComponents(o);
				}
			}

			prefabsProcessed = true;
		}

		private static void processUIComponents(GameObject obj)
		{
			SCAN_Style[] styles = obj.GetComponentsInChildren(true);

			if (styles == null)
			{
				return;
			}

			for (int i = 0; i < styles.Length; i++)
			{
				processComponents(styles[i]);
			}
		}

		private static void processComponents(SCAN_Style style)
		{
			if (style == null)
			{
				return;
			}

			UISkinDef skin = UISkinManager.defaultSkin;

			Sprite KSPWindow = skin.window.normal.background;

			bool stock = SCAN_Settings_Config.Instance == null || SCAN_Settings_Config.Instance.StockUIStyle || _unitySkinDef == null;

			if (!stock)
			{
				skin = _unitySkinDef;
			}

			if (skin == null)
			{
				return;
			}

			switch (style.StlyeType)
			{
				case SCAN_Style.StyleTypes.Window:
					style.setImage(skin.window.normal.background);
					break;
				case SCAN_Style.StyleTypes.KSPWindow:
					style.setImage(_appBackground);
					break;
				case SCAN_Style.StyleTypes.Box:
					style.setImage(skin.box.normal.background);
					break;
				case SCAN_Style.StyleTypes.HiddenBox:
					style.setImage(stock ? skin.box.normal.background : _clearSprite);
					break;
				case SCAN_Style.StyleTypes.Button:
					style.setButton(skin.button.normal.background, skin.button.highlight.background, skin.button.active.background, skin.button.active.background);
					break;
				case SCAN_Style.StyleTypes.HiddenButton:
					style.setButton(_clearSprite, skin.button.highlight.background, skin.button.active.background, skin.button.active.background);
					break;
				case SCAN_Style.StyleTypes.AppButton:
					style.setToggleButton(_appButtonNormal, _appButtonHover, _appButtonActive, _appButtonDisabled, _appButtonHover);
					break;
				case SCAN_Style.StyleTypes.Toggle:
					if (stock)
					{
						style.setToggle(_toggleNormal, _toggleHover, _toggleActive, _toggleActive, _toggleOn, _toggleOnHover);
					}
					else
					{
						style.setToggle(skin.toggle.normal.background, skin.toggle.highlight.background, skin.toggle.active.background, skin.toggle.active.background, skin.toggle.disabled.background, _unityToggleOnHover);
					}

					break;
				case SCAN_Style.StyleTypes.ToggleButton:
					style.setToggleButton(skin.button.normal.background, skin.button.highlight.background, skin.button.active.background, skin.button.active.background, skin.button.active.background);
					break;
				case SCAN_Style.StyleTypes.KSPToggle:
					style.setToggle(_toggleNormal, _toggleHover, _toggleActive, _toggleActive, _toggleOn, _toggleOnHover);
					break;
				case SCAN_Style.StyleTypes.HorizontalSlider:
					style.setSlider(skin.horizontalSlider.normal.background, skin.horizontalSliderThumb.normal.background, skin.horizontalSliderThumb.highlight.background, skin.horizontalSliderThumb.active.background, skin.horizontalSliderThumb.active.background);
					break;
				case SCAN_Style.StyleTypes.VerticalScrollbar:
					style.setScrollbar(skin.verticalScrollbar.normal.background, skin.verticalScrollbarThumb.normal.background);
					break;
				case SCAN_Style.StyleTypes.Tooltip:
					style.setImage(stock ? _kspTooltipBackground : _unityTooltipBackground);
					break;
				case SCAN_Style.StyleTypes.VerticalSlider:
					style.setButton(skin.horizontalSliderThumb.normal.background, skin.horizontalSliderThumb.highlight.background, skin.horizontalSliderThumb.active.background, skin.horizontalSliderThumb.active.background);
					break;
				case SCAN_Style.StyleTypes.Popup:
					style.setImage(stock ? _kspTooltipBackground : _unityTooltipBackground);
					break;
				default:
					break;
			}
		}
	}
}


================================================
FILE: SCANsat/SCAN_Unity/SCAN_UI_MainMap.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_UI_MainMap - UI control object for SCANsat main map
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using SCANsat.SCAN_Toolbar;
using SCANsat.Unity.Interfaces;
using SCANsat.Unity;
using SCANsat.Unity.Unity;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_UI.UI_Framework;
using KSP.UI;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;

namespace SCANsat.SCAN_Unity
{
	public class SCAN_UI_MainMap : ISCAN_MainMap
	{
		private bool _isVisible;

		private Vessel v;
		private SCANdata data;
		private SCANtype sensors;
		private Texture2D map_small;
		private Color32[] cols_height_map_small;
		private Color32[] biomeCache;
		private bool biomeBuilding;
		private double[] biomeIndex = new double[360];
		private int scanline;
		private int scanstep;
		private int updateInterval = 60;
		private int lastUpdate;
		private bool flip;

		double sunLonCenter;
		double sunLatCenter;
		double gamma;

		private SCAN_MainMap uiElement;

		private static SCAN_UI_MainMap instance;

		public static SCAN_UI_MainMap Instance
		{
			get { return instance; }
		}

		public SCAN_UI_MainMap()
		{
			instance = this;

			map_small = new Texture2D(360, 180, TextureFormat.ARGB32, false);
			cols_height_map_small = new Color32[360];
			biomeCache = new Color32[360 * 180];

			if (palette.small_redline == null)
			{
				palette.small_redline = new Color32[360];
				for (int i = 0; i < 360; i++)
				{
					palette.small_redline[i] = palette.Red;
				}
			}

			GameEvents.onVesselSOIChanged.Add(soiChange);
			GameEvents.onVesselChange.Add(vesselChange);
			GameEvents.onVesselWasModified.Add(vesselChange);

			if (SCANcontroller.controller.mainMapVisible)
			{
				Open();
			}
		}

		public void OnDestroy()
		{
			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.Destroy(uiElement.gameObject);
			}

			if (map_small != null)
			{
				GameObject.Destroy(map_small);
				map_small = null;
			}

			GameEvents.onVesselSOIChanged.Remove(soiChange);
			GameEvents.onVesselChange.Remove(vesselChange);
			GameEvents.onVesselWasModified.Remove(vesselChange);
		}

		private void soiChange(GameEvents.HostedFromToAction VC)
		{
			v = FlightGlobals.ActiveVessel;

			data = SCANUtil.getData(v.mainBody);

			if (data == null)
			{
				data = new SCANdata(v.mainBody);
				SCANcontroller.controller.addToBodyData(v.mainBody, data);
			}

			resetImages();

			if (uiElement != null)
			{
				uiElement.RefreshVessels();
			}
		}

		bool vesselChanged = false;

		private void vesselChange(Vessel V)
		{
			v = FlightGlobals.ActiveVessel;
			vesselChanged = true;
		}

		private void RefreshAfterVesselChanged()
		{
			vesselChanged = false;
			
			// TODO: make this smarter about not doing work if it doesn't need to

			data = SCANUtil.getData(v.mainBody);

			if (data == null)
			{
				data = new SCANdata(v.mainBody);
				SCANcontroller.controller.addToBodyData(v.mainBody, data);
			}

			resetImages();

			if (uiElement != null)
			{
				uiElement.RefreshVessels();
			}
		}

		public void SetScale(float scale)
		{
			if (uiElement != null)
			{
				uiElement.SetScale(scale);
			}
		}

		public void ProcessTooltips()
		{
			if (uiElement != null)
			{
				uiElement.ProcessTooltips();
			}
		}

		public void Update()
		{
			if (vesselChanged)
			{
				RefreshAfterVesselChanged();
			}

			if (!_isVisible || data == null)
			{
				return;
			}

			sensors = SCANcontroller.controller.activeSensorsOnVessel(v.id, false);

			if (!SCANcontroller.controller.mainMapBiome)
			{
				if (SCAN_Settings_Config.Instance.MapGenerationSpeed > 1)
				{
					drawPartialMap(sensors, false);
				}

				drawPartialMap(sensors, true);
			}
			else
			{
				if (SCAN_Settings_Config.Instance.MapGenerationSpeed > 1)
				{
					drawBiomeMap(sensors, false);
				}

				drawBiomeMap(sensors, true);
			}

			lastUpdate++;

			if (uiElement == null)
			{
				return;
			}

			if (lastUpdate < updateInterval)
			{
				return;
			}

			lastUpdate = 0;
			flip = !flip;

			SCANcontroller.SCANsensor s;

			s = SCANcontroller.controller.getSensorStatus(v, SCANtype.AltimetryLoRes);
			if (s == null)
			{
				uiElement.UpdateLoColor(palette.grey);
			}
			else if (s.inDarkness)
			{
				uiElement.UpdateLoColor(palette.c_bad);
			}
			else if (!s.inRange)
			{
				uiElement.UpdateLoColor(palette.c_bad);
			}
			else if (!s.bestRange && flip)
			{
				uiElement.UpdateLoColor(palette.c_bad);
			}
			else
			{
				uiElement.UpdateLoColor(palette.c_good);
			}

			s = SCANcontroller.controller.getSensorStatus(v, SCANtype.AltimetryHiRes);
			if (s == null)
			{
				uiElement.UpdateHiColor(palette.grey);
			}
			else if (s.inDarkness)
			{
				uiElement.UpdateHiColor(palette.c_bad);
			}
			else if (!s.inRange)
			{
				uiElement.UpdateHiColor(palette.c_bad);
			}
			else if (!s.bestRange && flip)
			{
				uiElement.UpdateHiColor(palette.c_bad);
			}
			else
			{
				uiElement.UpdateHiColor(palette.c_good);
			}

			s = SCANcontroller.controller.getSensorStatus(v, SCANtype.Biome);
			if (s == null)
			{
				uiElement.UpdateMultiColor(palette.grey);
			}
			else if (s.inDarkness)
			{
				uiElement.UpdateMultiColor(palette.c_bad);
			}
			else if (!s.inRange)
			{
				uiElement.UpdateMultiColor(palette.c_bad);
			}
			else if (!s.bestRange && flip)
			{
				uiElement.UpdateMultiColor(palette.c_bad);
			}
			else
			{
				uiElement.UpdateMultiColor(palette.c_good);
			}

			s = SCANcontroller.controller.getSensorStatus(v, SCANtype.VisualLoRes);
			if (s == null)
			{
				uiElement.UpdateVisLoColor(palette.grey);
			}
			else if (s.inDarkness)
			{
				uiElement.UpdateVisHiColor(palette.c_bad);
			}
			else if (!s.inRange)
			{
				uiElement.UpdateVisLoColor(palette.c_bad);
			}
			else if (!s.bestRange && flip)
			{
				uiElement.UpdateVisLoColor(palette.c_bad);
			}
			else
			{
				uiElement.UpdateVisLoColor(palette.c_good);
			}

			s = SCANcontroller.controller.getSensorStatus(v, SCANtype.VisualHiRes);
			if (s == null)
			{
				uiElement.UpdateVisHiColor(palette.grey);
			}
			else if (s.inDarkness)
			{
				uiElement.UpdateVisHiColor(palette.c_bad);
			}
			else if (!s.inRange)
			{
				uiElement.UpdateVisHiColor(palette.c_bad);
			}
			else if (!s.bestRange && flip)
			{
				uiElement.UpdateVisHiColor(palette.c_bad);
			}
			else
			{
				uiElement.UpdateVisHiColor(palette.c_good);
			}

			//         if (ResourcesOn)
			//{
			s = SCANcontroller.controller.getSensorStatus(v, SCANtype.ResourceLoRes);
			if (s == null)
			{
				uiElement.UpdateM700Color(palette.grey);
			}
			else if (s.inDarkness)
			{
				uiElement.UpdateM700Color(palette.c_bad);
			}
			else if (!s.inRange)
			{
				uiElement.UpdateM700Color(palette.c_bad);
			}
			else if (!s.bestRange && flip)
			{
				uiElement.UpdateM700Color(palette.c_bad);
			}
			else
			{
				uiElement.UpdateM700Color(palette.c_good);
			}

			s = SCANcontroller.controller.getSensorStatus(v, SCANtype.ResourceHiRes);
			if (s == null)
			{
				uiElement.UpdateOreColor(palette.grey);
			}
			else if (s.inDarkness)
			{
				uiElement.UpdateOreColor(palette.c_bad);
			}
			else if (!s.inRange)
			{
				uiElement.UpdateOreColor(palette.c_bad);
			}
			else if (!s.bestRange && flip)
			{
				uiElement.UpdateOreColor(palette.c_bad);
			}
			else
			{
				uiElement.UpdateOreColor(palette.c_good);
			}
			//}

			if (sensors != SCANtype.Nothing)
			{
				uiElement.UpdatePercentage(string.Format("{0}%", SCANUtil.getCoveragePercentage(data, sensors).ToString("N1")));
			}
			else
			{
				uiElement.UpdatePercentage("0%");
			}
		}

		public string Version
		{
			get { return SCANmainMenuLoader.SCANsatVersion; }
		}

		public void Open()
		{
			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.DestroyImmediate(uiElement.gameObject);
			}

			v = FlightGlobals.ActiveVessel;

			data = SCANUtil.getData(v.mainBody);

			if (data == null)
			{
				data = new SCANdata(v.mainBody);
				SCANcontroller.controller.addToBodyData(v.mainBody, data);
			}

			uiElement = GameObject.Instantiate(SCAN_UI_Loader.MainMapPrefab).GetComponent();

			if (uiElement == null)
			{
				return;
			}

			uiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);

			uiElement.setMap(this);

			resetImages();

			uiElement.UpdateMapTexture(map_small);

			_isVisible = true;
			SCANcontroller.controller.mainMapVisible = true;

			if (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar)
			{
				if (SCAN_Settings_Config.Instance.ToolbarMenu)
				{
					if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
					{
						SCANappLauncher.Instance.UIElement.SetMainMapToggle(true);
					}
				}
				else
				{
					if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.SCANAppButton != null)
					{
						SCANappLauncher.Instance.SCANAppButton.SetTrue(false);
					}
				}
			}
		}

		public void Close()
		{
			_isVisible = false;
			SCANcontroller.controller.mainMapVisible = false;

			if (uiElement == null)
			{
				return;
			}

			uiElement.FadeOut();

			if (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar)
			{
				if (SCAN_Settings_Config.Instance.ToolbarMenu)
				{
					if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
					{
						SCANappLauncher.Instance.UIElement.SetMainMapToggle(false);
					}
				}
				else
				{
					if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.SCANAppButton != null)
					{
						SCANappLauncher.Instance.SCANAppButton.SetFalse(false);
					}
				}
			}

			uiElement = null;
		}

		public bool IsVisible
		{
			get { return _isVisible; }
			set
			{
				_isVisible = value;

				if (!value)
				{
					Close();
				}
			}
		}

		public bool Color
		{
			get { return SCANcontroller.controller.mainMapColor; }
			set
			{
				SCANcontroller.controller.mainMapColor = value;

				resetImages();
			}
		}

		public bool TerminatorToggle
		{
			get { return SCANcontroller.controller.mainMapTerminator; }
			set
			{
				SCANcontroller.controller.mainMapTerminator = value;

				resetImages();
			}
		}

		public bool MapType
		{
			get { return SCANcontroller.controller.mainMapBiome; }
			set
			{
				SCANcontroller.controller.mainMapBiome = value;

				resetImages();
			}
		}

		public bool Minimized
		{
			get { return SCANcontroller.controller.mainMapMinimized; }
			set { SCANcontroller.controller.mainMapMinimized = value; }
		}

		public bool TooltipsOn
		{
			get { return SCAN_Settings_Config.Instance.WindowTooltips; }
		}

		public bool MapGenerating
		{
			get { return data == null ? false : !data.Built || data.MapBuilding || data.OverlayBuilding || data.ControllerBuilding; }
		}

		public bool ResourcesOn
		{
			get { return SCAN_Settings_Config.Instance.DisableStockResource || !SCAN_Settings_Config.Instance.InstantScan; }
		}

		public float Scale
		{
			get { return SCAN_Settings_Config.Instance.UIScale; }
		}

		public Canvas TooltipCanvas
		{
			get { return UIMasterController.Instance.tooltipCanvas; }
		}

		public Vector2 Position
		{
			get { return SCAN_Settings_Config.Instance.MainMapPosition; }
			set { SCAN_Settings_Config.Instance.MainMapPosition = value; }
		}

		public Sprite VesselType(Guid id)
		{
			SCANcontroller.SCANvessel v;

			if (!SCANcontroller.controller.knownVessels.TryGetValue(id, out v))
			{
				v = null;
			}

			Vessel sv;

			if (v == null)
			{
				if (FlightGlobals.ActiveVessel.id == id)
				{
					sv = FlightGlobals.ActiveVessel;
				}
				else
				{
					return SCAN_UI_Loader.MysteryIcon;
				}
			}
			else
			{
				sv = v.vessel;
			}

			return SCAN_UI_Loader.VesselIcon(sv.vesselType);
		}

		public Vector2 VesselPosition(Guid id)
		{
			SCANcontroller.SCANvessel v;

			if (!SCANcontroller.controller.knownVessels.TryGetValue(id, out v))
			{
				v = null;
			}

			Vessel sv;

			if (v == null)
			{
				if (FlightGlobals.ActiveVessel.id == id)
				{
					sv = FlightGlobals.ActiveVessel;
				}
				else
				{
					return new Vector2();
				}
			}
			else
			{
				sv = v.vessel;
			}

			double lon = SCANUtil.fixLon(sv.longitude);
			double lat = SCANUtil.fixLat(sv.latitude);

			return new Vector2((float)lon, (float)lat);
		}

		public Dictionary VesselInfoList
		{
			get
			{
				Dictionary vessels = new Dictionary();

				vessels.Add(v.id, new MapLabelInfo()
				{
					label = Minimized ? "" : "1",
					name = v.vesselName,
					image = VesselType(v.id),
					pos = VesselPosition(v.id),
					baseColor = Color ? palette.white : palette.cb_skyBlue,
					flashColor = palette.cb_yellow,
					flash = true,
					width = 18,
					show = true
				});

				int count = 2;

				for (int i = 0; i < SCANcontroller.controller.knownVessels.Count; i++)
				{
					SCANcontroller.SCANvessel sv = SCANcontroller.controller.knownVessels.At(i);

					if (sv.vessel == v)
					{
						continue;
					}

					if (sv.vessel.mainBody != v.mainBody)
					{
						continue;
					}

					vessels.Add(sv.vessel.id, new MapLabelInfo()
					{
						label = Minimized ? "" : count.ToString(),
						name = sv.vessel.vesselName,
						image = VesselType(sv.vessel.id),
						pos = VesselPosition(sv.vessel.id),
						baseColor = Color ? palette.white : palette.cb_skyBlue,
						flash = false,
						width = 18,
						show = true
					});

					count++;
				}

				return vessels;
			}
		}

		public void ClampToScreen(RectTransform rect)
		{
			UIMasterController.ClampToScreen(rect, Vector2.zero);
		}

		public void OpenBigMap()
		{
			if (SCAN_UI_BigMap.Instance.IsVisible)
			{
				SCAN_UI_BigMap.Instance.Close();
			}
			else
			{
				SCAN_UI_BigMap.Instance.Open();
			}
		}

		public void OpenZoomMap()
		{
			if (SCAN_UI_ZoomMap.Instance.IsVisible)
			{
				SCAN_UI_ZoomMap.Instance.Close();
			}
			else
			{
				SCAN_UI_ZoomMap.Instance.Open(true);
			}
		}

		public void OpenOverlay()
		{
			if (SCAN_UI_Overlay.Instance.IsVisible)
			{
				SCAN_UI_Overlay.Instance.Close();
			}
			else
			{
				SCAN_UI_Overlay.Instance.Open();
			}
		}

		public void OpenInstruments()
		{
			if (SCAN_UI_Instruments.Instance.IsVisible)
			{
				SCAN_UI_Instruments.Instance.Close();
			}
			else
			{
				SCAN_UI_Instruments.Instance.Open();
			}
		}

		public void OpenSettings()
		{
			if (SCAN_UI_Settings.Instance.IsVisible)
			{
				SCAN_UI_Settings.Instance.Close();
			}
			else
			{
				SCAN_UI_Settings.Instance.Open();
			}
		}

		public void ChangeToVessel(Guid id)
		{
			if (v == null || v.id == id)
			{
				return;
			}

			SCANcontroller.SCANvessel sv;

			if (!SCANcontroller.controller.knownVessels.TryGetValue(id, out sv))
			{
				sv = null;
			}

			if (sv == null)
			{
				return;
			}

			if (!HighLogic.CurrentGame.Parameters.Flight.CanSwitchVesselsFar)
			{
				return;
			}

			if (FlightGlobals.SetActiveVessel(sv.vessel))
			{
				if (MapView.MapIsEnabled)
				{
					MapView.ExitMapView();
				}

				FlightInputHandler.SetNeutralControls();
			}
		}

		public string VesselInfo(Guid id)
		{
			SCANcontroller.SCANvessel sv;

			if (!SCANcontroller.controller.knownVessels.TryGetValue(id, out sv))
			{
				sv = null;
			}

			Vessel ves;

			if (sv == null)
			{
				if (FlightGlobals.ActiveVessel.id == id)
				{
					ves = FlightGlobals.ActiveVessel;
				}
				else
				{
					return "";
				}
			}
			else
			{
				ves = sv.vessel;
			}

			float lon = (float)SCANUtil.fixLonShift(ves.longitude);
			float lat = (float)SCANUtil.fixLatShift(ves.latitude);

			string units = "";
			if (SCANcontroller.controller.mainMapBiome)
			{
				if (SCANUtil.isCovered(lon, lat, data, SCANtype.Biome))
				{
					units = string.Format("; {0}", SCANUtil.getBiomeDisplayName(data.Body, lon, lat));
				}
			}
			else
			{
				if (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry))
				{
					if (SCANUtil.isCovered(lon, lat, data, SCANtype.AltimetryHiRes))
					{
						float alt = ves.heightFromTerrain;

						if (alt < 0)
						{
							alt = (float)ves.altitude;
						}

						units = string.Format("; {0}", SCANuiUtil.distanceString(alt, 100000, 100000000));
					}
					else
					{
						float alt = ves.heightFromTerrain;

						if (alt < 0)
						{
							alt = (float)ves.altitude;
						}

						alt = ((int)(alt / 500)) * 500;

						units = string.Format("; {0}", SCANuiUtil.distanceString(alt, 100000, 100000000));
					}
				}
			}

			return string.Format("({0}°,{1}°{2})", lat.ToString("F1"), lon.ToString("F1"), units);
		}

		private void drawPartialMap(SCANtype type, bool apply)
		{
			bool pqsController = data.Body.pqsController != null;

			if (data.ControllerBuilding || data.OverlayBuilding)
			{
				return;
			}

			if (!data.Built)
			{
				if (!data.MapBuilding)
				{
					scanline = 0;
					scanstep = 0;
				}

				data.MapBuilding = true;
				data.generateHeightMap(ref scanline, ref scanstep, 360);
				return;
			}

			if (scanline == 0 && TerminatorToggle)
			{
				double sunLon = data.Body.GetLongitude(Planetarium.fetch.Sun.position, false);
				double sunLat = data.Body.GetLatitude(Planetarium.fetch.Sun.position, false);

				sunLatCenter = SCANUtil.fixLatShift(sunLat);

				if (sunLatCenter >= 0)
				{
					sunLonCenter = SCANUtil.fixLonShift(sunLon + 90);
				}
				else
				{
					sunLonCenter = SCANUtil.fixLonShift(sunLon - 90);
				}

				gamma = Math.Abs(sunLatCenter) < 0.55 ? 100 : Math.Tan(Mathf.Deg2Rad * (90 - Math.Abs(sunLatCenter)));
			}

			for (int ilon = 0; ilon < 360; ilon++)
			{
				if (!pqsController)
				{
					cols_height_map_small[ilon] = palette.lerp(palette.black, palette.white, UnityEngine.Random.value);
					continue;
				}

				Color32 c = palette.Grey;
				float val = data.HeightMapValue(data.Body.flightGlobalsIndex, ilon, scanline);
				if (SCANUtil.isCovered(ilon, scanline, data, SCANtype.Altimetry))
				{
					if (SCANUtil.isCovered(ilon, scanline, data, SCANtype.AltimetryHiRes))
					{
						c = palette.heightToColor(val, Color, data.TerrainConfig);
					}
					else
					{
						c = palette.heightToColor(val, false, data.TerrainConfig);
					}
				}
				else
				{
					if (scanline % 30 == 0 && ilon % 3 == 0)
					{
						c = palette.White;
					}
					else if (ilon % 30 == 0 && scanline % 3 == 0)
					{
						c = palette.White;
					}
				}

				if (TerminatorToggle)
				{
					double crossingLat = Math.Atan(gamma * Math.Sin(Mathf.Deg2Rad * (ilon - 180) - Mathf.Deg2Rad * sunLonCenter));

					if (sunLatCenter >= 0)
					{
						if (scanline - 90 < crossingLat * Mathf.Rad2Deg)
						{
							c = palette.lerp(c, palette.Black, 0.5f);
						}
					}
					else
					{
						if (scanline - 90 > crossingLat * Mathf.Rad2Deg)
						{
							c = palette.lerp(c, palette.Black, 0.5f);
						}
					}
				}
				else
				{
					if (type != SCANtype.Nothing)
					{
						if (!SCANUtil.isCoveredByAll(ilon, scanline, data, type))
						{
							c = palette.lerp(c, palette.Black, 0.5f);
						}
					}
				}

				cols_height_map_small[ilon] = c;
			}

			map_small.SetPixels32(0, scanline, 360, 1, cols_height_map_small);

			if (apply)
			{
				if (scanline < 179)
				{
					map_small.SetPixels32(0, scanline + 1, 360, 1, palette.small_redline);
				}
			}

			scanline++;

			if (apply || scanline >= 180)
			{
				map_small.Apply();
			}

			if (scanline >= 180)
			{
				scanline = 0;
			}
		}

		private void drawBiomeMap(SCANtype type, bool apply)
		{
			bool biomeMap = data.Body.BiomeMap != null;

			if (biomeBuilding && biomeMap)
			{
				buildBiomeCache();
			}

			if (scanline == 0 && TerminatorToggle)
			{
				double sunLon = data.Body.GetLongitude(Planetarium.fetch.Sun.position, false);
				double sunLat = data.Body.GetLatitude(Planetarium.fetch.Sun.position, false);

				sunLatCenter = SCANUtil.fixLatShift(sunLat);

				if (sunLatCenter >= 0)
				{
					sunLonCenter = SCANUtil.fixLonShift(sunLon + 90);
				}
				else
				{
					sunLonCenter = SCANUtil.fixLonShift(sunLon - 90);
				}

				gamma = Math.Abs(sunLatCenter) < 0.55 ? 100 : Math.Tan(Mathf.Deg2Rad * (90 - Math.Abs(sunLatCenter)));
			}

			for (int ilon = 0; ilon < 360; ilon++)
			{
				if (!biomeMap)
				{
					cols_height_map_small[ilon] = palette.lerp(palette.black, palette.white, UnityEngine.Random.value);
					continue;
				}

				Color32 c = biomeCache[scanline * 360 + ilon];
				if (!SCANUtil.isCovered(ilon, scanline, data, SCANtype.Biome))
				{
					c = palette.Grey;
				}

				if (TerminatorToggle)
				{
					double crossingLat = Math.Atan(gamma * Math.Sin(Mathf.Deg2Rad * (ilon - 180) - Mathf.Deg2Rad * sunLonCenter));

					if (sunLatCenter >= 0)
					{
						if (scanline - 90 < crossingLat * Mathf.Rad2Deg)
						{
							c = palette.lerp(c, palette.Black, 0.5f);
						}
					}
					else
					{
						if (scanline - 90 > crossingLat * Mathf.Rad2Deg)
						{
							c = palette.lerp(c, palette.Black, 0.5f);
						}
					}
				}
				else
				{
					if (type != SCANtype.Nothing)
					{
						if (!SCANUtil.isCoveredByAll(ilon, scanline, data, type))
						{
							c = palette.lerp(c, palette.Black, 0.5f);
						}
					}
				}

				cols_height_map_small[ilon] = c;
			}

			map_small.SetPixels32(0, scanline, 360, 1, cols_height_map_small);

			if (apply)
			{
				if (scanline < 179)
				{
					map_small.SetPixels32(0, scanline + 1, 360, 1, palette.small_redline);
				}
			}

			scanline++;

			if (apply || scanline >= 180)
			{
				map_small.Apply();
			}

			if (scanline >= 180)
			{
				scanline = 0;
			}
		}

		private void buildBiomeCache()
		{
			for (int i = 0; i < 360; i++)
			{
				double index = SCANUtil.getBiomeIndexFraction(data.Body, i - 180, scanline - 90);
				Color32 c = palette.Grey;

				if (SCAN_Settings_Config.Instance.SmallMapBiomeBorder && ((i > 0 && biomeIndex[i - 1] != index) || (scanline > 0 && biomeIndex[i] != index)))
				{
					c = palette.White;
				}
				else if (SCAN_Settings_Config.Instance.SmallMapStockBiomes)
				{
					c = SCANUtil.getBiome(data.Body, i - 180, scanline - 90).mapColor;
				}
				else
				{
					c = palette.lerp(SCANcontroller.controller.lowBiomeColor32, SCANcontroller.controller.highBiomeColor32, (float)index);
				}

				biomeCache[scanline * 360 + i] = c;

				biomeIndex[i] = index;
			}

			if (scanline >= 179)
			{
				biomeBuilding = false;
			}
		}

		internal void resetImages()
		{
			for (int y = 0; y < map_small.height; y++)
			{
				for (int x = 0; x < map_small.width; x++)
				{
					if ((x % 30 == 0 && y % 3 > 0) || (y % 30 == 0 && x % 3 > 0))
					{
						map_small.SetPixel(x, y, palette.white);
					}
					else
					{
						map_small.SetPixel(x, y, palette.grey);
					}
				}
			}

			map_small.Apply();

			if (SCANcontroller.controller.mainMapBiome)
			{
				biomeBuilding = true;
				scanline = 0;
			}
		}

		public void ResetPosition()
		{
			SCAN_Settings_Config.Instance.MainMapPosition = new Vector2(100, -200);

			if (uiElement != null)
			{
				uiElement.SetPosition(SCAN_Settings_Config.Instance.MainMapPosition);
			}
		}
	}
}


================================================
FILE: SCANsat/SCAN_Unity/SCAN_UI_Overlay.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_UI_Overlay - UI control object for SCANsat planetary overlay window
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Text;
using UnityEngine;
using UnityEngine.EventSystems;
using SCANsat.SCAN_Toolbar;
using SCANsat.Unity.Interfaces;
using SCANsat.Unity.Unity;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_UI.UI_Framework;
using KSP.UI;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;
using Log = KSPBuildTools.Log;

namespace SCANsat.SCAN_Unity
{
	public class SCAN_UI_Overlay : ISCAN_Overlay
	{
		private bool _isVisible;
		private bool _overlayOn;

		private CelestialBody body;
		private SCANdata data;
		private SCANresourceGlobal currentResource;
		private List resources;

		private bool mapGenerating;
		private double degreeOffset;
		private int mapStep, mapStart;
		private bool bodyBiome, bodyPQS;

		private int timer;
		//These are read/written on multiple threads; we use volatile to ensure that cached values are not used when reading the value
		private volatile bool threadRunning, threadFinished;
		private volatile bool terrainGenerated;

		private StringBuilder tooltipText = new StringBuilder();
		private string tooltipString = string.Empty;
		private bool tooltipActive;

		private Texture2D mapOverlay;
		private Color32[] resourcePixels;
		private Color32[] biomePixels;
		private Color32[] terrainPixels;
		private float[,] abundanceValues;
		private float[,] terrainValues;

		private Texture2D resourceLegend;
		private const int RESOURCELEGENDWIDTH = 156;

		private SCAN_Overlay uiElement;

		private static SCAN_UI_Overlay instance;

		public static SCAN_UI_Overlay Instance
		{
			get { return instance; }
		}

		public SCAN_UI_Overlay()
		{
			instance = this;

			resources = SCANcontroller.setLoadedResourceList();

			setBody(HighLogic.LoadedSceneIsFlight ? FlightGlobals.currentMainBody : Planetarium.fetch.Home);
		}

		public void OnDestroy()
		{
			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.Destroy(uiElement.gameObject);
			}

			if (resourceLegend != null)
			{
				GameObject.Destroy(resourceLegend);
				resourceLegend = null;
			}

			if (mapOverlay != null)
			{
				GameObject.Destroy(mapOverlay);
				mapOverlay = null;
			}

			removeOverlay(true);
		}

		public void SetScale(float scale)
		{
			if (uiElement != null)
			{
				uiElement.SetScale(scale);
			}
		}

		public void ProcessTooltips()
		{
			if (uiElement != null)
			{
				uiElement.ProcessTooltips();
			}
		}

		public void Update()
		{
			tooltipActive = false;

			if ((MapView.MapIsEnabled && HighLogic.LoadedSceneIsFlight && FlightGlobals.ready) || HighLogic.LoadedScene == GameScenes.TRACKSTATION)
			{
				CelestialBody mapBody = SCANUtil.getTargetBody(MapView.MapCamera.target);

				if (mapBody == null)
				{
					return;
				}

				if (mapBody != body)
				{
					setBody(mapBody);
				}

				if (SCAN_Settings_Config.Instance.OverlayTooltips && _overlayOn)
				{
					SCANUtil.SCANCoordinates coords = SCANUtil.GetMouseCoordinates(body);

					if (coords != null)
					{
						tooltipActive = true;

						PointerEventData pe = new PointerEventData(EventSystem.current);
						pe.position = Input.mousePosition;
						List hits = new List();

						EventSystem.current.RaycastAll(pe, hits);

						for (int i = hits.Count - 1; i >= 0; i--)
						{
							RaycastResult r = hits[i];

							GameObject go = r.gameObject;

							if (go.layer == 5)
							{
								tooltipActive = false;
								break;
							}
						}

						if (tooltipActive)
						{
							MouseOverTooltip(coords);
						}
					}
				}

			}
			else if (HighLogic.LoadedSceneIsFlight && FlightGlobals.ready)
			{
				if (body != FlightGlobals.currentMainBody)
				{
					setBody(FlightGlobals.currentMainBody);
				}
			}
		}

		private void MouseOverTooltip(SCANUtil.SCANCoordinates coords)
		{
			if (timer < 5)
			{
				timer++;
				return;
			}

			timer = 0;

			tooltipText.Length = 0;

			coords.ToDMS(tooltipText);

			if (body.pqsController != null)
			{
				if (SCANUtil.isCovered(coords.longitude, coords.latitude, data, SCANtype.Altimetry))
				{
					bool hires = SCANUtil.isCovered(coords.longitude, coords.latitude, data, SCANtype.AltimetryHiRes);

					tooltipText.AppendLine();
					tooltipText.AppendFormat(string.Format("Terrain: {0}", SCANuiUtil.getMouseOverElevation(coords.longitude, coords.latitude, data, 0, hires)));

					if (hires)
					{
						tooltipText.AppendLine();
						tooltipText.AppendFormat(string.Format("Slope: {0}°", SCANUtil.slope(SCANUtil.getElevation(body, coords.longitude, coords.latitude), body, coords.longitude, coords.latitude, degreeOffset).ToString("F1")));
					}
				}
			}

			if (body.BiomeMap != null)
			{
				if (SCANUtil.isCovered(coords.longitude, coords.latitude, data, SCANtype.Biome))
				{
					tooltipText.AppendLine();
					tooltipText.AppendFormat(string.Format("Biome: {0}", SCANUtil.getBiomeDisplayName(body, coords.longitude, coords.latitude)));
				}
			}

			bool resources = false;
			bool fuzzy = false;

			if (SCANUtil.isCovered(coords.longitude, coords.latitude, data, SCANtype.ResourceHiRes))
			{
				resources = true;
			}
			else if (SCANUtil.isCovered(coords.longitude, coords.latitude, data, SCANtype.ResourceLoRes))
			{
				resources = true;
				fuzzy = true;
			}

			if (resources)
			{
				tooltipText.AppendLine();
				tooltipText.Append(SCANuiUtil.getResourceAbundance(body, coords.latitude, coords.longitude, fuzzy, currentResource));
			}

			tooltipString = tooltipText.ToString();
		}

		public void Open()
		{
			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.DestroyImmediate(uiElement.gameObject);
			}

			uiElement = GameObject.Instantiate(SCAN_UI_Loader.OverlayPrefab).GetComponent();

			if (uiElement == null)
			{
				return;
			}

			uiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);

			uiElement.SetOverlay(this);

			tooltipString = string.Empty;

			_isVisible = true;

			if (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)
			{
				if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
				{
					SCANappLauncher.Instance.UIElement.SetOverlayToggle(true);
				}
			}
		}

		public void Close()
		{
			_isVisible = false;

			if (uiElement == null)
			{
				return;
			}

			uiElement.FadeOut();

			if (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)
			{
				if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
				{
					SCANappLauncher.Instance.UIElement.SetOverlayToggle(false);
				}
			}

			uiElement = null;
		}

		public string Version
		{
			get { return SCANmainMenuLoader.SCANsatVersion; }
		}

		public string CurrentResource
		{
			get { return currentResource == null ? "" : currentResource.DisplayName; }
		}

		public string TooltipText
		{
			get { return tooltipString; }
		}

		public bool IsVisible
		{
			get { return _isVisible; }
			set
			{
				_isVisible = value;

				if (!value)
				{
					Close();
				}
			}
		}

		public bool OverlayTooltip
		{
			get { return tooltipActive; }
		}

		public bool DrawOverlay
		{
			get { return _overlayOn; }
			set
			{
				if (value)
				{
					if (!_overlayOn)
					{
						refreshMap(SCANcontroller.controller.overlaySelection);
					}
				}
				else
				{
					removeOverlay();
				}
			}
		}

		public bool DrawBiome
		{
			get { return SCANcontroller.controller.overlaySelection == 0; }
			set
			{
				if (!value)
				{
					if (_overlayOn && SCANcontroller.controller.overlaySelection == 0)
					{
						removeOverlay();
					}

					return;
				}

				SCANcontroller.controller.overlaySelection = 0;

				refreshMap(0);
			}
		}

		public bool DrawTerrain
		{
			get { return SCANcontroller.controller.overlaySelection == 1; }
			set
			{
				if (!value)
				{
					if (_overlayOn && SCANcontroller.controller.overlaySelection == 1)
					{
						removeOverlay();
					}

					return;
				}

				SCANcontroller.controller.overlaySelection = 1;

				refreshMap(1);
			}
		}

		public bool DrawResource
		{
			get { return SCANcontroller.controller.overlaySelection == 2; }
		}

		public bool WindowTooltips
		{
			get { return SCAN_Settings_Config.Instance.WindowTooltips; }
		}

		public float Scale
		{
			get { return SCAN_Settings_Config.Instance.UIScale; }
		}

		public Canvas TooltipCanvas
		{
			get { return UIMasterController.Instance.tooltipCanvas; }
		}

		public IList Resources
		{
			get
			{
				List rList = new List();

				bool threshold;

				if (!SCAN_Settings_Config.Instance.HideZeroResources)
				{
					threshold = SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100) || SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100);
				}
				else
				{
					threshold = true;
				}

				for (int i = 0; i < resources.Count; i++)
				{
					SCANresourceGlobal res = resources[i];

					if (threshold)
					{
						SCANresourceBody resBody = res.getBodyConfig(body.bodyName);

						if (resBody != null)
						{
							if (resBody.DefaultZero)
							{
								continue;
							}
						}
						else if (res.DefaultZero)
						{
							continue;
						}
					}

					rList.Add(res.DisplayName);
				}

				return rList;
			}
		}

		public Texture2D ResourceLegendImage
		{
			get
			{
				if (resourceLegend == null)
				{
					resourceLegend = new Texture2D(RESOURCELEGENDWIDTH, 1, TextureFormat.RGB24, false);
				}

				if (currentResource == null)
				{
					return null;
				}

				Color32[] pix = new Color32[RESOURCELEGENDWIDTH];

				for (int i = 0; i < RESOURCELEGENDWIDTH; i++)
				{
					float val = (i * 1f) / (RESOURCELEGENDWIDTH * 1f);
					pix[i] = palette.lerp(currentResource.MinColor32, currentResource.MaxColor32, val);
				}

				resourceLegend.SetPixels32(pix);
				resourceLegend.Apply();

				return resourceLegend;
			}
		}

		public Vector2 ResourceLegendLabels
		{
			get
			{
				if (currentResource != null)
				{
					SCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);

					if (resBody != null)
					{
						return new Vector2(resBody.MinValue / 100f, resBody.MaxValue / 100f);
					}

					return new Vector2(currentResource.DefaultMinValue / 100f, currentResource.DefaultMaxValue / 100f);
				}

				return new Vector2(0, 0.1f);
			}
		}

		public Vector2 Position
		{
			get { return SCAN_Settings_Config.Instance.OverlayPosition; }
			set { SCAN_Settings_Config.Instance.OverlayPosition = value; }
		}

		public void ClampToScreen(RectTransform rect)
		{
			UIMasterController.ClampToScreen(rect, Vector2.zero);
		}

		public void SetResource(string resource, bool isOn)
		{
			if (!isOn)
			{
				if (_overlayOn && SCANcontroller.controller.overlaySelection == 2 && currentResource != null && currentResource.DisplayName == resource)
				{
					removeOverlay();
				}

				return;
			}

			SCANcontroller.controller.overlaySelection = 2;

			if (currentResource.DisplayName != resource)
			{
				for (int i = resources.Count - 1; i >= 0; i--)
				{
					SCANresourceGlobal r = resources[i];

					if (r.DisplayName != resource)
					{
						continue;
					}

					currentResource = r;
					break;
				}
			}

			if (currentResource == null)
			{
				return;
			}

			SCANcontroller.controller.overlayResource = SCANUtil.resourceFromDisplayName(resource);

			refreshMap(2);
		}

		public void Refresh()
		{
			_overlayOn = true;

			refreshMap(SCANcontroller.controller.overlaySelection, true);

			if (SCANcontroller.controller.overlaySelection == 2)
			{
				uiElement.SetResourceLegend();
			}
		}

		public void OpenSettings()
		{
			if (SCAN_UI_Settings.Instance.IsVisible)
			{
				if (SCAN_UI_Settings.Instance.Page == 2)
				{
					SCAN_UI_Settings.Instance.Close();
				}
				else
				{
					SCAN_UI_Settings.Instance.Close();
					SCAN_UI_Settings.Instance.Open(2, true);
				}
			}
			else
			{
				SCAN_UI_Settings.Instance.Open(2);
			}
		}

		public void IncreaseResourceCutoff()
		{
			if (currentResource != null)
			{
				SCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);

				if (resBody != null)
				{
					float divisor = resBody.MaxValue / 10f;
					float min = resBody.MinValue;

					float current = min / divisor;
					float floor = Mathf.Floor(current);

					floor += 1;

					resBody.MinValue = floor * divisor;

					if (floor * divisor >= resBody.MaxValue)
					{
						resBody.MinValue = resBody.MaxValue - divisor;
					}
				}

				refreshMap(SCANcontroller.controller.overlaySelection, true);

				if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)
				{
					SCAN_UI_BigMap.Instance.RefreshMap();
				}

				if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)
				{
					SCAN_UI_ZoomMap.Instance.RefreshMap();
				}
			}
		}

		public void DecreaseResourceCutoff()
		{
			if (currentResource != null)
			{
				SCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);

				if (resBody != null)
				{
					float divisor = resBody.MaxValue / 10f;
					float min = resBody.MinValue;

					float current = min / divisor;
					float floor = Mathf.Floor(current);

					if (Mathf.FloorToInt(floor * 100) == Mathf.FloorToInt(current * 100))
					{
						floor -= 1;
					}

					resBody.MinValue = floor * divisor;

					if (floor * divisor >= resBody.MaxValue)
					{
						resBody.MinValue = resBody.MaxValue - divisor;
					}
				}

				refreshMap(SCANcontroller.controller.overlaySelection, true);

				if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)
				{
					SCAN_UI_BigMap.Instance.RefreshMap();
				}

				if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)
				{
					SCAN_UI_ZoomMap.Instance.RefreshMap();
				}
			}
		}

		public void OpenResourceSettings()
		{
			if (SCAN_UI_Settings.Instance.IsVisible)
			{
				if (SCAN_UI_Settings.Instance.Page == 4)
				{
					if (SCAN_UI_Settings.Instance.IsCurrentResource(body.bodyName, currentResource.DisplayName))
					{
						SCAN_UI_Settings.Instance.Close();
					}
					else
					{
						SCAN_UI_Settings.Instance.Close();
						ISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;
						col.ResourcePlanet = body.bodyName;
						col.ResourceCurrent = currentResource.DisplayName;
						SCAN_UI_Settings.Instance.Open(4, true, true);
					}
				}
				else
				{
					SCAN_UI_Settings.Instance.Close();
					ISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;
					col.ResourcePlanet = body.bodyName;
					col.ResourceCurrent = currentResource.DisplayName;
					SCAN_UI_Settings.Instance.Open(4, true, true);
				}
			}
			else
			{
				ISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;
				col.ResourcePlanet = body.bodyName;
				col.ResourceCurrent = currentResource.DisplayName;
				SCAN_UI_Settings.Instance.Open(4, false, true);
			}
		}

		private void setBody(CelestialBody B)
		{
			body = B;

			data = SCANUtil.getData(body);
			if (data == null)
			{
				data = new SCANdata(body);
				SCANcontroller.controller.addToBodyData(body, data);
			}

			if (currentResource == null)
			{
				if (resources.Count > 0)
				{
					for (int i = resources.Count - 1; i >= 0; i--)
					{
						SCANresourceGlobal r = resources[i];

						if (r.Name != SCANcontroller.controller.overlayResource)
						{
							continue;
						}

						currentResource = r;
						break;
					}

					if (currentResource == null)
					{
						currentResource = resources[0];
					}

					currentResource.CurrentBodyConfig(body.bodyName);
				}
			}
			else
			{
				currentResource.CurrentBodyConfig(body.bodyName);
			}

			bodyBiome = body.BiomeMap != null;
			bodyPQS = body.pqsController != null;

			terrainGenerated = false;

			if (_overlayOn)
			{
				refreshMap(SCANcontroller.controller.overlaySelection);
			}

			double circum = body.Radius * 2 * Math.PI;
			double eqDistancePerDegree = circum / 360;
			degreeOffset = 5 / eqDistancePerDegree;

			if (_isVisible)
			{
				Close();
				Open();
			}
		}

		private void removeOverlay(bool immediate = false)
		{
			_overlayOn = false;

			OverlayGenerator.Instance.ClearDisplay();

			if (mapOverlay != null)
			{
				MonoBehaviour.Destroy(mapOverlay);
			}

			mapOverlay = null;

			if (immediate)
			{
				try
				{
					body.scaledBody.GetComponentInChildren().r.material.SetTexture(Shader.PropertyToID("_ResourceMap"), null);
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Error in destroying planetary map overlay:\n{0}", e);
				}
			}
		}

		public void refreshMap(float t, int height, int interp, int biomeHeight)
		{
			if (_overlayOn)
			{
				refreshMap(SCANcontroller.controller.overlaySelection);
			}
		}

		private void refreshMap(int i, bool remove = true)
		{
			if (remove)
			{
				removeOverlay();
			}

			if (mapGenerating)
			{
				return;
			}

			if (threadRunning)
			{
				return;
			}

			_overlayOn = true;

			switch (i)
			{
				case 0:
					body.SetResourceMap(SCANuiUtil.drawBiomeMap(ref mapOverlay, ref biomePixels, data, SCAN_Settings_Config.Instance.CoverageTransparency, SCAN_Settings_Config.Instance.BiomeMapHeight));
					break;
				case 1:
					SCANcontroller.controller.StartCoroutine(setTerrainMap());
					break;
				case 2:
					SCANcontroller.controller.StartCoroutine(setOverlayMap());
					break;
				default:
					break;
			}
		}

		private IEnumerator setOverlayMap()
		{
			int timer = 0;

			mapGenerating = true;

			SCANuiUtil.generateOverlayResourceValues(ref abundanceValues, SCAN_Settings_Config.Instance.ResourceMapHeight, data, currentResource, SCAN_Settings_Config.Instance.Interpolation);

			SCANdata copy = new SCANdata(data);
			SCANresourceGlobal resourceCopy = new SCANresourceGlobal(currentResource);
			resourceCopy.CurrentBodyConfig(body.bodyName);

			Thread 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));
			threadRunning = true;
			threadFinished = false;
			t.Start();

			while (threadRunning && timer < 1000)
			{
				timer++;
				yield return null;
			}

			mapGenerating = false;
			copy = null;
			resourceCopy = null;

			if (timer >= 1000)
			{
				Log.Error("Something went wrong when drawing the SCANsat resource map overlay...");
				t.Abort();
				threadRunning = false;
				yield break;
			}

			if (!threadFinished)
			{
				Log.Error("Something went wrong when drawing the SCANsat resource map overlay...");
				yield break;
			}

			if (mapOverlay == null || mapOverlay.height != SCAN_Settings_Config.Instance.ResourceMapHeight)
			{
				mapOverlay = new Texture2D(SCAN_Settings_Config.Instance.ResourceMapHeight * 2, SCAN_Settings_Config.Instance.ResourceMapHeight, TextureFormat.ARGB32, true);
			}

			mapOverlay.SetPixels32(resourcePixels);
			mapOverlay.Apply();

			body.SetResourceMap(mapOverlay);
		}

		private void resourceThreadRun(int height, int step, float transparent, System.Random r, SCANdata copyData, SCANresourceGlobal copyResource)
		{
			try
			{
				SCANuiUtil.generateOverlayResourcePixels(ref resourcePixels, ref abundanceValues, height, copyData, copyResource, r, step, transparent);
				threadFinished = true;
			}
			catch
			{
				threadFinished = false;
			}
			finally
			{
				threadRunning = false;
			}
		}

		private IEnumerator setTerrainMap()
		{
			if (data.Body.pqsController == null)
			{
				yield break;
			}

			int timer = 0;

			while (!data.Built && timer < 2000)
			{
				mapGenerating = true;
				if (!data.ControllerBuilding && !data.MapBuilding)
				{
					if (!data.OverlayBuilding)
					{
						mapStep = 0;
						mapStart = 0;
					}

					data.OverlayBuilding = true;
					data.generateHeightMap(ref mapStep, ref mapStart, 360);
				}
				timer++;
				yield return null;
			}

			if (timer >= 2000)
			{
				mapGenerating = false;
				yield break;
			}

			timer = 0;

			SCANdata copy = new SCANdata(data);
			int index = data.Body.flightGlobalsIndex;

			Thread t = new Thread(() => terrainThreadRun(copy, index));
			threadFinished = false;
			threadRunning = true;
			t.Start();

			while (threadRunning && timer < 1000)
			{
				timer++;
				yield return null;
			}

			mapGenerating = false;
			copy = null;

			if (timer >= 1000)
			{
				Log.Error("Something went wrong when drawing the SCANsat terrain map overlay...");
				t.Abort();
				threadRunning = false;
				yield break;
			}

			if (!threadFinished)
			{
				Log.Error("Something went wrong when drawing the SCANsat terrain map overlay...");
				yield break;
			}

			if (mapOverlay == null)
			{
				mapOverlay = new Texture2D(1440, 720, TextureFormat.ARGB32, true);
			}

			mapOverlay.SetPixels32(terrainPixels);
			mapOverlay.Apply();

			body.SetResourceMap(mapOverlay);
		}

		private void terrainThreadRun(SCANdata copyData, int i)
		{
			try
			{
				if (!terrainGenerated)
				{
					SCANuiUtil.generateTerrainArray(ref terrainValues, 720, 4, copyData, i);
					terrainGenerated = true;
				}

				SCANuiUtil.drawTerrainMap(ref terrainPixels, ref terrainValues, copyData, 720, 4);

				threadFinished = true;
			}
			catch
			{
				threadFinished = false;
			}
			finally
			{
				threadRunning = false;
			}
		}

		public void ResetPosition()
		{
			SCAN_Settings_Config.Instance.OverlayPosition = new Vector2(600, -200);

			if (uiElement != null)
			{
				uiElement.SetPosition(SCAN_Settings_Config.Instance.OverlayPosition);
			}
		}

	}
}


================================================
FILE: SCANsat/SCAN_Unity/SCAN_UI_Settings.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_UI_Settings - UI control object for SCANsat settings window
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using SCANsat.Unity.Interfaces;
using SCANsat.Unity.Unity;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_Toolbar;
using SCANsat.SCAN_UI.UI_Framework;
using KSP.UI;
using KSP.UI.Screens;
using KSP.Localization;
using KSPAssets.KSPedia;

namespace SCANsat.SCAN_Unity
{
	public class SCAN_UI_Settings : ISCAN_Settings
	{
		private static ApplicationLauncherButton dummyButton;

		private bool _isVisible;
		private bool _inputLock;
		private string _sensorCount = "";
		private Vector2 _position;
		private const string controlLock = "SCANsatSettings";

		private string _currentData = "All Data";
		private SCANtype _currentDataType = SCANtype.Everything;

		private SCAN_Settings uiElement;

		private SCAN_UI_Color colorInterface;

		private static SCAN_UI_Settings instance;

		public static SCAN_UI_Settings Instance
		{
			get { return instance; }
		}

		public SCAN_UI_Settings()
		{
			instance = this;

			colorInterface = new SCAN_UI_Color();
		}

		public int Page
		{
			get
			{
				if (uiElement != null)
				{
					return uiElement.Page;
				}

				return 0;
			}
		}

		public bool IsCurrentResource(string body, string resource)
		{
			if (uiElement != null)
			{
				return uiElement.IsCurrentResourceActive(body, resource);
			}

			return false;
		}

		public void OnDestroy()
		{
			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.Destroy(uiElement.gameObject);
			}
		}

		public void Update()
		{
			if (!_isVisible)
			{
				return;
			}

			_sensorCount = string.Format("Vessels: {0} Sensors: {1} Passes: {2}"
				, SCANcontroller.controller.ActiveVessels
				, SCANcontroller.controller.ActiveSensors
				, SCANcontroller.controller.ActualPasses);
		}

		public void Open(int page = 0, bool savePosition = false, bool forceResource = false)
		{
			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.DestroyImmediate(uiElement.gameObject);
			}

			uiElement = GameObject.Instantiate(SCAN_UI_Loader.SettingsPrefab).GetComponent();

			if (uiElement == null)
			{
				return;
			}

			uiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);

			uiElement.setSettings(this, page, forceResource);

			if (!savePosition)
			{
				_position = new Vector2(0, 100);
			}

			uiElement.SetPosition(_position);

			_isVisible = true;

			if (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)
			{
				if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
				{
					SCANappLauncher.Instance.UIElement.SetSettingsToggle(true);
				}
			}
		}

		public void Close()
		{
			_isVisible = false;

			if (uiElement == null)
			{
				return;
			}

			uiElement.FadeOut();

			if (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)
			{
				if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
				{
					SCANappLauncher.Instance.UIElement.SetSettingsToggle(false);
				}
			}

			if (_inputLock)
			{
				InputLockManager.RemoveControlLock(controlLock);
			}

			uiElement = null;
		}

		public string Version
		{
			get { return SCANmainMenuLoader.SCANsatVersion; }
		}

		public string SensorCount
		{
			get { return _sensorCount; }
		}

		public string DataResetCurrent
		{
			get { return Localizer.Format("#autoLOC_SCANsat_Warning_DataResetCurrent", _currentDataType, getTargetBody().displayName); }
		}

		public string DataResetAll
		{
			get { return Localizer.Format("#autoLOC_SCANsat_Warning_DataResetAll", _currentDataType); }
		}

		public string StockResourceResetCurrent
		{
			get { return Localizer.Format("#autoLOC_SCANsat_Warning_StockResourceResetCurrent", getTargetBody().displayName); }
		}

		public string StockResourceResetAll
		{
			get { return Localizer.Format("#autoLOC_SCANsat_Warning_StockResourceResetAll"); }
		}

		public string WarningMapFillCurrent
		{
			get { return Localizer.Format("#autoLOC_SCANsat_Warning_MapFillCurrent", _currentData, getTargetBody().displayName); }
		}

		public string WarningMapFillAll
		{
			get { return Localizer.Format("#autoLOC_SCANsat_Warning_MapFillAll", _currentData); }
		}

		public string ModuleManagerWarning
		{
			get { return Localizer.Format("#autoLOC_SCANsat_Warning_ModuleManagerResource"); }
		}

		public string CurrentBody
		{
			get { return getTargetBody().displayName.LocalizeBodyName(); }
		}

		public string SaveToConfig
		{
			get { return Localizer.Format("#autoLOC_SCANsat_Warning_SaveToConfig"); }
		}

		public string CurrentMapData
		{
			get { return _currentData; }
			set
			{
				_currentData = value;

				if (value == "All Data")
				{
					_currentDataType = SCANtype.Everything;
				}
				//else if (value == "SCAN Data Types")
				//	_currentDataType = SCANtype.Everything_SCAN;
				//else if (value == "All Resource Types")
				//{
				//                _currentDataType = SCANtype.ResourceHiRes;
				//	//_currentDataType = 0;

				//	//List resources = SCANcontroller.setLoadedResourceList();

				//	//for (int i = 0; i < resources.Count; i++)
				//	//	_currentDataType |= resources[i].SType;
				//}
				else
				{
					try
					{
						_currentDataType = (SCANtype)Enum.Parse(typeof(SCANtype), value);
					}
					catch (Exception e)
					{
						SCANUtil.SCANlog("Error in parsing map fill type value: {0} - Setting fill type to Everything:\n{1}", value, e);
						_currentData = "All Data";
						_currentDataType = SCANtype.Everything;
					}
				}
			}
		}

		public int MapGenSpeed
		{
			get { return SCAN_Settings_Config.Instance.MapGenerationSpeed; }
			set { SCAN_Settings_Config.Instance.MapGenerationSpeed = value; }
		}

		public int TimeWarp
		{
			get { return SCAN_Settings_Config.Instance.TimeWarpResolution; }
			set { SCAN_Settings_Config.Instance.TimeWarpResolution = value; }
		}

		public int MapWidth
		{
			get { return SCAN_Settings_Config.Instance.BigMapWidth; }
			set
			{
				SCAN_Settings_Config.Instance.BigMapWidth = value;

				if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)
				{
					SCAN_UI_BigMap.Instance.Size = new Vector2(value, value / 2);

					SCAN_UI_BigMap.Instance.SetMapSize();

					SCAN_UI_BigMap.Instance.RefreshIcons();
				}
			}
		}

		public int Interpolation
		{
			get { return SCAN_Settings_Config.Instance.Interpolation; }
			set { SCAN_Settings_Config.Instance.Interpolation = value; }
		}

		public int MapHeight
		{
			get { return SCAN_Settings_Config.Instance.ResourceMapHeight; }
			set { SCAN_Settings_Config.Instance.ResourceMapHeight = value; }
		}

		public int BiomeMapHeight
		{
			get { return SCAN_Settings_Config.Instance.BiomeMapHeight; }
			set { SCAN_Settings_Config.Instance.BiomeMapHeight = value; }
		}

		public float Transparency
		{
			get { return SCAN_Settings_Config.Instance.CoverageTransparency; }
			set { SCAN_Settings_Config.Instance.CoverageTransparency = value; }
		}

		public float StockThresholdValue
		{
			get { return SCAN_Settings_Config.Instance.StockTreshold; }
			set { SCAN_Settings_Config.Instance.StockTreshold = value; }
		}

		public float UIScale
		{
			get { return SCAN_Settings_Config.Instance.UIScale; }
			set
			{
				SCAN_Settings_Config.Instance.UIScale = value;

				uiElement.SetScale(value);

				if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)
				{
					SCAN_UI_BigMap.Instance.SetScale(value);
				}

				if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible)
				{
					SCAN_UI_MainMap.Instance.SetScale(value);
				}

				if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible)
				{
					SCAN_UI_ZoomMap.Instance.SetScale(value);
				}

				if (SCAN_UI_Instruments.Instance != null && SCAN_UI_Instruments.Instance.IsVisible)
				{
					SCAN_UI_Instruments.Instance.SetScale(value);
				}

				if (SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.IsVisible)
				{
					SCAN_UI_Overlay.Instance.SetScale(value);
				}
			}
		}

		public bool IsVisible
		{
			get { return _isVisible; }
			set
			{
				_isVisible = value;

				if (!value)
				{
					Close();
				}
			}
		}

		public bool BackgroundScanning
		{
			get { return SCAN_Settings_Config.Instance.BackgroundScanning; }
			set { SCAN_Settings_Config.Instance.BackgroundScanning = value; }
		}

		public bool GroundTracks
		{
			get { return SCAN_Settings_Config.Instance.ShowGroundTracks; }
			set { SCAN_Settings_Config.Instance.ShowGroundTracks = value; }
		}

		public bool ActiveGround
		{
			get { return SCAN_Settings_Config.Instance.GroundTracksActiveOnly; }
			set { SCAN_Settings_Config.Instance.GroundTracksActiveOnly = value; }
		}

		public bool OverlayTooltips
		{
			get { return SCAN_Settings_Config.Instance.OverlayTooltips; }
			set { SCAN_Settings_Config.Instance.OverlayTooltips = value; }
		}

		public bool WindowTooltips
		{
			get { return SCAN_Settings_Config.Instance.WindowTooltips; }
			set
			{
				SCAN_Settings_Config.Instance.WindowTooltips = value;

				SCAN_UI_Loader.ToggleTooltips(value);

				if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)
				{
					SCAN_UI_BigMap.Instance.ProcessTooltips();
				}

				if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible)
				{
					SCAN_UI_MainMap.Instance.ProcessTooltips();
				}

				if (SCAN_UI_Instruments.Instance != null && SCAN_UI_Instruments.Instance.IsVisible)
				{
					SCAN_UI_Instruments.Instance.ProcessTooltips();
				}

				if (SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.IsVisible)
				{
					SCAN_UI_Overlay.Instance.ProcessTooltips();
				}

				if (SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu
					&& SCANappLauncher.Instance != null && SCANappLauncher.Instance.IsVisible)
				{
					SCANappLauncher.Instance.ProcessTooltips();
				}
			}
		}

		public bool LegendTooltips
		{
			get { return SCAN_Settings_Config.Instance.LegendTooltips; }
			set { SCAN_Settings_Config.Instance.LegendTooltips = value; }
		}

		public bool StockToolbar
		{
			get { return SCAN_Settings_Config.Instance.StockToolbar; }
			set
			{
				SCAN_Settings_Config.Instance.StockToolbar = value;

				if (value)
				{
					SCANcontroller.controller.appLauncher = SCANcontroller.controller.gameObject.AddComponent();
				}
				else
				{
					MonoBehaviour.Destroy(SCANcontroller.controller.appLauncher);
					SCANcontroller.controller.appLauncher = null;
				}
			}
		}

		public bool ToolbarMenu
		{
			get { return SCAN_Settings_Config.Instance.ToolbarMenu; }
			set
			{
				SCAN_Settings_Config.Instance.ToolbarMenu = value;

				if (SCANappLauncher.Instance != null)
				{
					SCANappLauncher.Instance.ToggleToolbarType();
				}
			}
		}

		public bool StockUIStyle
		{
			get { return SCAN_Settings_Config.Instance.StockUIStyle; }
			set
			{
				SCAN_Settings_Config.Instance.StockUIStyle = value;

				SCAN_UI_Loader.ResetUIStyle();

				if (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)
				{
					SCAN_UI_BigMap.Instance.Close();
					SCAN_UI_BigMap.Instance.Open();
				}

				if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && HighLogic.LoadedSceneIsFlight)
				{
					SCAN_UI_MainMap.Instance.Close();
					SCAN_UI_MainMap.Instance.Open();
				}

				if (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible)
				{
					SCAN_UI_ZoomMap.Instance.Close();
					SCAN_UI_ZoomMap.Instance.Open(true);
				}

				if (SCAN_UI_Instruments.Instance != null && SCAN_UI_Instruments.Instance.IsVisible && HighLogic.LoadedSceneIsFlight)
				{
					SCAN_UI_Instruments.Instance.Close();
					SCAN_UI_Instruments.Instance.Open();
				}

				if (SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.IsVisible && HighLogic.LoadedScene != GameScenes.SPACECENTER)
				{
					SCAN_UI_Overlay.Instance.Close();
					SCAN_UI_Overlay.Instance.Open();
				}

				Close();
				Open(0, true);
			}
		}

		public bool MechJebTarget
		{
			get { return SCAN_Settings_Config.Instance.MechJebTarget; }
			set { SCAN_Settings_Config.Instance.MechJebTarget = value; }
		}

		public bool MechJebLoad
		{
			get { return SCAN_Settings_Config.Instance.MechJebTargetLoad; }
			set { SCAN_Settings_Config.Instance.MechJebTargetLoad = value; }
		}

		public bool MechJebAvailable
		{
			get { return SCANmainMenuLoader.MechJebLoaded; }
		}

		public bool DaylightCheck
		{
			get { return SCAN_Settings_Config.Instance.DaylightCheck; }
			set { SCAN_Settings_Config.Instance.DaylightCheck = value; }
		}

		public bool BiomeLock
		{
			get { return SCAN_Settings_Config.Instance.BiomeLock; }
			set { SCAN_Settings_Config.Instance.BiomeLock = value; }
		}

		public bool NarrowBand
		{
			get { return SCAN_Settings_Config.Instance.RequireNarrowBand; }
			set { SCAN_Settings_Config.Instance.RequireNarrowBand = value; }
		}

		public bool InstantScan
		{
			get { return SCAN_Settings_Config.Instance.InstantScan; }
			set
			{
				SCAN_Settings_Config.Instance.InstantScan = value;

				if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible)
				{
					SCAN_UI_MainMap.Instance.Close();
					SCAN_UI_MainMap.Instance.Open();
				}

			}
		}

		public bool DisableStock
		{
			get { return SCAN_Settings_Config.Instance.DisableStockResource; }
			set
			{
				SCAN_Settings_Config.Instance.DisableStockResource = value;

				if (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible)
				{
					SCAN_UI_MainMap.Instance.Close();
					SCAN_UI_MainMap.Instance.Open();
				}

			}
		}

		public bool StockThreshold
		{
			get { return SCAN_Settings_Config.Instance.UseStockTreshold; }
			set { SCAN_Settings_Config.Instance.UseStockTreshold = value; }
		}

		public bool HideZeroResources
		{
			get { return SCAN_Settings_Config.Instance.HideZeroResources; }
			set { SCAN_Settings_Config.Instance.HideZeroResources = value; }
		}

		public bool GreyScale
		{
			get { return SCAN_Settings_Config.Instance.TrueGreyScale; }
			set { SCAN_Settings_Config.Instance.TrueGreyScale = value; }
		}

		public bool ExportCSV
		{
			get { return SCAN_Settings_Config.Instance.ExportCSV; }
			set { SCAN_Settings_Config.Instance.ExportCSV = value; }
		}

		public bool ShowStockReset
		{
			get { return SCAN_Settings_Config.Instance.DisableStockResource || !SCAN_Settings_Config.Instance.InstantScan; }
		}

		public bool ShowMapFill
		{
			get { return SCAN_Settings_Config.Instance.CheatMapFill; }
		}

		public bool LockInput
		{
			get { return _inputLock; }
			set
			{
				_inputLock = value;

				if (_inputLock)
				{
					InputLockManager.SetControlLock(controlLock);
				}
				else
				{
					InputLockManager.RemoveControlLock(controlLock);
				}
			}
		}

		public bool ModuleManager
		{
			get { return SCANmainMenuLoader.MMLoaded; }
		}

		public Canvas TooltipCanvas
		{
			get { return UIMasterController.Instance.tooltipCanvas; }
		}

		public Vector2 Position
		{
			set { _position = value; }
		}

		public IList BackgroundBodies
		{
			get
			{
				var bodies = FlightGlobals.Bodies.Where(b => b.referenceBody == Planetarium.fetch.Sun && b.referenceBody != b);

				var orderedBodies = bodies.OrderBy(b => b.orbit.semiMajorAxis).ToList();

				List bodyList = SCANUtil.RecursiveCelestialBodies(orderedBodies);

				bool missingHome = true;

				for (int i = bodyList.Count - 1; i >= 0; i--)
				{
					string b = bodyList[i];

					if (b == FlightGlobals.GetHomeBody().displayName.LocalizeBodyName())
					{
						missingHome = false;
						break;
					}
				}

				if (missingHome)
				{
					List missingHomeBodies = SCANUtil.RecursiveCelestialBodies(new List() { FlightGlobals.GetHomeBody() });

					bodyList.InsertRange(0, missingHomeBodies);
				}

				SCANdata sun = SCANcontroller.controller.getData(Planetarium.fetch.Sun.bodyName);

				if (sun != null)
				{
					bodyList.Add(sun.Body.displayName.LocalizeBodyName());
				}

				return bodyList;
			}
		}

		public IList MapDataTypes
		{
			get
			{
				List availableTypes = new List() { 0, 1, 3, 4, 5, 2, 6, 7, 8 };

				List types = new List() { "All Data" };

				for (int i = 0; i < availableTypes.Count; i++)
				{
					types.Add(((SCANtype)(1 << availableTypes[i])).ToString());
				}

				return types;
			}
		}

		public ISCAN_Color ColorInterface
		{
			get { return colorInterface; }
		}

		public void OpenKSPedia(bool isOn)
		{
			if (dummyButton == null)
			{
				dummyButton = UnityEngine.Object.Instantiate(ApplicationLauncher.Instance.listItemPrefab);
			}

			if (isOn)
			{
				KSPediaSpawner.Show(dummyButton);

				try
				{
					KSPediaSpawner.Show("SCANsat_Header");
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("KSPedia Database not ready; can't load SCANsat page; loading first page");
				}
			}
			else
			{
				KSPediaSpawner.Hide();
			}
		}

		public void ClampToScreen(RectTransform rect)
		{
			UIMasterController.ClampToScreen(rect, Vector2.zero);
		}

		public void ResetCurrent()
		{
			CelestialBody thisBody = getTargetBody();

			SCANdata data = SCANUtil.getData(thisBody);

			if (data != null)
			{
				data.reset(_currentDataType);
			}
		}

		public void ResetAll()
		{
			foreach (SCANdata data in SCANcontroller.controller.GetAllData)
			{
				data.reset(_currentDataType);
			}
		}

		public void ResetStockResourceCurrent()
		{
			CelestialBody thisBody = getTargetBody();

			var resources = ResourceScenario.Instance.gameSettings.GetPlanetScanInfo();

			resources.RemoveAll(a => a.PlanetId == thisBody.flightGlobalsIndex);
		}

		public void ResetStockResourceAll()
		{
			ResourceScenario.Instance.gameSettings.GetPlanetScanInfo().Clear();
		}

		public void FillCurrent()
		{
			CelestialBody thisBody = getTargetBody();

			SCANdata data = SCANUtil.getData(thisBody);

			if (data == null)
			{
				data = new SCANdata(thisBody);
				SCANcontroller.controller.addToBodyData(thisBody, data);
			}

			data.fillMap(_currentDataType);
		}

		public void FillAll()
		{
			foreach (CelestialBody b in FlightGlobals.Bodies)
			{
				SCANdata data = SCANUtil.getData(b);

				if (data == null)
				{
					data = new SCANdata(b);
					SCANcontroller.controller.addToBodyData(b, data);
				}

				data.fillMap(_currentDataType);
			}
		}

		public void ResetWindows()
		{
			if (HighLogic.LoadedSceneIsFlight)
			{
				SCANuiUtil.resetMainMapPos();
				SCANuiUtil.resetBigMapPos();
				SCANuiUtil.resetInstUIPos();
				SCANuiUtil.resetOverlayControllerPos();
				SCANuiUtil.resetZoomMapPos();
			}
			else
			{
				SCANuiUtil.resetBigMapPos();
				SCANuiUtil.resetZoomMapPos();
				if (HighLogic.LoadedScene == GameScenes.TRACKSTATION)
				{
					SCANuiUtil.resetOverlayControllerPos();
				}
			}
		}

		public void ToggleBody(string bodyName)
		{
			string body = SCANUtil.bodyFromDisplayName(bodyName);

			SCANdata data = SCANUtil.getData(body);

			if (data != null)
			{
				data.Disabled = !data.Disabled;
			}
		}

		public bool ToggleBodyActive(string bodyName)
		{
			string body = SCANUtil.bodyFromDisplayName(bodyName);

			SCANdata data = SCANUtil.getData(body);

			return data == null ? false : !data.Disabled;
		}

		public double BodyPercentage(string bodyName)
		{
			return SCANUtil.getCoveragePercentage(SCANUtil.getData(SCANUtil.bodyFromDisplayName(bodyName)), SCANtype.Nothing) / 100;
		}

		private CelestialBody getTargetBody()
		{
			switch (HighLogic.LoadedScene)
			{
				case GameScenes.FLIGHT:
					return FlightGlobals.currentMainBody;
				case GameScenes.SPACECENTER:
					return Planetarium.fetch.Home;
				case GameScenes.TRACKSTATION:
					return SCANUtil.getTargetBody(MapView.MapCamera.target);
				default:
					return null;
			}
		}
	}
}


================================================
FILE: SCANsat/SCAN_Unity/SCAN_UI_ZoomMap.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_UI_ZoomMap - UI control object for SCANsat zoom map
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using SCANsat.SCAN_Toolbar;
using SCANsat.Unity.Interfaces;
using SCANsat.Unity;
using SCANsat.Unity.Unity;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_Map;
using SCANsat.SCAN_UI.UI_Framework;
using KSP.UI;
using KSP.Localization;
using FinePrint;
using FinePrint.Utilities;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;

namespace SCANsat.SCAN_Unity
{
	public class SCAN_UI_ZoomMap : ISCAN_ZoomMap
	{

		private bool _isVisible;

		private static SCANmap spotmap;
		private static CelestialBody body;
		private SCANdata data;
		private Vessel vessel;
		private bool updateMap;
		private bool rebuilding;
		private bool narrowBand;
		private StringBuilder infoString = new StringBuilder();
		private System.Random gen;
		private bool _inputLock;
		private const string controlLock = "SCANsatZoom";

		private bool initialized;

		private float terrainMin;
		private float terrainMax;

		private float resourceMin;
		private float resourceMax;

		private SCANresourceGlobal currentResource;
		private List resources;

		private List biomes = new List();

		private List mapFlags = new List();

		private SCAN_ZoomMap uiElement;

		private Texture2D resourceLegend;
		private const int RESOURCELEGENDWIDTH = 90;

		private const int orbitSteps = 80;
		private const float minZoom = 2;
		private const float maxZoom = 1000;
		private const float DefaultMapScale = 10f;
		private List orbitLabels = new List();
		private Dictionary orbitMapLabels = new Dictionary();
		private const string Aplabel = "Ap";
		private const string Pelabel = "Pe";
		private const string Escapelabel = "Escape";
		private const string Encounterlabel = "Encounter";
		private const string Manlabel = "Man";
		private const string ManAplabel = "ManAp";
		private const string ManPelabel = "ManPe";
		private const string ManEscapelabel = "ManEscape";
		private const string ManEncounterlabel = "ManEncounter";

		private static SCAN_UI_ZoomMap instance;

		public static SCAN_UI_ZoomMap Instance
		{
			get { return instance; }
		}

		public static CelestialBody Body
		{
			get { return body; }
		}

		public SCAN_UI_ZoomMap()
		{
			instance = this;

			resources = SCANcontroller.setLoadedResourceList();

			GameEvents.onVesselChange.Add(vesselChange);
			GameEvents.onVesselWasModified.Add(vesselChange);
			GameEvents.onVesselSOIChanged.Add(soiChange);

			gen = new System.Random(Environment.TickCount.GetHashCode());

			initializeMap();
		}

		private bool vesselChanged = false;

		private void vesselChange(Vessel V)
		{
			vessel = FlightGlobals.ActiveVessel;

			if (!_isVisible || uiElement == null)
			{
				return;
			}

			vesselChanged = true;
		}

		private void soiChange(GameEvents.HostedFromToAction action)
		{
			if (!_isVisible || uiElement == null)
			{
				return;
			}

			uiElement.RefreshIcons();

			updateMap = true;
		}

		public void Open(bool v, double lat = 0, double lon = 0, SCANmap m = null)
		{
			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.DestroyImmediate(uiElement.gameObject);
			}

			uiElement = GameObject.Instantiate(SCAN_UI_Loader.ZoomMapPrefab).GetComponent();

			if (uiElement == null)
			{
				return;
			}

			uiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);

			vessel = FlightGlobals.ActiveVessel;

			if (v || VesselLock)
			{
				setToVessel();
			}
			else
			{
				setToPosition(lat, lon, m);
			}

			if (OrbitToggle && ShowOrbit)
			{
				Orbit o = vessel.orbit;

				orbitLabels.Clear();

				for (int i = 0; i < orbitSteps * 3; i++)
				{
					orbitLabels.Add(new SimpleLabelInfo(10, SCAN_UI_Loader.PlanetIcon));
				}

				if (!vessel.LandedOrSplashed)
				{
					UpdateOrbitIcons(o);
				}
			}

			uiElement.setMap(this);

			updateMap = true;

			_isVisible = true;

			if (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)
			{
				if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
				{
					SCANappLauncher.Instance.UIElement.SetZoomMapToggle(true);
				}
			}
		}

		public void Close()
		{
			_isVisible = false;

			if (uiElement == null)
			{
				return;
			}

			uiElement.FadeOut();

			if (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)
			{
				if (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)
				{
					SCANappLauncher.Instance.UIElement.SetZoomMapToggle(false);
				}
			}

			uiElement = null;
		}

		private void initializeMap()
		{
			if (HighLogic.LoadedSceneIsFlight)
			{
				vessel = FlightGlobals.ActiveVessel;
			}

			if (body == null)
			{
				if (vessel == null)
				{
					body = FlightGlobals.Bodies[1];
				}
				else
				{
					body = vessel.mainBody;
				}
			}

			data = SCANUtil.getData(body);

			if (data == null)
			{
				data = new SCANdata(body);
				SCANcontroller.controller.addToBodyData(body, data);
			}

			if (spotmap == null)
			{
				spotmap = new SCANmap(body, false, mapSource.ZoomMap);

				mapType t = mapType.Altimetry;

				try
				{
					t = (mapType)Enum.Parse(typeof(mapType), SCANcontroller.controller.zoomMapType, true);
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Error in parsing map projection and/or type\n{0}", e);

					t = mapType.Altimetry;
				}

				spotmap.Projection = MapProjection.Orthographic;
				spotmap.MType = t;
				spotmap.ResourceActive = SCANcontroller.controller.zoomMapResourceOn;
				spotmap.ColorMap = SCANcontroller.controller.zoomMapColor;

				if (SCAN_Settings_Config.Instance.ZoomMapSize.x % 2 != 0)
				{
					SCAN_Settings_Config.Instance.ZoomMapSize.x += 1;
				}

				if (SCAN_Settings_Config.Instance.ZoomMapSize.y % 2 != 0)
				{
					SCAN_Settings_Config.Instance.ZoomMapSize.y += 1;
				}

				if (SCAN_Settings_Config.Instance.ZoomMapSize.x % 4 != 0)
				{
					SCAN_Settings_Config.Instance.ZoomMapSize.x += 2;
				}

				if (SCAN_Settings_Config.Instance.ZoomMapSize.y % 4 != 0)
				{
					SCAN_Settings_Config.Instance.ZoomMapSize.y += 2;
				}

				spotmap.setSize(SCAN_Settings_Config.Instance.ZoomMapSize);
			}

			spotmap.setBody(body);

			currentResource = AssignResource(SCANcontroller.controller.zoomMapResource);

			if (currentResource != null)
			{
				spotmap.Resource = currentResource;
			}

			AddOrbitMapLabels();
		}

		private void initializeMapCenter(double lat, double lon, CelestialBody b)
		{
			SCANdata dat = SCANUtil.getData(b);

			if (dat == null)
			{
				dat = new SCANdata(b);
			}

			data = dat;

			if (body != b)
			{
				body = data.Body;

				spotmap.setBody(body);
			}

			if (SCANconfigLoader.GlobalResource)
			{
				currentResource = AssignResource(SCANcontroller.controller.zoomMapResource);

				if (currentResource != null)
				{
					spotmap.Resource = currentResource;
				}
			}

			if (ResourceToggle && currentResource != null)
			{
				checkForScanners();
			}

			if (SCANcontroller.controller.zoomMapZoomPersist)
			{
				spotmap.MapScale = SCANcontroller.controller.zoomMapZoom;
			}
			else
			{
				spotmap.MapScale = DefaultMapScale;
			}

			spotmap.centerAround(lon, lat);

			calcTerrainLimits();

			mapType t = mapType.Altimetry;

			try
			{
				t = (mapType)Enum.Parse(typeof(mapType), SCANcontroller.controller.zoomMapType, true);
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error in parsing map projection and/or type\n{0}", e);

				t = mapType.Altimetry;
			}

			spotmap.ResourceActive = SCANcontroller.controller.zoomMapResourceOn;
			spotmap.ColorMap = SCANcontroller.controller.zoomMapColor;
			spotmap.Terminator = SCANcontroller.controller.zoomMapTerminator;

			rebuilding = true;

			spotmap.resetMap(t, false, ResourceToggle, narrowBand);
		}

		private void resetMap(double lat = 0, double lon = 0, bool withCenter = false)
		{
			if (VesselLock)
			{
				resetMapToVessel();
			}
			else
			{
				resetMap(withCenter, lat, lon);
			}

			SCANcontroller.controller.zoomMapZoom = (float)spotmap.MapScale;
		}

		public void resetMap(bool withCenter, double lat, double lon)
		{
			if (withCenter)
			{
				spotmap.centerAround(lon, lat);
			}
			else
			{
				spotmap.centerAround(spotmap.CenteredLong, spotmap.CenteredLat);
			}

			if (ResourceToggle)
			{
				checkForScanners();
			}

			calcTerrainLimits();

			rebuilding = true;

			spotmap.resetMap(ResourceToggle, narrowBand);
		}

		public void resetMapToVessel()
		{
			vessel = FlightGlobals.ActiveVessel;

			if (body != vessel.mainBody)
			{
				body = vessel.mainBody;

				SCANdata dat = SCANUtil.getData(body);

				if (dat == null)
				{
					dat = new SCANdata(body);
				}

				data = dat;
				body = data.Body;

				spotmap.setBody(body);
			}

			if (SCANconfigLoader.GlobalResource)
			{
				if (currentResource != null)
				{
					currentResource.CurrentBodyConfig(body.bodyName);
				}
			}

			resetMap(true, SCANUtil.fixLatShift(vessel.latitude), SCANUtil.fixLonShift(vessel.longitude));
		}

		protected void calcTerrainLimits()
		{
			bool terrainCalc = spotmap.MType == mapType.Altimetry || spotmap.MType == mapType.Biome;

			int w = spotmap.MapWidth / 4;
			int h = spotmap.MapHeight / 4;

			resourceMax = 0;
			resourceMin = 100;

			terrainMax = -200000;
			terrainMin = 100000;

			for (int i = 0; i < spotmap.MapHeight; i += 4)
			{
				for (int j = 0; j < spotmap.MapWidth; j += 4)
				{
					double lat = (i * 1.0f / spotmap.MapScale) - 90f + spotmap.Lat_Offset;
					double lon = (j * 1.0f / spotmap.MapScale) - 180f + spotmap.Lon_Offset;
					double la = lat, lo = lon;
					lat = spotmap.unprojectLatitude(lo, la);
					lon = spotmap.unprojectLongitude(lo, la);

					if (double.IsNaN(lon) || double.IsNaN(lat) || lon < -180 || lon >= 180 || lat < -90 && lat >= 90)
					{
						continue;
					}

					if (terrainCalc)
					{
						float terrain = (float)SCANUtil.getElevation(body, lon, lat);

						if (terrain < terrainMin)
						{
							terrainMin = terrain;
						}

						if (terrain > terrainMax)
						{
							terrainMax = terrain;
						}
					}

					if (currentResource != null)
					{
						float resource = SCANUtil.ResourceOverlay(lat, lon, currentResource.Name, body, SCAN_Settings_Config.Instance.BiomeLock) * 100f;

						if (resource < resourceMin)
						{
							resourceMin = resource;
						}

						if (resource > resourceMax)
						{
							resourceMax = resource;
						}
						//SCANUtil.SCANlog("Check Location: Lat: {3} x Long: {4}\nResource: {0} - Min: {1} - Max: {2}"
						//    , resource.ToString("F2"), resourceMin.ToString("F2"), resourceMax.ToString("F2"), lat.ToString("F2"), lon.ToString("F2") );
					}
					else
					{
						resourceMax = 100;
						resourceMin = 0;
					}
				}
			}

			if (terrainMin > terrainMax)
			{
				terrainMin = terrainMax - 1f;
			}

			if (terrainMin == terrainMax)
			{
				terrainMin = terrainMax - 1f;
			}

			if (currentResource != null && currentResource.CurrentBody != null && resourceMin < currentResource.CurrentBody.MinValue)
			{
				resourceMin = currentResource.CurrentBody.MinValue;
			}

			if (resourceMin >= resourceMax)
			{
				resourceMax = resourceMin + 1f;
			}

			if (resourceMin < 0)
			{
				resourceMin = 0;
			}

			if (currentResource != null && currentResource.CurrentBody != null && resourceMax > currentResource.CurrentBody.MaxValue)
			{
				resourceMax = currentResource.CurrentBody.MaxValue;
			}

			if (resourceMin >= resourceMax)
			{
				resourceMin = resourceMax - 1f;
			}

			spotmap.setCustomRange(terrainMin, terrainMax, resourceMin, resourceMax);
		}

		private void checkForScanners()
		{
			narrowBand = SCANuiUtil.narrowBandInOrbit(body, Math.Abs(spotmap.CenteredLat) - 5, currentResource);

			if (!narrowBand || currentResource == null)
			{
				spotmap.Resource = null;
			}
			else
			{
				spotmap.Resource = currentResource;
				spotmap.Resource.CurrentBodyConfig(body.bodyName);
			}
		}

		private void AddOrbitMapLabels()
		{
			orbitMapLabels.Add(Aplabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.APMarker,
				pos = new Vector2(),
				baseColor = palette.cb_skyBlue,
				flash = false,
				width = 28,
				show = false
			});

			orbitMapLabels.Add(Pelabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.PEMarker,
				pos = new Vector2(),
				baseColor = palette.cb_skyBlue,
				flash = false,
				width = 28,
				show = false
			});

			orbitMapLabels.Add(Escapelabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.ExitMarker,
				pos = new Vector2(),
				baseColor = palette.cb_skyBlue,
				flash = false,
				width = 26,
				show = false
			});

			orbitMapLabels.Add(Encounterlabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.EncounterMarker,
				pos = new Vector2(),
				baseColor = palette.cb_skyBlue,
				flash = false,
				width = 26,
				show = false
			});

			orbitMapLabels.Add(Manlabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.ManeuverMarker,
				pos = new Vector2(),
				baseColor = palette.cb_reddishPurple,
				flash = false,
				width = 24,
				show = false
			});

			orbitMapLabels.Add(ManEscapelabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.ExitMarker,
				pos = new Vector2(),
				baseColor = palette.cb_reddishPurple,
				flash = false,
				width = 26,
				show = false
			});

			orbitMapLabels.Add(ManEncounterlabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.EncounterMarker,
				pos = new Vector2(),
				baseColor = palette.cb_reddishPurple,
				flash = false,
				width = 26,
				show = false
			});

			orbitMapLabels.Add(ManAplabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.APMarker,
				pos = new Vector2(),
				baseColor = palette.cb_reddishPurple,
				flash = false,
				width = 28,
				show = false
			});

			orbitMapLabels.Add(ManPelabel, new MapLabelInfo()
			{
				label = "",
				image = SCAN_UI_Loader.PEMarker,
				pos = new Vector2(),
				baseColor = palette.cb_reddishPurple,
				flash = false,
				width = 28,
				show = false
			});
		}

		public void OnDestroy()
		{
			SCANcontroller.controller.unloadPQS(spotmap.Body, mapSource.BigMap);

			GameEvents.onVesselChange.Remove(vesselChange);
			GameEvents.onVesselWasModified.Remove(vesselChange);
			GameEvents.onVesselSOIChanged.Remove(soiChange);

			if (uiElement != null)
			{
				uiElement.gameObject.SetActive(false);
				MonoBehaviour.Destroy(uiElement.gameObject);
			}

			if (resourceLegend != null)
			{
				GameObject.Destroy(resourceLegend);
				resourceLegend = null;
			}
		}

		public void SetScale(float scale)
		{
			if (uiElement != null)
			{
				uiElement.SetScale(scale);
			}
		}

		public void ProcessTooltips()
		{
			if (uiElement != null)
			{
				uiElement.ProcessTooltips();
			}
		}

		public void Update()
		{
			if (vesselChanged)
			{
				vesselChanged = false;
				
				if (uiElement != null)
				{
					uiElement.RefreshIcons();
				}
			}

			if (!_isVisible || data == null || spotmap == null)
			{
				return;
			}

			if (uiElement == null)
			{
				return;
			}

			if (!spotmap.isMapComplete())
			{
				if (SCAN_Settings_Config.Instance.MapGenerationSpeed > 2)
				{
					spotmap.getPartialMap(false);
					spotmap.getPartialMap(false);
				}

				if (SCAN_Settings_Config.Instance.MapGenerationSpeed > 1)
				{
					spotmap.getPartialMap(false);
				}

				spotmap.getPartialMap(true);
			}
			else if (rebuilding)
			{
				rebuilding = false;

				uiElement.ResetRefresh();
			}

			if (OrbitToggle && ShowOrbit)
			{
				if (vessel != null && vessel.mainBody == body && !vessel.LandedOrSplashed)
				{
					Orbit o = vessel.orbit;

					UpdateOrbitIcons(o);
				}
			}

			if (updateMap)
			{
				updateMap = false;
				uiElement.UpdateMapTexture(spotmap.Map);
			}
		}

		private void UpdateOrbitIcons(Orbit o)
		{
			double startUT = Planetarium.GetUniversalTime();
			double UT = startUT;
			Color col;

			for (int i = 0; i < orbitSteps * 2; i++)
			{
				if (i > orbitLabels.Count - 1)
				{
					break;
				}

				SimpleLabelInfo info = orbitLabels[i];

				if (info == null)
				{
					continue;
				}

				int k = i - orbitSteps;

				if (k < 0)
				{
					UT = startUT - (orbitSteps + k) * (o.period / orbitSteps);
				}
				else
				{
					UT = startUT + k * o.period * (1f / orbitSteps);
				}

				if (double.IsNaN(UT))
				{
					info.show = false;
					continue;
				}

				if (UT < o.StartUT && o.StartUT != startUT)
				{
					info.show = false;
					continue;
				}

				if (UT > o.EndUT)
				{
					info.show = false;
					continue;
				}

				if (double.IsNaN(o.getObtAtUT(UT)))
				{
					info.show = false;
					continue;
				}

				Vector3d pos = o.getPositionAtUT(UT);

				double rotation = 0;

				if (body.rotates)
				{
					rotation = (360 * ((UT - startUT) / body.rotationPeriod)) % 360;
				}

				double alt = body.GetAltitude(pos);

				if (alt < 0)
				{
					if (k < 0)
					{
						for (int j = k; j < 0; j++)
						{
							orbitLabels[j + orbitSteps].show = false;
						}

						i = orbitSteps;
						continue;
					}

					for (int j = k; j < orbitSteps; j++)
					{
						orbitLabels[j + orbitSteps].show = false;
					}

					break;
				}

				double lo = body.GetLongitude(pos) - rotation;
				double la = body.GetLatitude(pos);

				double lon = (spotmap.projectLongitude(lo, la) + 180) % 360;
				double lat = (spotmap.projectLatitude(lo, la) + 90) % 180;

				lon = spotmap.scaleLongitude(lon);
				lat = spotmap.scaleLatitude(lat);

				if (lat < 0 || lon < 0 || lat > 180 || lon > 360)
				{
					info.show = false;
					continue;
				}

				lon = lon * spotmap.MapWidth / 360;
				lat = lat * spotmap.MapHeight / 180;

				if (k < 0)
				{
					col = palette.cb_orange;
				}
				else
				{
					if (body.atmosphere && body.atmosphereDepth >= alt)
					{
						col = palette.cb_reddishPurple;
					}
					else
					{
						col = palette.cb_skyBlue;
					}
				}

				info.show = true;
				info.color = col;
				info.pos = new Vector2((float)lon, (float)lat);
			}

			MapLabelInfo Ap = orbitMapLabels[Aplabel];

			Vector2 labelPos;

			if (o.ApA > 0 && mapPosAtT(o, o.timeToAp, startUT, out labelPos))
			{
				Ap.show = true;
				Ap.pos = labelPos;
				Ap.label = o.ApA.ToString("N0");
			}
			else
			{
				Ap.show = false;
			}

			orbitMapLabels[Aplabel] = Ap;

			MapLabelInfo Pe = orbitMapLabels[Pelabel];

			if (o.PeA > 0 && mapPosAtT(o, o.timeToPe, startUT, out labelPos))
			{
				Pe.show = true;
				Pe.pos = labelPos;
				Pe.label = o.PeA.ToString("N0");
			}
			else
			{
				Pe.show = false;
			}

			orbitMapLabels[Pelabel] = Pe;

			if (o.patchEndTransition == Orbit.PatchTransitionType.ESCAPE && mapPosAtT(o, o.EndUT, startUT, out labelPos))
			{
				MapLabelInfo Esc = orbitMapLabels[Escapelabel];

				Esc.show = true;
				Esc.pos = labelPos;

				orbitMapLabels[Escapelabel] = Esc;
			}
			else if (o.patchEndTransition == Orbit.PatchTransitionType.ENCOUNTER && mapPosAtT(o, o.EndUT, startUT, out labelPos))
			{
				MapLabelInfo Enc = orbitMapLabels[Encounterlabel];

				Enc.show = true;
				Enc.pos = labelPos;

				orbitMapLabels[Encounterlabel] = Enc;
			}
			else
			{
				MapLabelInfo Esc = orbitMapLabels[Escapelabel];
				Esc.show = false;
				orbitMapLabels[Escapelabel] = Esc;

				MapLabelInfo Enc = orbitMapLabels[Encounterlabel];
				Enc.show = false;
				orbitMapLabels[Encounterlabel] = Enc;
			}

			if (vessel.patchedConicSolver != null)
			{
				if (vessel.patchedConicSolver.maneuverNodes.Count > 0)
				{
					ManeuverNode n = vessel.patchedConicSolver.maneuverNodes[0];

					if (n.patch == o && n.nextPatch != null && n.nextPatch.activePatch && n.UT > startUT - o.period && mapPosAtT(o, n.UT - startUT, startUT, out labelPos))
					{
						MapLabelInfo Man = orbitMapLabels[Manlabel];

						Man.show = true;
						Man.pos = labelPos;

						orbitMapLabels[Manlabel] = Man;

						Orbit next = n.nextPatch;

						for (int i = 0; i < orbitSteps; i++)
						{
							SimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];

							double T = n.UT - startUT + i * next.period / orbitSteps;

							if (T + startUT > next.EndUT)
							{
								for (int j = i; j < orbitSteps; j++)
								{
									orbitLabels[orbitSteps * 2 + j].show = false;
								}

								info.show = false;

								break;
							}

							if (mapPosAtT(next, T, startUT, out labelPos))
							{
								info.color = palette.cb_reddishPurple;
								info.show = true;
								info.pos = labelPos;
							}
							else
							{
								info.show = false;
								continue;
							}
						}

						if (next.patchEndTransition == Orbit.PatchTransitionType.ESCAPE)
						{
							MapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];

							ManEsc.show = true;
							ManEsc.pos = labelPos;

							orbitMapLabels[ManEscapelabel] = ManEsc;
						}
						else if (next.patchEndTransition == Orbit.PatchTransitionType.ENCOUNTER)
						{
							MapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];

							ManEnc.show = true;
							ManEnc.pos = labelPos;

							orbitMapLabels[ManEncounterlabel] = ManEnc;
						}
						else
						{
							MapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];
							ManEsc.show = false;
							orbitMapLabels[ManEscapelabel] = ManEsc;

							MapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];
							ManEnc.show = false;
							orbitMapLabels[ManEncounterlabel] = ManEnc;
						}

						MapLabelInfo ManAp = orbitMapLabels[ManAplabel];

						if (next.timeToAp > 0 && n.UT + next.timeToAp < next.EndUT && mapPosAtT(next, n.UT - startUT + next.timeToAp, startUT, out labelPos))
						{
							ManAp.show = true;
							ManAp.pos = labelPos;
						}
						else
						{
							ManAp.show = false;
						}

						orbitMapLabels[ManAplabel] = ManAp;

						MapLabelInfo ManPe = orbitMapLabels[ManPelabel];

						if (next.timeToPe > 0 && n.UT + next.timeToPe < next.EndUT && mapPosAtT(next, n.UT - startUT + next.timeToPe, startUT, out labelPos))
						{
							ManPe.show = true;
							ManPe.pos = labelPos;
						}
						else
						{
							ManPe.show = false;
						}

						orbitMapLabels[ManPelabel] = ManPe;

					}
					else
					{
						MapLabelInfo Man = orbitMapLabels[Manlabel];
						Man.show = false;
						orbitMapLabels[Manlabel] = Man;

						MapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];
						ManEsc.show = false;
						orbitMapLabels[ManEscapelabel] = ManEsc;

						MapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];
						ManEnc.show = false;
						orbitMapLabels[ManEncounterlabel] = ManEnc;

						MapLabelInfo ManAp = orbitMapLabels[ManAplabel];
						ManAp.show = false;
						orbitMapLabels[ManAplabel] = ManAp;

						MapLabelInfo ManPe = orbitMapLabels[ManPelabel];
						ManPe.show = false;
						orbitMapLabels[ManPelabel] = ManPe;

						for (int i = 0; i < orbitSteps; i++)
						{
							SimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];
							info.show = false;
						}
					}

				}
				else
				{
					MapLabelInfo Man = orbitMapLabels[Manlabel];
					Man.show = false;
					orbitMapLabels[Manlabel] = Man;

					MapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];
					ManEsc.show = false;
					orbitMapLabels[ManEscapelabel] = ManEsc;

					MapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];
					ManEnc.show = false;
					orbitMapLabels[ManEncounterlabel] = ManEnc;

					MapLabelInfo ManAp = orbitMapLabels[ManAplabel];
					ManAp.show = false;
					orbitMapLabels[ManAplabel] = ManAp;

					MapLabelInfo ManPe = orbitMapLabels[ManPelabel];
					ManPe.show = false;
					orbitMapLabels[ManPelabel] = ManPe;

					for (int i = 0; i < orbitSteps; i++)
					{
						SimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];
						info.show = false;
					}
				}

			}
		}

		private double meanForTrue(double TA, double e)
		{
			TA = TA * Mathf.Deg2Rad;

			double EA = Math.Acos((e + Math.Cos(TA)) / (1 + e * Math.Cos(TA)));

			if (TA > Math.PI)
			{
				EA = 2 * Math.PI - EA;
			}

			double MA = EA - e * Math.Sin(EA);

			// the mean anomaly isn't really an angle, but I'm a simple person
			return MA * Mathf.Rad2Deg;
		}

		private bool mapPosAtT(Orbit o, double dT, double startUT, out Vector2 labelPos)
		{
			labelPos = new Vector2();

			double UT = startUT + dT;

			if (double.IsNaN(UT))
			{
				return false;
			}

			try
			{
				if (double.IsNaN(o.getObtAtUT(UT)))
				{
					return false;
				}

				Vector3d pos = o.getPositionAtUT(UT);
				double rotation = 0;

				if (body.rotates)
				{
					rotation = (360 * (dT / vessel.mainBody.rotationPeriod)) % 360;
				}

				double lo = (body.GetLongitude(pos) - rotation);
				double la = (body.GetLatitude(pos));

				double lon = (spotmap.projectLongitude(lo, la) + 180) % 360;
				double lat = (spotmap.projectLatitude(lo, la) + 90) % 180;

				lat = spotmap.scaleLatitude(lat);
				lon = spotmap.scaleLongitude(lon);

				if (lat < 0 || lon < 0 || lat > 180 || lon > 360)
				{
					return false;
				}

				lon = lon * spotmap.MapWidth / 360;
				lat = lat * spotmap.MapHeight / 180;

				labelPos = new Vector2((float)lon, (float)lat);

				return true;
			}
			catch (Exception)
			{
				return false;
			}
		}

		public void RefreshIcons()
		{
			if (uiElement != null)
			{
				uiElement.RefreshIcons();
			}
		}

		public void setToPosition(double lat, double lon, SCANmap map)
		{
			SCANcontroller.controller.zoomMapType = map.MType.ToString();
			SCANcontroller.controller.zoomMapColor = map.ColorMap;
			SCANcontroller.controller.zoomMapResource = map.Resource.Name;
			SCANcontroller.controller.zoomMapResourceOn = map.ResourceActive;

			initializeMapCenter(SCANUtil.fixLatShift(lat), SCANUtil.fixLonShift(lon), map.Body);

			initialized = true;
		}

		public void setToVessel()
		{
			if (vessel == null)
			{
				initializeMapCenter(0, 0, FlightGlobals.GetHomeBody());
				return;
			}
			if (initialized && !VesselLock)
			{
				return;
			}

			initializeMapCenter(SCANUtil.fixLatShift(vessel.latitude), SCANUtil.fixLonShift(vessel.longitude), vessel.mainBody);

			initialized = true;
		}

		public string Version
		{
			get { return SCANmainMenuLoader.SCANsatVersion; }
		}

		public string CurrentMapType
		{
			get { return SCANcontroller.controller.zoomMapType; }
			set
			{
				mapType t;

				try
				{
					t = (mapType)Enum.Parse(typeof(mapType), value, true);

					SCANcontroller.controller.zoomMapType = value;
					spotmap.MType = t;
					resetMap();
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Error in parsing map type\n{0}", e);
				}
			}
		}

		public string CurrentResource
		{
			get { return SCANUtil.displayNameFromResource(SCANcontroller.controller.zoomMapResource); }
			set
			{
				SCANcontroller.controller.zoomMapResource = SCANUtil.resourceFromDisplayName(value);

				currentResource = AssignResource(SCANcontroller.controller.zoomMapResource);

				if (currentResource == null)
				{
					spotmap.Resource = null;
				}
				else
				{
					spotmap.Resource = currentResource;
				}
			}
		}

		public string ZoomLevelText
		{
			get
			{
				double zoom = spotmap.MapScale;

				return (zoom > 999 ? zoom.ToString("N0") : zoom.ToString("N2")) + "X";
			}
		}

		public string MapCenterText
		{
			get
			{
				infoString.Clear();
				SCANuiUtil.toDMS(infoString, spotmap.CenteredLat, spotmap.CenteredLong);
				return infoString.ToString();
			}
		}

		public string RandomWaypoint
		{
			get { return StringUtilities.GenerateSiteName(gen.Next(), body, false, true); }
		}

		private SCANresourceGlobal AssignResource(string resource)
		{
			SCANresourceGlobal r = currentResource;

			if (r == null || r.Name != resource)
			{
				for (int i = resources.Count - 1; i >= 0; i--)
				{
					SCANresourceGlobal res = resources[i];

					if (res.Name != resource)
					{
						continue;
					}

					r = res;
					break;
				}
			}

			if (r == null)
			{
				r = SCANcontroller.GetFirstResource;
			}

			if (r != null)
			{
				r.CurrentBodyConfig(body.bodyName);
			}

			return r;
		}

		public bool IsVisible
		{
			get { return _isVisible; }
			set
			{
				_isVisible = value;

				if (!value)
				{
					Close();
				}
			}
		}

		public bool Rebuilding
		{
			get
			{
				if (spotmap == null)
				{
					return false;
				}

				return !spotmap.isMapComplete();
			}
		}

		public bool VesselLock
		{
			get { return SCANcontroller.controller.zoomMapVesselLock; }
			set
			{
				SCANcontroller.controller.zoomMapVesselLock = value;

				if (value)
				{
					VesselSync();
				}
			}
		}

		public bool ColorToggle
		{
			get { return SCANcontroller.controller.zoomMapColor; }
			set
			{
				SCANcontroller.controller.zoomMapColor = value;

				spotmap.ColorMap = value;
				resetMap();
			}
		}

		public bool TerminatorToggle
		{
			get { return SCANcontroller.controller.zoomMapTerminator; }
			set
			{
				SCANcontroller.controller.zoomMapTerminator = value;

				spotmap.Terminator = value;
				resetMap();
			}
		}

		public bool OrbitToggle
		{
			get { return SCANcontroller.controller.zoomMapOrbit; }
			set
			{
				SCANcontroller.controller.zoomMapOrbit = value;

				if (value && ShowOrbit)
				{
					Orbit o = vessel.orbit;

					orbitLabels.Clear();

					for (int i = 0; i < orbitSteps * 3; i++)
					{
						orbitLabels.Add(new SimpleLabelInfo(10, SCAN_UI_Loader.PlanetIcon));
					}

					if (!vessel.LandedOrSplashed)
					{
						UpdateOrbitIcons(o);
					}
				}

				updateMap = true;
			}
		}

		public bool IconsToggle
		{
			get { return SCANcontroller.controller.zoomMapIcons; }
			set { SCANcontroller.controller.zoomMapIcons = value; }
		}

		public bool LegendToggle
		{
			get { return SCANcontroller.controller.zoomMapLegend; }
			set { SCANcontroller.controller.zoomMapLegend = value; }
		}

		public bool LegendAvailable
		{
			get
			{
				if (WindowState != 0)
				{
					return false;
				}

				switch (spotmap.MType)
				{
					case mapType.Altimetry:
						return body.pqsController != null;
					case mapType.Biome:
						return body.BiomeMap != null && SCAN_Settings_Config.Instance.LegendTooltips;
				}

				return false;
			}
		}

		public bool ResourceToggle
		{
			get { return SCANcontroller.controller.zoomMapResourceOn; }
			set
			{
				SCANcontroller.controller.zoomMapResourceOn = value;

				resetMap();
			}
		}

		public bool OrbitAvailable
		{
			get { return HighLogic.LoadedSceneIsFlight; }
		}

		public bool ShowOrbit
		{
			get
			{
				return HighLogic.LoadedSceneIsFlight
				&& vessel != null
				&& body != null
				&& vessel.mainBody == body
				&& GameVariables.Instance.GetOrbitDisplayMode(
					ScenarioUpgradeableFacilities.GetFacilityLevel(
					SpaceCenterFacility.TrackingStation)
					) == GameVariables.OrbitDisplayMode.PatchedConics;
			}
		}

		public bool ShowWaypoint
		{
			get { return HighLogic.LoadedScene != GameScenes.SPACECENTER; }
		}

		public bool ShowResource
		{
			get { return SCANcontroller.MasterResourceCount > 1; }
		}

		public bool ShowVessel
		{
			get { return HighLogic.LoadedSceneIsFlight; }
		}

		public bool MechJebAvailable
		{
			get { return SCANmainMenuLoader.MechJebLoaded && SCAN_Settings_Config.Instance.MechJebTarget && SCANcontroller.controller.MechJebLoaded; }
		}

		public bool TooltipsOn
		{
			get { return SCAN_Settings_Config.Instance.WindowTooltips; }
		}

		public bool LegendTooltips
		{
			get { return SCAN_Settings_Config.Instance.LegendTooltips; }
		}

		public bool LockInput
		{
			get { return _inputLock; }
			set
			{
				_inputLock = value;

				if (_inputLock)
				{
					InputLockManager.SetControlLock(controlLock);
				}
				else
				{
					InputLockManager.RemoveControlLock(controlLock);
				}
			}
		}

		public bool ZoomPersist
		{
			get { return SCANcontroller.controller.zoomMapZoomPersist; }
			set { SCANcontroller.controller.zoomMapZoomPersist = value; }
		}

		public int OrbitSteps
		{
			get { return orbitSteps * 3; }
		}

		public int CurrentScene
		{
			get
			{
				switch (HighLogic.LoadedScene)
				{
					case GameScenes.FLIGHT:
						return 0;
					case GameScenes.TRACKSTATION:
						return 1;
					case GameScenes.SPACECENTER:
						return 2;
					default:
						return -1;
				}
			}
		}

		public int WindowState
		{
			get { return SCANcontroller.controller.zoomMapState; }
			set { SCANcontroller.controller.zoomMapState = value; }
		}

		public int MapRefresh
		{
			get { return SCANcontroller.controller.zoomMapRefresh; }
			set { SCANcontroller.controller.zoomMapRefresh = value; }
		}

		public float Scale
		{
			get { return SCAN_Settings_Config.Instance.UIScale; }
		}

		public Sprite WaypointSprite
		{
			get { return SCAN_UI_Loader.WaypointIcon; }
		}

		public Canvas MainCanvas
		{
			get { return UIMasterController.Instance.dialogCanvas; }
		}

		public Canvas TooltipCanvas
		{
			get { return UIMasterController.Instance.tooltipCanvas; }
		}

		public Vector2 Position
		{
			get { return SCAN_Settings_Config.Instance.ZoomMapPosition; }
			set { SCAN_Settings_Config.Instance.ZoomMapPosition = value; }
		}

		public Vector2 Size
		{
			get { return SCAN_Settings_Config.Instance.ZoomMapSize; }
			set
			{
				SCAN_Settings_Config.Instance.ZoomMapSize = value;

				double scale = spotmap.MapScale;
				spotmap.setSize(value);
				spotmap.MapScale = scale;

				resetMap();

				updateMap = true;
			}
		}

		public Texture2D LegendImage
		{
			get
			{
				if (spotmap.MapLegend == null)
				{
					spotmap.MapLegend = new SCANmapLegend();
				}

				if (data == null)
				{
					return null;
				}

				switch (spotmap.MType)
				{
					case mapType.Altimetry:
						return spotmap.MapLegend.getLegend(SCANcontroller.controller.zoomMapColor, data.TerrainConfig);
					case mapType.Biome:
						if (body != null && body.BiomeMap != null && body.BiomeMap.Attributes != null)
						{
							biomes = new List();

							int w = spotmap.MapWidth / 4;
							int h = spotmap.MapHeight / 4;

							for (int i = 0; i < spotmap.MapHeight; i += 4)
							{
								for (int j = 0; j < spotmap.MapWidth; j += 4)
								{
									double lon = spotmap.Lon_Offset + (j * 1.0f / spotmap.MapScale) - 180;
									double lat = spotmap.Lat_Offset + (i * 1.0f / spotmap.MapScale) - 90;
									double la = lat, lo = lon;
									lat = spotmap.unprojectLatitude(lo, la);
									lon = spotmap.unprojectLongitude(lo, la);

									if (lon < -180 || lon >= 180 || lat < -90 && lat >= 90 || double.IsNaN(lon) || double.IsNaN(lat))
									{
										continue;
									}

									CBAttributeMapSO.MapAttribute biome = SCANUtil.getBiome(body, lon, lat);

									bool add = true;

									for (int b = biomes.Count - 1; b >= 0; b--)
									{
										if (biome != biomes[b])
										{
											continue;
										}

										add = false;
										break;
									}

									if (add)
									{
										biomes.Add(biome);
									}
								}
							}


							return spotmap.MapLegend.getLegend(data, SCANcontroller.controller.zoomMapColor, SCAN_Settings_Config.Instance.BigMapStockBiomes, biomes.ToArray(), true);
						}
						else
						{
							return null;
						}
				}

				return null;
			}
		}

		public IList MapTypes
		{
			get { return new List(3) { "Altimetry", "Slope", "Biome", "Visual" }; }
		}

		public IList Resources
		{
			get
			{
				List rList = new List();

				bool threshold;

				if (!SCAN_Settings_Config.Instance.HideZeroResources)
				{
					threshold = SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100) || SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100);
				}
				else
				{
					threshold = true;
				}

				for (int i = 0; i < resources.Count; i++)
				{
					SCANresourceGlobal res = resources[i];

					if (threshold)
					{
						SCANresourceBody resBody = res.getBodyConfig(body.bodyName);

						if (resBody != null)
						{
							if (resBody.DefaultZero)
							{
								continue;
							}
						}
						else if (res.DefaultZero)
						{
							continue;
						}
					}

					rList.Add(res.DisplayName);
				}

				return rList;
			}
			//get { return new List(resources.Select(r => r.DisplayName)); }
		}

		public IList LegendLabels
		{
			get
			{
				if (data == null)
				{
					return null;
				}

				string one = string.Format("|\n{0}", (((int)(terrainMin / 100)) * 100).ToString("N0"));

				string two = string.Format("|\n{0}", (((int)((terrainMin + ((terrainMax - terrainMin) / 2)) / 100)) * 100).ToString("N0"));

				string three = string.Format("|\n{0}", (((int)(terrainMax / 100)) * 100).ToString("N0"));

				return new List(3) { one, two, three };
			}
		}

		public SimpleLabelInfo OrbitInfo(int index)
		{
			if (index < 0 || index >= orbitLabels.Count)
			{
				return null;
			}

			return orbitLabels[index];
		}

		public MapLabelInfo OrbitIconInfo(string id)
		{
			MapLabelInfo info;

			if (OrbitLabelList.TryGetValue(id, out info))
			{
				return info;
			}

			return new MapLabelInfo();
		}

		public Vector2 VesselPosition()
		{
			if (vessel == null)
			{
				return new Vector2();
			}

			return VesselPosition(vessel);
		}

		public Vector2 VesselPosition(Guid id)
		{
			Vessel v = null;

			for (int i = FlightGlobals.Vessels.Count - 1; i >= 0; i--)
			{
				v = FlightGlobals.Vessels[i];

				if (v.id == id)
				{
					break;
				}
			}

			return VesselPosition(v);
		}

		public Vector2 VesselPosition(Vessel v)
		{
			if (v == null)
			{
				return new Vector2();
			}

			double lat = SCANUtil.fixLat(spotmap.projectLatitude(v.longitude, v.latitude));
			double lon = SCANUtil.fixLon(spotmap.projectLongitude(v.longitude, v.latitude));
			lat = spotmap.scaleLatitude(lat);
			lon = spotmap.scaleLongitude(lon);

			if (lat < 0 || lon < 0 || lat > 180 || lon > 360)
			{
				return new Vector2(-1, -1);
			}

			lon = lon * spotmap.MapWidth / 360;
			lat = lat * spotmap.MapHeight / 180;

			return new Vector2((float)lon, (float)lat);
		}

		public Vector2 MapPosition(double lat, double lon)
		{
			double Lat = SCANUtil.fixLat(spotmap.projectLatitude(lon, lat));
			double Lon = SCANUtil.fixLon(spotmap.projectLongitude(lon, lat));
			Lat = spotmap.scaleLatitude(Lat);
			Lon = spotmap.scaleLongitude(Lon);

			if (Lat < 0 || Lon < 0 || Lat > 180 || Lon > 360)
			{
				return new Vector2(-1, -1);
			}

			Lon = Lon * spotmap.MapWidth / 360;
			Lat = Lat * spotmap.MapHeight / 180;

			return new Vector2((float)Lon, (float)Lat);
		}

		public Texture2D ResourceLegendImage
		{
			get
			{
				if (resourceLegend == null)
				{
					resourceLegend = new Texture2D(RESOURCELEGENDWIDTH, 1, TextureFormat.RGB24, false);
				}

				if (currentResource == null)
				{
					return null;
				}

				Color32[] pix = new Color32[RESOURCELEGENDWIDTH];

				for (int i = 0; i < RESOURCELEGENDWIDTH; i++)
				{
					float val = (i * 1f) / (RESOURCELEGENDWIDTH * 1f);
					pix[i] = palette.lerp(currentResource.MinColor32, currentResource.MaxColor32, val);
				}

				resourceLegend.SetPixels32(pix);
				resourceLegend.Apply();

				return resourceLegend;
			}
		}

		public Vector2 ResourceLegendLabels
		{
			get { return new Vector2(resourceMin / 100f, resourceMax / 100f); }
		}

		public Dictionary OrbitLabelList
		{
			get { return orbitMapLabels; }
		}

		public IList FlagInfoList
		{
			get
			{
				List vessels = new List();
				mapFlags.Clear();

				for (int i = FlightGlobals.Vessels.Count - 1; i >= 0; i--)
				{
					Vessel v = FlightGlobals.Vessels[i];

					if (v == null)
					{
						continue;
					}

					if (v.vesselType != VesselType.Flag)
					{
						continue;
					}

					if (v.mainBody != body)
					{
						continue;
					}

					mapFlags.Add(v);

					Vector2 flagPos = VesselPosition(v.id);

					vessels.Add(new MapLabelInfo()
					{
						label = "",
						image = SCAN_UI_Loader.FlagIcon,
						pos = flagPos,
						baseColor = ColorToggle ? palette.cb_yellow : palette.cb_skyBlue,
						flash = false,
						width = 32,
						show = flagPos.x >= 0 && flagPos.y >= 0
					});
				}

				return vessels;
			}
		}

		public Dictionary AnomalyInfoList
		{
			get
			{
				Dictionary anomalies = new Dictionary();

				if (data != null)
				{
					for (int i = data.Anomalies.Length - 1; i >= 0; i--)
					{
						SCANanomaly a = data.Anomalies[i];

						if (a == null)
						{
							continue;
						}

						if (!a.Known)
						{
							continue;
						}

						if (anomalies.ContainsKey(a.Name))
						{
							continue;
						}

						Vector2 mapPos = MapPosition(a.Latitude, a.Longitude);

						anomalies.Add(a.Name, new MapLabelInfo()
						{
							label = "",
							image = SCAN_UI_Loader.AnomalyIcon,
							pos = mapPos,
							baseColor = a.Detail ? (ColorToggle ? palette.cb_yellow : palette.cb_skyBlue) : palette.xkcd_LightGrey,
							flash = false,
							width = 20,
							alignBottom = 8,
							show = mapPos.x >= 0 && mapPos.y >= 0
						});
					}
				}

				return anomalies;
			}
		}

		public IList ROCInfoList
		{
			get
			{
				List rocs = new List();

				if (data != null && SCANcontroller.controller.SerenityLoaded)
				{
					List ROCS = data.ROCS(true);

					if (ROCS == null)
					{
						return null;
					}

					for (int i = ROCS.Count - 1; i >= 0; i--)
					{
						SCANROC r = ROCS[i];

						if (r == null)
						{
							continue;
						}

						if (!r.Known)
						{
							continue;
						}

						Vector2 mapPos = MapPosition(r.Latitude, r.Longitude);

						rocs.Add(new MapLabelInfo()
						{
							label = "",
							image = SCAN_UI_Loader.ROCIcon,
							pos = mapPos,
							baseColor = r.Known ? ColorToggle ? palette.cb_yellow : palette.cb_skyBlue : palette.xkcd_LightGrey,
							flash = false,
							width = 18,
							show = mapPos.x >= 0 && mapPos.y >= 0
						});
					}
				}

				return rocs;
			}
		}

		public Dictionary WaypointInfoList
		{
			get
			{
				Dictionary waypoints = new Dictionary();

				if (data != null)
				{
					for (int i = data.Waypoints.Count - 1; i >= 0; i--)
					{
						SCANwaypoint w = data.Waypoints[i];

						if (w == null)
						{
							continue;
						}

						Vector2 wayPos = MapPosition(w.Latitude, w.Longitude);

						if (w.LandingTarget)
						{
							if (waypoints.ContainsKey(w.Seed))
							{
								continue;
							}

							waypoints.Add(w.Seed, new MapLabelInfo()
							{
								label = "",
								image = SCAN_UI_Loader.MechJebIcon,
								pos = wayPos,
								baseColor = palette.red,
								flash = false,
								width = 20,
								alignBottom = 0,
								show = wayPos.x >= 0 && wayPos.y >= 0
							});
						}
						else
						{
							if (waypoints.ContainsKey(w.Seed))
							{
								continue;
							}

							waypoints.Add(w.Seed, new MapLabelInfo()
							{
								label = "",
								image = SCAN_UI_Loader.WaypointIcon,
								pos = wayPos,
								baseColor = palette.white,
								flash = false,
								width = 20,
								alignBottom = 10,
								show = wayPos.x >= 0 && wayPos.y >= 0
							});
						}
					}
				}

				return waypoints;
			}
		}

		public KeyValuePair VesselInfo
		{
			get
			{
				if (vessel == null || vessel.mainBody != body)
				{
					return new KeyValuePair(new Guid(), new MapLabelInfo() { label = "null" });
				}

				Vector2 vesPos = VesselPosition(vessel);

				return new KeyValuePair(vessel.id, new MapLabelInfo()
				{
					label = "",
					image = SCAN_UI_Loader.VesselIcon(vessel.vesselType),
					pos = vesPos,
					baseColor = ColorToggle ? palette.white : palette.cb_skyBlue,
					flashColor = palette.cb_yellow,
					flash = true,
					width = 28,
					show = vesPos.x >= 0 && vesPos.y >= 0
				});
			}
		}

		private Vector2d MousePosition(Vector2 pos)
		{
			float mx = pos.x;
			float my = pos.y * -1f;

			double mlo = spotmap.Lon_Offset + (mx / spotmap.MapScale) - 180;
			double mla = spotmap.Lat_Offset + (spotmap.MapHeight / spotmap.MapScale) - (my / spotmap.MapScale) - 90;

			double mlon = spotmap.unprojectLongitude(mlo, mla);
			double mlat = spotmap.unprojectLatitude(mlo, mla);

			return new Vector2d(mlon, mlat);
		}

		public void ClampToScreen(RectTransform rect)
		{
			UIMasterController.ClampToScreen(rect, Vector2.zero);
		}

		public string MapInfo(Vector2 mapPos)
		{
			Vector2d pos = MousePosition(mapPos);

			double mlon = pos.x;
			double mlat = pos.y;

			if (mlon >= -180 && mlon <= 180 && mlat >= -90 && mlat <= 90)
			{
				return mouseOverInfo(mlon, mlat);
			}
			else
			{
				return "";
			}
		}

		private string mouseOverInfo(double lon, double lat)
		{
			if (infoString == null)
			{
				infoString = new StringBuilder();
			}

			infoString.Length = 0;

			bool altimetry = SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry);
			bool hires = SCANUtil.isCovered(lon, lat, data, SCANtype.AltimetryHiRes);

			if (altimetry)
			{
				SCANuiUtil.getMouseOverElevation(infoString, lon, lat, data, 2, hires);
				infoString.Append(" ");

				if (hires)
				{
					double circum = body.Radius * 2 * Math.PI;
					double eqDistancePerDegree = circum / 360;
					double degreeOffset = 5 / eqDistancePerDegree;

					infoString.AppendFormat("{0}° ", SCANUtil.slope(SCANUtil.getElevation(body, lon, lat), body, lon, lat, degreeOffset).ToString("F1"));
				}
			}

			if (SCANUtil.isCovered(lon, lat, data, SCANtype.Biome))
			{
				if (body.BiomeMap != null)
				{
					SCANUtil.getBiomeDisplayName(infoString, body, lon, lat);
					infoString.Append(" ");
				}
			}

			if (SCANconfigLoader.GlobalResource && spotmap.Resource != null)
			{
				bool resources = false;
				bool fuzzy = false;

				if (SCANUtil.isCovered(lon, lat, data, SCANtype.ResourceHiRes))
				{
					resources = true;
				}
				else if (SCANUtil.isCovered(lon, lat, data, SCANtype.ResourceLoRes))
				{
					resources = true;
					fuzzy = true;
				}

				if (resources)
				{
					infoString.Append(SCANuiUtil.getResourceAbundance(spotmap.Body, lat, lon, fuzzy, spotmap.Resource));
				}
			}

			infoString.AppendLine();
			SCANuiUtil.toDMS(infoString, lat, lon);
			infoString.AppendFormat(" (lat: {0}° lon: {1}°)", lat.ToString("F2"), lon.ToString("F2"));

			if (SCANcontroller.controller.zoomMapIcons)
			{
				infoString.AppendLine();

				double range = (ContractDefs.Survey.MaximumTriggerRange * 10) / spotmap.MapScale;

				for (int i = data.Waypoints.Count - 1; i >= 0; i--)
				{
					SCANwaypoint p = data.Waypoints[i];

					if (!p.LandingTarget)
					{
						if (p.Root != null)
						{
							if (p.Root.ContractState != Contracts.Contract.State.Active)
							{
								continue;
							}
						}
						if (p.Param != null)
						{
							if (p.Param.State != Contracts.ParameterState.Incomplete)
							{
								continue;
							}
						}

						if (SCANUtil.waypointDistance(lat, lon, 1000, p.Latitude, p.Longitude, 1000, body) <= range)
						{
							infoString.AppendFormat("Way: {0} ", p.Name);
							break;
						}
					}
					else if (SCANUtil.waypointDistance(lat, lon, 1000, p.Latitude, p.Longitude, 1000, body) <= range)
					{
						infoString.Append("MJ: ");
						SCANuiUtil.toDMS(infoString, p.Latitude, p.Longitude);
						break;
					}
				}

				for (int i = data.Anomalies.Length - 1; i >= 0; i--)
				{
					SCANanomaly a = data.Anomalies[i];

					if (a.Known)
					{
						if (SCANUtil.mapLabelDistance(lat, lon, a.Latitude, a.Longitude, body) <= range)
						{
							if (a.Detail)
							{
								infoString.AppendFormat("?: {0} ", a.Name);
							}
							else
							{
								infoString.Append("?: Unknown ");
							}

							break;
						}
					}
				}

				if (SCANcontroller.controller.SerenityLoaded)
				{
					List ROCS = data.ROCS(false);

					if (ROCS != null)
					{
						for (int i = ROCS.Count - 1; i >= 0; i--)
						{
							SCANROC r = ROCS[i];

							if (r.Known)
							{
								if (SCANUtil.mapLabelDistance(lat, lon, r.Latitude, r.Longitude, body) <= range)
								{
									if (r.Scanned)
									{
										infoString.AppendFormat("ROC: {0} ", r.Name);
									}
									else
									{
										infoString.Append("ROC: Unknown ");
									}

									break;
								}
							}
						}
					}
				}

				for (int i = mapFlags.Count - 1; i >= 0; i--)
				{
					Vessel flag = mapFlags[i];

					if (SCANUtil.mapLabelDistance(lat, lon, flag.latitude, flag.longitude, body) <= range)
					{
						infoString.Append(" Flag: ");
						infoString.Append(flag.vesselName);
						break;
					}
				}
			}

			return infoString.ToString();
		}

		public string TooltipText(float xPos)
		{
			switch (spotmap.MType)
			{
				case mapType.Biome:
					if (biomes.Count <= 0)
					{
						return "";
					}

					int count = biomes.Count;

					int blockSize = (int)Math.Truncate(256 / (count * 1d));

					int current = (int)Math.Truncate((xPos * 256) / (blockSize * 1d));

					if (current >= count)
					{
						current = count - 1;
					}
					else if (current < 0)
					{
						current = 0;
					}

					return Localizer.Format(biomes[current].displayname);
				case mapType.Altimetry:
					float terrain = xPos * (terrainMax - terrainMin) + terrainMin;

					return string.Format("{0}m", terrain.ToString("N0"));
			}

			return "";
		}

		public void RefreshMap()
		{
			resetMap();

			uiElement.SetLegends(LegendToggle);
		}

		public void VesselSync()
		{
			vessel = FlightGlobals.ActiveVessel;

			if (vessel == null)
			{
				return;
			}

			if (vessel.mainBody != body)
			{
				SCANdata dat = SCANUtil.getData(vessel.mainBody);
				if (dat == null)
				{
					dat = new SCANdata(vessel.mainBody);
				}

				data = dat;
				body = data.Body;

				spotmap.setBody(body);
			}

			resetMap(SCANUtil.fixLatShift(vessel.latitude), SCANUtil.fixLonShift(vessel.longitude), true);
		}

		public void MoveMap(int i)
		{
			if (VesselLock)
			{
				resetMapToVessel();
				return;
			}

			double div = 3;

			if (spotmap.MapScale < 4)
			{
				div = 5;
			}

			double w = (spotmap.MapWidth / spotmap.MapScale) / div;
			double h = (spotmap.MapHeight / spotmap.MapScale) / div;

			double lon = spotmap.CenteredLong;

			if (i == 2)
			{
				if (spotmap.CenteredLat + h > 90)
				{
					lon += 180;
					lon = SCANUtil.fixLonShift(lon);
				}
			}
			else if (i == 3)
			{
				if (spotmap.CenteredLat - h < -90)
				{
					lon += 180;
					lon = SCANUtil.fixLonShift(lon);
				}
			}

			switch (i)
			{
				case 0:
					w = spotmap.CenteredLong - w;
					if (w < -180)
					{
						w += 360;
					}

					resetMap(spotmap.CenteredLat, w, true);
					break;
				case 1:
					w = spotmap.CenteredLong + w;
					if (w > 180)
					{
						w -= 360;
					}

					resetMap(spotmap.CenteredLat, w, true);
					break;
				case 2:
					h = spotmap.CenteredLat + h;
					if (h > 90)
					{
						h = 180 - h;
					}

					resetMap(h, lon, true);
					break;
				case 3:
					h = spotmap.CenteredLat - h;
					if (h < -90)
					{
						h = -180 - h;
					}

					resetMap(h, lon, true);
					break;
			}
		}

		public void ZoomMap(bool zoom)
		{
			if (zoom)
			{
				spotmap.MapScale = spotmap.MapScale * 1.25f;
				if (spotmap.MapScale > maxZoom)
				{
					spotmap.MapScale = maxZoom;
				}

				resetMap();
			}
			else
			{
				spotmap.MapScale = spotmap.MapScale / 1.25f;
				if (spotmap.MapScale < minZoom)
				{
					spotmap.MapScale = minZoom;
				}

				resetMap();
			}
		}

		public void SetWaypoint(string id, Vector2 pos)
		{
			if (string.IsNullOrEmpty(id))
			{
				id = RandomWaypoint;
			}

			pos.y -= spotmap.MapHeight;

			Vector2d mapPos = MousePosition(pos);

			if (mapPos.x < -180 || mapPos.x > 180 || mapPos.y < -90 || mapPos.y > 90)
			{
				return;
			}

			Waypoint w = new Waypoint();

			w.name = id;
			w.isExplored = true;
			w.isNavigatable = true;
			w.isOnSurface = true;
			w.celestialName = body.GetName();
			w.latitude = mapPos.y;
			w.longitude = mapPos.x;
			w.seed = gen.Next(0, int.MaxValue);
			w.navigationId = new Guid();

			ScenarioCustomWaypoints.AddWaypoint(w);
		}

		public void SetMJWaypoint(Vector2 pos)
		{
			pos.y -= spotmap.MapHeight;

			Vector2d mapPos = MousePosition(pos);

			if (mapPos.x < -180 || mapPos.x > 180 || mapPos.y < -90 || mapPos.y > 90)
			{
				return;
			}

			SCANcontroller.controller.MJTargetSet.Invoke(mapPos, body);

			SCANwaypoint w = new SCANwaypoint(mapPos.y, mapPos.x, "MechJeb Landing Target");
			data.addToWaypoints(w);
		}

		public void ClickMap(int button, Vector2 pos)
		{
			Vector2d mapPos = MousePosition(pos);

			switch (button)
			{
				case 0:
					spotmap.MapScale = spotmap.MapScale / 1.25f;

					if (spotmap.MapScale < minZoom)
					{
						spotmap.MapScale = minZoom;
					}

					resetMap(mapPos.y, mapPos.x, true);
					break;
				case 1:
					if (GameSettings.MODIFIER_KEY.GetKey())
					{
						resetMap(mapPos.y, mapPos.x, true);
					}
					else
					{
						spotmap.MapScale = spotmap.MapScale * 1.25f;

						if (spotmap.MapScale > maxZoom)
						{
							spotmap.MapScale = maxZoom;
						}

						resetMap(mapPos.y, mapPos.x, true);
					}
					break;
				case 2:
					resetMap(mapPos.y, mapPos.x, true);
					break;
			}
		}

		public void ResetPosition()
		{
			SCAN_Settings_Config.Instance.ZoomMapPosition = new Vector2(400, -400);

			if (uiElement != null)
			{
				uiElement.SetPosition(SCAN_Settings_Config.Instance.ZoomMapPosition);
			}
		}
	}
}


================================================
FILE: SCANsat/SCANconfigLoader.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANconfigLoader - Load the config file settings at startup
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System.Linq;
using System;
using SCANsat.SCAN_Data;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;
using Contracts.Parameters;

namespace SCANsat
{
	public static class SCANconfigLoader
	{
		private static bool globalResource = false;
		private static bool initialized = false;

		private const string configFile = "SCANsat/Resources/SCANcolors";
		private const string configNodeName = "SCAN_Color_Config";

		private const string paletteFile = "SCANsat/Resources/SCANpalettes";
		private const string paletteNodeName = "SCAN_Palette_Config";

		private static SCAN_Color_Config SCANnode;
		private static SCAN_Palette_Config SCANpalettes;

		public static SCAN_Color_Config SCANNode
		{
			get { return SCANnode; }
		}

		public static SCAN_Palette_Config SCANPalettes
		{
			get { return SCANpalettes; }
		}

		public static bool GlobalResource
		{
			get { return globalResource; }
		}

		public static bool Initialized
		{
			get { return initialized; }
		}

		internal static void configLoader()
		{
			SCANpalettes = new SCAN_Palette_Config(paletteFile, paletteNodeName);
			SCANnode = new SCAN_Color_Config(configFile, configNodeName);

			SCANcontroller.checkLoadedTerrainNodes();

			loadResources();
		}

		private static void loadResources()
		{
			foreach (var rs in ResourceCache.Instance.GlobalResources)
			{
				if ((HarvestTypes)rs.ResourceType != HarvestTypes.Planetary)
				{
					continue;
				}

				SCANresourceGlobal currentGlobal = SCANcontroller.getResourceNode(rs.ResourceName);

				PartResourceDefinition pr = PartResourceLibrary.Instance.GetDefinition(rs.ResourceName);

				if (currentGlobal == null)
				{
					SCANcontroller.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));
					currentGlobal = SCANcontroller.getResourceNode(rs.ResourceName, true);
				}

				currentGlobal.DisplayName = pr == null || string.IsNullOrEmpty(pr.displayName) ? rs.ResourceName : pr.displayName;
				currentGlobal.DefaultZero = rs.Distribution.PresenceChance <= 0;

				if (rs.Distribution.MinAbundance < currentGlobal.DefaultMinValue)
				{
					currentGlobal.DefaultMinValue = rs.Distribution.MinAbundance;
				}

				if (rs.Distribution.MaxAbundance > currentGlobal.DefaultMaxValue)
				{
					currentGlobal.DefaultMaxValue = rs.Distribution.MaxAbundance;
				}

				foreach (CelestialBody body in FlightGlobals.Bodies)
				{
					SCANresourceBody newBody = currentGlobal.getBodyConfig(body.bodyName, false);

					if (newBody == null)
					{
						currentGlobal.addToBodyConfigs(body.bodyName, new SCANresourceBody(rs.ResourceName, body, currentGlobal.DefaultMinValue, currentGlobal.DefaultMaxValue, currentGlobal.DefaultZero), false);
					}
					else
					{
						newBody.DefaultZero = currentGlobal.DefaultZero;
					}
				}

				SCANcontroller.addToLoadedResourceNames(rs.ResourceName);
			}

			foreach (var rsBody in ResourceCache.Instance.PlanetaryResources)
			{
				if ((HarvestTypes)rsBody.ResourceType != HarvestTypes.Planetary)
				{
					continue;
				}

				SCANresourceGlobal currentGlobal = SCANcontroller.getResourceNode(rsBody.ResourceName);

				if (currentGlobal == null)
				{
					//SCANUtil.SCANlog("Adding new global resource from planetary config: {0}", rsBody.ResourceName);
					PartResourceDefinition pr = PartResourceLibrary.Instance.GetDefinition(rsBody.ResourceName);
					SCANcontroller.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));
					currentGlobal = SCANcontroller.getResourceNode(rsBody.ResourceName, true);

					currentGlobal.DefaultZero = true;

					foreach (CelestialBody body in FlightGlobals.Bodies)
					{
						SCANresourceBody newBody = currentGlobal.getBodyConfig(body.bodyName, false);

						if (newBody == null)
						{
							currentGlobal.addToBodyConfigs(body.bodyName, new SCANresourceBody(rsBody.ResourceName, body, 1f, 10f, true), false);
						}
						else
						{
							newBody.DefaultZero = true;
						}
					}
				}

				SCANresourceBody currentBody = currentGlobal.getBodyConfig(rsBody.PlanetName, false);

				if (currentBody == null)
				{
					CelestialBody body = FlightGlobals.Bodies.FirstOrDefault(a => a.bodyName == rsBody.PlanetName);
					if (body == null)
					{
						continue;
					}

					currentGlobal.addToBodyConfigs(rsBody.PlanetName, new SCANresourceBody(rsBody.ResourceName, body, rsBody.Distribution.MinAbundance, rsBody.Distribution.MaxAbundance, rsBody.Distribution.PresenceChance <= 0), false);
					currentBody = currentGlobal.getBodyConfig(rsBody.PlanetName, false);
				}

				if (rsBody.Distribution.MinAbundance < currentBody.DefaultMinValue)
				{
					currentBody.DefaultMinValue = rsBody.Distribution.MinAbundance;
				}

				if (rsBody.Distribution.MaxAbundance > currentBody.DefaultMaxValue)
				{
					currentBody.DefaultMaxValue = rsBody.Distribution.MaxAbundance;
				}

				if (rsBody.Distribution.PresenceChance <= 0)
				{
					currentBody.DefaultZero = true;
				}
				else
				{
					currentBody.DefaultZero = false;
				}

				SCANcontroller.addToLoadedResourceNames(rsBody.ResourceName, false);
			}

			foreach (CelestialBody body in FlightGlobals.Bodies)
			{
				foreach (var rsBiome in ResourceCache.Instance.BiomeResources)
				{
					if ((HarvestTypes)rsBiome.ResourceType != HarvestTypes.Planetary)
					{
						continue;
					}

					if (body.bodyName != rsBiome.PlanetName)
					{
						continue;
					}

					SCANresourceGlobal currentGlobal = SCANcontroller.getResourceNode(rsBiome.ResourceName);

					if (currentGlobal == null)
					{
						//SCANUtil.SCANlog("Adding biome resource node global config: {0}", rsBiome.ResourceName);
						PartResourceDefinition pr = PartResourceLibrary.Instance.GetDefinition(rsBiome.ResourceName);
						SCANcontroller.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));
						currentGlobal = SCANcontroller.getResourceNode(rsBiome.ResourceName, true);

						currentGlobal.DefaultZero = true;

						foreach (CelestialBody globalBody in FlightGlobals.Bodies)
						{
							SCANresourceBody newBody = currentGlobal.getBodyConfig(globalBody.bodyName, false);

							if (newBody == null)
							{
								currentGlobal.addToBodyConfigs(globalBody.bodyName, new SCANresourceBody(rsBiome.ResourceName, globalBody, 1, 10f, true), false);
							}
							else
							{
								newBody.DefaultZero = true;
							}
						}
					}

					SCANresourceBody currentBody = currentGlobal.getBodyConfig(body.bodyName, false);

					if (currentBody == null)
					{
						currentGlobal.addToBodyConfigs(rsBiome.PlanetName, new SCANresourceBody(rsBiome.ResourceName, body, 1, 10f, true), false);
						currentBody = currentGlobal.getBodyConfig(rsBiome.PlanetName, false);
					}

					if (rsBiome.Distribution.MinAbundance < currentBody.DefaultMinValue)
					{
						currentBody.DefaultMinValue = rsBiome.Distribution.MinAbundance;
					}

					if (rsBiome.Distribution.MaxAbundance > currentBody.DefaultMaxValue)
					{
						currentBody.DefaultMaxValue = rsBiome.Distribution.MaxAbundance;
					}

					if (rsBiome.Distribution.PresenceChance > 0)
					{
						currentBody.DefaultZero = false;
					}

					SCANcontroller.addToLoadedResourceNames(rsBiome.ResourceName, false);
				}
			}

			foreach (SCANresourceGlobal global in SCANcontroller.setLoadedResourceList())
			{
				if (global == null)
				{
					continue;
				}

				foreach (CelestialBody body in FlightGlobals.Bodies)
				{
					SCANresourceBody newBody = global.getBodyConfig(body.bodyName, false);

					if (newBody == null)
					{
						global.addToBodyConfigs(body.bodyName, new SCANresourceBody(global.Name, body, global.DefaultMinValue, global.DefaultMaxValue, true), false);
					}
				}
			}

			if (SCANcontroller.MasterResourceCount == 0)
			{
				globalResource = false;
			}
			else
			{
				globalResource = true;
			}
		}
	}
}


================================================
FILE: SCANsat/SCANcontroller.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANcontroller - scenario module that handles all scanning
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.Events;
using Contracts;
using FinePrint.Contracts;
using FinePrint.Utilities;
using SCANsat.SCAN_UI.UI_Framework;
using SCANsat.SCAN_Unity;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_Map;
using SCANsat.SCAN_Platform.Extensions.ConfigNodes;
using SCANsat.SCAN_Palettes;
using SCANsat.SCAN_Toolbar;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;
using FinePrint.Contracts.Parameters;
using UnityEngine.Profiling;
using Log = KSPBuildTools.Log;
using SCANsat.SCAN_Reflection;

namespace SCANsat
{
	[KSPScenario(ScenarioCreationOptions.AddToAllGames | ScenarioCreationOptions.AddToExistingGames, GameScenes.FLIGHT, GameScenes.SPACECENTER, GameScenes.TRACKSTATION)]
	public class SCANcontroller : ScenarioModule
	{
		public static SCANcontroller controller
		{
			get { return instance; }
		}

		private static int minScanAlt = 5000;
		private static int maxScanAlt = 500000;
		private static int bestScanAlt = 250000;

		[KSPField(isPersistant = true)]
		public bool storageUpgraded = false;
		[KSPField(isPersistant = true)]
		public bool mainMapVisible = false;
		[KSPField(isPersistant = true)]
		public bool mainMapColor = true;
		[KSPField(isPersistant = true)]
		public bool mainMapTerminator = false;
		[KSPField(isPersistant = true)]
		public bool mainMapBiome = false;
		[KSPField(isPersistant = true)]
		public bool mainMapMinimized = false;
		[KSPField(isPersistant = true)]
		public bool bigMapVisible = false;
		[KSPField(isPersistant = true)]
		public bool bigMapColor = true;
		[KSPField(isPersistant = true)]
		public bool bigMapTerminator = false;
		[KSPField(isPersistant = true)]
		public bool bigMapGrid = true;
		[KSPField(isPersistant = true)]
		public bool bigMapOrbit = true;
		[KSPField(isPersistant = true)]
		public bool bigMapWaypoint = true;
		[KSPField(isPersistant = true)]
		public bool bigMapAnomaly = true;
		[KSPField(isPersistant = true)]
		public bool bigMapFlag = true;
		[KSPField(isPersistant = true)]
		public bool bigMapLegend = true;
		[KSPField(isPersistant = true)]
		public bool bigMapResourceOn = false;
		[KSPField(isPersistant = true)]
		public string bigMapProjection = "Rectangular";
		[KSPField(isPersistant = true)]
		public string bigMapType = "Altimetry";
		[KSPField(isPersistant = true)]
		public string bigMapResource = "Ore";
		[KSPField(isPersistant = true)]
		public string bigMapBody = "Kerbin";
		[KSPField(isPersistant = true)]
		public bool zoomMapVesselLock = false;
		[KSPField(isPersistant = true)]
		public bool zoomMapColor = true;
		[KSPField(isPersistant = true)]
		public bool zoomMapTerminator = false;
		[KSPField(isPersistant = true)]
		public bool zoomMapOrbit = true;
		[KSPField(isPersistant = true)]
		public bool zoomMapIcons = true;
		[KSPField(isPersistant = true)]
		public bool zoomMapLegend = true;
		[KSPField(isPersistant = true)]
		public bool zoomMapResourceOn = false;
		[KSPField(isPersistant = true)]
		public string zoomMapType = "Altimetry";
		[KSPField(isPersistant = true)]
		public string zoomMapResource = "Ore";
		[KSPField(isPersistant = true)]
		public int zoomMapState = 0;
		[KSPField(isPersistant = true)]
		public int zoomMapRefresh = 0;
		[KSPField(isPersistant = true)]
		public bool zoomMapZoomPersist = false;
		[KSPField(isPersistant = true)]
		public float zoomMapZoom = 10f;
		[KSPField(isPersistant = true)]
		public int overlaySelection = 0;
		[KSPField(isPersistant = true)]
		public string overlayResource = "Ore";

		public Color32 lowBiomeColor32 = new Color(0, 0.46f, 0.02345098f, 1);
		public Color32 highBiomeColor32 = new Color(0.7f, 0.2388235f, 0, 1);
		public Color32 lowSlopeColorOne32 = new Color(0.004705883f, 0.6f, 0.3788235f, 1);
		public Color32 highSlopeColorOne32 = new Color(0.9764706f, 1, 0.4627451f, 1);
		public Color32 lowSlopeColorTwo32 = new Color(0.9764706f, 1, 0.4627451f, 1);
		public Color32 highSlopeColorTwo32 = new Color(0.94f, 0.2727843f, 0.007372549f, 1);

		/* Available resources for overlays; loaded from SCANsat configs; only loaded once */
		private static DictionaryValueList masterResourceNodes = new DictionaryValueList();

		/* Terrain height and color option containers loaded from SCANsat configs; only needs to be loaded once */
		private static Dictionary masterTerrainNodes = new Dictionary();

		/* List of resources currently loaded from resource addons */
		private static List loadedResources = new List();

		/* Primary SCANsat vessel dictionary; loaded every time */
		public DictionaryValueList knownVessels = new DictionaryValueList();

		/* Primary SCANdata dictionary; loaded every time*/
		private DictionaryValueList body_data = new DictionaryValueList();

		/* MechJeb Landing Target Integration */
		private bool mechjebLoaded;
		private SCANwaypoint landingTarget;

		/* Kopernicus On Demand Loading Data */
		private List dataBodies = new List();
		private CelestialBody bigMapBodyPQS;
		private CelestialBody zoomMapBodyPQS;
		private CelestialBody bigMapBodyVisual;
		private CelestialBody zoomMapBodyVisual;

		/* Visual Map Texture Data */
		private Dictionary readableScaledSpaceMaps = new Dictionary();
		private Dictionary readableScaledSpaceNormalMaps = new Dictionary();
		private CelestialBody bigMapBodyScaledSpace;
		private CelestialBody zoomMapBodyScaledSpace;

		private SCAN_UI_MainMap _mainMap;
		private SCAN_UI_Instruments _instruments;
		private SCAN_UI_BigMap _bigMap;
		private SCAN_UI_ZoomMap _zoomMap;
		private SCAN_UI_Overlay _overlay;
		private SCAN_UI_Settings _settings;

		/* App launcher object */
		internal SCANappLauncher appLauncher;

		/* Used in case the loading process is interupted somehow */
		private bool loaded = false;

		/* Used to make sure all contracts are loaded */
		private bool contractsLoaded = false;

		/* Used as holder for vessel id's while loading */
		private List tempIDs = new List();

		/* Is the Breaking Ground Expansion installed */
		private bool serenityLoaded = false;

		private bool heightMapsBuilt = false;

		private static SCANcontroller instance;

		#region Public Accessors

		public SCANdata getData(string bodyName)
		{
			if (body_data.Contains(bodyName))
			{
				return body_data[bodyName];
			}

			return null;
		}

		public SCANdata getData(int index)
		{
			if (body_data.Count > index)
			{
				return body_data.At(index);
			}
			else
			{
				SCANUtil.SCANdebugLog("SCANdata dictionary index out of range; something went wrong here...");
			}

			return null;
		}

		public List GetAllData
		{
			get { return body_data.Values.ToList(); }
		}

		public int GetDataCount
		{
			get { return body_data.Count; }
		}

		/* Use this method to protect against duplicate dictionary keys */
		public void addToBodyData(CelestialBody b, SCANdata data)
		{
			if (!body_data.Contains(b.bodyName))
			{
				body_data.Add(b.bodyName, data);
			}
			else
			{
				Log.Error("Warning: SCANdata Dictionary Already Contains Key of This Type");
			}
		}

		public Texture2D getVisualMapTexture(CelestialBody b)
		{
			if (!SCAN_Settings_Config.Instance.VisibleMapsActive)
			{
				return null;
			}

			if (readableScaledSpaceMaps.ContainsKey(b))
			{
				return readableScaledSpaceMaps[b];
			}

			return null;
		}

		public Texture2D getVisualMapNormalTexture(CelestialBody b)
		{
			if (readableScaledSpaceNormalMaps.ContainsKey(b))
			{
				return readableScaledSpaceNormalMaps[b];
			}

			return null;
		}

		public static List EncodeTerrainConfigs
		{
			get
			{
				try
				{
					return masterTerrainNodes.Values.ToList();
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Error while saving SCANsat altimetry config data: {0}", e);
				}

				return new List();
			}
		}

		public static void setMasterTerrainNodes(List terrainConfigs)
		{
			masterTerrainNodes.Clear();
			try
			{
				masterTerrainNodes = terrainConfigs.ToDictionary(a => a.Name, a => a);
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error while loading SCANsat terrain config settings: {0}", e);
			}
		}

		public static void checkLoadedTerrainNodes()
		{
			for (int i = 0; i < FlightGlobals.Bodies.Count; i++)
			{
				CelestialBody b = FlightGlobals.Bodies[i];

				if (b == null)
				{
					continue;
				}

				if (getTerrainNode(b.bodyName) == null)
				{
					float? clamp = null;
					if (b.ocean)
					{
						clamp = 0;
					}

					float newMax;

					try
					{
						newMax = ((float)CelestialUtilities.GetHighestPeak(b)).Mathf_Round(-2);
					}
					catch (Exception e)
					{
						SCANUtil.SCANlog("Error in calculating Max Height for {0}; using default value/n{1}", b.bodyName, e);
						newMax = SCANconfigLoader.SCANNode.DefaultMaxHeightRange;
					}

					SCANUtil.SCANlog("Generating new SCANsat Terrain Config for [{0}] - Max Height: [{1:F0}m]", b.bodyName, newMax);

					addToTerrainConfigData(b.bodyName, new SCANterrainConfig(SCANconfigLoader.SCANNode.DefaultMinHeightRange, newMax, clamp, SCANUtil.PaletteLoader(SCANconfigLoader.SCANNode.DefaultPalette, 7), 7, false, false, b));
				}
			}
		}

		public static SCANterrainConfig getTerrainNode(string name)
		{
			if (masterTerrainNodes.ContainsKey(name))
			{
				return masterTerrainNodes[name];
			}
			else
			{
				SCANUtil.SCANlog("SCANsat terrain config [{0}] cannot be found in master terrain storage list", name);
			}

			return null;
		}

		public static void updateTerrainConfig(SCANterrainConfig t)
		{
			SCANterrainConfig update = getTerrainNode(t.Name);
			if (update != null)
			{
				update.MinTerrain = t.MinTerrain;
				update.MaxTerrain = t.MaxTerrain;
				update.ClampTerrain = t.ClampTerrain;
				update.PalSize = t.PalSize;
				update.PalRev = t.PalRev;
				update.PalDis = t.PalDis;
				update.ColorPal = t.ColorPal;
			}
		}

		public static void addToTerrainConfigData(string name, SCANterrainConfig data)
		{
			if (!masterTerrainNodes.ContainsKey(name))
			{
				masterTerrainNodes.Add(name, data);
			}
			else
			{
				Log.Error("SCANterrain Data Dictionary Already Contains Key Of This Type");
			}
		}

		public static int MasterResourceCount
		{
			get { return loadedResources.Count; }
		}

		public static List EncodeResourceConfigs
		{
			get
			{
				try
				{
					return masterResourceNodes.Values.ToList();
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Error while saving SCANsat resource config data: {0}", e);
				}

				return new List();
			}
		}

		public static void setMasterResourceNodes(List resourceConfigs)
		{
			masterResourceNodes.Clear();

			try
			{
				int l = resourceConfigs.Count;

				for (int i = 0; i < l; i++)
				{
					SCANresourceGlobal r = resourceConfigs[i];

					if (r == null || string.IsNullOrEmpty(r.Name))
					{
						continue;
					}
					//SCANUtil.SCANlog("Loading SCANsat resource config settings: {0}", r.Name);
					if (!masterResourceNodes.Contains(r.Name))
					{
						masterResourceNodes.Add(r.Name, r);
					}
				}
			}
			catch (Exception e)
			{
				SCANUtil.SCANlog("Error while loading SCANsat resource config settings: {0}", e);
			}
		}

		public static SCANresourceGlobal getResourceNode(string resourceName, bool warn = false)
		{
			if (masterResourceNodes.Contains(resourceName))
			{
				return masterResourceNodes[resourceName];
			}
			else if (warn)
			{
				SCANUtil.SCANlog("SCANsat resource [{0}] cannot be found in master resource storage list", resourceName);
			}

			return null;
		}

		public static SCANresourceGlobal GetFirstResource
		{
			get
			{
				if (masterResourceNodes.Count > 0)
				{
					return masterResourceNodes.At(0);
				}
				else
				{
					SCANUtil.SCANlog("SCANsat resource storage list is empty; something probably went wrong here...");
				}

				return null;
			}
		}

		public static void updateSCANresource(SCANresourceGlobal r, bool all)
		{
			SCANresourceGlobal update = getResourceNode(r.Name, true);
			if (update != null)
			{
				update.MinColor = r.MinColor;
				update.MaxColor = r.MaxColor;
				update.Transparency = r.Transparency;
				if (all)
				{
					for (int i = 0; i < update.getBodyCount; i++)
					{
						SCANresourceBody b = update.getBodyConfig(i);
						if (b != null)
						{
							SCANresourceBody bNew = r.getBodyConfig(b.BodyName);
							if (bNew != null)
							{
								b.MinValue = bNew.MinValue;
								b.MaxValue = bNew.MaxValue;
							}
						}
					}
				}
				else
				{
					SCANresourceBody b = update.getBodyConfig(r.CurrentBody.BodyName);
					if (b != null)
					{
						b.MinValue = r.CurrentBody.MinValue;
						b.MaxValue = r.CurrentBody.MaxValue;
					}
				}
			}
		}

		public static void addToResourceData(string name, SCANresourceGlobal res)
		{
			if (!masterResourceNodes.Contains(name))
			{
				masterResourceNodes.Add(name, res);
			}
			else
			{
				Log.Error(string.Format("SCANResource Dictionary Already Contains Key of This Type: Resource: {0}", name));
			}
		}

		public static void addToLoadedResourceNames(string name, bool warn = true)
		{
			if (!loadedResources.Contains(name))
			{
				loadedResources.Add(name);
			}
			else if (warn)
			{
				Log.Error(string.Format("Loaded Resource List Already Contains Resource Of Name: {0}", name));
			}
		}

		public static List setLoadedResourceList()
		{
			List rList = new List();
			SCANresourceGlobal ore = null;

			int l = loadedResources.Count;

			for (int i = 0; i < l; i++)
			{
				string r = loadedResources[i];

				if (string.IsNullOrEmpty(r))
				{
					continue;
				}

				if (masterResourceNodes.Contains(r))
				{
					if (r != "Ore")
					{
						rList.Add(masterResourceNodes[r]);
					}
					else
					{
						ore = masterResourceNodes[r];
					}
				}
			}

			if (ore != null)
			{
				rList.Insert(0, ore);
			}

			return rList;
		}

		public static List resources()
		{
			return masterResourceNodes.Values.ToList();
		}

		public List Known_Vessels
		{
			get { return knownVessels.Values.ToList(); }
		}

		public int ActiveSensors
		{
			get { return activeSensors; }
		}

		public int ActiveVessels
		{
			get { return activeVessels; }
		}

		public int ActualPasses
		{
			get { return actualPasses; }
		}

		public bool ContractsLoaded
		{
			get { return contractsLoaded; }
		}

		public bool MechJebLoaded
		{
			get { return mechjebLoaded; }
			set { mechjebLoaded = value; }
		}

		public SCANwaypoint LandingTarget
		{
			get { return landingTarget; }
			set { landingTarget = value; }
		}

		public bool SerenityLoaded
		{
			get { return serenityLoaded; }
		}

		public class OnMJTargetSet : UnityEvent { }

		public OnMJTargetSet MJTargetSet = new OnMJTargetSet();

		#endregion

		#region save/load

		public override void OnLoad(ConfigNode node)
		{
			if (storageUpgraded)
			{
				ConfigNode node_vessels = node.GetNode("Scanners");
				if (node_vessels != null)
				{
					SCANUtil.SCANlog("SCANsat Controller: Loading {0} known vessels", node_vessels.CountNodes);
					foreach (ConfigNode node_vessel in node_vessels.GetNodes("Vessel"))
					{
						Guid id = node_vessel.parse("guid", new Guid());

						if (id == new Guid())
						{
							SCANUtil.SCANlog("Something Went Wrong Loading This SCAN Vessel; Moving On To The Next");
							continue;
						}

						foreach (ConfigNode node_sensor in node_vessel.GetNodes("Sensor"))
						{
							int sensor = node_sensor.parse("type", (int)0);
							double fov = node_sensor.parse("fov", 3d);
							double min_alt = node_sensor.parse("min_alt", (double)minScanAlt);
							double max_alt = node_sensor.parse("max_alt", (double)maxScanAlt);
							double best_alt = node_sensor.parse("best_alt", (double)bestScanAlt);
							bool require_light = node_sensor.parse("require_light", (bool)false);

							registerSensorTemp(id, (SCANtype)sensor, fov, min_alt, max_alt, best_alt, require_light);

							tempIDs.Add(id);
						}
					}
				}
			}

			ConfigNode node_progress = node.GetNode("Progress");
			if (node_progress != null)
			{
				foreach (ConfigNode node_body in node_progress.GetNodes("Body"))
				{
					string body_name = node_body.parse("Name", "");

					if (string.IsNullOrEmpty(body_name))
					{
						SCANUtil.SCANlog("SCANsat Controller: Error while loading Celestial Body data; skipping value...");
						continue;
					}

					SCANUtil.SCANlog("SCANsat Controller: Loading map for {0}", body_name);

					CelestialBody body;
					try
					{
						body = FlightGlobals.Bodies.FirstOrDefault(b => b.bodyName == body_name);
					}
					catch (Exception e)
					{
						Log.Error(string.Format("Error in loading Celestial Body [{0}]...\n{1}", body_name, e));
						continue;
					}

					if (body != null)
					{
						SCANdata data = getData(body.bodyName);
						if (data == null)
						{
							data = new SCANdata(body);
						}

						if (!body_data.Contains(body_name))
						{
							body_data.Add(body_name, data);
						}
						else
						{
							body_data[body_name] = data;
						}

						try
						{
							string mapdata = node_body.parse("Map", "");

							if (string.IsNullOrEmpty(mapdata))
							{
								SCANUtil.SCANlog("SCANsat Controller: Error while loading Celestial Body map data; skipping value...");
								continue;
							}

							if (storageUpgraded)
							{
								data.shortDeserialize(mapdata);
							}
							else
							{
								data.ConvertStorage(mapdata);
							}

						}
						catch (Exception e)
						{
							SCANUtil.SCANlog("Something Went Wrong Loading Scanning Data; Resetting Coverage: {0}", e);
							data.reset();
							// fail somewhat gracefully; don't make the save unloadable 
						}

						try
						{
							if (SCANmainMenuLoader.MechJebLoaded && SCAN_Settings_Config.Instance.MechJebTarget && SCAN_Settings_Config.Instance.MechJebTargetLoad)
							{
								string targetName = node_body.parse("LandingTarget", "");

								if (!string.IsNullOrEmpty(targetName))
								{
									loadWaypoint(targetName, body);
								}
							}

							data.Disabled = node_body.parse("Disabled", false);

							float min = node_body.parse("MinHeightRange", data.TerrainConfig.DefaultMinHeight);
							float max = node_body.parse("MaxHeightRange", data.TerrainConfig.DefaultMaxHeight);
							float? clampState = node_body.parse("ClampHeight", (float?)null);

							int pSize = node_body.parse("PaletteSize", data.TerrainConfig.DefaultPaletteSize);
							bool pRev = node_body.parse("PaletteReverse", data.TerrainConfig.DefaultReverse);
							bool pDis = node_body.parse("PaletteDiscrete", data.TerrainConfig.DefaultDiscrete);

							string paletteName = node_body.parse("PaletteName", "");

							if (string.IsNullOrEmpty(paletteName))
							{
								paletteName = data.TerrainConfig.DefaultPalette.Name;
							}

							SCANPalette dataPalette = SCANUtil.PaletteLoader(paletteName, pSize);

							if (dataPalette.Hash == SCAN_Palette_Config.DefaultPalette.GetPalette(0).Hash)
							{
								paletteName = "Default";
								pSize = 7;
							}

							SCANterrainConfig dataTerrainConfig = getTerrainNode(body.bodyName);

							if (dataTerrainConfig == null)
							{
								dataTerrainConfig = new SCANterrainConfig(min, max, clampState, dataPalette, pSize, pRev, pDis, body);
							}
							else
							{
								setNewTerrainConfigValues(dataTerrainConfig, min, max, clampState, dataPalette, pSize, pRev, pDis);
							}

							data.TerrainConfig = dataTerrainConfig;
						}
						catch (Exception e)
						{
							SCANUtil.SCANlog("Error Loading SCANdata; Reverting To Default Settings: {0}", e);
						}
					}
				}
			}

			ConfigNode node_resources = node.GetNode("SCANResources");
			if (node_resources != null)
			{
				foreach (ConfigNode node_resource_type in node_resources.GetNodes("ResourceType"))
				{
					if (node_resource_type != null)
					{
						loadCustomResourceValues(node_resource_type);
					}
				}
			}
			loaded = true;
			storageUpgraded = true;
		}

		public override void OnSave(ConfigNode node)
		{
			int l = knownVessels.Count;
			ConfigNode node_vessels = new ConfigNode("Scanners");

			for (int i = 0; i < l; i++)
			{
				SCANvessel sv = knownVessels.At(i);
				ConfigNode node_vessel = new ConfigNode("Vessel");
				node_vessel.AddValue("guid", sv.id.ToString());
				if (sv.vessel != null)
				{
					node_vessel.AddValue("name", sv.vessel.vesselName);
				}

				foreach (SCANsensor sensor in sv.sensors)
				{
					ConfigNode node_sensor = new ConfigNode("Sensor");
					node_sensor.AddValue("type", (int)sensor.sensor);
					node_sensor.AddValue("fov", sensor.fov);
					node_sensor.AddValue("min_alt", sensor.min_alt);
					node_sensor.AddValue("max_alt", sensor.max_alt);
					node_sensor.AddValue("best_alt", sensor.best_alt);
					node_sensor.AddValue("require_light", sensor.requireLight);
					node_vessel.AddNode(node_sensor);
				}
				node_vessels.AddNode(node_vessel);
			}
			node.AddNode(node_vessels);
			if (body_data != null)
			{
				ConfigNode node_progress = new ConfigNode("Progress");
				foreach (string body_name in body_data.Keys)
				{
					ConfigNode node_body = new ConfigNode("Body");
					SCANdata body_scan = body_data[body_name];
					node_body.AddValue("Name", body_name);
					node_body.AddValue("Disabled", body_scan.Disabled);
					if (SCANmainMenuLoader.MechJebLoaded && SCAN_Settings_Config.Instance.MechJebTarget && SCAN_Settings_Config.Instance.MechJebTargetLoad)
					{
						SCANwaypoint w = body_scan.Waypoints.FirstOrDefault(a => a.LandingTarget);
						if (w != null)
						{
							node_body.AddValue("LandingTarget", string.Format("{0:N4},{1:N4}", w.Latitude, w.Longitude));
						}
					}
					node_body.AddValue("MinHeightRange", body_scan.TerrainConfig.MinTerrain / body_scan.TerrainConfig.MinHeightMultiplier);
					node_body.AddValue("MaxHeightRange", body_scan.TerrainConfig.MaxTerrain / body_scan.TerrainConfig.MaxHeightMultiplier);
					if (body_scan.TerrainConfig.ClampTerrain != null)
					{
						node_body.AddValue("ClampHeight", body_scan.TerrainConfig.ClampTerrain / body_scan.TerrainConfig.ClampHeightMultiplier);
					}

					node_body.AddValue("PaletteName", body_scan.TerrainConfig.ColorPal.Name);
					node_body.AddValue("PaletteSize", body_scan.TerrainConfig.PalSize);
					node_body.AddValue("PaletteReverse", body_scan.TerrainConfig.PalRev);
					node_body.AddValue("PaletteDiscrete", body_scan.TerrainConfig.PalDis);
					node_body.AddValue("Map", body_scan.shortSerialize());
					node_progress.AddNode(node_body);
				}
				node.AddNode(node_progress);
			}
			if (masterResourceNodes.Count > 0)
			{
				ConfigNode node_resources = new ConfigNode("SCANResources");
				foreach (SCANresourceGlobal r in masterResourceNodes.Values)
				{
					if (r != null)
					{
						ConfigNode node_resource_type = new ConfigNode("ResourceType");
						node_resource_type.AddValue("Resource", r.Name);
						node_resource_type.AddValue("MinColor", ConfigNode.WriteColor(r.MinColor));
						node_resource_type.AddValue("MaxColor", ConfigNode.WriteColor(r.MaxColor));
						node_resource_type.AddValue("Transparency", r.Transparency);

						string rMinMax = saveResources(r);
						node_resource_type.AddValue("MinMaxValues", rMinMax);
						node_resources.AddNode(node_resource_type);
					}
				}
				node.AddNode(node_resources);
			}
		}

		#endregion

		public override void OnAwake()
		{
			instance = this;

			serenityLoaded = Expansions.ExpansionsLoader.IsExpansionInstalled("Serenity");

			if (SCAN_Settings_Config.Instance == null)
			{
				return;
			}

			SCANUtil.fillLocalizedNames();

			lowBiomeColor32 = SCAN_Settings_Config.Instance.LowBiomeColor;
			highBiomeColor32 = SCAN_Settings_Config.Instance.HighBiomeColor;
			lowSlopeColorOne32 = SCAN_Settings_Config.Instance.BottomLowSlopeColor;
			highSlopeColorOne32 = SCAN_Settings_Config.Instance.BottomHighSlopeColor;
			lowSlopeColorTwo32 = SCAN_Settings_Config.Instance.TopLowSlopeColor;
			highSlopeColorTwo32 = SCAN_Settings_Config.Instance.TopHighSlopeColor;
		}

		private void Start()
		{
			for (int i = tempIDs.Count - 1; i >= 0; i--)
			{
				finishRegistration(tempIDs[i]);
			}

			GameEvents.OnScienceRecieved.Add(watcher);
			GameEvents.OnOrbitalSurveyCompleted.Add(onSurvey);
			GameEvents.onVesselSOIChanged.Add(SOIChange);
			GameEvents.onVesselCreate.Add(newVesselCheck);
			GameEvents.onPartCouple.Add(dockingEventCheck);
			GameEvents.Contract.onContractsLoaded.Add(contractsCheck);
			GameEvents.Contract.onParameterChange.Add(onParamChange);

			if (HighLogic.LoadedSceneIsFlight)
			{
				if (!body_data.Contains(FlightGlobals.currentMainBody.bodyName))
				{
					body_data.Add(FlightGlobals.currentMainBody.bodyName, new SCANdata(FlightGlobals.currentMainBody));
				}

				try
				{
					_mainMap = new SCAN_UI_MainMap();
					_bigMap = new SCAN_UI_BigMap();
					_zoomMap = new SCAN_UI_ZoomMap();
					_instruments = new SCAN_UI_Instruments();
					_overlay = new SCAN_UI_Overlay();
					_settings = new SCAN_UI_Settings();
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Something Went Wrong Initializing UI Objects:\n{0}", e);
				}

				StartCoroutine(WaitForScienceUpdate());
			}
			else if (HighLogic.LoadedSceneHasPlanetarium)
			{
				if (!body_data.Contains(Planetarium.fetch.Home.bodyName))
				{
					body_data.Add(Planetarium.fetch.Home.bodyName, new SCANdata(Planetarium.fetch.Home));
				}

				try
				{
					_bigMap = new SCAN_UI_BigMap();
					_settings = new SCAN_UI_Settings();
					_zoomMap = new SCAN_UI_ZoomMap();

					if (HighLogic.LoadedScene == GameScenes.TRACKSTATION)
					{
						_overlay = new SCAN_UI_Overlay();
					}
				}
				catch (Exception e)
				{
					SCANUtil.SCANlog("Something Went Wrong Initializing UI Objects:\n{0}", e);
				}
			}
			if (SCAN_Settings_Config.Instance.StockToolbar)
			{
				appLauncher = gameObject.AddComponent();
			}

			if (SCAN_Settings_Config.Instance.DisableStockResource && SCAN_Settings_Config.Instance.UseStockTreshold)
			{
				for (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)
				{
					CelestialBody b = FlightGlobals.Bodies[i];

					checkResourceScanStatus(b);
				}
			}
			else if (!SCAN_Settings_Config.Instance.DisableStockResource && SCAN_Settings_Config.Instance.InstantScan)
			{
				for (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)
				{
					CelestialBody b = FlightGlobals.Bodies[i];

					checkStockResourceScanStatus(b);
				}
			}

			for (int i = body_data.Count - 1; i >= 0; i--)
			{
				body_data.At(i).updateCoverage();
			}
		}

		private void Update()
		{
			if (SCAN_Settings_Config.Instance.BackgroundScanning && loaded)
			{
				scanFromAllVessels();
			}

			if (!heightMapsBuilt)
			{
				checkHeightMapStatus();
			}
		}

		private IEnumerator WaitForScienceUpdate()
		{
			while (!FlightGlobals.ready || FlightGlobals.ActiveVessel == null)
			{
				yield return null;
			}

			SCANUtil.UpdateAllVesselData(FlightGlobals.ActiveVessel);
		}

		public void checkStockResourceScanStatus(CelestialBody body)
		{
			if (SCAN_Settings_Config.Instance.DisableStockResource || !SCAN_Settings_Config.Instance.InstantScan)
			{
				return;
			}

			if (body == null)
			{
				return;
			}

			if (!ResourceMap.Instance.IsPlanetScanned(body.flightGlobalsIndex))
			{
				return;
			}

			if (SCANUtil.GetCoverage((short)SCANtype.ResourceHiRes, body) >= 100)
			{
				return;
			}

			SCANdata data = getData(body.bodyName);

			if (data == null)
			{
				return;
			}

			data.fillResourceMap();
		}

		public void checkResourceScanStatus(CelestialBody body)
		{
			if (!SCAN_Settings_Config.Instance.UseStockTreshold)
			{
				return;
			}

			if (body == null)
			{
				return;
			}

			if (ResourceMap.Instance.IsPlanetScanned(body.flightGlobalsIndex))
			{
				return;
			}

			SCANdata data = getData(body.bodyName);

			if (data == null)
			{
				return;
			}

			if (SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100) || SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100))
			{
				SCANUtil.SCANlog("SCANsat resource scanning for {0} meets threshold value [{1:P0}]\nConducting stock orbital resource scan...", body.bodyName, SCAN_Settings_Config.Instance.StockTreshold);
				ResourceMap.Instance.UnlockPlanet(body.flightGlobalsIndex);
			}
		}

		private int dataStep, dataStart;
		private bool currentlyBuilding;
		private SCANdata buildingData;

		private void checkHeightMapStatus()
		{
			if (!currentlyBuilding)
			{
				for (int i = 0; i < body_data.Count; i++)
				{
					buildingData = getData(i);

					if (buildingData == null)
					{
						continue;
					}

					if (buildingData.Built)
					{
						continue;
					}

					if (buildingData.MapBuilding || buildingData.OverlayBuilding)
					{
						continue;
					}

					buildingData.ControllerBuilding = true;
					currentlyBuilding = true;

					return;
				}
			}
			else
			{
				if (buildingData == null)
				{
					currentlyBuilding = false;
					return;
				}

				if (buildingData.Built)
				{
					currentlyBuilding = false;
					buildingData.ControllerBuilding = false;
					return;
				}

				if (buildingData.ControllerBuilding)
				{
					buildingData.generateHeightMap(ref dataStep, ref dataStart, 120);
					return;
				}
			}

			SCANUtil.SCANlog("All Height Maps Generated");

			buildingData = null;
			heightMapsBuilt = true;
		}

		private void OnDestroy()
		{
			GameEvents.OnScienceRecieved.Remove(watcher);
			GameEvents.OnOrbitalSurveyCompleted.Remove(onSurvey);
			GameEvents.onVesselSOIChanged.Remove(SOIChange);
			GameEvents.onVesselCreate.Remove(newVesselCheck);
			GameEvents.onPartCouple.Remove(dockingEventCheck);
			GameEvents.Contract.onContractsLoaded.Remove(contractsCheck);
			GameEvents.Contract.onParameterChange.Remove(onParamChange);

			if (appLauncher != null)
			{
				Destroy(appLauncher);
			}

			if (_mainMap != null)
			{
				_mainMap.OnDestroy();
				_mainMap = null;
			}
			if (_bigMap != null)
			{
				_bigMap.OnDestroy();
				_bigMap = null;
			}
			if (_instruments != null)
			{
				_instruments.OnDestroy();
				_instruments = null;
			}
			if (_overlay != null)
			{
				_overlay.OnDestroy();
				_overlay = null;
			}
			if (_settings != null)
			{
				_settings.OnDestroy();
				_settings = null;
			}
			if (_zoomMap != null)
			{
				_zoomMap.OnDestroy();
				_settings = null;
			}

			if (SCAN_Settings_Config.Instance != null)
			{
				SCAN_Settings_Config.Instance.Save();
			}

			if (!heightMapsBuilt)
			{
				for (int i = dataBodies.Count - 1; i >= 0; i--)
				{
					CelestialBody b = dataBodies[i];

					unloadPQS(b);
				}
			}
		}

		private void watcher(float sci, ScienceSubject sub, ProtoVessel v, bool b)
		{
			if (!HighLogic.LoadedSceneIsFlight)
			{
				return;
			}

			if (FlightGlobals.ActiveVessel == null)
			{
				return;
			}

			if (sub == null)
			{
				return;
			}

			if (!sub.id.StartsWith("SCAN"))
			{
				return;
			}

			SCANUtil.UpdateVesselData(FlightGlobals.ActiveVessel, sub);
		}

		private void onSurvey(Vessel v, CelestialBody b)
		{
			if (!SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource)
			{
				return;
			}

			if (b == null)
			{
				return;
			}

			if (SCANUtil.GetCoverage((short)SCANtype.ResourceHiRes, b) >= 100)
			{
				return;
			}

			SCANdata data = SCANUtil.getData(b);

			if (data == null)
			{
				data = new SCANdata(b);
				addToBodyData(b, data);
			}

			data.fillResourceMap();
		}

		internal void loadPQS(CelestialBody b, mapSource s = mapSource.Data)
		{
			if (!SCANkopernicus.KopernicusLoaded)
			{
				return;
			}

			if (b == null)
			{
				return;
			}

			switch (s)
			{
				case mapSource.Data:
					if (dataBodies.Contains(b))
					{
						return;
					}

					dataBodies.Add(b);

					if (bigMapBodyPQS != null && bigMapBodyPQS == b)
					{
						return;
					}

					if (zoomMapBodyPQS != null && zoomMapBodyPQS == b)
					{
						return;
					}

					break;
				case mapSource.BigMap:
					if (bigMapBodyPQS != null && bigMapBodyPQS == b)
					{
						return;
					}

					bigMapBodyPQS = b;

					if (zoomMapBodyPQS != null && zoomMapBodyPQS == b)
					{
						return;
					}

					if (dataBodies.Contains(b))
					{
						return;
					}

					break;

				case mapSource.ZoomMap:
					if (zoomMapBodyPQS != null && zoomMapBodyPQS == b)
					{
						return;
					}

					zoomMapBodyPQS = b;

					if (bigMapBodyPQS != null && bigMapBodyPQS == b)
					{
						return;
					}

					if (dataBodies.Contains(b))
					{
						return;
					}

					break;
				case mapSource.RPM:
					return;
			}

			SCANkopernicus.LoadPQS(b);
		}

		internal void unloadPQS(CelestialBody b, mapSource s = mapSource.Data)
		{
			if (!SCANkopernicus.KopernicusLoaded)
			{
				return;
			}

			if (b == null)
			{
				return;
			}

			switch (s)
			{
				case mapSource.Data:
					if (dataBodies.Contains(b))
					{
						dataBodies.RemoveAll(a => a == b);
					}

					if (bigMapBodyPQS != null && bigMapBodyPQS == b)
					{
						return;
					}

					if (zoomMapBodyPQS != null && zoomMapBodyPQS == b)
					{
						return;
					}

					break;
				case mapSource.BigMap:
					bigMapBodyPQS = null;

					if (zoomMapBodyPQS != null && zoomMapBodyPQS == b)
					{
						return;
					}

					if (dataBodies.Contains(b))
					{
						return;
					}

					break;

				case mapSource.ZoomMap:
					zoomMapBodyPQS = null;

					if (bigMapBodyPQS != null && bigMapBodyPQS == b)
					{
						return;
					}

					if (dataBodies.Contains(b))
					{
						return;
					}

					break;
				case mapSource.RPM:
					return;
			}

			bool setInactive = false;

			switch (HighLogic.LoadedScene)
			{
				case GameScenes.SPACECENTER:
					if (b != Planetarium.fetch.Home)
					{
						setInactive = true;
					}

					break;
				case GameScenes.TRACKSTATION:
					setInactive = true;
					break;
				case GameScenes.FLIGHT:
					if (b != FlightGlobals.currentMainBody)
					{
						setInactive = true;
					}

					break;
			}

			if (!setInactive)
			{
				return;
			}

			SCANkopernicus.UnloadPQS(b);
		}

		internal void loadOnDemandScaledSpace(CelestialBody b, mapSource s)
		{
			if (!SCAN_Settings_Config.Instance.VisibleMapsActive)
			{
				return;
			}

			if (b == null)
			{
				return;
			}

			if (b.scaledBody == null)
			{
				return;
			}

			switch (s)
			{
				case mapSource.BigMap:
					if (bigMapBodyVisual != null && bigMapBodyVisual == b)
					{
						return;
					}

					bigMapBodyVisual = b;

					if (zoomMapBodyVisual != null && zoomMapBodyVisual == b)
					{
						return;
					}

					break;
				case mapSource.ZoomMap:
					if (zoomMapBodyVisual != null && zoomMapBodyVisual == b)
					{
						return;
					}

					zoomMapBodyVisual = b;

					if (bigMapBodyVisual != null && bigMapBodyVisual == b)
					{
						return;
					}

					break;
			}

			SCANkopernicus.LoadOnDemand(b);
		}

		internal void unloadOnDemandScaledSpace(CelestialBody b, mapSource s)
		{
			if (!SCANkopernicus.KopernicusLoaded)
			{
				return;
			}

			if (!SCAN_Settings_Config.Instance.VisibleMapsActive)
			{
				return;
			}

			if (b == null)
			{
				return;
			}

			if (b.scaledBody == null)
			{
				return;
			}

			switch (s)
			{
				case mapSource.BigMap:
					bigMapBodyVisual = null;

					if (zoomMapBodyVisual != null && zoomMapBodyVisual == b)
					{
						return;
					}

					break;
				case mapSource.ZoomMap:
					zoomMapBodyVisual = null;

					if (bigMapBodyVisual != null && bigMapBodyVisual == b)
					{
						return;
					}

					break;
			}

			bool setInactive = false;

			switch (HighLogic.LoadedScene)
			{
				case GameScenes.SPACECENTER:
					setInactive = true;
					break;
				case GameScenes.TRACKSTATION:
					setInactive = !InCurrentBodyFamily(b);
					break;
				case GameScenes.FLIGHT:
					setInactive = !InCurrentBodyFamily(b);
					break;
			}

			if (!setInactive)
			{
				return;
			}

			SCANkopernicus.UnloadOnDemand(b);
		}

		private bool InCurrentBodyFamily(CelestialBody b)
		{
			switch (HighLogic.LoadedScene)
			{
				case GameScenes.TRACKSTATION:
					MapObject mo = PlanetariumCamera.fetch.target;

					CelestialBody tgt = null;

					if (mo.vessel != null)
					{
						tgt = mo.vessel.mainBody;
					}
					else if (mo.celestialBody != null)
					{
						tgt = mo.celestialBody;
					}

					if (tgt == null)
					{
						return false;
					}

					if (b == tgt)
					{
						return true;
					}

					if (tgt.HasChild(b))
					{
						return true;
					}

					if (tgt.HasParent(b))
					{
						return true;
					}

					break;
				case GameScenes.FLIGHT:
					if (b == FlightGlobals.currentMainBody)
					{
						return true;
					}

					if (FlightGlobals.currentMainBody.HasChild(b))
					{
						return true;
					}

					if (FlightGlobals.currentMainBody.HasParent(b))
					{
						return true;
					}

					break;
			}

			return false;
		}

		// Can't remove this or parallax's patches break
		internal void LoadVisualMapTexture(CelestialBody b, mapSource s)
		{

		}

		void GetVisualMapTexturesForBody(CelestialBody b, out Material material, out bool useMaterialForColorMap, out string colorMapTextureName, out string normalMapTextureName)
		{
			material = null;
			colorMapTextureName = null;
			normalMapTextureName = null;
			useMaterialForColorMap = true;

			if (b.scaledBody == null)
			{
				return;
			}

			MeshRenderer scaledMesh = b.scaledBody.GetComponent();

			if (scaledMesh == null)
			{
				return;
			}

			material = scaledMesh.sharedMaterial; // TODO: what if there are multiple materials?  do we need to check all of them?
			string shaderName = material.shader.name;

			if (shaderName == "Terrain/Gas Giant")
			{
				colorMapTextureName = "_DetailCloudPatternTexture";
				normalMapTextureName = "_NormalMap";
				return;
			}
			else if (shaderName.Contains("ParallaxScaled"))
			{
				SCANparallaxContinued.LoadParallax(b, ref material);
				useMaterialForColorMap = false;
				colorMapTextureName = "_ColorMap";
				normalMapTextureName = null; // for whatever reason, the logic in ScANmap that uses the normal map doesn't work with parallax's normal maps
				return;
			}
			else if (material.HasProperty("_MainTex"))
			{
				colorMapTextureName = "_MainTex";
			}
			else if (material.HasProperty("_ColorMap"))
			{
				colorMapTextureName = "_ColorMap";
			}

			if (material.HasProperty("_BumpMap"))
			{
				normalMapTextureName = "_BumpMap";
			}
			else if (material.HasProperty("_NormalMap"))
			{
				normalMapTextureName = "_NormalMap";
			}
		}

		void CacheScaledSpaceTexture(Dictionary cache, CelestialBody b, Material material, string textureName, bool useMaterial)
		{
			if (cache.GetValueOrDefault(b) == null && textureName != null)
			{
				var sourceTexture = material.GetTexture(textureName) as Texture2D;
				if (sourceTexture == null)
				{
					Log.Error($"GetTexture returned a null texture for body {b.name}, material {material.name} and texture name {textureName}");
				}
				else
				{
					var colorMap = sourceTexture.isReadable ? sourceTexture : readableTexture(sourceTexture, useMaterial ? material : null);
					cache.Add(b, colorMap);
				}
			}
		}

		internal void LoadVisualMapTexture_Renamed(CelestialBody b, mapSource s)
		{
			if (!SCAN_Settings_Config.Instance.VisibleMapsActive)
			{
				return;
			}

			if (b == null)
			{
				return;
			}

			GetVisualMapTexturesForBody(b, out Material material, out bool useMaterialForColorMap, out string colorMapTextureName, out string normalMapTextureName);

			if (material == null)
			{
				Log.Error($"GetVisualMapTexturesForBody returned a null material for body {b.name}");
			}
			else
			{
				CacheScaledSpaceTexture(readableScaledSpaceMaps, b, material, colorMapTextureName, useMaterialForColorMap);
				CacheScaledSpaceTexture(readableScaledSpaceNormalMaps, b, material, normalMapTextureName, false);
			}

			switch (s)
			{
				case mapSource.BigMap:
					bigMapBodyScaledSpace = b;
					break;
				case mapSource.ZoomMap:
					zoomMapBodyScaledSpace = b;
					break;
			}
		}

		internal void UnloadVisualMapTexture(CelestialBody b, mapSource s)
		{
			if (!SCAN_Settings_Config.Instance.VisibleMapsActive)
			{
				return;
			}

			if (b == null)
			{
				return;
			}

			switch (s)
			{
				case mapSource.BigMap:
					bigMapBodyScaledSpace = null;

					if (zoomMapBodyScaledSpace != null && zoomMapBodyScaledSpace == b)
					{
						return;
					}

					break;
				case mapSource.ZoomMap:
					zoomMapBodyScaledSpace = null;

					if (bigMapBodyScaledSpace != null && bigMapBodyScaledSpace == b)
					{
						return;
					}

					break;
			}

			if (readableScaledSpaceMaps.ContainsKey(b))
			{
				GameObject.Destroy(readableScaledSpaceMaps[b]);
				readableScaledSpaceMaps[b] = null;
				readableScaledSpaceMaps.Remove(b);
			}

			if (readableScaledSpaceNormalMaps.ContainsKey(b))
			{
				GameObject.Destroy(readableScaledSpaceNormalMaps[b]);
				readableScaledSpaceNormalMaps[b] = null;
				readableScaledSpaceNormalMaps.Remove(b);
			}
		}

		private Texture2D readableTexture(Texture tex, Material mat)
		{
			if (tex == null)
			{
				return null;
			}

			Texture2D readable = new Texture2D(tex.width, tex.height);

			var rt = RenderTexture.GetTemporary(tex.width, tex.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB, 1);

			if (mat != null)
			{
				Graphics.Blit(tex, rt, mat);
			}
			else
			{
				Graphics.Blit(tex, rt);
			}

			RenderTexture.active = rt;

			readable.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0);

			RenderTexture.active = null;
			RenderTexture.ReleaseTemporary(rt);

			rt = null;

			readable.Apply();

			tex = null;

			return readable;
		}

		private void OnGUI()
		{
			if (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedScene == GameScenes.TRACKSTATION)
			{
				drawTarget();
			}
		}

		private void drawTarget()
		{
			if (!MapView.MapIsEnabled)
			{
				return;
			}

			CelestialBody b = SCANUtil.getTargetBody(MapView.MapCamera.target);

			if (b == null)
			{
				return;
			}

			SCANdata d = getData(b.bodyName);

			if (d == null)
			{
				return;
			}

			if (SCAN_Settings_Config.Instance.ShowGroundTracks && HighLogic.LoadedSceneIsFlight && !d.Disabled && SCAN_Settings_Config.Instance.BackgroundScanning)
			{
				drawGroundTracks(b);
			}

			return;
		}

		private void drawGroundTracks(CelestialBody body)
		{
			if (SCAN_Settings_Config.Instance.GroundTracksActiveOnly)
			{
				Vessel v = FlightGlobals.ActiveVessel;

				if (v.mainBody != body)
				{
					return;
				}

				if (v.situation == Vessel.Situations.LANDED || v.situation == Vessel.Situations.PRELAUNCH || v.situation == Vessel.Situations.SPLASHED)
				{
					return;
				}

				if (!isVesselKnown(v))
				{
					return;
				}

				SCANvessel sv = knownVessels[v.id];

				if (sv == null)
				{
					return;
				}

				//Color col;

				double groundWidth = getFOV(sv, body);//, out col);

				if (groundWidth < 1)
				{
					return;
				}

				double surfaceScale = (2 * Math.PI * body.Radius) / 360;

				groundWidth *= surfaceScale;

				SCANuiUtil.drawGroundTrackTris(body, sv.vessel, groundWidth, sv.trackColor);
			}
			else
			{
				double surfaceScale = (2 * Math.PI * body.Radius) / 360;

				for (int j = knownVessels.Count - 1; j >= 0; j--)
				{
					SCANvessel sv = knownVessels.At(j);

					if (sv == null)
					{
						continue;
					}

					if (sv.vessel.mainBody != body)
					{
						continue;
					}

					Vessel.Situations sit = sv.vessel.loaded ? sv.vessel.situation : sv.vessel.protoVessel.situation;

					if (sit == Vessel.Situations.LANDED || sit == Vessel.Situations.PRELAUNCH || sit == Vessel.Situations.SPLASHED)
					{
						continue;
					}

					//Color col;

					double groundWidth = getFOV(sv, body);//, out col);

					if (groundWidth < 1)
					{
						continue;
					}

					groundWidth *= surfaceScale;

					SCANuiUtil.drawGroundTrackTris(body, sv.vessel, groundWidth, sv.trackColor);
				}
			}
		}

		private double getFOV(SCANvessel v, CelestialBody b)//, out Color c)
		{
			//c = palette.xkcd_DarkGreenAlpha;
			double maxFOV = 0;
			double alt = v.vessel.altitude;
			double soi_radius = b.sphereOfInfluence - b.Radius;
			double surfscale = Planetarium.fetch.Home.Radius / b.Radius;
			if (surfscale < 1)
			{
				surfscale = 1;
			}

			surfscale = Math.Sqrt(surfscale);

			for (int j = v.sensors.Count - 1; j >= 0; j--)
			{
				SCANsensor s = v.sensors[j];

				if (alt < s.min_alt)
				{
					continue;
				}

				if (alt > Math.Min(s.max_alt, soi_radius))
				{
					continue;
				}

				double fov = s.fov;
				double ba = Math.Min(s.best_alt, soi_radius);
				if (alt < ba)
				{
					fov = (alt / ba) * fov;
				}

				fov *= surfscale;
				if (fov > 20)
				{
					fov = 20;
				}

				if (fov > maxFOV)
				{
					maxFOV = fov;
				}
			}

			return maxFOV;
		}

		private Color32 getScanTypeColor(SCANtype s)
		{
			float r = 0;
			float g = 0;
			float b = 0;
			float a = 0;

			int count = 0;

			for (int i = 0; i < 31; i++)
			{
				if ((1 << i & (int)s) != 0)
				{
					Color32 c = typeColor(i);

					r += (c.r * c.r);
					g += (c.g * c.g);
					b += (c.b * c.b);
					a += (c.a * c.a);

					count++;
				}
			}

			r /= count;
			g /= count;
			b /= count;
			a /= count;

			Color32 col = new Color32((byte)Mathf.Sqrt(r), (byte)Mathf.Sqrt(g), (byte)Mathf.Sqrt(b), (byte)Mathf.Sqrt(a));

			return col;
		}

		private Color32 typeColor(int i)
		{
			switch (i)
			{
				case 0:
					return SCAN_Settings_Config.Instance.LoResAltimetryTrackColor;
				case 1:
					return SCAN_Settings_Config.Instance.HiResAltimetryTrackColor;
				case 2:
					return SCAN_Settings_Config.Instance.LoResVisualTrackColor;
				case 3:
					return SCAN_Settings_Config.Instance.BiomeTrackColor;
				case 4:
					return SCAN_Settings_Config.Instance.AnomalyTrackColor;
				case 5:
					return SCAN_Settings_Config.Instance.AnomalyDetailTrackColor;
				case 6:
					return SCAN_Settings_Config.Instance.HiResVisualTrackColor;
				case 7:
					return SCAN_Settings_Config.Instance.FuzzyResourceTrackColor;
				case 8:
					return SCAN_Settings_Config.Instance.HiResResourceTrackColor;
				default:

					return palette.XKCD_DarkGreenAlpha;
			}
		}

		private void removeVessel(Vessel v)
		{
			if (isVesselKnown(v))
			{
				unregisterVessel(v);
			}
		}

		private void addVessel(Vessel v)
		{
			foreach (SCANsat.SCAN_PartModules.SCANsat s in v.FindPartModulesImplementing())
			{
				if (s.scanningNow)
				{
					registerSensor(v.id, (SCANtype)s.sensorType, s.fov, s.min_alt, s.max_alt, s.best_alt, s.requireLight);
				}
			}
		}

		private void dockingEventCheck(GameEvents.FromToAction Parts)
		{
			StartCoroutine(dockingCheckCoRoutine(Parts.to.vessel, Parts.from.vessel));
		}

		IEnumerator dockingCheckCoRoutine(Vessel to, Vessel from)
		{
			int timer = 0;

			while (timer < 45)
			{
				timer++;
				yield return null;
			}

			if (from != null)
			{
				removeVessel(from);
			}

			if (to != null)
			{
				removeVessel(to);
			}

			addVessel(FlightGlobals.ActiveVessel);
		}

		private void newVesselCheck(Vessel v)
		{
			if (v.loaded)
			{
				Vessel newVessel = null;

				if (v.Parts.Count > 1)
				{
					newVessel = v;
				}
				else
				{
					newVessel = null;
				}

				Vessel oldVessel = FlightGlobals.ActiveVessel;

				StartCoroutine(newVesselCoRoutine(newVessel, oldVessel));
			}
		}

		IEnumerator newVesselCoRoutine(Vessel newV, Vessel oldV)
		{
			int timer = 0;

			while (timer < 45)
			{
				timer++;
				yield return null;
			}

			if (newV != null)
			{
				removeVessel(newV);
				addVessel(newV);
			}

			if (oldV != null)
			{
				removeVessel(oldV);
				addVessel(oldV);
			}
		}

		private void contractsCheck()
		{
			contractsLoaded = true;
		}

		private void onParamChange(Contract c, ContractParameter p)
		{
			if (c.GetType() == typeof(SurveyContract))
			{
				SurveyContract s = c as SurveyContract;

				CelestialBody b = s.targetBody;

				SCANdata data = getData(b.bodyName);

				if (data == null)
				{
					return;
				}

				data.addSurveyWaypoints(b, s);
			}
			else if (c.GetType() == typeof(SatelliteContract))
			{
				SatelliteContract s = c as SatelliteContract;

				SpecificOrbitParameter orbit = s.GetParameter();

				if (orbit == null)
				{
					return;
				}

				CelestialBody b = orbit.TargetBody;

				SCANdata data = getData(b.bodyName);

				if (data == null)
				{
					return;
				}

				data.addStationaryWaypoints(b, s);
			}

			if (_bigMap.IsVisible && _bigMap.WaypointToggle)
			{
				_bigMap.RefreshIcons();
			}

			if (_zoomMap.IsVisible && _zoomMap.IconsToggle)
			{
				_zoomMap.RefreshIcons();
			}
		}

		private void SOIChange(GameEvents.HostedFromToAction VC)
		{
			if (!body_data.Contains(VC.to.bodyName))
			{
				body_data.Add(VC.to.bodyName, new SCANdata(VC.to));
			}
		}

		private void setNewTerrainConfigValues(SCANterrainConfig terrain, float min, float max, float? clamp, SCANPalette c, int size, bool reverse, bool discrete)
		{
			terrain.MinTerrain = min * terrain.MinHeightMultiplier;
			terrain.MaxTerrain = max * terrain.MaxHeightMultiplier;
			terrain.ClampTerrain = clamp * terrain.ClampHeightMultiplier;
			terrain.ColorPal = c;
			terrain.PalSize = size;
			terrain.PalRev = reverse;
			terrain.PalDis = discrete;
		}

		private string saveResources(SCANresourceGlobal resource)
		{
			List sL = new List();
			for (int j = 0; j < resource.getBodyCount; j++)
			{
				SCANresourceBody bodyRes = resource.getBodyConfig(j);
				if (bodyRes != null)
				{
					string a = string.Format("{0}|{1:F3}|{2:F3}", bodyRes.Index, bodyRes.MinValue, bodyRes.MaxValue);
					sL.Add(a);
				}
			}

			return string.Join(",", sL.ToArray());
		}

		private void loadCustomResourceValues(ConfigNode node)
		{
			SCANresourceGlobal r;

			string resource = node.parse("Resource", "");

			if (string.IsNullOrEmpty(resource))
			{
				return;
			}

			if (masterResourceNodes.Contains(resource))
			{
				r = masterResourceNodes[resource];
			}
			else
			{
				return;
			}

			Color lowColor = node.parse("MinColor", r.DefaultLowColor);
			Color highColor = node.parse("MaxColor", r.DefaultHighColor);
			float transparent = node.parse("Transparency", r.DefaultTrans);

			r.MinColor = lowColor;
			r.MaxColor = highColor;
			r.Transparency = transparent;

			string s = node.parse("MinMaxValues", "");

			if (!string.IsNullOrEmpty(s))
			{
				string[] sA = s.Split(',');
				for (int i = 0; i < sA.Length; i++)
				{
					string[] sB = sA[i].Split('|');
					try
					{
						int j = 0;
						float min = 0;
						float max = 0;
						if (!int.TryParse(sB[0], out j))
						{
							continue;
						}

						CelestialBody b = null;

						try
						{
							b = FlightGlobals.Bodies.FirstOrDefault(a => a.flightGlobalsIndex == j);
						}
						catch (Exception e)
						{
							Log.Error("Error in loading Celestial Body...\n" + e);
							return;
						}

						if (b != null)
						{
							SCANresourceBody res = r.getBodyConfig(b.bodyName, false);
							if (res != null)
							{
								if (!float.TryParse(sB[1], out min))
								{
									min = res.DefaultMinValue;
								}

								if (!float.TryParse(sB[2], out max))
								{
									max = res.DefaultMaxValue;
								}

								res.MinValue = min;
								res.MaxValue = max;
							}
							//else
							//SCANUtil.SCANlog("No resources found assigned for Celestial Body: {0}, skipping...", b.bodyName);
						}
						else
						{
							SCANUtil.SCANlog("No Celestial Body found matching this saved resource value: {0}, skipping...", j);
						}
					}
					catch (Exception e)
					{
						SCANUtil.SCANlog("Something Went Wrong While Loading Custom Resource Settings; Reverting To Default Values: {0}", e);
					}
				}
			}
		}

		private void loadWaypoint(string s, CelestialBody b)
		{
			if (!HighLogic.LoadedSceneIsFlight)
			{
				return;
			}

			StartCoroutine(WaitForWaypoint(s, b));
		}

		private IEnumerator WaitForWaypoint(string s, CelestialBody b)
		{
			while (!FlightGlobals.ready || FlightGlobals.ActiveVessel == null)
			{
				yield return null;
			}

			int timer = 0;

			while (timer < 5)
			{
				timer++;
				yield return null;
			}

			if (!mechjebLoaded || b != FlightGlobals.currentMainBody)
			{
				yield break;
			}

			SCANwaypoint w = null;
			string[] a = s.Split(',');
			double lat = 0;
			double lon = 0;

			if (!double.TryParse(a[0], out lat))
			{
				yield break;
			}

			if (!double.TryParse(a[1], out lon))
			{
				yield break;
			}

			w = new SCANwaypoint(lat, lon, "MechJeb Landing Target");

			MJTargetSet.Invoke(new Vector2d(lon, lat), b);

			SCANdata d = getData(b.bodyName);

			if (d != null)
			{
				d.addToWaypoints(w);
			}
		}

		public class SCANsensor
		{
			public SCANtype sensor;
			public double fov;
			public double min_alt, max_alt, best_alt;

			public Color32 trackColor;

			public bool inRange;
			public bool bestRange;
			public bool inDarkness;

			public bool requireLight;

			public SCANsensor() { }
		}

		public class SCANvessel
		{
			public Guid id;
			public Vessel vessel;

			public Color32 trackColor;

			public List sensors = new List();

			public CelestialBody body;
			public double latitude, longitude;
			public int frame;
			public double lastUT;
		}

		private void registerSensorTemp(Guid id, SCANtype sensors, double _fov, double _min_alt, double _max_alt, double _best_alt, bool _require_light)
		{
			if (id == null)
			{
				return;
			}

			if (!knownVessels.Contains(id))
			{
				knownVessels[id] = new SCANvessel();
			}

			SCANvessel sv = knownVessels[id];
			sv.id = id;

			if (_max_alt <= 0)
			{
				_min_alt = 5000;
				_max_alt = 500000;
				_best_alt = 200000;
				_fov = 5;
			}

			foreach (SCANtype sensorType in Enum.GetValues(typeof(SCANtype)))
			{
				if (SCANUtil.countBits((int)sensorType) != 1)
				{
					continue;
				}

				if ((sensorType & sensors) == SCANtype.Nothing)
				{
					continue;
				}

				bool flag = true;

				for (int i = sv.sensors.Count - 1; i >= 0; i--)
				{
					SCANsensor sen = sv.sensors[i];

					if (sen.min_alt == _min_alt && sen.max_alt == _max_alt
						&& sen.best_alt == _best_alt && sen.fov == _fov
						&& sen.requireLight == _require_light)
					{
						SCANtype t = sen.sensor | sensorType;

						sv.sensors[i] = new SCANsensor()
						{
							min_alt = _min_alt,
							max_alt = _max_alt,
							best_alt = _best_alt,
							fov = _fov,
							sensor = t,
							requireLight = _require_light,
							trackColor = getScanTypeColor(t),
							//sensorType = (int)sv.sensors[i].sensor,
						};

						flag = false;

						break;
					}
				}

				if (flag)
				{
					sv.sensors.Add(new SCANsensor()
					{
						min_alt = _min_alt,
						max_alt = _max_alt,
						best_alt = _best_alt,
						fov = _fov,
						requireLight = _require_light,
						sensor = sensorType,
						trackColor = getScanTypeColor(sensorType),
					});
				}
			}

			sv.trackColor = palette.combineColors(sv.sensors.Select(s => s.trackColor).ToArray());
		}

		private void finishRegistration(Guid id)
		{
			if (!knownVessels.Contains(id))
			{
				return;
			}

			SCANvessel sv = knownVessels[id];

			try
			{
				sv.vessel = FlightGlobals.Vessels.FirstOrDefault(a => a.id == id);
			}
			catch (Exception e)
			{
				Log.Error("Something went wrong while trying to load this SCANsat vessel; moving on the next vessel... \n" + e);
			}

			if (sv.vessel == null)
			{
				knownVessels.Remove(id);
			}
		}

		internal void registerSensor(Vessel v, SCANtype sensors, double fov, double min_alt, double max_alt, double best_alt, bool _require_light)
		{
			registerSensor(v.id, sensors, fov, min_alt, max_alt, best_alt, _require_light);
			knownVessels[v.id].vessel = v;
			knownVessels[v.id].latitude = SCANUtil.fixLatShift(v.latitude);
			knownVessels[v.id].longitude = SCANUtil.fixLonShift(v.longitude);
		}

		private void registerSensor(Guid id, SCANtype sensors, double _fov, double _min_alt, double _max_alt, double _best_alt, bool _require_light)
		{
			if (id == null)
			{
				return;
			}

			if (!knownVessels.Contains(id))
			{
				knownVessels[id] = new SCANvessel();
			}

			SCANvessel sv = knownVessels[id];
			sv.id = id;
			try
			{
				sv.vessel = FlightGlobals.Vessels.FirstOrDefault(a => a.id == id);
			}
			catch (Exception e)
			{
				Log.Error("Something went wrong while trying to load this SCANsat vessel; moving on the next vessel... \n" + e);
			}
			if (sv.vessel == null)
			{
				knownVessels.Remove(id);
				return;
			}

			if (_max_alt <= 0)
			{
				_min_alt = 5000;
				_max_alt = 500000;
				_best_alt = 200000;
				_fov = 5;
			}

			foreach (SCANtype sensorType in Enum.GetValues(typeof(SCANtype)))
			{
				if (SCANUtil.countBits((int)sensorType) != 1)
				{
					continue;
				}

				if ((sensorType & sensors) == SCANtype.Nothing)
				{
					continue;
				}

				bool flag = true;

				for (int i = sv.sensors.Count - 1; i >= 0; i--)
				{
					SCANsensor sen = sv.sensors[i];

					if (sen.min_alt == _min_alt && sen.max_alt == _max_alt
						&& sen.best_alt == _best_alt && sen.fov == _fov
						&& sen.requireLight == _require_light)
					{
						SCANtype t = sen.sensor | sensorType;

						sv.sensors[i] = new SCANsensor()
						{
							min_alt = _min_alt,
							max_alt = _max_alt,
							best_alt = _best_alt,
							fov = _fov,
							sensor = t,
							requireLight = _require_light,
							trackColor = getScanTypeColor(t),
						};

						flag = false;

						break;
					}
				}

				if (flag)
				{
					sv.sensors.Add(new SCANsensor()
					{
						min_alt = _min_alt,
						max_alt = _max_alt,
						best_alt = _best_alt,
						fov = _fov,
						sensor = sensorType,
						requireLight = _require_light,
						trackColor = getScanTypeColor(sensorType),
					});
				}
			}

			sv.trackColor = palette.combineColors(sv.sensors.Select(s => s.trackColor).ToArray());
		}

		internal void unregisterSensor(Vessel v, SCANtype sensors, double _fov, double _min_alt, double _max_alt, double _best_alt, bool require_light)
		{
			if (!knownVessels.Contains(v.id))
			{
				return;
			}

			SCANvessel sv = knownVessels[v.id];
			sv.id = v.id;
			sv.vessel = v;

			if (_max_alt <= 0)
			{
				_min_alt = 5000;
				_max_alt = 500000;
				_best_alt = 200000;
				_fov = 5;
			}

			foreach (SCANtype sensor in Enum.GetValues(typeof(SCANtype)))
			{
				if ((sensors & sensor) == SCANtype.Nothing)
				{
					continue;
				}

				for (int i = sv.sensors.Count - 1; i >= 0; i--)
				{
					SCANsensor sen = sv.sensors[i];

					if ((sen.sensor & sensor) != SCANtype.Nothing)
					{
						if (sen.min_alt == _min_alt && sen.max_alt == _max_alt
							&& sen.best_alt == _best_alt && sen.fov == _fov
							&& sen.requireLight == require_light)
						{
							SCANtype t = sen.sensor ^ sensor;

							sv.sensors[i] = new SCANsensor()
							{
								min_alt = sen.min_alt,
								max_alt = sen.max_alt,
								best_alt = sen.best_alt,
								fov = sen.fov,
								sensor = t,
								requireLight = require_light,
								trackColor = getScanTypeColor(t),
							};
						}
					}

					if (sv.sensors[i].sensor == SCANtype.Nothing)
					{
						sv.sensors.RemoveAt(i);
					}
				}
			}

			sv.trackColor = palette.combineColors(sv.sensors.Select(s => s.trackColor).ToArray());

			if (sv.sensors.Count == 0)
			{
				knownVessels.Remove(v.id);
				//SCANUtil.SCANdebugLog("Unregister Vessel");
			}
		}

		public void unregisterVessel(Vessel v)
		{
			if (!knownVessels.Contains(v.id))
			{
				return;
			}

			knownVessels.Remove(v.id);
		}

		internal bool isVesselKnown(Guid id, SCANtype sensor)
		{
			if (!knownVessels.Contains(id))
			{
				return false;
			}

			SCANtype all = SCANtype.Nothing;

			for (int i = knownVessels[id].sensors.Count - 1; i >= 0; i--)
			{
				all |= knownVessels[id].sensors[i].sensor;
			}

			return (all & sensor) != SCANtype.Nothing;
		}

		public bool isVesselKnown(Guid id)
		{
			if (!knownVessels.Contains(id))
			{
				return false;
			}

			return knownVessels[id].sensors.Count > 0;
		}

		public bool isVesselKnown(Vessel v)
		{
			if (v.vesselType == VesselType.Debris)
			{
				return false;
			}

			return isVesselKnown(v.id);
		}

		internal SCANsensor getSensorStatus(Vessel v, SCANtype sensor)
		{
			if (!knownVessels.Contains(v.id))
			{
				return null;
			}

			for (int i = knownVessels[v.id].sensors.Count - 1; i >= 0; i--)
			{
				if ((knownVessels[v.id].sensors[i].sensor & sensor) != SCANtype.Nothing)
				{
					return knownVessels[v.id].sensors[i];
				}
			}

			return null;
		}

		internal SCANtype activeSensorsOnVessel(Guid id, bool daylight)
		{
			if (!knownVessels.Contains(id))
			{
				return SCANtype.Nothing;
			}

			SCANtype sensors = SCANtype.Nothing;

			for (int i = knownVessels[id].sensors.Count - 1; i >= 0; i--)
			{
				if (daylight)
				{
					SCANsensor sen = knownVessels[id].sensors[i];

					if (sen.requireLight)
					{
						Vessel ves = knownVessels[id].vessel;
						if (SCANUtil.InDarkness(ves.orbit.getPositionAtUT(Planetarium.GetUniversalTime()), ves.mainBody.position, SCANUtil.LocalSun(ves.mainBody).position))
						{
							continue;
						}
					}
				}

				sensors |= knownVessels[id].sensors[i].sensor;
			}
			return sensors;
		}

		//private System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
		private int i = 0;
		private static int last_scan_frame;
		private static float last_scan_time;
		private static double scan_UT;
		private int activeSensors, activeVessels;
		private static int currentActiveSensor, currentActiveVessel;
		private void scanFromAllVessels()
		{
			if (Time.realtimeSinceStartup - last_scan_time < 1 && Time.realtimeSinceStartup > last_scan_time)
			{
				return;
			}

			if (last_scan_frame == Time.frameCount)
			{
				return;
			}

			last_scan_frame = Time.frameCount;
			last_scan_time = Time.realtimeSinceStartup;
			scan_UT = Planetarium.GetUniversalTime();
			currentActiveSensor = 0;
			currentActiveVessel = 0;
			actualPasses = 0;
			if (body_data.Count > 0)
			{
				body_data.At(i).updateCoverage();    //Update coverage for planets one at a time, rather than all together
				i++;
				if (i >= body_data.Count)
				{
					i = 0;
				}
			}
			int l = knownVessels.Count;

			SCANvessel vessel = null;
			SCANdata data = null;

			//watch.Reset();
			//watch.Start();

			for (int j = 0; j < l; j++)
			{
				//Profiler.BeginSample("SCAN Vessel scan");
				vessel = knownVessels.At(j);

				data = SCANUtil.getData(vessel.vessel.mainBody);

				if (data == null)
				{
					continue;
				}

				if (!data.Disabled)
				{
					if (isVesselKnown(vessel.vessel))
					{
						doScanPass(vessel, vessel.vessel, data, scan_UT, scan_UT, vessel.lastUT);
						++currentActiveVessel;
						currentActiveSensor += knownVessels[vessel.vessel.id].sensors.Count;
					}
				}

				vessel.body = vessel.vessel.mainBody;
				vessel.frame = Time.frameCount;
				vessel.lastUT = scan_UT;
				vessel.latitude = SCANUtil.fixLatShift(vessel.vessel.latitude);
				vessel.longitude = SCANUtil.fixLonShift(vessel.vessel.longitude);
				//Profiler.EndSample();
			}

			//watch.Stop();

			//SCANUtil.SCANlog("SCAN Time: {0} - Passes: {1}", watch.ElapsedMilliseconds.ToString(), actualPasses.ToString());
			activeVessels = currentActiveVessel;
			activeSensors = currentActiveSensor;
		}

		private int actualPasses;
		private static Queue scanQueue;
		private void doScanPass(SCANvessel vessel, Vessel v, SCANdata data, double UT, double startUT, double lastUT)
		{
			//SCANUtil.SCANlog("Start New Scan Pass");
			CelestialBody sun = SCANUtil.LocalSun(v.mainBody);
			double soi_radius = v.mainBody.sphereOfInfluence - v.mainBody.Radius;
			double alt = v.altitude;
			double llat = SCANUtil.fixLat(v.latitude);
			double llon = SCANUtil.fixLon(v.longitude);
			int lat = (int)Math.Floor(llat);
			int lon = (int)Math.Floor(llon);
			double res = 0;
			Orbit o = v.orbit;
			bool uncovered;
			bool darkness = SCANUtil.InDarkness(o.getPositionAtUT(UT), v.mainBody.position, sun.position);
			short sensorType;

			double surfscale = Planetarium.fetch.Home.Radius / v.mainBody.Radius;

			if (surfscale < 1)
			{
				surfscale = 1;
			}

			surfscale = Math.Sqrt(surfscale);

			if (scanQueue == null)
			{
				scanQueue = new Queue();
			}

			if (scanQueue.Count != 0)
			{
				scanQueue.Clear();
			}

		loop: // don't look at me like that, I just unrolled the recursion
			if (res > 0)
			{
				if (double.IsNaN(UT))
				{
					goto dequeue;
				}

				if (double.IsNaN(o.getObtAtUT(UT)))
				{
					goto dequeue;
				}

				Vector3d pos = o.getPositionAtUT(UT);
				double rotation = 0;

				if (v.mainBody.rotates)
				{
					rotation = (360 * ((UT - scan_UT) / v.mainBody.rotationPeriod)) % 360;
				}

				alt = v.mainBody.GetAltitude(pos);
				lat = SCANUtil.fixLatInt(v.mainBody.GetLatitude(pos));
				lon = SCANUtil.fixLonInt(v.mainBody.GetLongitude(pos) - rotation);
				darkness = SCANUtil.InDarkness(pos, v.mainBody.position, sun.position);

				if (alt < 0)
				{
					alt = 0;
				}
			}
			else
			{
				alt = v.radarAltitude;
				if (alt < 0)
				{
					alt = v.altitude;
				}
			}

			if (Math.Abs((lat * 1d) - llat) < 1 && Math.Abs((lon * 1d) - llon) < 1 && res > 0)
			{
				goto dequeue;
			}

			actualPasses++;

			uncovered = res <= 0;
			//SCANUtil.SCANlog("Begin scan pass: {0}", vessel.sensors.Count);
			for (int j = vessel.sensors.Count - 1; j >= 0; j--)
			{
				SCANsensor sensor = vessel.sensors[j];

				sensorType = (short)sensor.sensor;

				if (res <= 0)
				{
					if (data.getCoverage(sensor.sensor) > 0)
					{
						uncovered = false;
					}
				}

				sensor.inDarkness = sensor.requireLight;

				if (sensor.requireLight && darkness)
				{
					//SCANUtil.SCANlog("Sensor {0} fail light check...", sensorType);
					continue;
				}

				sensor.inDarkness = false;
				sensor.inRange = false;
				sensor.bestRange = false;

				double ma = Math.Max(0, Math.Min(sensor.min_alt, soi_radius - 100000));

				if (alt < ma)
				{
					continue;
				}

				if (alt > Math.Min(sensor.max_alt, soi_radius))
				{
					continue;
				}

				//Profiler.BeginSample("SCAN Sensor Check");

				sensor.inRange = true;

				double fov = sensor.fov;
				double ba = Math.Min(sensor.best_alt, soi_radius);

				if (alt < ba)
				{
					fov = (alt / ba) * fov;
				}
				else
				{
					sensor.bestRange = true;
				}

				fov *= surfscale;

				if (fov > 20)
				{
					fov = 20;
				}

				int f = (int)Math.Truncate(fov);
				int f1 = f + (int)Math.Round(fov - f);

				int w = f;
				double fovW = fov;

				if (lat < 180)
				{
					fovW = fov * (1 / SCANUtil.cosLookUp[lat]);

					if (fovW > 120)
					{
						fovW = 120;
					}

					w = (int)Math.Truncate(fovW);
				}

				int w1 = w + (int)Math.Round(fovW - w);

				for (int x = -w; x <= w1; ++x)
				{
					int clampLon = lon + x;

					if (clampLon > 359 || clampLon < 0)
					{
						clampLon = (clampLon + 360) % 360;
					}

					for (int y = -f; y <= f1; ++y)
					{
						int clampLat = lat + y;
						int clampLonAgain = clampLon;

						if (clampLat > 179)
						{
							clampLat = 359 - clampLat;
							clampLonAgain += 180;

							clampLat = (clampLat + 180) % 180;

							if (clampLonAgain > 359 || clampLonAgain < 0)
							{
								clampLonAgain = (clampLonAgain + 360) % 360;
							}
						}
						else if (clampLat < 0)
						{
							clampLat = 0 - clampLat;
							clampLonAgain += 180;

							clampLat = (clampLat + 180) % 180;

							if (clampLonAgain > 359 || clampLonAgain < 0)
							{
								clampLonAgain = (clampLonAgain + 360) % 360;
							}
						}

						data.coverage[clampLonAgain, clampLat] |= sensorType;
					}
				}
				//Profiler.EndSample();
			}
			if (uncovered)
			{
				return;
			}

			if (vessel.lastUT <= 0)
			{
				return;
			}

			if (vessel.frame <= 0)
			{
				return;
			}

			if (v.LandedOrSplashed)
			{
				return;
			}

			if (res >= SCAN_Settings_Config.Instance.TimeWarpResolution)
			{
				goto dequeue;
			}

			if (startUT > UT)
			{
				scanQueue.Enqueue((startUT + UT) / 2);
				scanQueue.Enqueue(startUT);
				scanQueue.Enqueue(UT);
				scanQueue.Enqueue(lat);
				scanQueue.Enqueue(lon);
				scanQueue.Enqueue(res + 1);
			}

			startUT = UT;
			UT = (lastUT + UT) / 2;
			llat = lat;
			llon = lon;
			res = res + 1;
			goto loop;

		dequeue:
			if (scanQueue.Count <= 0)
			{
				return;
			}

			UT = scanQueue.Dequeue();
			startUT = scanQueue.Dequeue();
			lastUT = scanQueue.Dequeue();
			llat = scanQueue.Dequeue();
			llon = scanQueue.Dequeue();
			res = scanQueue.Dequeue();
			goto loop;
		}

	}
}


================================================
FILE: SCANsat/SCANmainMenuLoader.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANversions - logs version numbers for SCANsat and various associated mods
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Diagnostics;
using System.Linq;
using UnityEngine;
using Log = KSPBuildTools.Log;
using SCANsat.SCAN_Reflection;

namespace SCANsat
{
	[KSPAddon(KSPAddon.Startup.MainMenu, true)]
	public class SCANmainMenuLoader : MonoBehaviour
	{
		private string[] Assemblies = new string[] { "SCANsatKethane", "RasterPropMonitor", "MechJeb2", "ContractConfigurator", "CC_SCANsat", "SCANmechjeb", "ModuleManager", "Kopernicus", "Kopernicus.OnDemand", "ParallaxContinued" };

		internal static string SCANsatVersion = "";
		public static bool MechJebLoaded = false;
		public static bool MMLoaded = false;

		private static Texture2D orbitIconsMap;

		public static Texture2D OrbitIconsMap
		{
			get { return orbitIconsMap; }
		}

		private static bool loaded;

		private List assemblyList = new List();

		private void Start()
		{
			if (loaded)
			{
				Destroy(gameObject);
				return;
			}

			loaded = true;

			PopulateCosLookupArray();

			if (orbitIconsMap == null)
			{
				getOrbitIcons();
			}

			findAssemblies(Assemblies);
			SCANfinePrint.Initialize();
			SCANconfigLoader.configLoader();
		}

		private void PopulateCosLookupArray()
		{
			for (int i = 0; i < 180; i++)
			{
				SCANUtil.cosLookUp[i] = Math.Cos((i - 90) * 0.0174532924);
			}
		}

		private void getOrbitIcons()
		{
			foreach (Texture2D t in Resources.FindObjectsOfTypeAll())
			{
				if (t.name == "OrbitIcons")
				{
					orbitIconsMap = t;
					break;
				}
			}
		}

		private void findAssemblies(string[] assemblies)
		{
			assemblyList.Add(new AssemblyLog(AssemblyLoader.loadedAssemblies.GetByAssembly(Assembly.GetExecutingAssembly()))); //More reliable method for SCANsat.dll
			foreach (string name in assemblies)
			{ //Search for the relevant plugins among the loaded assemblies
				var assembly = AssemblyLoader.loadedAssemblies.FirstOrDefault(a => a.assembly.GetName().Name == name);
				if (assembly != null)
				{
					AssemblyLog alog = new AssemblyLog(assembly);
					assemblyList.Add(alog);
					if (alog.name == "ModuleManager")
					{
						MMLoaded = true;
					}
					else if (alog.name == "Kopernicus")
					{
						SCANkopernicus.Initialize(assembly);
					}
					else if (alog.name == "ParallaxContinued")
					{
						SCANparallaxContinued.Initialize(assembly);
					}
				}
			}
			if (assemblyList.Count > 0)
			{
				SCANsatVersion = assemblyList[0].assemblyLoaded.GetName().Version.ToString(2);
				debugWriter();
			}

			//foreach(AssemblyLoader.LoadedAssembly ass in AssemblyLoader.loadedAssemblies)
			//{
			//    AssemblyLog asslog = new AssemblyLog(ass);

			//    print(string.Format("[SCANsat] Assembly: {0} found; Version: {1}; File Version: {2}; Info Version: {3}; Location: {4}"
			//        , asslog.name, asslog.version, asslog.fileVersion, asslog.infoVersion, asslog.location));

			//}
		}

		private void debugWriter()
		{
			foreach (AssemblyLog log in assemblyList)
			{
				Log.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));
			}
		}

	}

	//A class to gather and store information about assemblies
	internal class AssemblyLog
	{
		internal string name, version, fileVersion, infoVersion, location;
		internal Assembly assemblyLoaded;

		internal AssemblyLog(AssemblyLoader.LoadedAssembly Assembly)
		{
			assemblyLoaded = Assembly.assembly;
			var ainfoV = Attribute.GetCustomAttribute(Assembly.assembly, typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute;
			var afileV = Attribute.GetCustomAttribute(Assembly.assembly, typeof(AssemblyFileVersionAttribute)) as AssemblyFileVersionAttribute;

			switch (afileV == null)
			{
				case true: fileVersion = ""; break;
				default: fileVersion = afileV.Version; break;
			}

			switch (ainfoV == null)
			{
				case true: infoVersion = ""; break;
				default: infoVersion = ainfoV.InformationalVersion; break;
			}

			name = Assembly.assembly.GetName().Name;
			version = Assembly.assembly.GetName().Version.ToString();
			location = Assembly.url.ToString();
		}

	}

}


================================================
FILE: SCANsat/SCANquickload.cs
================================================
#region license
/*  * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 * 
 * SCANquickload -
 * 		loads a specified savegame and vessel
 * 		useful for performance testing, debugging, screenshot, or example making
 *
 *
 * Copyright (c)2013 unknown KSP forum member;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
*/
#endregion
#if DEBUG
using KSP;
using UnityEngine;
using SCANsat;
using System.Collections.Generic;


[KSPAddon(KSPAddon.Startup.MainMenu, false)]

public class Debug_AutoLoadPersistentSaveOnStartup : MonoBehaviour
{

	public static bool first = true;
	public static int vId = 0;

	public void Start()
	{
		return;
		if (first)
		{
			first = false;
			HighLogic.SaveFolder = "Testing_Off";
			HighLogic.CurrentGame = GamePersistence.LoadGame("persistent", HighLogic.SaveFolder, true, false);
			if (HighLogic.CurrentGame != null && HighLogic.CurrentGame.flightState != null && HighLogic.CurrentGame.compatible)
			{

				List allVessels = HighLogic.CurrentGame.flightState.protoVessels;
				int suitableVessel = 0;

				for (vId = 0; vId < allVessels.Count; vId++)
				{
					switch (allVessels[vId].vesselType)
					{
						case VesselType.SpaceObject: continue;  // asteroids
						case VesselType.Unknown: continue;  // asteroids in facepaint
						case VesselType.EVA: continue;  //Don't spawn rescue Kerbals
						default:
							suitableVessel = vId;
							break; // this one will do
					}
					/* If you want a more stringent filter than
					  *   "vessel is not inert ball of space dirt", then you
					  *   will want to do it here.
					  */
				}
				GamePersistence.UpdateScenarioModules(HighLogic.CurrentGame);
				//HighLogic.CurrentGame.startScene = GameScenes.SPACECENTER;
				//HighLogic.CurrentGame.Start();
				string save = GamePersistence.SaveGame(HighLogic.CurrentGame, "persistent", HighLogic.SaveFolder, SaveMode.OVERWRITE);
				FlightDriver.StartAndFocusVessel(save, suitableVessel);
				CheatOptions.InfinitePropellant = true;
			}
		}
	}
}

#endif

================================================
FILE: SCANsat/SCANsat.csproj
================================================

  
    Library
    SCANsat
    SCANsat
    net4.8
  
  
    true
    true
  
  
    
      $(RepoRootPath)\GameData\SCANsat\SCANsat.version
      1.12.3
    
  
  
    
  
  
    
  


================================================
FILE: SCANsat/SCANutil.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 * 
 * SCANutil - various static utilities methods used througout SCANsat
 * 
 * Several extension methods borrowed from Mechjeb:
 * https://github.com/MuMech/MechJeb2/blob/master/MechJeb2/OrbitExtensions.cs
 * 
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Text;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
using KSP.Localization;
using SCANsat.SCAN_PartModules;
using SCANsat.SCAN_Platform;
using SCANsat.SCAN_Palettes;
using SCANsat.SCAN_Data;
using SCANsat.SCAN_UI.UI_Framework;
using palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;
using SCANsat.SCAN_Unity;

namespace SCANsat
{

	public static class SCANUtil
	{

		#region Public API Methods

		/// 
		/// Determines scanning coverage for a given area with a given scanner type
		/// 
		/// Clamped double in the -180 - 180 degree range
		/// Clamped double in the -90 - 90 degree range
		/// Celestial body in question
		/// SCANtype cast as an integer
		/// 
		public static bool isCovered(double lon, double lat, CelestialBody body, int SCANtype)
		{
			int ilon = icLON(lon);
			int ilat = icLAT(lat);
			if (badLonLat(ilon, ilat))
			{
				return false;
			}

			SCANdata data = getData(body.bodyName);

			if (data == null)
			{
				return false;
			}

			if (SCANtype > Int16.MaxValue)
			{
				return false;
			}

			short type = (short)SCANtype;

			return (data.Coverage[ilon, ilat] & type) != 0;
		}

		/// 
		/// Determines scanning coverage for a given area with a given scanner type
		/// 
		/// Clamped double in the -180 - 180 degree range
		/// Clamped double in the -90 - 90 degree range
		/// Celestial body in question
		/// SCANtype cast as a 16 bit integer
		/// 
		public static bool isCoveredShort(double lon, double lat, CelestialBody body, short SCANtype)
		{
			int ilon = icLON(lon);
			int ilat = icLAT(lat);
			if (badLonLat(ilon, ilat))
			{
				return false;
			}

			SCANdata data = getData(body.bodyName);

			if (data == null)
			{
				return false;
			}

			return (data.Coverage[ilon, ilat] & SCANtype) != 0;
		}

		/// 
		/// Determines scanning coverage for a given area with a given scanner type
		/// 
		/// Clamped integer in the 0-360 degree range
		/// Clamped integer in the 0-180 degree range
		/// Celestial body in question
		/// SCANtype cast as an integer
		/// 
		public static bool isCovered(int lon, int lat, CelestialBody body, int SCANtype)
		{
			if (badLonLat(lon, lat))
			{
				return false;
			}

			SCANdata data = getData(body.bodyName);

			if (data == null)
			{
				return false;
			}

			if (SCANtype > Int16.MaxValue)
			{
				return false;
			}

			short type = (short)SCANtype;

			return (data.Coverage[lon, lat] & type) != 0;
		}

		/// 
		/// Determines scanning coverage for a given area with a given scanner type
		/// 
		/// Clamped integer in the 0-360 degree range
		/// Clamped integer in the 0-180 degree range
		/// Celestial body in question
		/// SCANtype cast as a 16 bit integer
		/// 
		public static bool isCoveredShort(int lon, int lat, CelestialBody body, short SCANtype)
		{
			if (badLonLat(lon, lat))
			{
				return false;
			}

			SCANdata data = getData(body.bodyName);

			if (data == null)
			{
				return false;
			}

			return (data.Coverage[lon, lat] & SCANtype) != 0;
		}

		/// 
		/// Public method to return the scanning coverage for a given sensor type on a give body
		/// 
		/// Integer corresponding to the desired SCANtype
		/// Desired Celestial Body
		/// Scanning percentage as a double from 0-100
		public static double GetCoverage(int SCANtype, CelestialBody Body)
		{
			SCANdata data = getData(Body.bodyName);

			if (data == null)
			{
				return 0;
			}

			if (SCANtype > Int16.MaxValue)
			{
				return 0;
			}

			short type = (short)SCANtype;

			return getCoveragePercentage(data, (SCANtype)type);
		}

		/// 
		/// Public method to return the scanning coverage for a given sensor type on a give body
		/// 
		/// 16 bit integer corresponding to the desired SCANtype
		/// Desired Celestial Body
		/// Scanning percentage as a double from 0-100
		public static double GetCoverageShort(short SCANtype, CelestialBody Body)
		{
			SCANdata data = getData(Body.bodyName);

			if (data == null)
			{
				return 0;
			}

			return getCoveragePercentage(data, (SCANtype)SCANtype);
		}

		/// 
		/// Given the name of the SCANtype, returns the int value.
		/// 
		/// The name of the SCANtype.
		/// The int value that can be used in other public methods.
		public static int GetSCANtype(string SCANname)
		{
			try
			{
				short type = (short)Enum.Parse(typeof(SCANtype), SCANname);

				if (type > Int16.MaxValue)
				{
					return 0;
				}

				return (int)type;
			}
			catch (ArgumentException e)
			{
				throw new ArgumentException("An invalid SCANtype name was provided.  Valid values are: " +
					string.Join(", ", ((IEnumerable)Enum.GetValues(typeof(SCANtype))).Select(x => x.ToString()).ToArray()) + "\n" + e.ToString());
			}
		}

		/// 
		/// Given the name of the SCANtype, returns the short value.
		/// 
		/// The name of the SCANtype.
		/// The short value that can be used in other public methods.
		public static short GetSCANtypeShort(string SCANname)
		{
			try
			{
				return (short)Enum.Parse(typeof(SCANtype), SCANname);
			}
			catch (ArgumentException e)
			{
				throw new ArgumentException("An invalid SCANtype name was provided.  Valid values are: " +
					string.Join(", ", ((IEnumerable)Enum.GetValues(typeof(SCANtype))).Select(x => x.ToString()).ToArray()) + "\n" + e.ToString());
			}
		}

		/// 
		/// 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)
		/// 
		/// Celestial Body object
		/// SCANdata instance for the given Celestial Body; null if none exists
		public static SCANdata getData(CelestialBody body)
		{
			return getData(body.bodyName);
		}

		/// 
		/// 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.
		/// 
		/// Name of celestial body (do not use displayName string)
		/// SCANdata instance for the given Celestial Body; null if none exists
		public static SCANdata getData(string BodyName)
		{
			if (SCANcontroller.controller == null)
			{
				return null;
			}

			return SCANcontroller.controller.getData(BodyName);
		}

		/// 
		/// Do SCANsat maps automatically update with the stock, instant-scan orbital surveys?
		/// 
		/// Returns true if instant scan is enabled
		public static bool instantResourceScanEnabled()
		{
			if (SCAN_Settings_Config.Instance == null)
			{
				return true;
			}

			return SCAN_Settings_Config.Instance.InstantScan;
		}

		/// 
		/// Are the stock resource scanner functions disabled? prevents orbital resource surveys
		/// 
		/// Returns true if stock resource scanning is available
		public static bool stockResourceScanEnabled()
		{
			if (SCAN_Settings_Config.Instance == null)
			{
				return false;
			}

			return !SCAN_Settings_Config.Instance.DisableStockResource;
		}

		/// 
		/// Is the stock resource biome lock enabled? reduced resource abundace accuracy if enabled
		/// 
		/// Returns true if the biome lock is enabled
		public static bool resourceBiomeLockEnabled()
		{
			if (SCAN_Settings_Config.Instance == null)
			{
				return true;
			}

			return SCAN_Settings_Config.Instance.BiomeLock;
		}

		/// 
		/// Is a narrow-band scanner required on the current vessel for full resource data?
		/// 
		/// Returns true if a narrow-band scanner is required
		public static bool narrowBandResourceRestrictionEnabled()
		{
			if (SCAN_Settings_Config.Instance == null)
			{
				return true;
			}

			return SCAN_Settings_Config.Instance.RequireNarrowBand;
		}

		/// 
		/// Registers a SCANsat sensor externally
		/// 
		/// Scanning vessel
		/// ProtoPartModuleSnapshot, should be of type SCANsat or ModuleSCANresourceScanner
		/// Part Prefab, must contain either a SCANsat module or a ModuleSCANresourceScanner
		/// Returns true if the sensor is successfully registered
		public static bool registerSensorExternal(Vessel v, ProtoPartModuleSnapshot m, Part prefab)
		{
			if (v == null)
			{
				return false;
			}

			if (m == null)
			{
				return false;
			}

			if (prefab == null)
			{
				return false;
			}

			if (!(m.moduleName == "SCANsat" || m.moduleName == "ModuleSCANresourceScanner"))
			{
				return false;
			}

			int sensor = 0;
			double fov = 0;
			double min = 0;
			double max = 0;
			double best = 0;
			bool light = false;

			if (prefab.Modules.Contains())
			{
				SCANsat.SCAN_PartModules.SCANsat scan = prefab.Modules.GetModule();

				if (scan == null)
				{
					return false;
				}

				sensor = scan.sensorType;
				fov = scan.fov;
				min = scan.min_alt;
				max = scan.max_alt;
				best = scan.best_alt;
				light = scan.requireLight;
			}
			else if (prefab.Modules.Contains())
			{
				SCANsat.SCAN_PartModules.ModuleSCANresourceScanner scan = prefab.Modules.GetModule();

				if (scan == null)
				{
					return false;
				}

				sensor = scan.sensorType;
				fov = scan.fov;
				min = scan.min_alt;
				max = scan.max_alt;
				best = scan.best_alt;
				light = scan.requireLight;
			}
			else
			{
				return false;
			}

			if (SCANcontroller.controller == null)
			{
				return false;
			}

			SCANcontroller.controller.registerSensor(v, (SCANtype)sensor, fov, min, max, best, light);

			m.moduleValues.SetValue("scanning", true.ToString());

			return true;
		}

		/// 
		/// Unregisters a SCANsat sensor externally
		/// 
		/// Scanning vessel
		/// ProtoPartModuleSnapshot, should be of type SCANsat or ModuleSCANresourceScanner<
		/// Part Prefab, must contain either a SCANsat module or a ModuleSCANresourceScanner
		/// Returns true if the sensor is successfully registered
		public static bool unregisterSensorExternal(Vessel v, ProtoPartModuleSnapshot m, Part prefab)
		{
			if (v == null)
			{
				return false;
			}

			if (m == null)
			{
				return false;
			}

			if (prefab == null)
			{
				return false;
			}

			if (!(m.moduleName == "SCANsat" || m.moduleName == "ModuleSCANresourceScanner"))
			{
				return false;
			}

			int sensor = 0;
			double fov = 0;
			double min = 0;
			double max = 0;
			double best = 0;
			bool light = false;

			if (prefab.Modules.Contains())
			{
				SCANsat.SCAN_PartModules.SCANsat scan = prefab.Modules.GetModule();

				if (scan == null)
				{
					return false;
				}

				sensor = scan.sensorType;
				fov = scan.fov;
				min = scan.min_alt;
				max = scan.max_alt;
				best = scan.best_alt;
				light = scan.requireLight;
			}
			else if (prefab.Modules.Contains())
			{
				SCANsat.SCAN_PartModules.ModuleSCANresourceScanner scan = prefab.Modules.GetModule();

				if (scan == null)
				{
					return false;
				}

				sensor = scan.sensorType;
				fov = scan.fov;
				min = scan.min_alt;
				max = scan.max_alt;
				best = scan.best_alt;
				light = scan.requireLight;
			}
			else
			{
				return false;
			}

			if (SCANcontroller.controller == null)
			{
				return false;
			}

			SCANcontroller.controller.unregisterSensor(v, (SCANtype)sensor, fov, min, max, best, light);

			m.moduleValues.SetValue("scanning", false.ToString());

			return true;
		}

		public static bool scanTypeValid(int type)
		{
			if (type > Int16.MaxValue)
			{
				return false;
			}

			short stype = (short)type;

			if ((stype & (short)SCANtype.Everything_SCAN) != 0)
			{
				return true;
			}

			return false;
		}

		public static bool scanTypeValidShort(short type)
		{
			if ((type & (short)SCANtype.Everything_SCAN) != 0)
			{
				return true;
			}

			return false;
		}

		public static bool scanTypeValid(SCANtype type)
		{
			if ((type & SCANtype.Everything_SCAN) != SCANtype.Nothing)
			{
				return true;
			}

			return false;
		}

		#endregion

		#region Internal Utilities

		public static double[] cosLookUp = new double[180];
		public static DictionaryValueList localizedBodyNames = new DictionaryValueList();

		internal static bool isCovered(double lon, double lat, SCANdata data, SCANtype type)
		{
			int ilon = icLON(lon);
			int ilat = icLAT(lat);
			if (badLonLat(ilon, ilat))
			{
				return false;
			}

			return (data.Coverage[ilon, ilat] & (Int16)type) != 0;
		}

		internal static bool isCovered(int lon, int lat, SCANdata data, SCANtype type)
		{
			if (badLonLat(lon, lat))
			{
				return false;
			}

			return (data.Coverage[lon, lat] & (Int16)type) != 0;
		}

		internal static bool isCoveredByAll(int lon, int lat, SCANdata data, SCANtype type)
		{
			if (badLonLat(lon, lat))
			{
				return false;
			}

			return (data.Coverage[lon, lat] & (Int16)type) == (Int16)type;
		}

		internal static double getCoveragePercentage(SCANdata data, SCANtype type)
		{
			if (data == null)
			{
				return 0;
			}

			double cov = 0d;

			if (type == SCANtype.Nothing)
			{
				type = SCANtype.AltimetryLoRes | SCANtype.AltimetryHiRes | SCANtype.Biome | SCANtype.Anomaly | SCANtype.VisualLoRes | SCANtype.VisualHiRes | SCANtype.ResourceLoRes | SCANtype.ResourceHiRes;
			}

			cov = data.getCoverage(type);

			if (cov <= 0)
			{
				cov = 100;
			}
			else
			{
				cov = Math.Min(99.9d, 100 - cov * 100d / (41251.914 * countBits((int)type)));
			}

			if (cov < 0)
			{
				cov = 0;
			}

			return cov;
		}

		internal static Func icLON = (lon) => ((int)(lon + 360 + 180)) % 360;
		internal static Func icLAT = (lat) => ((int)(lat + 180 + 90)) % 180;
		internal static Func badLonLat = (lon, lat) => (lon < 0 || lat < 0 || lon >= 360 || lat >= 180);
		internal static Func badDLonLat = (lon, lat) => (lon < 0 || lat < 0 || lon >= 360 || lat >= 180);
		public static Func ApproxEq = (a, b) => Math.Abs(a - b) < 0.01;

		internal static int fixLatShiftInt(double lat)
		{
			return (int)Math.Floor((lat + 180 + 90) % 180) - 90;
		}

		internal static int fixLatInt(double lat)
		{
			return (int)Math.Floor((lat + 180 + 90) % 180);
		}

		internal static double fixLatShift(double lat)
		{
			return (lat + 180 + 90) % 180 - 90;
		}

		internal static double fixLat(double lat)
		{
			return (lat + 180 + 90) % 180;
		}

		internal static int fixLonShiftInt(double lon)
		{
			return (int)Math.Floor((lon + 360 + 180) % 360) - 180;
		}

		internal static int fixLonInt(double lon)
		{
			return (int)Math.Floor((lon + 360 + 180) % 360);
		}

		internal static double fixLonShift(double lon)
		{
			return (lon + 360 + 180) % 360 - 180;
		}

		internal static double fixLon(double lon)
		{
			return (lon + 360 + 180) % 360;
		}

		internal static bool InDarkness(Vector3d vesselPos, Vector3d pos, Vector3d sun)
		{
			if (!SCAN_Settings_Config.Instance.DaylightCheck)
			{
				return false;
			}

			Vector3d solarDirection = pos - sun;

			Vector3d surfaceDirection = pos - vesselPos;

			double angle = Vector3d.Angle(surfaceDirection, solarDirection);

			return angle > 90;
		}

		internal static CelestialBody LocalSun(CelestialBody body)
		{
			while (body.referenceBody != body)
			{
				body = body.referenceBody;
			}

			return body;
		}

		internal static Vector2d fixRetardCoordinates(Vector2d coords)
		{
			if (coords.y < -90)
			{
				while (coords.y < -90)
				{
					coords.y += 90;
				}

				coords.y = -90 + Math.Abs(coords.y);
				coords.x = fixLonShift(coords.x + 180);

				return coords;
			}

			if (coords.y > 90)
			{
				while (coords.y > 90)
				{
					coords.y -= 90;
				}

				coords.y = 90 - Math.Abs(coords.y);
				coords.x = fixLonShift(coords.x - 180);

				return coords;
			}

			coords.x = fixLonShift(coords.x);

			return coords;
		}

		internal static List RecursiveCelestialBodies(List bodies)
		{
			List bodyList = new List();

			for (int i = 0; i < bodies.Count; i++)
			{
				CelestialBody body = bodies[i];
				if (SCANcontroller.controller.getData(body.bodyName) != null)
				{
					bodyList.Add(body.displayName.LocalizeBodyName());
				}

				for (int j = 0; j < body.orbitingBodies.Count; j++)
				{
					CelestialBody moon = body.orbitingBodies[j];

					if (SCANcontroller.controller.getData(moon.bodyName) != null)
					{
						bodyList.Add(moon.displayName.LocalizeBodyName());
					}

					for (int k = 0; k < moon.orbitingBodies.Count; k++)
					{
						CelestialBody subMoon = moon.orbitingBodies[k];

						if (SCANcontroller.controller.getData(subMoon.bodyName) != null)
						{
							bodyList.Add(subMoon.displayName.LocalizeBodyName());
						}

						for (int l = 0; l < subMoon.orbitingBodies.Count; l++)
						{
							CelestialBody subSubMoon = subMoon.orbitingBodies[l];

							if (SCANcontroller.controller.getData(subSubMoon.bodyName) != null)
							{
								bodyList.Add(subSubMoon.displayName.LocalizeBodyName());
							}

							for (int m = 0; m < subSubMoon.orbitingBodies.Count; m++)
							{
								CelestialBody subSubSubMoon = subSubMoon.orbitingBodies[m];

								if (SCANcontroller.controller.getData(subSubSubMoon.bodyName) != null)
								{
									bodyList.Add(subSubSubMoon.displayName.LocalizeBodyName());
								}

								for (int n = 0; n < subSubSubMoon.orbitingBodies.Count; n++)
								{
									CelestialBody subSubSubSubMoon = subSubSubMoon.orbitingBodies[n];

									if (SCANcontroller.controller.getData(subSubSubSubMoon.bodyName) != null)
									{
										bodyList.Add(subSubSubSubMoon.displayName.LocalizeBodyName());
									}
								}
							}
						}
					}
				}
			}

			return bodyList;
		}

		internal static double getElevation(CelestialBody body, double lon, double lat)
		{
			if (body.pqsController == null)
			{
				return 0;
			}

			double rlon = Mathf.Deg2Rad * lon;
			double rlat = Mathf.Deg2Rad * lat;
			Vector3d rad = new Vector3d(Math.Cos(rlat) * Math.Cos(rlon), Math.Sin(rlat), Math.Cos(rlat) * Math.Sin(rlon));
			return Math.Round(body.pqsController.GetSurfaceHeight(rad) - body.pqsController.radius, 1);
		}

		internal static double getElevation(CelestialBody body, int lon, int lat)
		{
			if (body.pqsController == null)
			{
				return 0;
			}

			double rlon = Mathf.Deg2Rad * lon;
			double rlat = Mathf.Deg2Rad * lat;
			Vector3d rad = new Vector3d(Math.Cos(rlat) * Math.Cos(rlon), Math.Sin(rlat), Math.Cos(rlat) * Math.Sin(rlon));
			return Math.Round(body.pqsController.GetSurfaceHeight(rad) - body.pqsController.radius, 1);
		}

		internal static double getElevation(this CelestialBody body, Vector3d worldPosition)
		{
			if (body.pqsController == null)
			{
				return 0;
			}

			Vector3d pqsRadialVector = QuaternionD.AngleAxis(body.GetLongitude(worldPosition), Vector3d.down) * QuaternionD.AngleAxis(body.GetLatitude(worldPosition), Vector3d.forward) * Vector3d.right;
			double ret = body.pqsController.GetSurfaceHeight(pqsRadialVector) - body.pqsController.radius;
			if (ret < 0)
			{
				ret = 0;
			}

			return ret;
		}

		internal static float ResourceOverlay(double lat, double lon, string name, CelestialBody body, bool biomeLock)
		{
			float amount = 0f;
			var aRequest = new AbundanceRequest
			{
				Latitude = lat,
				Longitude = lon,
				BodyId = body.flightGlobalsIndex,
				ResourceName = name,
				ResourceType = HarvestTypes.Planetary,
				Altitude = 0,
				CheckForLock = biomeLock,
				BiomeName = getBiomeName(body, lon, lat),
				ExcludeVariance = false,
			};

			amount = ResourceMap.Instance.GetAbundance(aRequest);
			return amount;
		}

		private static int getBiomeIndex(CelestialBody body, double lon, double lat)
		{
			if (body.BiomeMap == null)
			{
				return -1;
			}

			double u = fixLon(lon);
			double v = fixLat(lat);

			if (badDLonLat(u, v))
			{
				return -1;
			}

			CBAttributeMapSO.MapAttribute att = body.BiomeMap.GetAtt(Mathf.Deg2Rad * lat, Mathf.Deg2Rad * lon);
			for (int i = 0; i < body.BiomeMap.Attributes.Length; ++i)
			{
				if (body.BiomeMap.Attributes[i] == att)
				{
					return i;
				}
			}
			return -1;
		}

		internal static double getBiomeIndexFraction(CelestialBody body, double lon, double lat)
		{
			if (body.BiomeMap == null)
			{
				return 0f;
			}

			return getBiomeIndex(body, lon, lat) * 1.0f / body.BiomeMap.Attributes.Length;
		}

		internal static CBAttributeMapSO.MapAttribute getBiome(CelestialBody body, double lon, double lat)
		{
			if (body.BiomeMap == null)
			{
				return null;
			}

			int i = getBiomeIndex(body, lon, lat);
			if (i == -1)
			{
				return null;
			}

			return body.BiomeMap.Attributes[i];
		}

		internal static CBAttributeMapSO.MapAttribute getBiomeCached(CelestialBody body, double lon, double lat)
		{
			if (body.BiomeMap == null)
			{
				return null;
			}

			return body.BiomeMap.GetAtt(lat * Mathf.Deg2Rad, lon * Mathf.Deg2Rad);
		}

		internal static string getBiomeName(CelestialBody body, double lon, double lat)
		{
			CBAttributeMapSO.MapAttribute a = getBiome(body, lon, lat);
			if (a == null)
			{
				return "unknown";
			}

			return a.name;
		}

		internal static string getBiomeDisplayName(CelestialBody body, double lon, double lat)
		{
			CBAttributeMapSO.MapAttribute a = getBiome(body, lon, lat);
			if (a == null)
			{
				return "unknown";
			}

			return string.IsNullOrEmpty(a.displayname) ? a.name : Localizer.Format(a.displayname);
		}

		internal static void getBiomeDisplayName(StringBuilder sb, CelestialBody body, double lon, double lat)
		{
			CBAttributeMapSO.MapAttribute a = getBiome(body, lon, lat);

			if (a == null)
			{
				return;
			}

			sb.Append(string.IsNullOrEmpty(a.displayname) ? a.name : Localizer.Format(a.displayname));
		}

		internal static int countBits(int i)
		{
			int count;

			for (count = 0; i != 0; ++count)
			{
				i &= (i - 1);
			}

			return count;
		}

		public static void fillLocalizedNames()
		{
			localizedBodyNames.Clear();

			for (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)
			{
				CelestialBody b = FlightGlobals.Bodies[i];

				string name = b.displayName.LocalizeBodyName();

				if (!localizedBodyNames.Contains(b))
				{
					localizedBodyNames.Add(b, name);
				}
			}
		}

		public static string displayNameFromBody(CelestialBody body)
		{
			if (localizedBodyNames.Contains(body))
			{
				return localizedBodyNames[body];
			}

			return body.displayName;
		}

		internal static string bodyFromDisplayName(string display)
		{
			for (int i = localizedBodyNames.Count - 1; i >= 0; i--)
			{
				if (display == localizedBodyNames.At(i))
				{
					return localizedBodyNames.KeyAt(i).bodyName;
				}
			}

			//for (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)
			//{
			//	if (FlightGlobals.Bodies[i].displayName.LocalizeBodyName() == display)
			//		return FlightGlobals.Bodies[i].bodyName;
			//}

			return display;
		}

		internal static string displayNameFromBodyName(string body)
		{
			for (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)
			{
				CelestialBody b = FlightGlobals.Bodies[i];

				if (b.bodyName == body)
				{
					return b.displayName.LocalizeBodyName();
				}
			}

			return body;
		}

		internal static string resourceFromDisplayName(string display)
		{
			List resources = SCANcontroller.resources();

			for (int i = resources.Count - 1; i >= 0; i--)
			{
				SCANresourceGlobal r = resources[i];

				if (r.DisplayName == display)
				{
					return r.Name;
				}
			}

			return display;
		}

		internal static string displayNameFromResource(string resource)
		{
			List resources = SCANcontroller.resources();

			for (int i = resources.Count - 1; i >= 0; i--)
			{
				SCANresourceGlobal r = resources[i];

				if (r.Name == resource)
				{
					return r.DisplayName;
				}
			}

			return resource;
		}

		internal static SCANPalette PaletteLoader(string name, int size)
		{
			if (name == "Default" || string.IsNullOrEmpty(name))
			{
				return SCAN_Palette_Config.DefaultPalette.GetPalette(0);
			}
			else
			{
				SCANPaletteGroup group = SCANconfigLoader.SCANPalettes.GetPaletteGroup(name);

				if (group == null)
				{
					return SCAN_Palette_Config.DefaultPalette.GetPalette(0);
				}

				SCANPalette pal = group.GetPalette(size);

				if (pal == null)
				{
					return SCAN_Palette_Config.DefaultPalette.GetPalette(0);
				}

				return pal;
			}
		}

		internal static CelestialBody getTargetBody(MapObject target)
		{
			switch (target.type)
			{
				case MapObject.ObjectType.CelestialBody:
					return target.celestialBody;
				case MapObject.ObjectType.ManeuverNode:
					return target.maneuverNode.patch.referenceBody;
				case MapObject.ObjectType.Vessel:
					return target.vessel.mainBody;
				default:
					return null;
			}
		}

		internal static void UpdateAllVesselData(Vessel v)
		{
			if (ResearchAndDevelopment.Instance == null)
			{
				return;
			}

			List data = new List();

			var science = v.FindPartModulesImplementing();

			for (int i = science.Count - 1; i >= 0; i--)
			{
				IScienceDataContainer container = science[i];

				data.AddRange(container.GetData());
			}

			if (data.Count <= 0)
			{
				return;
			}

			List subjects = ResearchAndDevelopment.GetSubjects();

			List SCANsubjects = new List();

			for (int i = subjects.Count - 1; i >= 0; i--)
			{
				ScienceSubject sub = subjects[i];

				if (sub.id.StartsWith("SCAN"))
				{
					SCANsubjects.Add(sub);
				}
			}

			for (int i = SCANsubjects.Count - 1; i >= 0; i--)
			{
				ScienceSubject sub = SCANsubjects[i];

				float submittedData = (sub.science / sub.subjectValue) * sub.dataScale;

				for (int j = data.Count - 1; j >= 0; j--)
				{
					ScienceData d = data[j];

					if (d.subjectID != sub.id)
					{
						continue;
					}

					//SCANlog("Original Data: [{0}] - Amount: {1:N2} : New Subject: {2} - Adjusted Amount: {3:N0}"
					//, d.title, d.dataAmount, sub.title, Math.Max(0.0000001f, d.dataAmount - submittedData));

					d.dataAmount = Math.Max(0.0000001f, d.dataAmount - submittedData);
				}
			}
		}

		internal static void UpdateVesselData(Vessel v, ScienceSubject sub)
		{
			List data = new List();

			var science = v.FindPartModulesImplementing();

			for (int i = science.Count - 1; i >= 0; i--)
			{
				IScienceDataContainer container = science[i];

				data.AddRange(container.GetData());
			}

			if (data.Count <= 0)
			{
				return;
			}

			float submittedData = (sub.science / sub.subjectValue) * sub.dataScale;

			for (int i = data.Count - 1; i >= 0; i--)
			{
				ScienceData d = data[i];

				if (d.subjectID != sub.id)
				{
					continue;
				}

				SCANlog("Original Data: [{0}] - Amount: {1:N2} : New Subject: {2} - Adjusted Amount: {3:N0}"
					, d.title, d.dataAmount, sub.title, Math.Max(0.0000001f, d.dataAmount - submittedData));

				d.dataAmount = Math.Max(0.0000001f, d.dataAmount - submittedData);
			}
		}

		internal static double waypointDistance(double lat1, double lon1, double alt1, double lat2, double lon2, double alt2, CelestialBody body)
		{
			Vector3d pos1 = body.GetWorldSurfacePosition(lat1, lon1, alt1);
			Vector3d pos2 = body.GetWorldSurfacePosition(lat2, lon2, alt2);
			return Vector3d.Distance(pos1, pos2);
		}

		internal static double mapLabelDistance(double lat1, double lon1, double lat2, double lon2, CelestialBody body)
		{
			Vector3d pos1 = body.GetWorldSurfacePosition(lat1, lon1, 1000);
			Vector3d pos2 = body.GetWorldSurfacePosition(lat2, lon2, 1000);
			return Vector3d.Distance(pos1, pos2);
		}

		internal static double slope(double centerElevation, CelestialBody body, double lon, double lat, double offset)
		{
			/* Slope is calculated using a nine point grid centered 5m around the vessel location
						 * The rise between the vessel location's elevation and each point on the grid is calculated, converted to slope in degrees, and averaged;
						 * Note: Averageing is not the most accurate method
						 */

			double latOffset = offset * Math.Cos(Mathf.Deg2Rad * lat);
			double[] e = new double[9];
			double[] s = new double[8];
			e[0] = centerElevation;
			e[1] = SCANUtil.getElevation(body, lon + latOffset, lat);
			e[2] = SCANUtil.getElevation(body, lon - latOffset, lat);
			e[3] = SCANUtil.getElevation(body, lon, lat + offset);
			e[4] = SCANUtil.getElevation(body, lon, lat - offset);
			e[5] = SCANUtil.getElevation(body, lon + latOffset, lat + offset);
			e[6] = SCANUtil.getElevation(body, lon + latOffset, lat - offset);
			e[7] = SCANUtil.getElevation(body, lon - latOffset, lat + offset);
			e[8] = SCANUtil.getElevation(body, lon - latOffset, lat - offset);

			if (body.ocean)
			{
				for (int i = 0; i < 9; i++)
				{
					if (e[i] < 0)
					{
						e[i] = 0;
					}
				}
			}

			return slope(e, 5);
		}

		internal static double slope(double[] elevations, double distance)
		{
			double[] s = new double[8];

			/* Calculate rise for each point on the grid
			 * The distance is 5m for adjacent points and 7.071m for the points on the corners
			 * Rise is converted to slope; i.e. a 5m elevation change over a 5m distance is a rise of 1
			 * Converted to slope using the inverse tangent this gives a slope of 45°
			 * */

			double diagonalDistance = Math.Sqrt(Math.Pow(distance, 2) * 2);

			for (int i = 1; i <= 4; i++)
			{
				s[i - 1] = Math.Atan((Math.Abs(elevations[i] - elevations[0])) / distance) * Mathf.Rad2Deg;
			}
			for (int i = 5; i <= 8; i++)
			{
				s[i - 1] = Math.Atan((Math.Abs(elevations[i] - elevations[0])) / diagonalDistance) * Mathf.Rad2Deg;
			}

			return s.Sum() / 8;
		}

		internal static double slopeShort(double[] elevations, double distance)
		{
			double[] s = new double[4];

			for (int i = 1; i <= 4; i++)
			{
				s[i - 1] = Math.Atan((Math.Abs(elevations[i] - elevations[0])) / distance) * Mathf.Rad2Deg;
			}

			return s.Sum() / 4;
		}

		internal static bool MouseIsOverWindow()
		{
			if (SCANcontroller.controller == null)
			{
				return false;
			}

			Vector2 pos = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y);

			return false;
		}

		//This one is straight out of MechJeb :) - https://github.com/MuMech/MechJeb2/blob/master/MechJeb2/GuiUtils.cs#L463-L507
		internal static SCANCoordinates GetMouseCoordinates(CelestialBody body)
		{
			Ray mouseRay = PlanetariumCamera.Camera.ScreenPointToRay(Input.mousePosition);
			mouseRay.origin = ScaledSpace.ScaledToLocalSpace(mouseRay.origin);
			Vector3d relOrigin = mouseRay.origin - body.position;
			Vector3d relSurfacePosition;
			double curRadius = body.pqsController == null ? body.Radius : body.pqsController.radiusMax;
			double lastRadius = 0;
			double error = 0;
			int loops = 0;
			float st = Time.time;
			while (loops < 50)
			{
				if (PQS.LineSphereIntersection(relOrigin, mouseRay.direction, curRadius, out relSurfacePosition))
				{
					Vector3d surfacePoint = body.position + relSurfacePosition;
					double alt = body.pqsController == null ? 0 : body.pqsController.GetSurfaceHeight(QuaternionD.AngleAxis(body.GetLongitude(surfacePoint), Vector3d.down) * QuaternionD.AngleAxis(body.GetLatitude(surfacePoint), Vector3d.forward) * Vector3d.right);
					error = Math.Abs(curRadius - alt);
					if (body.pqsController == null || error < (body.pqsController.radiusMax - body.pqsController.radiusMin) / 100)
					{
						return new SCANCoordinates(fixLonShift((body.GetLongitude(surfacePoint))), fixLatShift(body.GetLatitude(surfacePoint)));
					}
					else
					{

						lastRadius = curRadius;
						curRadius = alt;
						loops++;
					}
				}
				else
				{
					if (loops == 0)
					{
						break;
					}
					else
					{ // Went too low, needs to try higher
						curRadius = (lastRadius * 9 + curRadius) / 10;
						loops++;
					}
				}
			}

			return null;
		}

		public class SCANCoordinates
		{
			public double latitude;
			public double longitude;

			public SCANCoordinates(double lon, double lat)
			{
				longitude = lon;
				latitude = lat;
			}

			public string ToDegString()
			{
				return latitude.ToString("F1") + "°, " + longitude.ToString("F1") + "°";
			}

			public void ToDMS(StringBuilder sb)
			{
				SCANuiUtil.toDMS(sb, latitude, longitude);
			}
		}

		internal static void SCANlog(string log, params object[] stringObjects)
		{
			KSPBuildTools.Log.Message(string.Format(log, stringObjects));
		}

		[System.Diagnostics.Conditional("DEBUG")]
		internal static void SCANdebugLog(string log, params object[] stringObjects)
		{
			KSPBuildTools.Log.Debug(string.Format(log, stringObjects));
		}

		#endregion

	}

	#region JUtil

	public static class JUtil
	{

		private static readonly int ClosestApproachRefinementInterval = 16;

		public static bool OrbitMakesSense(Vessel thatVessel)
		{
			if (thatVessel == null)
			{
				return false;
			}

			if (thatVessel.situation == Vessel.Situations.FLYING ||
								thatVessel.situation == Vessel.Situations.SUB_ORBITAL ||
								thatVessel.situation == Vessel.Situations.ORBITING ||
								thatVessel.situation == Vessel.Situations.ESCAPING ||
								thatVessel.situation == Vessel.Situations.DOCKED) // Not sure about this last one.
			{
				return true;
			}

			return false;
		}
		// Closest Approach algorithms based on Protractor mod
		public static double GetClosestApproach(Orbit vesselOrbit, CelestialBody targetCelestial, out double timeAtClosestApproach)
		{
			Orbit closestorbit = GetClosestOrbit(vesselOrbit, targetCelestial);
			if (closestorbit.referenceBody == targetCelestial)
			{
				timeAtClosestApproach = closestorbit.StartUT + ((closestorbit.eccentricity < 1.0) ?
						closestorbit.timeToPe :
						-closestorbit.meanAnomaly / (2 * Math.PI / closestorbit.period));
				return closestorbit.PeA;
			}
			if (closestorbit.referenceBody == targetCelestial.referenceBody)
			{
				return MinTargetDistance(closestorbit, targetCelestial.orbit, closestorbit.StartUT, closestorbit.EndUT, out timeAtClosestApproach) - targetCelestial.Radius;
			}
			return MinTargetDistance(closestorbit, targetCelestial.orbit, Planetarium.GetUniversalTime(), Planetarium.GetUniversalTime() + closestorbit.period, out timeAtClosestApproach) - targetCelestial.Radius;
		}
		public static double GetClosestApproach(Orbit vesselOrbit, CelestialBody targetCelestial, Vector3d srfTarget, out double timeAtClosestApproach)
		{
			Orbit closestorbit = GetClosestOrbit(vesselOrbit, targetCelestial);
			if (closestorbit.referenceBody == targetCelestial)
			{
				double t0 = Planetarium.GetUniversalTime();
				Func fn = delegate (double t)
				{
					double angle = targetCelestial.rotates ? (t - t0) * 360.0 / targetCelestial.rotationPeriod : 0;
					return targetCelestial.position + QuaternionD.AngleAxis(angle, Vector3d.down) * srfTarget;
				};
				double d = MinTargetDistance(closestorbit, fn, closestorbit.StartUT, closestorbit.EndUT, out timeAtClosestApproach);
				// When just passed over the target, some look ahead may be needed
				if ((timeAtClosestApproach <= closestorbit.StartUT || timeAtClosestApproach >= closestorbit.EndUT) &&
						closestorbit.eccentricity < 1 && closestorbit.patchEndTransition == Orbit.PatchTransitionType.FINAL)
				{
					d = MinTargetDistance(closestorbit, fn, closestorbit.EndUT, closestorbit.EndUT + closestorbit.period / 2, out timeAtClosestApproach);
				}
				return d;
			}
			return GetClosestApproach(vesselOrbit, targetCelestial, out timeAtClosestApproach);
		}

		public static double GetClosestApproach(Orbit vesselOrbit, Orbit targetOrbit, out double timeAtClosestApproach)
		{
			Orbit closestorbit = GetClosestOrbit(vesselOrbit, targetOrbit);

			double startTime = Planetarium.GetUniversalTime();
			double endTime;
			if (closestorbit.patchEndTransition != Orbit.PatchTransitionType.FINAL)
			{
				endTime = closestorbit.EndUT;
			}
			else
			{
				endTime = startTime + Math.Max(closestorbit.period, targetOrbit.period);
			}

			return MinTargetDistance(closestorbit, targetOrbit, startTime, endTime, out timeAtClosestApproach);
		}

		// Closest Approach support methods
		private static Orbit GetClosestOrbit(Orbit vesselOrbit, CelestialBody targetCelestial)
		{
			Orbit checkorbit = vesselOrbit;
			int orbitcount = 0;

			while (checkorbit.nextPatch != null && checkorbit.patchEndTransition != Orbit.PatchTransitionType.FINAL && orbitcount < 3)
			{
				checkorbit = checkorbit.nextPatch;
				orbitcount += 1;
				if (checkorbit.referenceBody == targetCelestial)
				{
					return checkorbit;
				}

			}
			checkorbit = vesselOrbit;
			orbitcount = 0;

			while (checkorbit.nextPatch != null && checkorbit.patchEndTransition != Orbit.PatchTransitionType.FINAL && orbitcount < 3)
			{
				checkorbit = checkorbit.nextPatch;
				orbitcount += 1;
				if (checkorbit.referenceBody == targetCelestial.orbit.referenceBody)
				{
					return checkorbit;
				}
			}

			return vesselOrbit;
		}

		private static Orbit GetClosestOrbit(Orbit vesselOrbit, Orbit targetOrbit)
		{
			Orbit checkorbit = vesselOrbit;
			int orbitcount = 0;

			while (checkorbit.nextPatch != null && checkorbit.patchEndTransition != Orbit.PatchTransitionType.FINAL && orbitcount < 3)
			{
				checkorbit = checkorbit.nextPatch;
				orbitcount += 1;
				if (checkorbit.referenceBody == targetOrbit.referenceBody)
				{
					return checkorbit;
				}

			}

			return vesselOrbit;
		}

		private static double MinTargetDistance(Orbit vesselOrbit, Orbit targetOrbit, double startTime, double endTime, out double timeAtClosestApproach)
		{
			return MinTargetDistance(vesselOrbit, t => targetOrbit.getPositionAtUT(t), startTime, endTime, out timeAtClosestApproach);
		}

		private static double MinTargetDistance(Orbit vesselOrbit, Func targetOrbit, double startTime, double endTime, out double timeAtClosestApproach)
		{
			var dist_at_int = new double[ClosestApproachRefinementInterval + 1];
			double step = startTime;
			double dt = (endTime - startTime) / (double)ClosestApproachRefinementInterval;
			for (int i = 0; i <= ClosestApproachRefinementInterval; i++)
			{
				dist_at_int[i] = (targetOrbit(step) - vesselOrbit.getPositionAtUT(step)).magnitude;
				step += dt;
			}
			double mindist = dist_at_int.Min();
			double maxdist = dist_at_int.Max();
			int minindex = Array.IndexOf(dist_at_int, mindist);
			if ((maxdist - mindist) / maxdist >= 0.00001)
			{
				// Don't allow negative times.  Clamp the startTime to the current startTime.
				mindist = MinTargetDistance(vesselOrbit, targetOrbit, startTime + (Math.Max(minindex - 1, 0) * dt), startTime + ((minindex + 1) * dt), out timeAtClosestApproach);
			}
			else
			{
				timeAtClosestApproach = startTime + minindex * dt;
			}

			return mindist;
		}
		// Some snippets from MechJeb...
		public static double ClampDegrees360(double angle)
		{
			angle = angle % 360.0;
			if (angle < 0)
			{
				return angle + 360.0;
			}

			return angle;
		}
		//keeps angles in the range -180 to 180
		public static double ClampDegrees180(double angle)
		{
			angle = ClampDegrees360(angle);
			if (angle > 180)
			{
				angle -= 360;
			}

			return angle;
		}
		//acosh(x) = log(x + sqrt(x^2 - 1))
		public static double Acosh(double x)
		{
			return Math.Log(x + Math.Sqrt(x * x - 1));
		}
		public static double ClampRadiansTwoPi(double angle)
		{
			angle = angle % (2 * Math.PI);
			if (angle < 0)
			{
				return angle + 2 * Math.PI;
			}

			return angle;
		}

		public static Material LineMat;

		public static Material DrawLineMaterial()
		{
			if (LineMat == null)
			{
				//var lineMaterial = new Material("Shader \"Lines/Colored Blended\" {" +
				//		"SubShader { Pass {" +
				//		"   BindChannels {" + 
				//		"     Bind \"color\", color }" +
				//		"   Blend SrcAlpha OneMinusSrcAlpha" +
				//		"   ZWrite Off Cull Off Fog { Mode Off }" +
				//		"} } }");
				var lineMaterial = new Material(Shader.Find("KSP/Particles/Alpha Blended"));
				lineMaterial.hideFlags = HideFlags.HideAndDontSave;
				lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave;

				LineMat = lineMaterial;
			}

			return LineMat;
		}

		public static bool IsActiveVessel(Vessel thatVessel)
		{
			return (HighLogic.LoadedSceneIsFlight && thatVessel != null && thatVessel.isActiveVessel);
		}
		public static bool IsInIVA()
		{
			return CameraManager.Instance.currentCameraMode == CameraManager.CameraMode.IVA || CameraManager.Instance.currentCameraMode == CameraManager.CameraMode.Internal;
		}
	}
}
#endregion



================================================
FILE: SCANsat.Unity/CanvasFader.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * CanvasFader - Monobehaviour for making smooth fade in and fade out for UI windows
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;

namespace SCANsat.Unity
{
	[RequireComponent(typeof(CanvasGroup), typeof(RectTransform))]
	public class CanvasFader : MonoBehaviour
	{
		[SerializeField]
		private float SlowRate = 0.9f;
		[SerializeField]
		private float FastRate = 0.3f;

		private CanvasGroup canvas;
		private IEnumerator fader;
		private bool allowInterrupt = true;

		protected virtual void Awake()
		{
			canvas = GetComponent();
		}

		protected void Fade(float to, bool fast, Action call = null, bool interrupt = true, bool overrule = false)
		{
			if (canvas == null)
			{
				return;
			}

			Fade(canvas.alpha, to, fast ? FastRate : SlowRate, call, interrupt, overrule);
		}

		protected void Alpha(float to)
		{
			if (canvas == null)
			{
				return;
			}

			to = Mathf.Clamp01(to);
			canvas.alpha = to;
		}

		private void Fade(float from, float to, float duration, Action call, bool interrupt, bool overrule)
		{
			if (!allowInterrupt && !overrule)
			{
				return;
			}

			if (fader != null)
			{
				StopCoroutine(fader);
			}

			fader = FadeRoutine(from, to, duration, call, interrupt);
			StartCoroutine(fader);
		}

		private IEnumerator FadeRoutine(float from, float to, float duration, Action call, bool interrupt)
		{
			allowInterrupt = interrupt;

			yield return new WaitForEndOfFrame();

			float f = 0;

			while (f <= 1)
			{
				f += Time.deltaTime / duration;
				Alpha(Mathf.Lerp(from, to, f));
				yield return null;
			}

			if (call != null)
			{
				call.Invoke();
			}

			allowInterrupt = true;

			fader = null;
		}

	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/Enums/ColorValues.cs
================================================
using UnityEngine;

namespace SCANsat.Unity.HSVPicker.Enum
{
	public enum ColorValues
	{
		R,
		G,
		B,
		A,

		Hue,
		Saturation,
		Value,

		Hex
	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/Events/ColorChangedEvent.cs
================================================
using UnityEngine;
using System;
using UnityEngine.Events;

namespace SCANsat.Unity.HSVPicker.Events
{
	[Serializable]
	public class ColorChangedEvent : UnityEvent
	{

	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/Events/HSVChangedEvent.cs
================================================
using UnityEngine;
using UnityEngine.Events;

namespace SCANsat.Unity.HSVPicker.Events
{
	public class HSVChangedEvent : UnityEvent
	{

	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/LICENSE.txt
================================================
Code in this directory is derived from https://github.com/judah4/HSV-Color-Picker-Unity/

The MIT License (MIT)

Copyright (c) 2016 Judah Perez

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

================================================
FILE: SCANsat.Unity/HSVPicker/UI/ColorImage.cs
================================================
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

namespace SCANsat.Unity.HSVPicker.UI
{
	[RequireComponent(typeof(Image))]
	public class ColorImage : MonoBehaviour
	{
		public ColorPicker picker;
		private bool _isActive;

		private Image image;

		public bool IsActive
		{
			get { return _isActive; }
			set { _isActive = value; }
		}

		public Color CurrentColor
		{
			get { return image.color; }
		}

		private void Awake()
		{
			image = GetComponent();
			picker.onValueChanged.AddListener(ColorChanged);
		}

		private void OnDestroy()
		{
			picker.onValueChanged.RemoveListener(ColorChanged);
		}

		private void ColorChanged(Color newColor)
		{
			if (_isActive)
			{
				image.color = newColor;
			}
		}

		public void SetColor(Color newColor)
		{
			image.color = newColor;
		}
	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/UI/ColorInput.cs
================================================
using UnityEngine;
using UnityEngine.UI;
using System;
using SCANsat.Unity.HSVPicker.Enum;

namespace SCANsat.Unity.HSVPicker.UI
{
	using ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues;

	/// 
	/// Displays one of the color values of aColorPicker
	/// 
	public class ColorInput : MonoBehaviour
	{
		public ColorPicker hsvpicker;

		/// 
		/// Which value this slider can edit.
		/// 
		public ColorValues type;

		private InputHandler inputField;

		private void Awake()
		{
			inputField = GetComponent();

			inputField.OnValueChange.AddListener(InputChanged);
		}

		private void OnDestroy()
		{
			inputField.OnValueChange.RemoveListener(InputChanged);
		}

		private void InputChanged(string input)
		{
			if (string.IsNullOrEmpty(input))
			{
				return;
			}

			float original = 0;

			switch (type)
			{
				case ColorValues.R:
					original = hsvpicker.R;
					break;
				case ColorValues.G:
					original = hsvpicker.G;
					break;
				case ColorValues.B:
					original = hsvpicker.B;
					break;
			}

			float f = original;

			if (!float.TryParse(input, out f))
			{
				return;
			}

			if (f < 0)
			{
				return;
			}
			else if (input.StartsWith("1."))
			{
				f = 1;
			}
			else if (f >= 1 && f <= 255)
			{
				f = Mathf.RoundToInt(f);

				f /= 255;
			}
			else if (f > 255)
			{
				return;
			}

			hsvpicker.AssignColor(type, f);
		}
	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/UI/ColorLabel.cs
================================================
using UnityEngine;
using UnityEngine.UI;
using System;
using SCANsat.Unity.HSVPicker.Enum;

namespace SCANsat.Unity.HSVPicker.UI
{
	using ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues;

	[RequireComponent(typeof(TextHandler))]
	public class ColorLabel : MonoBehaviour
	{
		public ColorPicker picker;
		public ColorValues type;

		private TextHandler label;

		private void Awake()
		{
			label = GetComponent();
		}

		private void OnEnable()
		{
			if (Application.isPlaying && picker != null)
			{
				picker.onValueChanged.AddListener(ColorChanged);
				picker.onHSVChanged.AddListener(HSVChanged);
			}
		}

		private void OnDestroy()
		{
			if (picker != null)
			{
				picker.onValueChanged.RemoveListener(ColorChanged);
				picker.onHSVChanged.RemoveListener(HSVChanged);
			}
		}

		private void ColorChanged(Color color)
		{
			UpdateValue();
		}

		private void HSVChanged(float hue, float sateration, float value)
		{
			UpdateValue();
		}

		private void UpdateValue()
		{
			if (picker == null)
			{
				label.OnTextUpdate.Invoke("-");
			}
			else
			{
				float valueOne = 0;
				float valueTwo = 0;
				float valueThree = 0;


				if (type == ColorValues.R)
				{
					valueOne = picker.GetValue(ColorValues.R) * 255;
					valueTwo = picker.GetValue(ColorValues.G) * 255;
					valueThree = picker.GetValue(ColorValues.B) * 255;

					label.OnTextUpdate.Invoke(string.Format("{0:N0},{1:N0},{2:N0}", Mathf.FloorToInt(valueOne), Mathf.FloorToInt(valueTwo), Mathf.FloorToInt(valueThree)));
				}
				else if (type == ColorValues.Hue)
				{
					valueOne = picker.GetValue(ColorValues.Hue) * 360;
					valueTwo = picker.GetValue(ColorValues.Saturation) * 255;
					valueThree = picker.GetValue(ColorValues.Value) * 255;

					label.OnTextUpdate.Invoke(string.Format("{0:N0},{1:N0},{2:N0}", Mathf.FloorToInt(valueOne), Mathf.FloorToInt(valueTwo), Mathf.FloorToInt(valueThree)));
				}
				else if (type == ColorValues.Hex)
				{
					valueOne = picker.GetValue(ColorValues.R) * 255;
					valueTwo = picker.GetValue(ColorValues.G) * 255;
					valueThree = picker.GetValue(ColorValues.B) * 255;

					label.OnTextUpdate.Invoke(string.Format("#{0:X2}{1:X2}{2:X2}", Mathf.FloorToInt(valueOne), Mathf.FloorToInt(valueTwo), Mathf.FloorToInt(valueThree)));
				}
			}
		}
	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/UI/ColorPicker.cs
================================================
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.Events;
using SCANsat.Unity.HSVPicker.Utility;
using SCANsat.Unity.HSVPicker.Enum;
using SCANsat.Unity.HSVPicker.Events;

namespace SCANsat.Unity.HSVPicker.UI
{
	using ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues;

	public class ColorPicker : MonoBehaviour
	{
		private float _hue = 0;
		private float _saturation = 0;
		private float _brightness = 0;

		private float _red = 0;
		private float _green = 0;
		private float _blue = 0;

		private float _alpha = 1;

		public ColorChangedEvent onValueChanged = new ColorChangedEvent();
		public HSVChangedEvent onHSVChanged = new HSVChangedEvent();

		public Color CurrentColor
		{
			get
			{
				return new Color(_red, _green, _blue, _alpha);
			}
			set
			{
				if (CurrentColor == value)
				{
					return;
				}

				_red = value.r;
				_green = value.g;
				_blue = value.b;
				_alpha = value.a;

				RGBChanged();

				SendChangedEvent();
			}
		}

		private void Start()
		{
			SendChangedEvent();
		}

		public float H
		{
			get
			{
				return _hue;
			}
			set
			{
				if (_hue == value)
				{
					return;
				}

				_hue = value;

				HSVChanged();

				SendChangedEvent();
			}
		}

		public float S
		{
			get
			{
				return _saturation;
			}
			set
			{
				if (_saturation == value)
				{
					return;
				}

				_saturation = value;

				HSVChanged();

				SendChangedEvent();
			}
		}

		public float V
		{
			get
			{
				return _brightness;
			}
			set
			{
				if (_brightness == value)
				{
					return;
				}

				_brightness = value;

				HSVChanged();

				SendChangedEvent();
			}
		}

		public float R
		{
			get
			{
				return _red;
			}
			set
			{
				if (_red == value)
				{
					return;
				}

				_red = value;

				RGBChanged();

				SendChangedEvent();
			}
		}

		public float G
		{
			get
			{
				return _green;
			}
			set
			{
				if (_green == value)
				{
					return;
				}

				_green = value;

				RGBChanged();

				SendChangedEvent();
			}
		}

		public float B
		{
			get
			{
				return _blue;
			}
			set
			{
				if (_blue == value)
				{
					return;
				}

				_blue = value;

				RGBChanged();

				SendChangedEvent();
			}
		}

		private float A
		{
			get
			{
				return _alpha;
			}
			set
			{
				if (_alpha == value)
				{
					return;
				}

				_alpha = value;

				SendChangedEvent();
			}
		}

		private void RGBChanged()
		{
			HsvColor color = HSVUtil.ConvertRgbToHsv(CurrentColor);

			_hue = color.normalizedH;
			_saturation = color.normalizedS;
			_brightness = color.normalizedV;
		}

		private void HSVChanged()
		{
			Color color = HSVUtil.ConvertHsvToRgb(_hue * 360, _saturation, _brightness, _alpha);

			_red = color.r;
			_green = color.g;
			_blue = color.b;
		}

		private void SendChangedEvent()
		{
			onValueChanged.Invoke(CurrentColor);
			onHSVChanged.Invoke(_hue, _saturation, _brightness);
		}

		public void AssignColor(ColorValues type, float value)
		{
			switch (type)
			{
				case ColorValues.R:
					R = value;
					break;
				case ColorValues.G:
					G = value;
					break;
				case ColorValues.B:
					B = value;
					break;
				case ColorValues.A:
					A = value;
					break;
				case ColorValues.Hue:
					H = value;
					break;
				case ColorValues.Saturation:
					S = value;
					break;
				case ColorValues.Value:
					V = value;
					break;
				default:
					break;
			}
		}

		public float GetValue(ColorValues type)
		{
			switch (type)
			{
				case ColorValues.R:
					return R;
				case ColorValues.G:
					return G;
				case ColorValues.B:
					return B;
				case ColorValues.A:
					return A;
				case ColorValues.Hue:
					return H;
				case ColorValues.Saturation:
					return S;
				case ColorValues.Value:
					return V;
				default:
					throw new System.NotImplementedException("");
			}
		}
	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/UI/ColorSlider.cs
================================================
using UnityEngine;
using UnityEngine.UI;
using System;
using SCANsat.Unity.HSVPicker.Enum;

namespace SCANsat.Unity.HSVPicker.UI
{
	using ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues;

	/// 
	/// Displays one of the color values of aColorPicker
	/// 
	[RequireComponent(typeof(Slider))]
	public class ColorSlider : MonoBehaviour
	{
		public ColorPicker hsvpicker;

		/// 
		/// Which value this slider can edit.
		/// 
		public ColorValues type;

		private Slider slider;

		private bool listen = true;

		private void Awake()
		{
			slider = GetComponent();

			hsvpicker.onValueChanged.AddListener(ColorChanged);
			hsvpicker.onHSVChanged.AddListener(HSVChanged);
			slider.onValueChanged.AddListener(SliderChanged);
		}

		private void OnDestroy()
		{
			hsvpicker.onValueChanged.RemoveListener(ColorChanged);
			hsvpicker.onHSVChanged.RemoveListener(HSVChanged);
			slider.onValueChanged.RemoveListener(SliderChanged);
		}

		private void ColorChanged(Color newColor)
		{
			listen = false;
			switch (type)
			{
				case ColorValues.R:
					slider.normalizedValue = newColor.r;
					break;
				case ColorValues.G:
					slider.normalizedValue = newColor.g;
					break;
				case ColorValues.B:
					slider.normalizedValue = newColor.b;
					break;
				case ColorValues.A:
					slider.normalizedValue = newColor.a;
					break;
				default:
					break;
			}
		}

		private void HSVChanged(float hue, float saturation, float value)
		{
			listen = false;
			switch (type)
			{
				case ColorValues.Hue:
					slider.normalizedValue = hue; //1 - hue;
					break;
				case ColorValues.Saturation:
					slider.normalizedValue = saturation;
					break;
				case ColorValues.Value:
					slider.normalizedValue = value;
					break;
				default:
					break;
			}
		}

		private void SliderChanged(float newValue)
		{
			if (listen)
			{
				newValue = slider.normalizedValue;
				//if (type == ColorValues.Hue)
				//    newValue = 1 - newValue;

				hsvpicker.AssignColor(type, newValue);
			}
			listen = true;
		}
	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/UI/ColorSliderImage.cs
================================================
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using SCANsat.Unity.HSVPicker.Enum;
using SCANsat.Unity.HSVPicker.Utility;

namespace SCANsat.Unity.HSVPicker.UI
{
	[RequireComponent(typeof(RawImage)), ExecuteInEditMode()]
	public class ColorSliderImage : MonoBehaviour
	{
		public ColorPicker picker;

		/// 
		/// Which value this slider can edit.
		/// 
		public ColorValues type;

		public Slider.Direction direction;

		private RawImage image;

		private RectTransform rectTransform
		{
			get
			{
				return transform as RectTransform;
			}
		}

		private void Awake()
		{
			image = GetComponent();

			RegenerateTexture();
		}

		private void OnEnable()
		{
			if (picker != null && Application.isPlaying)
			{
				picker.onValueChanged.AddListener(ColorChanged);
				picker.onHSVChanged.AddListener(HSVChanged);
			}
		}

		private void OnDisable()
		{
			if (picker != null)
			{
				picker.onValueChanged.RemoveListener(ColorChanged);
				picker.onHSVChanged.RemoveListener(HSVChanged);
			}
		}

		private void OnDestroy()
		{
			if (image.texture != null)
			{
				DestroyImmediate(image.texture);
			}
		}

#if UNITY_EDITOR
	private void OnValidate()
	{
		image = GetComponent();
		RegenerateTexture();
	}
#endif

		private void ColorChanged(Color newColor)
		{
			switch (type)
			{
				case ColorValues.R:
				case ColorValues.G:
				case ColorValues.B:
				case ColorValues.Saturation:
				case ColorValues.Value:
					RegenerateTexture();
					break;
				case ColorValues.A:
				case ColorValues.Hue:
				default:
					break;
			}
		}

		private void HSVChanged(float hue, float saturation, float value)
		{
			switch (type)
			{
				case ColorValues.R:
				case ColorValues.G:
				case ColorValues.B:
				case ColorValues.Saturation:
				case ColorValues.Value:
					RegenerateTexture();
					break;
				case ColorValues.A:
				case ColorValues.Hue:
				default:
					break;
			}
		}

		private void RegenerateTexture()
		{
			Color32 baseColor = picker != null ? picker.CurrentColor : Color.black;

			float h = picker != null ? picker.H : 0;
			float s = picker != null ? picker.S : 0;
			float v = picker != null ? picker.V : 0;

			Texture2D texture;
			Color32[] colors;

			bool vertical = direction == Slider.Direction.BottomToTop || direction == Slider.Direction.TopToBottom;
			bool inverted = direction == Slider.Direction.TopToBottom || direction == Slider.Direction.RightToLeft;

			int size;
			switch (type)
			{
				case ColorValues.R:
				case ColorValues.G:
				case ColorValues.B:
				case ColorValues.A:
					size = 255;
					break;
				case ColorValues.Hue:
					size = 360;
					break;
				case ColorValues.Saturation:
				case ColorValues.Value:
					size = 100;
					break;
				default:
					throw new System.NotImplementedException("");
			}
			if (vertical)
			{
				texture = new Texture2D(1, size);
			}
			else
			{
				texture = new Texture2D(size, 1);
			}

			texture.hideFlags = HideFlags.DontSave;
			colors = new Color32[size];

			switch (type)
			{
				case ColorValues.R:
					for (byte i = 0; i < size; i++)
					{
						colors[inverted ? size - 1 - i : i] = new Color32(i, baseColor.g, baseColor.b, 255);
					}
					break;
				case ColorValues.G:
					for (byte i = 0; i < size; i++)
					{
						colors[inverted ? size - 1 - i : i] = new Color32(baseColor.r, i, baseColor.b, 255);
					}
					break;
				case ColorValues.B:
					for (byte i = 0; i < size; i++)
					{
						colors[inverted ? size - 1 - i : i] = new Color32(baseColor.r, baseColor.g, i, 255);
					}
					break;
				case ColorValues.A:
					for (byte i = 0; i < size; i++)
					{
						colors[inverted ? size - 1 - i : i] = new Color32(i, i, i, 255);
					}
					break;
				case ColorValues.Hue:
					for (int i = 0; i < size; i++)
					{
						colors[inverted ? size - 1 - i : i] = HSVUtil.ConvertHsvToRgb(i, 1, 1, 1);
					}
					break;
				case ColorValues.Saturation:
					for (int i = 0; i < size; i++)
					{
						colors[inverted ? size - 1 - i : i] = HSVUtil.ConvertHsvToRgb(h * 360, (float)i / size, v, 1);
					}
					break;
				case ColorValues.Value:
					for (int i = 0; i < size; i++)
					{
						colors[inverted ? size - 1 - i : i] = HSVUtil.ConvertHsvToRgb(h * 360, s, (float)i / size, 1);
					}
					break;
				default:
					throw new System.NotImplementedException("");
			}
			texture.SetPixels32(colors);
			texture.Apply();

			if (image.texture != null)
			{
				DestroyImmediate(image.texture);
			}

			image.texture = texture;

			switch (direction)
			{
				case Slider.Direction.BottomToTop:
				case Slider.Direction.TopToBottom:
					image.uvRect = new Rect(0, 0, 2, 1);
					break;
				case Slider.Direction.LeftToRight:
				case Slider.Direction.RightToLeft:
					image.uvRect = new Rect(0, 0, 1, 2);
					break;
				default:
					break;
			}
		}

	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/UI/SVBoxSlider.cs
================================================
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using SCANsat.Unity.HSVPicker.Utility;
using SCANsat.Unity.HSVPicker.Enum;

namespace SCANsat.Unity.HSVPicker.UI
{
	using BoxSlider = SCANsat.Unity.HSVPicker.Utility.BoxSlider;
	using ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues;

	[RequireComponent(typeof(BoxSlider), typeof(RawImage)), ExecuteInEditMode()]
	public class SVBoxSlider : MonoBehaviour
	{
		public ColorPicker picker;

		private BoxSlider slider;
		private RawImage image;

		private float lastH = -1;
		private bool listen = true;

		public RectTransform rectTransform
		{
			get
			{
				return transform as RectTransform;
			}
		}

		private void Awake()
		{
			slider = GetComponent();
			image = GetComponent();

			RegenerateSVTexture();
		}

		private void OnEnable()
		{
			if (Application.isPlaying)
			{
				if (picker != null)
				{
					picker.onHSVChanged.AddListener(HSVChanged);
				}

				if (slider != null)
				{
					slider.onValueChanged.AddListener(SliderChanged);
				}
			}
		}

		private void OnDisable()
		{
			if (picker != null)
			{
				picker.onHSVChanged.RemoveListener(HSVChanged);
			}

			if (slider != null)
			{
				slider.onValueChanged.RemoveListener(SliderChanged);
			}
		}

		private void OnDestroy()
		{
			if (image.texture != null)
			{
				DestroyImmediate(image.texture);
			}
		}

#if UNITY_EDITOR
	private void OnValidate()
	{
		image = GetComponent();
		RegenerateSVTexture();
	}
#endif

		private void SliderChanged(float saturation, float value)
		{
			if (listen)
			{
				picker.AssignColor(ColorValues.Saturation, saturation);
				picker.AssignColor(ColorValues.Value, value);
			}
			listen = true;
		}

		private void HSVChanged(float h, float s, float v)
		{
			if (lastH != h)
			{
				lastH = h;
				RegenerateSVTexture();
			}

			if (s != slider.normalizedValue)
			{
				listen = false;
				slider.normalizedValue = s;
			}

			if (v != slider.normalizedValueY)
			{
				listen = false;
				slider.normalizedValueY = v;
			}
		}

		private void RegenerateSVTexture()
		{
			double h = picker != null ? picker.H * 360 : 0;

			if (image.texture != null)
			{
				DestroyImmediate(image.texture);
			}

			Texture2D texture = new Texture2D(100, 100);
			texture.hideFlags = HideFlags.DontSave;

			for (int s = 0; s < 100; s++)
			{
				Color32[] colors = new Color32[100];
				for (int v = 0; v < 100; v++)
				{
					colors[v] = HSVUtil.ConvertHsvToRgb(h, (float)s / 100, (float)v / 100, 1);
				}
				texture.SetPixels32(s, 0, 1, 100, colors);
			}
			texture.Apply();

			image.texture = texture;
		}
	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/UtilityScripts/BoxSlider.cs
================================================
using System;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;

namespace SCANsat.Unity.HSVPicker.Utility
{
	[AddComponentMenu("UI/BoxSlider", 35)]
	[RequireComponent(typeof(RectTransform))]
	public class BoxSlider : Selectable, IDragHandler, IInitializePotentialDragHandler, ICanvasElement
	{
		public enum Direction
		{
			LeftToRight,
			RightToLeft,
			BottomToTop,
			TopToBottom,
		}

		[Serializable]
		public class BoxSliderEvent : UnityEvent { }

		[SerializeField]
		private RectTransform m_HandleRect;
		public RectTransform handleRect { get { return m_HandleRect; } set { if (SetClass(ref m_HandleRect, value)) { UpdateCachedReferences(); UpdateVisuals(); } } }

		[Space(6)]

		[SerializeField]
		private float m_MinValue = 0;
		public float minValue { get { return m_MinValue; } set { if (SetStruct(ref m_MinValue, value)) { Set(m_Value); SetY(m_ValueY); UpdateVisuals(); } } }

		[SerializeField]
		private float m_MaxValue = 1;
		public float maxValue { get { return m_MaxValue; } set { if (SetStruct(ref m_MaxValue, value)) { Set(m_Value); SetY(m_ValueY); UpdateVisuals(); } } }

		[SerializeField]
		private bool m_WholeNumbers = false;
		public bool wholeNumbers { get { return m_WholeNumbers; } set { if (SetStruct(ref m_WholeNumbers, value)) { Set(m_Value); SetY(m_ValueY); UpdateVisuals(); } } }

		[SerializeField]
		private float m_Value = 1f;
		public float value
		{
			get
			{
				if (wholeNumbers)
				{
					return Mathf.Round(m_Value);
				}

				return m_Value;
			}
			set
			{
				Set(value);
			}
		}

		public float normalizedValue
		{
			get
			{
				if (Mathf.Approximately(minValue, maxValue))
				{
					return 0;
				}

				return Mathf.InverseLerp(minValue, maxValue, value);
			}
			set
			{
				this.value = Mathf.Lerp(minValue, maxValue, value);
			}
		}

		[SerializeField]
		private float m_ValueY = 1f;
		public float valueY
		{
			get
			{
				if (wholeNumbers)
				{
					return Mathf.Round(m_ValueY);
				}

				return m_ValueY;
			}
			set
			{
				SetY(value);
			}
		}

		public float normalizedValueY
		{
			get
			{
				if (Mathf.Approximately(minValue, maxValue))
				{
					return 0;
				}

				return Mathf.InverseLerp(minValue, maxValue, valueY);
			}
			set
			{
				this.valueY = Mathf.Lerp(minValue, maxValue, value);
			}
		}

		[Space(6)]

		// Allow for delegate-based subscriptions for faster events than 'eventReceiver', and allowing for multiple receivers.
		[SerializeField]
		private BoxSliderEvent m_OnValueChanged = new BoxSliderEvent();
		public BoxSliderEvent onValueChanged { get { return m_OnValueChanged; } set { m_OnValueChanged = value; } }

		// Private fields

		//private Image m_FillImage;
		//private Transform m_FillTransform;
		//private RectTransform m_FillContainerRect;
		private Transform m_HandleTransform;
		private RectTransform m_HandleContainerRect;

		// The offset from handle position to mouse down position
		private Vector2 m_Offset = Vector2.zero;

		private DrivenRectTransformTracker m_Tracker;

		// Size of each step.
		float stepSize { get { return wholeNumbers ? 1 : (maxValue - minValue) * 0.1f; } }

		protected BoxSlider()
		{ }

#if UNITY_EDITOR
		protected override void OnValidate()
		{
			base.OnValidate();
			
			if (wholeNumbers)
			{
				m_MinValue = Mathf.Round(m_MinValue);
				m_MaxValue = Mathf.Round(m_MaxValue);
			}
			UpdateCachedReferences();
			Set(m_Value, false);
			SetY(m_ValueY, false);
			// Update rects since other things might affect them even if value didn't change.
			UpdateVisuals();
			
			var prefabType = UnityEditor.PrefabUtility.GetPrefabType(this);
			if (prefabType != UnityEditor.PrefabType.Prefab && !Application.isPlaying)
				CanvasUpdateRegistry.RegisterCanvasElementForLayoutRebuild(this);
		}
		
#endif // if UNITY_EDITOR

		public virtual void Rebuild(CanvasUpdate executing)
		{
#if UNITY_EDITOR
			if (executing == CanvasUpdate.Prelayout)
				onValueChanged.Invoke(value, valueY);
#endif
		}

		public void LayoutComplete()
		{

		}

		public void GraphicUpdateComplete()
		{

		}

		public static bool SetClass(ref T currentValue, T newValue) where T : class
		{
			if ((currentValue == null && newValue == null) || (currentValue != null && currentValue.Equals(newValue)))
			{
				return false;
			}

			currentValue = newValue;
			return true;
		}

		public static bool SetStruct(ref T currentValue, T newValue) where T : struct
		{
			if (currentValue.Equals(newValue))
			{
				return false;
			}

			currentValue = newValue;
			return true;
		}

		protected override void OnEnable()
		{
			base.OnEnable();
			UpdateCachedReferences();
			Set(m_Value, false);
			SetY(m_ValueY, false);
			// Update rects since they need to be initialized correctly.
			UpdateVisuals();
		}

		protected override void OnDisable()
		{
			m_Tracker.Clear();
			base.OnDisable();
		}

		void UpdateCachedReferences()
		{

			if (m_HandleRect)
			{
				m_HandleTransform = m_HandleRect.transform;
				if (m_HandleTransform.parent != null)
				{
					m_HandleContainerRect = m_HandleTransform.parent.GetComponent();
				}
			}
			else
			{
				m_HandleContainerRect = null;
			}
		}

		// Set the valueUpdate the visible Image.
		void Set(float input)
		{
			Set(input, true);
		}

		void Set(float input, bool sendCallback)
		{
			// Clamp the input
			float newValue = Mathf.Clamp(input, minValue, maxValue);
			if (wholeNumbers)
			{
				newValue = Mathf.Round(newValue);
			}

			// If the stepped value doesn't match the last one, it's time to update
			if (m_Value == newValue)
			{
				return;
			}

			m_Value = newValue;
			UpdateVisuals();
			if (sendCallback)
			{
				m_OnValueChanged.Invoke(newValue, valueY);
			}
		}

		void SetY(float input)
		{
			SetY(input, true);
		}

		void SetY(float input, bool sendCallback)
		{
			// Clamp the input
			float newValue = Mathf.Clamp(input, minValue, maxValue);
			if (wholeNumbers)
			{
				newValue = Mathf.Round(newValue);
			}

			// If the stepped value doesn't match the last one, it's time to update
			if (m_ValueY == newValue)
			{
				return;
			}

			m_ValueY = newValue;
			UpdateVisuals();
			if (sendCallback)
			{
				m_OnValueChanged.Invoke(value, newValue);
			}
		}


		protected override void OnRectTransformDimensionsChange()
		{
			base.OnRectTransformDimensionsChange();
			UpdateVisuals();
		}

		enum Axis
		{
			Horizontal = 0,
			Vertical = 1
		}


		// Force-update the slider. Useful if you've changed the properties and want it to update visually.
		private void UpdateVisuals()
		{
#if UNITY_EDITOR
			if (!Application.isPlaying)
				UpdateCachedReferences();
#endif

			m_Tracker.Clear();


			//to business!
			if (m_HandleContainerRect != null)
			{
				m_Tracker.Add(this, m_HandleRect, DrivenTransformProperties.Anchors);
				Vector2 anchorMin = Vector2.zero;
				Vector2 anchorMax = Vector2.one;
				anchorMin[0] = anchorMax[0] = (normalizedValue);
				anchorMin[1] = anchorMax[1] = (normalizedValueY);

				m_HandleRect.anchorMin = anchorMin;
				m_HandleRect.anchorMax = anchorMax;
			}
		}

		// Update the slider's position based on the mouse.
		void UpdateDrag(PointerEventData eventData, Camera cam)
		{
			RectTransform clickRect = m_HandleContainerRect;
			if (clickRect != null && clickRect.rect.size[0] > 0)
			{
				Vector2 localCursor;
				if (!RectTransformUtility.ScreenPointToLocalPointInRectangle(clickRect, eventData.position, cam, out localCursor))
				{
					return;
				}

				localCursor -= clickRect.rect.position;

				float val = Mathf.Clamp01((localCursor - m_Offset)[0] / clickRect.rect.size[0]);
				normalizedValue = (val);

				float valY = Mathf.Clamp01((localCursor - m_Offset)[1] / clickRect.rect.size[1]);
				normalizedValueY = (valY);

			}
		}

		private bool MayDrag(PointerEventData eventData)
		{
			return IsActive() && IsInteractable() && eventData.button == PointerEventData.InputButton.Left;
		}

		public override void OnPointerDown(PointerEventData eventData)
		{
			if (!MayDrag(eventData))
			{
				return;
			}

			base.OnPointerDown(eventData);

			m_Offset = Vector2.zero;
			if (m_HandleContainerRect != null && RectTransformUtility.RectangleContainsScreenPoint(m_HandleRect, eventData.position, eventData.enterEventCamera))
			{
				Vector2 localMousePos;
				if (RectTransformUtility.ScreenPointToLocalPointInRectangle(m_HandleRect, eventData.position, eventData.pressEventCamera, out localMousePos))
				{
					m_Offset = localMousePos;
				}

				m_Offset.y = -m_Offset.y;
			}
			else
			{
				// Outside the slider handle - jump to this point instead
				UpdateDrag(eventData, eventData.pressEventCamera);
			}
		}

		public virtual void OnDrag(PointerEventData eventData)
		{
			if (!MayDrag(eventData))
			{
				return;
			}

			UpdateDrag(eventData, eventData.pressEventCamera);
		}

		//public override void OnMove(AxisEventData eventData)
		//{
		//    if (!IsActive() || !IsInteractable())
		//    {
		//        base.OnMove(eventData);
		//        return;
		//    }

		//    switch (eventData.moveDir)
		//    {
		//    case MoveDirection.Left:
		//        if (axis == Axis.Horizontal && FindSelectableOnLeft() == null) {
		//            Set(reverseValue ? value + stepSize : value - stepSize);
		//            SetY (reverseValue ? valueY + stepSize : valueY - stepSize);
		//        }
		//        else
		//            base.OnMove(eventData);
		//        break;
		//    case MoveDirection.Right:
		//        if (axis == Axis.Horizontal && FindSelectableOnRight() == null) {
		//            Set(reverseValue ? value - stepSize : value + stepSize);
		//            SetY(reverseValue ? valueY - stepSize : valueY + stepSize);
		//        }
		//        else
		//            base.OnMove(eventData);
		//        break;
		//    case MoveDirection.Up:
		//        if (axis == Axis.Vertical && FindSelectableOnUp() == null) {
		//            Set(reverseValue ? value - stepSize : value + stepSize);
		//            SetY(reverseValue ? valueY - stepSize : valueY + stepSize);
		//        }
		//        else
		//            base.OnMove(eventData);
		//        break;
		//    case MoveDirection.Down:
		//        if (axis == Axis.Vertical && FindSelectableOnDown() == null) {
		//            Set(reverseValue ? value + stepSize : value - stepSize);
		//            SetY(reverseValue ? valueY + stepSize : valueY - stepSize);
		//        }
		//        else
		//            base.OnMove(eventData);
		//        break;
		//    }
		//}

		//public override Selectable FindSelectableOnLeft()
		//{
		//    if (navigation.mode == Navigation.Mode.Automatic && axis == Axis.Horizontal)
		//        return null;
		//    return base.FindSelectableOnLeft();
		//}

		//public override Selectable FindSelectableOnRight()
		//{
		//    if (navigation.mode == Navigation.Mode.Automatic && axis == Axis.Horizontal)
		//        return null;
		//    return base.FindSelectableOnRight();
		//}

		//public override Selectable FindSelectableOnUp()
		//{
		//    if (navigation.mode == Navigation.Mode.Automatic && axis == Axis.Vertical)
		//        return null;
		//    return base.FindSelectableOnUp();
		//}

		//public override Selectable FindSelectableOnDown()
		//{
		//    if (navigation.mode == Navigation.Mode.Automatic && axis == Axis.Vertical)
		//        return null;
		//    return base.FindSelectableOnDown();
		//}

		public virtual void OnInitializePotentialDrag(PointerEventData eventData)
		{
			eventData.useDragThreshold = false;
		}

	}
}


================================================
FILE: SCANsat.Unity/HSVPicker/UtilityScripts/HSVUtil.cs
================================================
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;

namespace SCANsat.Unity.HSVPicker.Utility
{
	#region ColorUtilities

	public static class HSVUtil
	{

		public static HsvColor ConvertRgbToHsv(Color color)
		{
			return ConvertRgbToHsv((int)(color.r * 255), (int)(color.g * 255), (int)(color.b * 255));
		}

		//Converts an RGB color to an HSV color.
		public static HsvColor ConvertRgbToHsv(double r, double b, double g)
		{
			double delta, min;
			double h = 0, s, v;

			min = Math.Min(Math.Min(r, g), b);
			v = Math.Max(Math.Max(r, g), b);
			delta = v - min;

			if (v == 0.0)
			{
				s = 0;
			}
			else
			{
				s = delta / v;
			}

			if (s == 0)
			{
				h = 360;
			}
			else
			{
				if (r == v)
				{
					h = (g - b) / delta;
				}
				else if (g == v)
				{
					h = 2 + (b - r) / delta;
				}
				else if (b == v)
				{
					h = 4 + (r - g) / delta;
				}

				h *= 60;
				if (h <= 0.0)
				{
					h += 360;
				}
			}

			HsvColor hsvColor = new HsvColor();
			hsvColor.H = 360 - h;
			hsvColor.S = s;
			hsvColor.V = v / 255;

			return hsvColor;

		}

		// Converts an HSV color to an RGB color.
		public static Color ConvertHsvToRgb(double h, double s, double v, float alpha)
		{

			double r = 0, g = 0, b = 0;

			if (s == 0)
			{
				r = v;
				g = v;
				b = v;
			}

			else
			{
				int i;
				double f, p, q, t;


				if (h == 360)
				{
					h = 0;
				}
				else
				{
					h = h / 60;
				}

				i = (int)(h);
				f = h - i;

				p = v * (1.0 - s);
				q = v * (1.0 - (s * f));
				t = v * (1.0 - (s * (1.0f - f)));


				switch (i)
				{
					case 0:
						r = v;
						g = t;
						b = p;
						break;

					case 1:
						r = q;
						g = v;
						b = p;
						break;

					case 2:
						r = p;
						g = v;
						b = t;
						break;

					case 3:
						r = p;
						g = q;
						b = v;
						break;

					case 4:
						r = t;
						g = p;
						b = v;
						break;

					default:
						r = v;
						g = p;
						b = q;
						break;
				}

			}

			return new Color((float)r, (float)g, (float)b, alpha);

		}
	}


	#endregion ColorUtilities


	// Describes a color in terms of
	// Hue, Saturation, and Value (brightness)
	#region HsvColor
	public struct HsvColor
	{
		/// 
		/// The Hue, ranges between 0 and 360
		/// 
		public double H;

		/// 
		/// The saturation, ranges between 0 and 1
		/// 
		public double S;

		// The value (brightness), ranges between 0 and 1
		public double V;

		public float normalizedH
		{
			get
			{
				return (float)H / 360f;
			}

			set
			{
				H = (double)value * 360;
			}
		}

		public float normalizedS
		{
			get
			{
				return (float)S;
			}
			set
			{
				S = (double)value;
			}
		}

		public float normalizedV
		{
			get
			{
				return (float)V;
			}
			set
			{
				V = (double)value;
			}
		}

		public HsvColor(double h, double s, double v)
		{
			this.H = h;
			this.S = s;
			this.V = v;
		}

		public override string ToString()
		{
			return "{" + H.ToString("f2") + "," + S.ToString("f2") + "," + V.ToString("f2") + "}";
		}
	}
	#endregion HsvColor
}





================================================
FILE: SCANsat.Unity/InputHandler.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * InputHandler - Script for handling Input object replacement with Text Mesh Pro
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;

namespace SCANsat.Unity
{
	public class InputHandler : MonoBehaviour
	{
		private string _text;
		private bool _isFocused;

		public class OnTextEvent : UnityEvent { }
		public class OnValueChanged : UnityEvent { }

		private OnTextEvent _onTextUpdate = new OnTextEvent();
		private OnValueChanged _onValueChanged = new OnValueChanged();

		public string Text
		{
			get { return _text; }
			set { _text = value; }
		}

		public bool IsFocused
		{
			get { return _isFocused; }
			set { _isFocused = value; }
		}

		public UnityEvent OnTextUpdate
		{
			get { return _onTextUpdate; }
		}

		public UnityEvent OnValueChange
		{
			get { return _onValueChanged; }
		}
	}
}


================================================
FILE: SCANsat.Unity/Interfaces/ISCAN_BigMap.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * ISCAN_BigMap - Interface for transfer of big map information
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;

namespace SCANsat.Unity.Interfaces
{
	public interface ISCAN_BigMap
	{
		string Version { get; }

		string CurrentProjection { get; set; }

		string CurrentMapType { get; set; }

		string CurrentResource { get; set; }

		string CurrentCelestialBody { get; set; }

		string RandomWaypoint { get; }

		bool IsVisible { get; set; }

		bool ColorToggle { get; set; }

		bool TerminatorToggle { get; set; }

		bool GridToggle { get; set; }

		bool OrbitToggle { get; set; }

		bool WaypointToggle { get; set; }

		bool AnomalyToggle { get; set; }

		bool FlagToggle { get; set; }

		bool LegendToggle { get; set; }

		bool LegendAvailable { get; }

		bool ResourceToggle { get; set; }

		bool OrbitAvailable { get; }

		bool ShowOrbit { get; }

		bool ShowWaypoint { get; }

		bool ShowResource { get; }

		bool MechJebAvailable { get; }

		bool TooltipsOn { get; }

		bool LegendTooltips { get; }

		bool LockInput { get; set; }

		int OrbitSteps { get; }

		int CurrentScene { get; }

		float Scale { get; }

		float LoAltScan { get; }

		float HiAltScan { get; }

		float MultiScan { get; }

		float LoVisScan { get; }

		float HiVisScan { get; }

		float AnomalyScan { get; }

		float LoResScan { get; }

		float HiResScan { get; }

		byte ScanStatus { get; }

		Sprite WaypointSprite { get; }

		Canvas MainCanvas { get; }

		Canvas TooltipCanvas { get; }

		Vector2 Position { get; set; }

		Vector2 Size { get; set; }

		Texture2D LegendImage { get; }

		Texture2D ResourceLegendImage { get; }

		Vector2 ResourceLegendLabels { get; }

		IList Projections { get; }

		IList MapTypes { get; }

		IList Resources { get; }

		IList CelestialBodies { get; }

		IList LegendLabels { get; }

		Dictionary OrbitLabelList { get; }

		IList FlagInfoList { get; }

		Dictionary AnomalyInfoList { get; }

		Dictionary WaypointInfoList { get; }

		KeyValuePair VesselInfo { get; }

		string MapInfo(Vector2 rectPosition);

		string TooltipText(float xPos);

		void RefreshMap();

		void OpenMainMap();

		void OpenInstruments();

		void OpenZoomMap();

		void OpenSettings();

		void IncreaseResourceCutoff();

		void DecreaseResourceCutoff();

		void OpenResourceSettings();

		void OpenOverlay();

		void ExportMap();

		void Update();

		void SetWaypoint(string id, Vector2 pos);

		void SetMJWaypoint(Vector2 pos);

		void ClickMap(Vector2 pos);

		SimpleLabelInfo OrbitInfo(int index);

		MapLabelInfo OrbitIconInfo(string id);

		Vector2 VesselPosition();
	}
}


================================================
FILE: SCANsat.Unity/Interfaces/ISCAN_Color.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * ISCAN_Color - Interface for transfer of color management information
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;

namespace SCANsat.Unity.Interfaces
{
	public interface ISCAN_Color
	{
		string ResourcePlanet { get; set; }

		string ResourceCurrent { get; set; }

		string TerrainPlanet { get; set; }

		string TerrainPalette { get; set; }

		string TerrainPaletteStyle { get; set; }

		bool MapVignette { get; set; }

		bool BiomeBigMapStockColor { get; set; }

		bool BiomeBigMapWhiteBorder { get; set; }

		bool BiomeSmallMapStockColor { get; set; }

		bool BiomeSmallMapWhiteBorder { get; set; }

		bool BiomeZoomMapWhiteBorder { get; set; }

		bool TerrainClampOn { get; set; }

		bool TerrainReverse { get; set; }

		bool TerrainDiscrete { get; set; }

		bool TerrainHasSize { get; }


		int MapWidth { get; set; }

		bool UseMapWidth { get; set; }

		bool PixelFiltering { get; set; }

		bool NormalMap { get; set; }

		bool ColorMap { get; set; }

		float NormalOpacity { get; set; }

		float LuminanceReduction { get; set; }


		float UnscannedTransparency { get; set; }

		float BackgroundTransparency { get; set; }

		float BiomeTransparency { get; set; }

		float SlopeCutoff { get; set; }

		float ResourceMin { get; set; }

		float ResourceMax { get; set; }

		float ResourceTransparency { get; set; }

		float TerrainCurrentMin { get; set; }

		float TerrainGlobalMin { get; }

		float TerrainCurrentMax { get; set; }

		float TerrainGlobalMax { get; }

		float TerrainClamp { get; set; }

		int TerrainSize { get; set; }

		int TerrainSizeMin { get; }

		int TerrainSizeMax { get; }

		Color MapBackgroundColor { get; }

		Color UnscannedColor { get; }

		Color BiomeColorOne { get; }

		Color BiomeColorTwo { get; }

		Color SlopeColorOneLo { get; }

		Color SlopeColorOneHi { get; }

		Color SlopeColorTwoLo { get; }

		Color SlopeColorTwoHi { get; }

		Color ResourceColorOne { get; }

		Color ResourceColorTwo { get; }

		Texture2D TerrainPaletteOld { get; }

		Texture2D TerrainPaletteNew { get; }

		IList> TerrainPalettes { get; }

		IList Resources { get; }

		IList CelestialBodies { get; }

		IList PaletteStyleNames { get; }

		void MapApply(Color one, Color two);

		void MapDefault();

		void BiomeApply(Color one, Color two);

		void BiomeDefault();

		void SlopeApply(Color oneLow, Color oneHigh, Color twoLow, Color twoHigh);

		void SlopeDefault();

		void ResourceApply(Color one, Color two);

		void ResourceApplyToAll(Color one, Color two);

		void ResourceDefault();

		void ResourceDefaultToAll();

		void ResourceSaveToConfig(Color one, Color two);

		void TerrainApply();

		void TerrainDefault();

		void TerrainSaveToConfig();

		void Refresh();
	}
}


================================================
FILE: SCANsat.Unity/Interfaces/ISCAN_Instruments.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * ISCAN_Instruments - Interface for transfer of instruments window information
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using UnityEngine;

namespace SCANsat.Unity.Interfaces
{
	public interface ISCAN_Instruments
	{
		string Version { get; }

		string Readout { get; }

		string ResourceName { get; }

		string TypingText { get; }

		string AnomalyText { get; }

		bool IsVisible { get; set; }

		bool ResourceButtons { get; }

		bool AnomalyButtons { get; }

		bool MouseAnomaly { get; set; }

		bool TooltipsOn { get; }

		float Scale { get; }

		Canvas TooltipCanvas { get; }

		Texture AnomalyCamera { get; }

		Vector2 Position { get; set; }

		void ClampToScreen(RectTransform rect);

		void NextResource();

		void PreviousResource();

		void NextAnomaly();

		void Update();
	}
}


================================================
FILE: SCANsat.Unity/Interfaces/ISCAN_MainMap.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * ISCAN_MainMap - Interface for transfer of main map information
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;

namespace SCANsat.Unity.Interfaces
{
	public interface ISCAN_MainMap
	{
		string Version { get; }

		bool IsVisible { get; set; }

		bool Color { get; set; }

		bool TerminatorToggle { get; set; }

		bool MapType { get; set; }

		bool Minimized { get; set; }

		bool TooltipsOn { get; }

		bool MapGenerating { get; }

		bool ResourcesOn { get; }

		float Scale { get; }

		Canvas TooltipCanvas { get; }

		Vector2 Position { get; set; }

		Dictionary VesselInfoList { get; }

		void ClampToScreen(RectTransform rect);

		void OpenBigMap();

		void OpenInstruments();

		void OpenZoomMap();

		void OpenSettings();

		void OpenOverlay();

		void ChangeToVessel(Guid id);

		string VesselInfo(Guid id);

		Sprite VesselType(Guid id);

		Vector2 VesselPosition(Guid id);

		void Update();
	}
}


================================================
FILE: SCANsat.Unity/Interfaces/ISCAN_Overlay.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * ISCAN_Overlay - Interface for transfer of overlay window information
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;

namespace SCANsat.Unity.Interfaces
{
	public interface ISCAN_Overlay
	{
		string Version { get; }

		string CurrentResource { get; }

		string TooltipText { get; }

		bool IsVisible { get; set; }

		bool OverlayTooltip { get; }

		bool DrawOverlay { get; set; }

		bool DrawBiome { get; set; }

		bool DrawTerrain { get; set; }

		bool DrawResource { get; }

		bool WindowTooltips { get; }

		float Scale { get; }

		Canvas TooltipCanvas { get; }

		IList Resources { get; }

		Vector2 Position { get; set; }

		Texture2D ResourceLegendImage { get; }

		Vector2 ResourceLegendLabels { get; }

		void ClampToScreen(RectTransform rect);

		void SetResource(string resource, bool isOn);

		void Refresh();

		void OpenSettings();

		void IncreaseResourceCutoff();

		void DecreaseResourceCutoff();

		void OpenResourceSettings();

		void Update();
	}
}


================================================
FILE: SCANsat.Unity/Interfaces/ISCAN_Settings.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * ISCAN_Settings - Interface for transfer of settings information
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;

namespace SCANsat.Unity.Interfaces
{
	public interface ISCAN_Settings
	{
		string Version { get; }

		string SensorCount { get; }

		string DataResetCurrent { get; }

		string DataResetAll { get; }

		string StockResourceResetCurrent { get; }

		string StockResourceResetAll { get; }

		string WarningMapFillCurrent { get; }

		string WarningMapFillAll { get; }

		string ModuleManagerWarning { get; }

		string SaveToConfig { get; }

		string CurrentBody { get; }

		string CurrentMapData { get; set; }

		int MapGenSpeed { get; set; }

		int TimeWarp { get; set; }

		int MapWidth { get; set; }

		int Interpolation { get; set; }

		int MapHeight { get; set; }

		int BiomeMapHeight { get; set; }

		float Transparency { get; set; }

		float StockThresholdValue { get; set; }

		float UIScale { get; set; }

		bool IsVisible { get; set; }

		bool BackgroundScanning { get; set; }

		bool GroundTracks { get; set; }

		bool ActiveGround { get; set; }

		bool OverlayTooltips { get; set; }

		bool WindowTooltips { get; set; }

		bool LegendTooltips { get; set; }

		bool StockToolbar { get; set; }

		bool ToolbarMenu { get; set; }

		bool StockUIStyle { get; set; }

		bool MechJebTarget { get; set; }

		bool MechJebLoad { get; set; }

		bool MechJebAvailable { get; }

		bool DaylightCheck { get; set; }

		bool BiomeLock { get; set; }

		bool NarrowBand { get; set; }

		bool InstantScan { get; set; }

		bool DisableStock { get; set; }

		bool StockThreshold { get; set; }

		bool HideZeroResources { get; set; }

		bool GreyScale { get; set; }

		bool ExportCSV { get; set; }

		bool ShowStockReset { get; }

		bool ShowMapFill { get; }

		bool LockInput { get; set; }

		bool ModuleManager { get; }

		Canvas TooltipCanvas { get; }

		Vector2 Position { set; }

		IList BackgroundBodies { get; }

		IList MapDataTypes { get; }

		ISCAN_Color ColorInterface { get; }

		void ClampToScreen(RectTransform rect);

		void ResetCurrent();

		void ResetAll();

		void ResetStockResourceCurrent();

		void ResetStockResourceAll();

		void FillCurrent();

		void FillAll();

		void ResetWindows();

		void Update();

		void OpenKSPedia(bool isOn);

		void ToggleBody(string bodyName);

		bool ToggleBodyActive(string bodyName);

		double BodyPercentage(string bodyName);
	}
}


================================================
FILE: SCANsat.Unity/Interfaces/ISCAN_Toolbar.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * ISCAN_Toolbar - Interface for transfer of toolbar menu information
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using UnityEngine;

namespace SCANsat.Unity.Interfaces
{
	public interface ISCAN_Toolbar
	{
		Canvas TooltipCanvas { get; }

		bool TooltipsOn { get; }

		bool MainMap { get; set; }

		bool BigMap { get; set; }

		bool ZoomMap { get; set; }

		bool Overlay { get; set; }

		bool Instruments { get; set; }

		bool Settings { get; set; }

		bool InMenu { get; set; }

		float Scale { get; }
	}
}


================================================
FILE: SCANsat.Unity/Interfaces/ISCAN_ZoomMap.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * ISCAN_ZoomMap - Interface for transfer of zoom map information
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;

namespace SCANsat.Unity.Interfaces
{
	public interface ISCAN_ZoomMap
	{
		string Version { get; }

		string CurrentMapType { get; set; }

		string CurrentResource { get; set; }

		string ZoomLevelText { get; }

		string MapCenterText { get; }

		string RandomWaypoint { get; }

		bool IsVisible { get; set; }

		bool Rebuilding { get; }

		bool VesselLock { get; set; }

		bool ColorToggle { get; set; }

		bool TerminatorToggle { get; set; }

		bool OrbitToggle { get; set; }

		bool IconsToggle { get; set; }

		bool LegendToggle { get; set; }

		bool LegendAvailable { get; }

		bool ResourceToggle { get; set; }

		bool OrbitAvailable { get; }

		bool ShowOrbit { get; }

		bool ShowWaypoint { get; }

		bool ShowResource { get; }

		bool ShowVessel { get; }

		bool MechJebAvailable { get; }

		bool TooltipsOn { get; }

		bool LegendTooltips { get; }

		bool LockInput { get; set; }

		bool ZoomPersist { get; set; }

		int OrbitSteps { get; }

		int CurrentScene { get; }

		int WindowState { get; set; }

		int MapRefresh { get; set; }

		float Scale { get; }

		Sprite WaypointSprite { get; }

		Canvas MainCanvas { get; }

		Canvas TooltipCanvas { get; }

		Vector2 Position { get; set; }

		Vector2 Size { get; set; }

		Texture2D LegendImage { get; }

		Texture2D ResourceLegendImage { get; }

		Vector2 ResourceLegendLabels { get; }

		IList MapTypes { get; }

		IList Resources { get; }

		IList LegendLabels { get; }

		Dictionary OrbitLabelList { get; }

		IList FlagInfoList { get; }

		Dictionary AnomalyInfoList { get; }

		IList ROCInfoList { get; }

		Dictionary WaypointInfoList { get; }

		KeyValuePair VesselInfo { get; }

		string MapInfo(Vector2 rectPosition);

		string TooltipText(float xPos);

		void ClampToScreen(RectTransform rect);

		void RefreshMap();

		void Update();

		void VesselSync();

		void MoveMap(int i);

		void ZoomMap(bool zoom);

		void SetWaypoint(string id, Vector2 pos);

		void SetMJWaypoint(Vector2 pos);

		void ClickMap(int button, Vector2 pos);

		SimpleLabelInfo OrbitInfo(int index);

		MapLabelInfo OrbitIconInfo(string id);

		Vector2 VesselPosition();
	}
}


================================================
FILE: SCANsat.Unity/MapLabelInfo.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * MapLabelInfo - Data object for map icon and labels
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using UnityEngine;

namespace SCANsat.Unity
{
	public struct MapLabelInfo
	{
		public string label;
		public string name;
		public Sprite image;
		public Vector2 pos;
		public Color baseColor;
		public Color flashColor;
		public bool flash;
		public int width;
		public int alignBottom;
		public bool show;
	}
}


================================================
FILE: SCANsat.Unity/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyDescription("")]
[assembly: AssemblyCopyright("Copyright ©  2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]


================================================
FILE: SCANsat.Unity/SCAN_ColorPicker.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * CanvasFader - Monobehaviour for making smooth fade in and fade out for UI windows
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using SCANsat.Unity.HSVPicker.UI;

namespace SCANsat.Unity
{
	using ColorImage = SCANsat.Unity.HSVPicker.UI.ColorImage;

	public class SCAN_ColorPicker : MonoBehaviour
	{
		[SerializeField]
		private ColorImage m_ColorOne = null;
		[SerializeField]
		private ColorImage m_ColorTwo = null;
		[SerializeField]
		private Image m_OldColorOne = null;
		[SerializeField]
		private Image m_OldColorTwo = null;
		[SerializeField]
		private InputHandler m_RInputField = null;
		[SerializeField]
		private InputHandler m_GInputField = null;
		[SerializeField]
		private InputHandler m_BInputField = null;

		private ColorPicker picker;

		private bool anyInputActive;

		public Color GetColorOne
		{
			get { return m_ColorOne.CurrentColor; }
		}

		public Color GetColorTwo
		{
			get { return m_ColorTwo.CurrentColor; }
		}

		public bool AnyInputActive
		{
			get { return anyInputActive; }
		}

		private void Awake()
		{
			picker = GetComponent();
		}

		private void Update()
		{
			anyInputActive = m_RInputField.IsFocused || m_GInputField.IsFocused || m_RInputField.IsFocused;
		}

		public void Setup(Color one, Color two, bool reset)
		{
			if (picker != null && reset)
			{
				picker.CurrentColor = one;
			}

			if (m_ColorOne != null)
			{
				m_ColorOne.SetColor(one);

				if (reset)
				{
					m_ColorOne.IsActive = true;
				}
			}

			if (m_ColorTwo != null)
			{
				m_ColorTwo.SetColor(two);
			}

			if (m_OldColorOne != null)
			{
				m_OldColorOne.color = one;
			}

			if (m_OldColorTwo != null)
			{
				m_OldColorTwo.color = two;
			}

			if (m_RInputField != null)
			{
				m_RInputField.OnTextUpdate.Invoke("");
			}

			if (m_GInputField != null)
			{
				m_GInputField.OnTextUpdate.Invoke("");
			}

			if (m_BInputField != null)
			{
				m_BInputField.OnTextUpdate.Invoke("");
			}
		}

		public void ColorOne(bool isOn)
		{
			if (m_ColorOne == null)
			{
				return;
			}

			m_ColorOne.IsActive = isOn;

			if (isOn)
			{
				picker.CurrentColor = m_ColorOne.CurrentColor;

				if (m_RInputField != null)
				{
					m_RInputField.OnTextUpdate.Invoke("");
				}

				if (m_GInputField != null)
				{
					m_GInputField.OnTextUpdate.Invoke("");
				}

				if (m_BInputField != null)
				{
					m_BInputField.OnTextUpdate.Invoke("");
				}
			}
		}

		public void ColorTwo(bool isOn)
		{
			if (m_ColorTwo == null)
			{
				return;
			}

			m_ColorTwo.IsActive = isOn;

			if (isOn)
			{
				picker.CurrentColor = m_ColorTwo.CurrentColor;

				if (m_RInputField != null)
				{
					m_RInputField.OnTextUpdate.Invoke("");
				}

				if (m_GInputField != null)
				{
					m_GInputField.OnTextUpdate.Invoke("");
				}

				if (m_BInputField != null)
				{
					m_BInputField.OnTextUpdate.Invoke("");
				}
			}
		}

	}
}


================================================
FILE: SCANsat.Unity/SCAN_DoubleButton.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_DoubleButton - Script for handling double click buttons
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

namespace SCANsat.Unity
{
	[AddComponentMenu("UI/SCAN Double Button", 31)]
	public class SCAN_DoubleButton : Button, IPointerClickHandler
	{
		private int clickCount;

		new public void OnPointerClick(PointerEventData eventData)
		{
			if (eventData.button != PointerEventData.InputButton.Left)
			{
				return;
			}

			if (clickCount > 0)
			{
				clickCount++;
			}
			else
			{
				clickCount = 1;
				StartCoroutine(clickWait());
			}
		}

		private IEnumerator clickWait()
		{
			yield return new WaitForSeconds(0.4f);

			if (clickCount > 1)
			{
				doubleClick();
			}

			clickCount = 0;
		}

		private void doubleClick()
		{
			if (!IsActive() || !IsInteractable())
			{
				return;
			}

			onClick.Invoke();
		}

	}
}


================================================
FILE: SCANsat.Unity/SCAN_Toggle.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_Toggle - Script to replace the hover sprite for the active toggle state
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

namespace SCANsat.Unity
{
	public class SCAN_Toggle : Toggle, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler
	{
		private Sprite normalImage;
		public Sprite HoverCheckmark;
		private bool inToggle;

		protected override void Awake()
		{
			base.Awake();

			normalImage = ((Image)graphic).sprite;
		}

		new public void OnPointerClick(PointerEventData eventData)
		{
			base.OnPointerClick(eventData);

			if (!isOn)
			{
				return;
			}

			if (inToggle)
			{
				((Image)graphic).sprite = HoverCheckmark;
			}
		}

		new public void OnPointerEnter(PointerEventData eventData)
		{
			base.OnPointerEnter(eventData);

			inToggle = true;

			if (!isOn)
			{
				return;
			} ((Image)graphic).sprite = HoverCheckmark;
		}

		new public void OnPointerExit(PointerEventData eventData)
		{
			base.OnPointerExit(eventData);

			inToggle = false;

			if (!isOn)
			{
				return;
			} ((Image)graphic).sprite = normalImage;
		}
	}
}


================================================
FILE: SCANsat.Unity/SCANsat.Unity.csproj
================================================

  
    Library
    SCANsat.Unity
    SCANsat.Unity
    net4.8
  
  
    false
  
  
    
  


================================================
FILE: SCANsat.Unity/SettingsPage.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SettingsPage - Base behaviour for all settings window pages
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using UnityEngine;
using UnityEngine.EventSystems;

namespace SCANsat.Unity
{
	public class SettingsPage : MonoBehaviour
	{
		public virtual void OnPointerDown(PointerEventData eventData) { }
	}
}


================================================
FILE: SCANsat.Unity/SimpleLabelInfo.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SimpleLabelInfo - Data object for simple map icon
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using UnityEngine;

namespace SCANsat.Unity
{
	public class SimpleLabelInfo
	{
		public Sprite image;
		public int width;
		public Vector2 pos;
		public Color color;
		public bool show;

		public SimpleLabelInfo(int w, Sprite img)
		{
			image = img;
			width = w;
		}
	}
}


================================================
FILE: SCANsat.Unity/TextHandler.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * TextHandler - Script for handling Text object replacement with Text Mesh Pro
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;

namespace SCANsat.Unity
{
	public class TextHandler : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IScrollHandler
	{
		[SerializeField]
		private bool m_Outline = false;
		[SerializeField]
		private float m_OutlineWidth = 0;
		[SerializeField]
		private bool m_Highlighter = false;
		[SerializeField]
		private Color m_HighlightColor = Color.white;
		[SerializeField]
		private bool m_LocalizedText = false;
		[SerializeField]
		private string m_LocalizeName = "";

		public class OnTextEvent : UnityEvent { }

		public class OnColorEvent : UnityEvent { }

		public class OnFontEvent : UnityEvent { }

		private OnTextEvent _onTextUpdate = new OnTextEvent();
		private OnColorEvent _onColorUpdate = new OnColorEvent();
		private OnFontEvent _onFontChange = new OnFontEvent();

		private Vector2 _preferredSize = new Vector2();
		private Color _normalColor = Color.white;
		private ScrollRect scroller;

		public void SetNormalColor(Color c)
		{
			_normalColor = c;
		}

		public void SetScroller(ScrollRect s)
		{
			scroller = s;
		}

		public bool Outline
		{
			get { return m_Outline; }
		}

		public float OutlineWidth
		{
			get { return m_OutlineWidth; }
		}

		public bool LocalizedText
		{
			get { return m_LocalizedText; }
		}

		public string LocalizeName
		{
			get { return m_LocalizeName; }
		}

		public void SetLocalText(string text)
		{
			Text t = GetComponent();

			if (t != null)
			{
				t.text = text;
			}
		}

		public Vector2 PreferredSize
		{
			get { return _preferredSize; }
			set { _preferredSize = value; }
		}

		public UnityEvent OnTextUpdate
		{
			get { return _onTextUpdate; }
		}

		public UnityEvent OnColorUpdate
		{
			get { return _onColorUpdate; }
		}

		public UnityEvent OnFontChange
		{
			get { return _onFontChange; }
		}

		public void OnPointerEnter(PointerEventData eventData)
		{
			if (!m_Highlighter)
			{
				return;
			}

			OnColorUpdate.Invoke(m_HighlightColor);
		}

		public void OnPointerExit(PointerEventData eventData)
		{
			if (!m_Highlighter)
			{
				return;
			}

			OnColorUpdate.Invoke(_normalColor);
		}

		public void OnScroll(PointerEventData eventData)
		{
			if (scroller == null)
			{
				return;
			}

			scroller.OnScroll(eventData);
		}
	}
}


================================================
FILE: SCANsat.Unity/TooltipHandler.cs
================================================
#region license
/*  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * TooltipHandler - Script to control tooltip activation
 * 
 * Copyright (c)2013 damny;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 DMagic
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using SCANsat.Unity.Unity;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

namespace SCANsat.Unity
{

	public class TooltipHandler : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler
	{
		[SerializeField, TextArea(2, 10)]
		private string m_TooltipName = "";
		[SerializeField]
		private bool m_IsActive = true;
		[SerializeField]
		private bool m_HelpTip = false;
		[SerializeField]
		private GameObject _prefab = null;
		[SerializeField]
		private string _tooltipText = "";

		private Canvas _canvas;
		private SCAN_Tooltip _tooltip;
		private float _scale;

		public string TooltipName
		{
			get { return m_TooltipName; }
		}

		public Canvas _Canvas
		{
			set { _canvas = value; }
		}

		public GameObject Prefab
		{
			set { _prefab = value; }
		}

		public float Scale
		{
			set { _scale = value; }
		}

		public bool IsActive
		{
			set { m_IsActive = value; }
		}

		public bool HelpTip
		{
			get { return m_HelpTip; }
		}

		public string TooltipText
		{
			set { _tooltipText = value; }
		}

		public void OnPointerEnter(PointerEventData eventData)
		{
			if (!m_IsActive)
			{
				return;
			}

			OpenTooltip();
		}

		public void OnPointerExit(PointerEventData eventData)
		{
			if (!m_IsActive)
			{
				return;
			}

			CloseTooltip();
		}

		public void OnPointerClick(PointerEventData eventData)
		{
			if (!m_IsActive)
			{
				return;
			}

			CloseTooltip();
		}

		private void OpenTooltip()
		{
			if (_prefab == null || _canvas == null)
			{
				return;
			}

			_tooltip = Instantiate(_prefab).GetComponent();

			if (_tooltip == null)
			{
				return;
			}

			_tooltip.transform.SetParent(_canvas.transform, false);
			_tooltip.transform.SetAsLastSibling();

			_tooltip.Setup(_canvas, _tooltipText, _scale);
		}

		private void CloseTooltip()
		{
			if (_tooltip == null)
			{
				return;
			}

			_tooltip.gameObject.SetActive(false);
			Destroy(_tooltip.gameObject);
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_BackgroundElement.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_BackgroundElement - Script for controlling background scanning toggle elements
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_BackgroundElement : MonoBehaviour
	{
		[SerializeField]
		private TextHandler m_BodyText = null;
		[SerializeField]
		private SCAN_Toggle m_BodyToggle = null;

		private bool loaded;
		private string bodyName;
		private ISCAN_Settings settingsInterface;

		public string BodyName
		{
			get { return bodyName; }
		}

		public void Setup(string body, bool active, ISCAN_Settings settings)
		{
			if (settings == null)
			{
				return;
			}

			bodyName = body;
			settingsInterface = settings;

			if (m_BodyToggle != null)
			{
				m_BodyToggle.isOn = active;
			}

			if (m_BodyText != null)
			{
				m_BodyText.OnTextUpdate.Invoke(string.Format("{0} (0%)", body));
			}

			loaded = true;
		}

		public void UpdateText(double amount)
		{
			if (m_BodyText == null)
			{
				return;
			}

			m_BodyText.OnTextUpdate.Invoke(string.Format("{0} ({1})", bodyName, amount.ToString("P0")));
		}

		public void ToggleBody(bool isOn)
		{
			if (!loaded || settingsInterface == null)
			{
				return;
			}

			settingsInterface.ToggleBody(bodyName);
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_BigMap.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_BigMap - Script for controlling the big map UI
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_BigMap : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler
	{
		[SerializeField]
		private TextHandler m_Version = null;
		[SerializeField]
		private TextHandler m_Title = null;
		[SerializeField]
		private Transform m_Projection = null;
		[SerializeField]
		private Transform m_MapType = null;
		[SerializeField]
		private Transform m_Resources = null;
		[SerializeField]
		private Transform m_CelestialBody = null;
		[SerializeField]
		private ToggleGroup m_DropDownToggles = null;
		[SerializeField]
		private GameObject m_DropDownPrefab = null;
		[SerializeField]
		private GameObject m_OrbitObject = null;
		[SerializeField]
		private GameObject m_WaypointObject = null;
		[SerializeField]
		private SCAN_Toggle m_ColorToggle = null;
		[SerializeField]
		private SCAN_Toggle m_TerminatorToggle = null;
		[SerializeField]
		private SCAN_Toggle m_GridToggle = null;
		[SerializeField]
		private SCAN_Toggle m_OrbitToggle = null;
		[SerializeField]
		private SCAN_Toggle m_WaypointToggle = null;
		[SerializeField]
		private SCAN_Toggle m_AnomalyToggle = null;
		[SerializeField]
		private SCAN_Toggle m_FlagToggle = null;
		[SerializeField]
		private SCAN_Toggle m_LegendToggle = null;
		[SerializeField]
		private SCAN_Toggle m_ResourcesToggle = null;
		[SerializeField]
		private TextHandler m_ReadoutText = null;
		[SerializeField]
		private RawImage m_MapImage = null;
		[SerializeField]
		private RawImage m_GridMap = null;
		[SerializeField]
		private RawImage m_EQMap = null;
		[SerializeField]
		private LayoutElement m_MapLayout = null;
		[SerializeField]
		private GameObject m_MapLabelPrefab = null;
		[SerializeField]
		private GameObject m_LegendObject = null;
		[SerializeField]
		private RawImage m_LegendImage = null;
		[SerializeField]
		private TextHandler m_LegendLabelOne = null;
		[SerializeField]
		private TextHandler m_LegendLabelTwo = null;
		[SerializeField]
		private TextHandler m_LegendLabelThree = null;
		[SerializeField]
		private GameObject m_WaypointBar = null;
		[SerializeField]
		private GameObject m_MechJebButton = null;
		[SerializeField]
		private InputHandler m_WaypointInput = null;
		[SerializeField]
		private GameObject m_SmallMapButton = null;
		[SerializeField]
		private GameObject m_ZoomMapButton = null;
		[SerializeField]
		private GameObject m_OverlayButton = null;
		[SerializeField]
		private GameObject m_InstrumentsButton = null;
		[SerializeField]
		private GameObject m_SettingsButton = null;
		[SerializeField]
		private GameObject m_NorthSouthMarkers = null;
		[SerializeField]
		private GameObject m_TooltipPrefab = null;
		[SerializeField]
		private GameObject m_ResourceBar = null;
		[SerializeField]
		private RawImage m_ResourceLegendImage = null;
		[SerializeField]
		private TextHandler m_ResourceLegendLabelOne = null;
		[SerializeField]
		private TextHandler m_ResourceLegendLabelTwo = null;
		[SerializeField]
		private Slider m_LoSlider = null;
		[SerializeField]
		private Slider m_HiSlider = null;
		[SerializeField]
		private Slider m_MultiSlider = null;
		[SerializeField]
		private Slider m_LoVisSlider = null;
		[SerializeField]
		private Slider m_HiVisSlider = null;
		[SerializeField]
		private Slider m_AnomalySlider = null;
		[SerializeField]
		private Slider m_LoResSlider = null;
		[SerializeField]
		private Slider m_HiResSlider = null;
		[SerializeField]
		private TextHandler m_LoText = null;
		[SerializeField]
		private TextHandler m_HiText = null;
		[SerializeField]
		private TextHandler m_MultiText = null;
		[SerializeField]
		private TextHandler m_LoVisText = null;
		[SerializeField]
		private TextHandler m_HiVisText = null;
		[SerializeField]
		private TextHandler m_AnomalyText = null;
		[SerializeField]
		private TextHandler m_LoResText = null;
		[SerializeField]
		private TextHandler m_HiResText = null;
		[SerializeField]
		private Color m_StatusCoverage = new Color(0.35f, 0.7f, 0.9f);
		[SerializeField]
		private Color m_StatusGrey = new Color(1f, 1f, 1f);
		[SerializeField]
		private Color m_StatusOrange = new Color(0.9f, 0.6f, 0);
		[SerializeField]
		private Color m_StatusGreen = new Color(0, 0.6f, 0.5f);

		private ISCAN_BigMap bigInterface;
		private bool loaded;
		private RectTransform rect;
		private Vector2 mouseStart;
		private Vector3 windowStart;
		private bool inMap;
		private Vector2 rectPos = new Vector2();

		private bool waypointSelecting;
		private string waypoint;

		private float lastStatusTimer;
		private const float StatusTimerValue = 1;

		private List orbitLabels = new List();
		private List orbitIconLabels = new List();
		private List anomalyLabels = new List();
		private List waypointLabels = new List();
		private List flagLabels = new List();
		private SCAN_MapLabel vesselLabel;
		private SCAN_MapLabel tempWaypointLabel;
		private SCAN_MapLabel hoverWaypointLabel;

		private SCAN_DropDown dropDown;

		private bool tooltipOn;
		private SCAN_Tooltip _tooltip;

		private bool statusTooltipOn;
		private byte statusTooltipType;
		private SCAN_Tooltip _statusTooltip;

		private const float MAXMAPWIDTH = 8200;

		protected override void Awake()
		{
			base.Awake();

			rect = GetComponent();

			Alpha(0);
		}

		private void Update()
		{
			if (bigInterface == null || !bigInterface.IsVisible)
			{
				return;
			}

			if (bigInterface.LockInput)
			{
				if (m_WaypointInput != null && !m_WaypointInput.IsFocused)
				{
					bigInterface.LockInput = false;
				}
			}

			bigInterface.Update();

			if (vesselLabel != null)
			{
				vesselLabel.UpdatePosition(bigInterface.VesselPosition());
			}

			if (inMap && m_MapImage != null && m_ReadoutText != null)
			{
				RectTransformUtility.ScreenPointToLocalPointInRectangle(m_MapImage.rectTransform, Input.mousePosition, bigInterface.MainCanvas.worldCamera, out rectPos);

				m_ReadoutText.OnTextUpdate.Invoke(bigInterface.MapInfo(rectPos));

				SetStatusText(bigInterface.ScanStatus, false);

				if (waypointSelecting)
				{
					if (hoverWaypointLabel != null)
					{
						Vector2 mapPos = new Vector2(rectPos.x, rectPos.y + bigInterface.Size.y);

						hoverWaypointLabel.UpdateActive(true);

						hoverWaypointLabel.UpdatePosition(mapPos);
					}
				}
			}
			else if (waypointSelecting)
			{
				if (hoverWaypointLabel != null)
				{
					hoverWaypointLabel.UpdateActive(false);
				}

				SetStatusText(0, true);
			}
			else
			{
				SetStatusText(0, true);
			}

			if (tooltipOn)
			{
				RectTransformUtility.ScreenPointToLocalPointInRectangle(m_LegendImage.rectTransform, Input.mousePosition, bigInterface.MainCanvas.worldCamera, out rectPos);

				float halfWidth = m_LegendImage.rectTransform.rect.width / 2;

				float legendXPos = (rectPos.x + halfWidth) / m_LegendImage.rectTransform.rect.width;

				if (_tooltip != null)
				{
					_tooltip.UpdateText(bigInterface.TooltipText(legendXPos));
				}
			}

			if (statusTooltipOn)
			{
				if (_statusTooltip != null)
				{
					string status = "0%";

					switch (statusTooltipType)
					{
						case 0:
							status = (bigInterface.LoAltScan / 100).ToString("P1");
							break;
						case 1:
							status = (bigInterface.HiAltScan / 100).ToString("P1");
							break;
						case 2:
							status = (bigInterface.MultiScan / 100).ToString("P1");
							break;
						case 3:
							status = (bigInterface.LoVisScan / 100).ToString("P1");
							break;
						case 4:
							status = (bigInterface.HiVisScan / 100).ToString("P1");
							break;
						case 5:
							status = (bigInterface.AnomalyScan / 100).ToString("P1");
							break;
						case 6:
							status = (bigInterface.LoResScan / 100).ToString("P1");
							break;
						case 7:
							status = (bigInterface.HiResScan / 100).ToString("P1");
							break;
					}

					_statusTooltip.UpdateText(status);
				}
			}

			if (bigInterface.OrbitToggle && bigInterface.ShowOrbit)
			{
				for (int i = orbitLabels.Count - 1; i >= 0; i--)
				{
					SCAN_SimpleLabel label = orbitLabels[i];

					label.UpdateIcon(bigInterface.OrbitInfo(i));
				}

				for (int i = orbitIconLabels.Count - 1; i >= 0; i--)
				{
					SCAN_MapLabel label = orbitIconLabels[i];

					label.UpdatePositionActivation(bigInterface.OrbitIconInfo(label.StringID));
				}
			}

			if (Time.time > lastStatusTimer + StatusTimerValue)
			{
				lastStatusTimer = Time.time;

				SetStatusSliders();
			}
		}

		private void SetStatusText(byte status, bool grey)
		{
			if (m_LoText != null)
			{
				m_LoText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 0) != 0 ? m_StatusGreen : m_StatusOrange);
			}

			if (m_HiText != null)
			{
				m_HiText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 1) != 0 ? m_StatusGreen : m_StatusOrange);
			}

			if (m_MultiText != null)
			{
				m_MultiText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 2) != 0 ? m_StatusGreen : m_StatusOrange);
			}

			if (m_LoVisText != null)
			{
				m_LoVisText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 3) != 0 ? m_StatusGreen : m_StatusOrange);
			}

			if (m_HiVisText != null)
			{
				m_HiVisText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 4) != 0 ? m_StatusGreen : m_StatusOrange);
			}

			if (m_AnomalyText != null)
			{
				m_AnomalyText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 5) != 0 ? m_StatusGreen : m_StatusOrange);
			}

			if (m_LoResText != null)
			{
				m_LoResText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 6) != 0 ? m_StatusGreen : m_StatusOrange);
			}

			if (m_HiResText != null)
			{
				m_HiResText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 7) != 0 ? m_StatusGreen : m_StatusOrange);
			}
		}

		private void SetStatusSliders()
		{
			if (m_LoSlider != null)
			{
				m_LoSlider.value = bigInterface.LoAltScan;
			}

			if (m_HiSlider != null)
			{
				m_HiSlider.value = bigInterface.HiAltScan;
			}

			if (m_MultiSlider != null)
			{
				m_MultiSlider.value = bigInterface.MultiScan;
			}

			if (m_LoVisSlider != null)
			{
				m_LoVisSlider.value = bigInterface.LoVisScan;
			}

			if (m_HiVisSlider != null)
			{
				m_HiVisSlider.value = bigInterface.HiVisScan;
			}

			if (m_AnomalySlider != null)
			{
				m_AnomalySlider.value = bigInterface.AnomalyScan;
			}

			if (m_LoResSlider != null)
			{
				m_LoResSlider.value = bigInterface.LoResScan;
			}

			if (m_HiResSlider != null)
			{
				m_HiResSlider.value = bigInterface.HiResScan;
			}
		}

		private Vector2 ScreenPosition(RectTransform r, Canvas canvas)
		{
			Vector3[] corners = new Vector3[4];
			Vector2 pos = new Vector2();

			r.GetWorldCorners(corners);

			if (canvas.renderMode == RenderMode.ScreenSpaceOverlay)
			{
				pos = RectTransformUtility.WorldToScreenPoint(null, corners[0]);
			}
			else
			{
				pos = RectTransformUtility.WorldToScreenPoint(canvas.worldCamera, corners[0]);
			}

			pos.y = Screen.height - pos.y - r.sizeDelta.y;

			return pos;
		}

		public void setMap(ISCAN_BigMap map)
		{
			if (map == null)
			{
				return;
			}

			bigInterface = map;

			if (m_Version != null)
			{
				m_Version.OnTextUpdate.Invoke(map.Version);
			}

			if (m_ColorToggle != null)
			{
				m_ColorToggle.isOn = map.ColorToggle;
			}

			if (m_TerminatorToggle != null)
			{
				m_TerminatorToggle.isOn = map.TerminatorToggle;
			}

			if (m_GridToggle != null)
			{
				m_GridToggle.isOn = map.GridToggle;
			}

			if (m_OrbitToggle != null)
			{
				m_OrbitToggle.isOn = map.OrbitToggle;
			}

			if (m_WaypointToggle != null)
			{
				m_WaypointToggle.isOn = map.WaypointToggle;
			}

			if (m_AnomalyToggle != null)
			{
				m_AnomalyToggle.isOn = map.AnomalyToggle;
			}

			if (m_FlagToggle != null)
			{
				m_FlagToggle.isOn = map.FlagToggle;
			}

			if (m_LegendToggle != null)
			{
				m_LegendToggle.isOn = map.LegendToggle;
			}

			if (m_ResourcesToggle != null)
			{
				m_ResourcesToggle.isOn = map.ResourceToggle;
			}

			if (m_ResourceBar != null)
			{
				m_ResourceBar.SetActive(map.ResourceToggle);
			}

			if (!map.OrbitAvailable && m_OrbitObject != null)
			{
				m_OrbitObject.SetActive(false);
			}

			if (!map.ShowWaypoint && m_WaypointObject != null)
			{
				m_WaypointObject.SetActive(false);
			}

			if (!map.ShowResource && m_Resources != null)
			{
				m_Resources.gameObject.SetActive(false);
			}

			SetLegend(map.LegendToggle);

			if (map.ResourceToggle)
			{
				SetResourceLegend();
			}

			SetButtons(map.CurrentScene);

			SetScale(map.Scale);

			SetPosition(map.Position);

			SetSize(map.Size);

			SetIcons();

			SetNorthSouth();

			ProcessTooltips();

			FadeIn();

			loaded = true;
		}

		public void FadeIn()
		{
			Fade(1, true);
		}

		public void FadeOut()
		{
			Fade(0, false, Kill, false);
		}

		private void Kill()
		{
			gameObject.SetActive(false);
			Destroy(gameObject);
		}

		public void Close()
		{
			if (bigInterface != null)
			{
				bigInterface.IsVisible = false;
			}
		}

		public void ProcessTooltips()
		{
			if (bigInterface == null)
			{
				return;
			}

			TooltipHandler[] handlers = gameObject.GetComponentsInChildren(true);

			if (handlers == null)
			{
				return;
			}

			for (int j = 0; j < handlers.Length; j++)
			{
				ProcessTooltip(handlers[j], bigInterface.TooltipsOn, bigInterface.TooltipCanvas, bigInterface.Scale);
			}
		}

		private void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)
		{
			if (handler == null)
			{
				return;
			}

			handler.IsActive = isOn && !handler.HelpTip;
			handler._Canvas = c;
			handler.Scale = scale;
		}

		private void SetNorthSouth()
		{
			if (bigInterface == null || m_NorthSouthMarkers == null)
			{
				return;
			}

			if (bigInterface.CurrentProjection == "Polar")
			{
				m_NorthSouthMarkers.SetActive(true);
			}
			else
			{
				m_NorthSouthMarkers.SetActive(false);
			}
		}

		private void SetButtons(int i)
		{
			switch (i)
			{
				case -1:
					if (m_SmallMapButton != null)
					{
						m_SmallMapButton.SetActive(false);
					}

					if (m_ZoomMapButton != null)
					{
						m_ZoomMapButton.SetActive(false);
					}

					if (m_OverlayButton != null)
					{
						m_OverlayButton.SetActive(false);
					}

					if (m_InstrumentsButton != null)
					{
						m_InstrumentsButton.SetActive(false);
					}

					if (m_SettingsButton != null)
					{
						m_SettingsButton.SetActive(false);
					}

					break;
				case 1:
					if (m_SmallMapButton != null)
					{
						m_SmallMapButton.SetActive(false);
					}

					if (m_InstrumentsButton != null)
					{
						m_InstrumentsButton.SetActive(false);
					}

					if (m_ZoomMapButton != null)
					{
						m_ZoomMapButton.SetActive(false);
					}

					break;
				case 2:
					if (m_SmallMapButton != null)
					{
						m_SmallMapButton.SetActive(false);
					}

					if (m_OverlayButton != null)
					{
						m_OverlayButton.SetActive(false);
					}

					if (m_InstrumentsButton != null)
					{
						m_InstrumentsButton.SetActive(false);
					}

					if (m_ZoomMapButton != null)
					{
						m_ZoomMapButton.SetActive(false);
					}

					break;
			}
		}

		public void SetScale(float scale)
		{
			rect.localScale = Vector3.one * scale;
		}

		public void SetPosition(Vector2 pos)
		{
			if (rect == null)
			{
				return;
			}

			rect.anchoredPosition = new Vector3(pos.x, pos.y, 0);
		}

		public void SetSize(Vector2 size)
		{
			if (m_MapLayout == null)
			{
				return;
			}

			if (size.x + 8 < m_MapLayout.minWidth)
			{
				size.x = m_MapLayout.minWidth - 8;
			}
			else if (size.x > 8192)
			{
				size.x = 8192;
			}

			if (size.x % 2 != 0)
			{
				size.x += 1;
			}

			m_MapLayout.preferredWidth = size.x + 8;
			m_MapLayout.preferredHeight = m_MapLayout.preferredWidth / 2 + 8;
		}

		public void SetLegends(bool isOn)
		{
			SetLegend(isOn);

			if (bigInterface.ResourceToggle)
			{
				SetResourceLegend();
			}
		}

		private void SetLegend(bool isOn)
		{
			if (m_LegendObject == null)
			{
				return;
			}

			if (bigInterface.LegendAvailable)
			{
				m_LegendObject.SetActive(isOn);
			}
			else
			{
				m_LegendObject.SetActive(false);
				return;
			}

			if (!isOn)
			{
				return;
			}

			if (m_LegendImage != null)
			{
				m_LegendImage.texture = bigInterface.LegendImage;
			}

			if (bigInterface.CurrentMapType == "Biome")
			{
				if (m_LegendLabelOne != null)
				{
					m_LegendLabelOne.gameObject.SetActive(false);
				}

				if (m_LegendLabelTwo != null)
				{
					m_LegendLabelTwo.gameObject.SetActive(false);
				}

				if (m_LegendLabelThree != null)
				{
					m_LegendLabelThree.gameObject.SetActive(false);
				}
			}
			else
			{
				IList labels = bigInterface.LegendLabels;

				if (labels == null || labels.Count != 3)
				{
					return;
				}

				if (m_LegendLabelOne != null)
				{
					m_LegendLabelOne.gameObject.SetActive(true);
					m_LegendLabelOne.OnTextUpdate.Invoke(labels[0]);
				}

				if (m_LegendLabelTwo != null)
				{
					m_LegendLabelTwo.gameObject.SetActive(true);
					m_LegendLabelTwo.OnTextUpdate.Invoke(labels[1]);
				}

				if (m_LegendLabelThree != null)
				{
					m_LegendLabelThree.gameObject.SetActive(true);
					m_LegendLabelThree.OnTextUpdate.Invoke(labels[2]);
				}
			}
		}

		public void SetResourceLegend()
		{
			if (m_ResourceLegendImage != null)
			{
				m_ResourceLegendImage.texture = bigInterface.ResourceLegendImage;
			}

			Vector2 res = bigInterface.ResourceLegendLabels;

			if (m_ResourceLegendLabelOne != null)
			{
				m_ResourceLegendLabelOne.OnTextUpdate.Invoke(res.x.ToString(res.x < 0.1 ? "P1" : "P0"));
			}

			if (m_ResourceLegendLabelTwo != null)
			{
				m_ResourceLegendLabelTwo.OnTextUpdate.Invoke(res.y.ToString(res.y < 0.1 ? "P1" : "P0"));
			}
		}

		private void SetFlagIcons(IList flags)
		{
			if (flags == null)
			{
				return;
			}

			if (bigInterface == null || m_MapLabelPrefab == null || m_MapImage == null)
			{
				return;
			}

			for (int i = 0; i < flags.Count; i++)
			{
				MapLabelInfo info = flags[i];

				createFlag(info);
			}
		}

		private void createFlag(MapLabelInfo info)
		{
			SCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent();

			if (mapLabel == null)
			{
				return;
			}

			mapLabel.transform.SetParent(m_MapImage.transform, false);

			mapLabel.Setup(info);

			flagLabels.Add(mapLabel);
		}

		private void SetAnomalyIcons(Dictionary anomalies)
		{
			if (anomalies == null)
			{
				return;
			}

			if (bigInterface == null || m_MapLabelPrefab == null || m_MapImage == null)
			{
				return;
			}

			for (int i = 0; i < anomalies.Count; i++)
			{
				string id = anomalies.ElementAt(i).Key;

				MapLabelInfo info;

				if (!anomalies.TryGetValue(id, out info))
				{
					continue;
				}

				createAnomaly(id, info);
			}
		}

		private void createAnomaly(string id, MapLabelInfo info)
		{
			SCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent();

			if (mapLabel == null)
			{
				return;
			}

			mapLabel.transform.SetParent(m_MapImage.transform, false);

			mapLabel.Setup(id, info);

			anomalyLabels.Add(mapLabel);
		}

		private void SetWaypointIcons(Dictionary waypoints)
		{
			if (waypoints == null)
			{
				return;
			}

			if (bigInterface == null || m_MapLabelPrefab == null || m_MapImage == null)
			{
				return;
			}

			for (int i = 0; i < waypoints.Count; i++)
			{
				int id = waypoints.ElementAt(i).Key;

				MapLabelInfo info;

				if (!waypoints.TryGetValue(id, out info))
				{
					continue;
				}

				createWaypoint(id, info);
			}
		}

		private SCAN_MapLabel createWaypoint(int id, MapLabelInfo info, bool temp = false)
		{
			SCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent();

			if (mapLabel == null)
			{
				return null;
			}

			mapLabel.transform.SetParent(m_MapImage.transform, false);

			mapLabel.Setup(id, info);

			if (!temp)
			{
				waypointLabels.Add(mapLabel);
			}

			return mapLabel;
		}

		private void SetVesselIcon(KeyValuePair vessel)
		{
			if (vessel.Value.label == "null")
			{
				return;
			}

			if (bigInterface == null || m_MapLabelPrefab == null || m_MapImage == null)
			{
				return;
			}

			SCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent();

			if (mapLabel == null)
			{
				return;
			}

			mapLabel.transform.SetParent(m_MapImage.transform, false);

			mapLabel.Setup(vessel.Key, vessel.Value);

			vesselLabel = mapLabel;
		}

		private void SetOrbitIcons(int count)
		{
			if (bigInterface == null || m_MapImage == null)
			{
				return;
			}

			for (int i = 0; i < count; i++)
			{
				SimpleLabelInfo info = bigInterface.OrbitInfo(i);

				CreateOrbitIcon(info);
			}
		}

		private void CreateOrbitIcon(SimpleLabelInfo info)
		{
			GameObject labelObj = new GameObject("SCAN_SimpleLabel");

			SCAN_SimpleLabel label = labelObj.AddComponent();

			if (label == null)
			{
				return;
			}

			label.transform.SetParent(m_MapImage.transform, false);

			label.Setup(info);

			orbitLabels.Add(label);
		}

		private void SetOrbitMapIcons(Dictionary orbitLabels)
		{
			if (orbitLabels == null)
			{
				return;
			}

			if (bigInterface == null || m_MapLabelPrefab == null || m_MapImage == null)
			{
				return;
			}

			for (int i = 0; i < orbitLabels.Count; i++)
			{
				string id = orbitLabels.ElementAt(i).Key;

				MapLabelInfo info;

				if (!orbitLabels.TryGetValue(id, out info))
				{
					continue;
				}

				CreateOrbitMapIcon(id, info);
			}
		}

		private void CreateOrbitMapIcon(string id, MapLabelInfo info)
		{
			SCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent();

			if (mapLabel == null)
			{
				return;
			}

			mapLabel.transform.SetParent(m_MapImage.transform, false);

			mapLabel.Setup(id, info);

			orbitIconLabels.Add(mapLabel);
		}

		private void ClearIcons()
		{
			for (int i = waypointLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel m = waypointLabels[i];

				m.gameObject.SetActive(false);
				Destroy(m.gameObject);
			}

			for (int i = anomalyLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel m = anomalyLabels[i];

				m.gameObject.SetActive(false);
				Destroy(m.gameObject);
			}

			for (int i = flagLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel m = flagLabels[i];

				m.gameObject.SetActive(false);
				Destroy(m.gameObject);
			}

			for (int i = orbitLabels.Count - 1; i >= 0; i--)
			{
				SCAN_SimpleLabel s = orbitLabels[i];

				s.gameObject.SetActive(false);
				Destroy(s.gameObject);
			}

			for (int i = orbitIconLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel m = orbitIconLabels[i];

				m.gameObject.SetActive(false);
				Destroy(m.gameObject);
			}

			if (vesselLabel != null)
			{
				vesselLabel.gameObject.SetActive(false);
				Destroy(vesselLabel.gameObject);
			}

			DestroyWaypoint(tempWaypointLabel);

			flagLabels.Clear();
			anomalyLabels.Clear();
			waypointLabels.Clear();
			orbitLabels.Clear();
			orbitIconLabels.Clear();
			vesselLabel = null;
		}

		public void RefreshIcons()
		{
			ClearIcons();

			SetIcons();
		}

		private void SetIcons()
		{
			if (bigInterface == null)
			{
				return;
			}

			if (bigInterface.FlagToggle)
			{
				SetFlagIcons(bigInterface.FlagInfoList);
			}

			if (bigInterface.AnomalyToggle)
			{
				SetAnomalyIcons(bigInterface.AnomalyInfoList);
			}

			if (bigInterface.WaypointToggle && bigInterface.ShowWaypoint)
			{
				SetWaypointIcons(bigInterface.WaypointInfoList);
			}

			if (bigInterface.OrbitToggle && bigInterface.ShowOrbit)
			{
				SetOrbitIcons(bigInterface.OrbitSteps);
				SetOrbitMapIcons(bigInterface.OrbitLabelList);
			}

			SetVesselIcon(bigInterface.VesselInfo);
		}

		public void OnEnterLoStatus(BaseEventData eventData)
		{
			if (_statusTooltip != null)
			{
				CloseStatusTooltip();
			}

			statusTooltipOn = true;
			statusTooltipType = 0;
			OpenStatusTooltip();
		}

		public void OnExitLoStatus(BaseEventData eventData)
		{
			statusTooltipOn = false;
			CloseStatusTooltip();
		}

		public void OnEnterHiStatus(BaseEventData eventData)
		{
			if (_statusTooltip != null)
			{
				CloseStatusTooltip();
			}

			statusTooltipOn = true;
			statusTooltipType = 1;
			OpenStatusTooltip();
		}

		public void OnExitHiStatus(BaseEventData eventData)
		{
			statusTooltipOn = false;
			CloseStatusTooltip();
		}

		public void OnEnterMultiStatus(BaseEventData eventData)
		{
			if (_statusTooltip != null)
			{
				CloseStatusTooltip();
			}

			statusTooltipOn = true;
			statusTooltipType = 2;
			OpenStatusTooltip();
		}

		public void OnExitMultiStatus(BaseEventData eventData)
		{
			statusTooltipOn = false;
			CloseStatusTooltip();
		}

		public void OnEnterLoVisStatus(BaseEventData eventData)
		{
			if (_statusTooltip != null)
			{
				CloseStatusTooltip();
			}

			statusTooltipOn = true;
			statusTooltipType = 3;
			OpenStatusTooltip();
		}

		public void OnExitLoVisStatus(BaseEventData eventData)
		{
			statusTooltipOn = false;
			CloseStatusTooltip();
		}

		public void OnEnterHiVisStatus(BaseEventData eventData)
		{
			if (_statusTooltip != null)
			{
				CloseStatusTooltip();
			}

			statusTooltipOn = true;
			statusTooltipType = 4;
			OpenStatusTooltip();
		}

		public void OnExitHiVisStatus(BaseEventData eventData)
		{
			statusTooltipOn = false;
			CloseStatusTooltip();
		}

		public void OnEnterAnomalyStatus(BaseEventData eventData)
		{
			if (_statusTooltip != null)
			{
				CloseStatusTooltip();
			}

			statusTooltipOn = true;
			statusTooltipType = 5;
			OpenStatusTooltip();
		}

		public void OnExitAnomalyStatus(BaseEventData eventData)
		{
			statusTooltipOn = false;
			CloseStatusTooltip();
		}

		public void OnEnterLoResStatus(BaseEventData eventData)
		{
			if (_statusTooltip != null)
			{
				CloseStatusTooltip();
			}

			statusTooltipOn = true;
			statusTooltipType = 6;
			OpenStatusTooltip();
		}

		public void OnExitLoResStatus(BaseEventData eventData)
		{
			statusTooltipOn = false;
			CloseStatusTooltip();
		}

		public void OnEnterHiResStatus(BaseEventData eventData)
		{
			if (_statusTooltip != null)
			{
				CloseStatusTooltip();
			}

			statusTooltipOn = true;
			statusTooltipType = 7;
			OpenStatusTooltip();
		}

		public void OnExitHiResStatus(BaseEventData eventData)
		{
			statusTooltipOn = false;
			CloseStatusTooltip();
		}

		private void OpenStatusTooltip()
		{
			if (m_TooltipPrefab == null || bigInterface.TooltipCanvas == null)
			{
				return;
			}

			_statusTooltip = Instantiate(m_TooltipPrefab).GetComponent();

			if (_statusTooltip == null)
			{
				return;
			}

			_statusTooltip.transform.SetParent(bigInterface.TooltipCanvas.transform, false);
			_statusTooltip.transform.SetAsLastSibling();

			_statusTooltip.Setup(bigInterface.TooltipCanvas, "_", bigInterface.Scale);
		}

		private void CloseStatusTooltip()
		{
			if (_statusTooltip == null)
			{
				return;
			}

			_statusTooltip.gameObject.SetActive(false);
			Destroy(_statusTooltip.gameObject);
			_statusTooltip = null;
		}

		public void OnEnterLegend(BaseEventData eventData)
		{
			if (bigInterface == null || !bigInterface.LegendToggle || !bigInterface.LegendTooltips)
			{
				return;
			}

			if (_tooltip != null)
			{
				CloseTooltip();
			}

			tooltipOn = true;
			OpenTooltip();
		}

		public void OnExitLegend(BaseEventData eventData)
		{
			if (bigInterface == null || !bigInterface.LegendToggle || !bigInterface.LegendTooltips)
			{
				return;
			}

			tooltipOn = false;
			CloseTooltip();
		}

		private void OpenTooltip()
		{
			if (m_TooltipPrefab == null || bigInterface.TooltipCanvas == null)
			{
				return;
			}

			_tooltip = Instantiate(m_TooltipPrefab).GetComponent();

			if (_tooltip == null)
			{
				return;
			}

			_tooltip.transform.SetParent(bigInterface.TooltipCanvas.transform, false);
			_tooltip.transform.SetAsLastSibling();

			_tooltip.Setup(bigInterface.TooltipCanvas, "_", bigInterface.Scale);
		}

		private void CloseTooltip()
		{
			if (_tooltip == null)
			{
				return;
			}

			_tooltip.gameObject.SetActive(false);
			Destroy(_tooltip.gameObject);
			_tooltip = null;
		}

		public void OnEnterMap(BaseEventData eventData)
		{
			inMap = true;
		}

		public void OnExitMap(BaseEventData eventData)
		{
			inMap = false;

			if (m_ReadoutText != null)
			{
				m_ReadoutText.OnTextUpdate.Invoke("");
			}
		}

		public void OnBeginDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			mouseStart = eventData.position;
			windowStart = rect.position;
		}

		public void OnDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			rect.position = windowStart + (Vector3)(eventData.position - mouseStart);
		}

		public void OnEndDrag(PointerEventData eventData)
		{
			if (rect == null || bigInterface == null)
			{
				return;
			}

			bigInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);
		}

		public void OnStartResize(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData))
			{
				return;
			}

			ClearIcons();
		}

		public void OnResize(BaseEventData eventData)
		{
			if (m_MapLayout == null)
			{
				return;
			}

			if (!(eventData is PointerEventData))
			{
				return;
			}

			m_MapLayout.preferredWidth += ((PointerEventData)eventData).delta.x;

			if (m_MapLayout.preferredWidth < m_MapLayout.minWidth)
			{
				m_MapLayout.preferredWidth = m_MapLayout.minWidth;
			}
			else if (m_MapLayout.preferredWidth > MAXMAPWIDTH)
			{
				m_MapLayout.preferredWidth = MAXMAPWIDTH;
			}

			if (m_MapLayout.preferredWidth % 2 != 0)
			{
				m_MapLayout.preferredWidth += 1;
			}

			m_MapLayout.preferredHeight = m_MapLayout.preferredWidth / 2;
		}

		public void OnEndResize(BaseEventData eventData)
		{
			if (m_MapLayout == null || bigInterface == null)
			{
				return;
			}

			bigInterface.Size = new Vector2(m_MapLayout.preferredWidth - 8, m_MapLayout.preferredHeight - 8);

			SetIcons();
		}

		public void OnPointerDown(PointerEventData eventData)
		{
			transform.SetAsLastSibling();

			if (dropDown == null)
			{
				return;
			}

			RectTransform r = dropDown.GetComponent();

			if (r == null)
			{
				return;
			}

			if (RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))
			{
				return;
			}

			dropDown.FadeOut();
			dropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}
		}

		public void OnClickMap(BaseEventData eventData)
		{
			if (!inMap || bigInterface == null || m_MapImage == null || !(eventData is PointerEventData))
			{
				return;
			}

			OnPointerDown((PointerEventData)eventData);

			Vector2 pos;

			RectTransformUtility.ScreenPointToLocalPointInRectangle(m_MapImage.rectTransform, Input.mousePosition, bigInterface.MainCanvas.worldCamera, out pos);

			if (waypointSelecting)
			{
				DestroyWaypoint(tempWaypointLabel);

				SetWaypoint(pos);
			}
			else if (((PointerEventData)eventData).button == PointerEventData.InputButton.Right)
			{
				bigInterface.ClickMap(pos);
			}
		}

		private void SetWaypoint(Vector2 p)
		{
			Vector2 mapPos = new Vector2(p.x, p.y + bigInterface.Size.y);

			MapLabelInfo info = new MapLabelInfo()
			{
				label = "",
				image = bigInterface.WaypointSprite,
				pos = mapPos,
				baseColor = Color.white,
				flash = false,
				width = 20,
				alignBottom = 10,
				show = true
			};

			tempWaypointLabel = createWaypoint(0, info, true);
		}

		public void UpdateTitle(string text)
		{
			if (m_Title == null)
			{
				return;
			}

			m_Title.OnTextUpdate.Invoke(text);
		}

		public void UpdateMapTexture(Texture2D map)
		{
			if (m_MapImage == null)
			{
				return;
			}

			m_MapImage.texture = map;
		}

		public void UpdateGridTexture(Texture2D grid)
		{
			if (m_GridMap == null)
			{
				return;
			}

			m_GridMap.texture = grid;
		}

		public void UpdateEQMapTexture(Texture2D eq)
		{
			if (m_EQMap != null)
			{
				m_EQMap.texture = eq;
			}
		}

		public void ToggleProjectionSelection(bool isOn)
		{
			if (dropDown != null)
			{
				dropDown.FadeOut(true);
				dropDown = null;
			}

			if (!isOn)
			{
				return;
			}

			if (bigInterface == null || m_DropDownPrefab == null || m_Projection == null)
			{
				return;
			}

			dropDown = Instantiate(m_DropDownPrefab).GetComponent();

			if (dropDown == null)
			{
				return;
			}

			dropDown.transform.SetParent(m_Projection, false);

			dropDown.Setup(bigInterface.Projections, bigInterface.CurrentProjection);

			dropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction(SetProjection));
		}

		private void SetProjection(string selection)
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.CurrentProjection = selection;

			dropDown.FadeOut();
			dropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}

			RefreshIcons();

			SetNorthSouth();
		}

		public void ToggleTypeSelection(bool isOn)
		{
			if (dropDown != null)
			{
				dropDown.FadeOut(true);
				dropDown = null;
			}

			if (!isOn)
			{
				return;
			}

			if (bigInterface == null || m_DropDownPrefab == null || m_MapType == null)
			{
				return;
			}

			dropDown = Instantiate(m_DropDownPrefab).GetComponent();

			if (dropDown == null)
			{
				return;
			}

			dropDown.transform.SetParent(m_MapType, false);

			dropDown.Setup(bigInterface.MapTypes, bigInterface.CurrentMapType);

			dropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction(SetType));
		}

		private void SetType(string selection)
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.CurrentMapType = selection;

			dropDown.FadeOut();
			dropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}

			RefreshIcons();

			SetLegend(bigInterface.LegendToggle);
		}

		public void ToggleResourceSelection(bool isOn)
		{
			if (dropDown != null)
			{
				dropDown.FadeOut(true);
				dropDown = null;
			}

			if (!isOn)
			{
				return;
			}

			if (bigInterface == null || m_DropDownPrefab == null || m_Resources == null)
			{
				return;
			}

			dropDown = Instantiate(m_DropDownPrefab).GetComponent();

			if (dropDown == null)
			{
				return;
			}

			dropDown.transform.SetParent(m_Resources, false);

			dropDown.Setup(bigInterface.Resources, bigInterface.CurrentResource);

			dropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction(SetResource));
		}

		private void SetResource(string selection)
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.CurrentResource = selection;

			loaded = false;
			if (m_ResourcesToggle != null)
			{
				m_ResourcesToggle.isOn = true;
			}

			loaded = true;

			bigInterface.ResourceToggle = true;

			SetResourceLegend();

			dropDown.FadeOut();
			dropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}
		}

		public void ToggleCelestialBodySelection(bool isOn)
		{
			if (dropDown != null)
			{
				dropDown.FadeOut(true);
				dropDown = null;
			}

			if (!isOn)
			{
				return;
			}

			if (bigInterface == null || m_DropDownPrefab == null || m_CelestialBody == null)
			{
				return;
			}

			dropDown = Instantiate(m_DropDownPrefab).GetComponent();

			if (dropDown == null)
			{
				return;
			}

			dropDown.transform.SetParent(m_CelestialBody, false);

			dropDown.Setup(bigInterface.CelestialBodies, bigInterface.CurrentCelestialBody);

			dropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction(SetCelestialBody));
		}

		private void SetCelestialBody(string selection)
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.CurrentCelestialBody = selection;

			SetLegend(bigInterface.LegendToggle);

			if (bigInterface.ResourceToggle)
			{
				SetResourceLegend();
			}

			dropDown.FadeOut();
			dropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}

			RefreshIcons();
		}

		public void RefreshMap()
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.RefreshMap();

			RefreshIcons();
		}

		public void ToggleColor(bool isOn)
		{
			if (!loaded || bigInterface == null)
			{
				return;
			}

			bigInterface.ColorToggle = isOn;

			RefreshIcons();

			SetLegend(bigInterface.LegendToggle);
		}

		public void ToggleTerminator(bool isOn)
		{
			if (!loaded || bigInterface == null)
			{
				return;
			}

			bigInterface.TerminatorToggle = isOn;

			RefreshIcons();
		}

		public void ToggleGrid(bool isOn)
		{
			if (!loaded || bigInterface == null)
			{
				return;
			}

			bigInterface.GridToggle = isOn;
		}

		public void ToggleOrbit(bool isOn)
		{
			if (!loaded || bigInterface == null)
			{
				return;
			}

			bigInterface.OrbitToggle = isOn;

			RefreshIcons();
		}

		public void ToggleWaypoint(bool isOn)
		{
			if (!loaded || bigInterface == null)
			{
				return;
			}

			bigInterface.WaypointToggle = isOn;

			if (isOn && bigInterface.ShowWaypoint)
			{
				SetWaypointIcons(bigInterface.WaypointInfoList);
			}
			else
			{
				for (int i = waypointLabels.Count - 1; i >= 0; i--)
				{
					SCAN_MapLabel m = waypointLabels[i];

					m.gameObject.SetActive(false);
					Destroy(m.gameObject);
				}

				waypointLabels.Clear();
			}
		}

		public void ToggleAnomaly(bool isOn)
		{
			if (!loaded || bigInterface == null)
			{
				return;
			}

			bigInterface.AnomalyToggle = isOn;

			if (isOn)
			{
				SetAnomalyIcons(bigInterface.AnomalyInfoList);
			}
			else
			{
				for (int i = anomalyLabels.Count - 1; i >= 0; i--)
				{
					SCAN_MapLabel m = anomalyLabels[i];

					m.gameObject.SetActive(false);
					Destroy(m.gameObject);
				}

				anomalyLabels.Clear();
			}
		}

		public void ToggleFlag(bool isOn)
		{
			if (!loaded || bigInterface == null)
			{
				return;
			}

			bigInterface.FlagToggle = isOn;

			if (isOn)
			{
				SetFlagIcons(bigInterface.FlagInfoList);
			}
			else
			{
				for (int i = flagLabels.Count - 1; i >= 0; i--)
				{
					SCAN_MapLabel m = flagLabels[i];

					m.gameObject.SetActive(false);
					Destroy(m.gameObject);
				}

				flagLabels.Clear();
			}
		}

		public void ToggleLegend(bool isOn)
		{
			if (!loaded || bigInterface == null)
			{
				return;
			}

			bigInterface.LegendToggle = isOn;

			SetLegend(isOn);
		}

		public void ToggleResource(bool isOn)
		{
			if (!loaded || bigInterface == null)
			{
				return;
			}

			bigInterface.ResourceToggle = isOn;

			if (m_ResourceBar != null)
			{
				m_ResourceBar.SetActive(isOn);
			}

			RefreshIcons();

			if (isOn)
			{
				SetResourceLegend();
			}
		}

		public void ResourceCutoffMinus()
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.DecreaseResourceCutoff();

			SetResourceLegend();
		}

		public void ResourceCutoffPlus()
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.IncreaseResourceCutoff();

			SetResourceLegend();
		}

		public void OpenResourceSettings()
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.OpenResourceSettings();
		}

		public void OpenSmallMap()
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.OpenMainMap();
		}

		public void OpenInstruments()
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.OpenInstruments();
		}

		public void OpenSettings()
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.OpenSettings();
		}

		public void OpenZoomMap()
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.OpenZoomMap();
		}

		public void OpenOverlay()
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.OpenOverlay();
		}

		public void ExportMap()
		{
			if (bigInterface == null)
			{
				return;
			}

			bigInterface.ExportMap();
		}

		public void GenerateWaypoint()
		{
			waypointSelecting = !waypointSelecting;

			DestroyWaypoint(tempWaypointLabel);
			DestroyWaypoint(hoverWaypointLabel);

			if (bigInterface == null)
			{
				return;
			}

			bigInterface.LockInput = false;

			if (m_WaypointBar != null)
			{
				m_WaypointBar.SetActive(waypointSelecting);
			}

			if (waypointSelecting)
			{
				HoverWaypoint();

				if (m_MechJebButton != null)
				{
					m_MechJebButton.SetActive(bigInterface.MechJebAvailable);
				}

				if (m_WaypointInput != null)
				{
					if (string.IsNullOrEmpty(waypoint))
					{
						m_WaypointInput.OnTextUpdate.Invoke(bigInterface.RandomWaypoint);
					}
					else
					{
						m_WaypointInput.OnTextUpdate.Invoke(waypoint);
					}
				}
			}
		}

		private void HoverWaypoint()
		{
			MapLabelInfo info = new MapLabelInfo()
			{
				label = "",
				image = bigInterface.WaypointSprite,
				pos = new Vector2(),
				baseColor = Color.white,
				flashColor = Color.red,
				flash = true,
				width = 20,
				alignBottom = 10,
				show = false
			};

			hoverWaypointLabel = createWaypoint(0, info, true);
		}

		public void OnInputClick(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData) || bigInterface == null)
			{
				return;
			}

			if (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)
			{
				return;
			}

			bigInterface.LockInput = true;
		}

		public void RefreshWaypoint()
		{
			DestroyWaypoint(tempWaypointLabel);

			if (bigInterface == null || m_WaypointInput == null)
			{
				return;
			}

			m_WaypointInput.OnTextUpdate.Invoke(bigInterface.RandomWaypoint);

			waypoint = "";
		}

		public void SetWaypoint()
		{
			if (bigInterface == null || m_WaypointInput == null)
			{
				return;
			}

			bigInterface.LockInput = false;

			waypoint = "";

			if (tempWaypointLabel != null)
			{
				bigInterface.SetWaypoint(m_WaypointInput.Text, tempWaypointLabel.Info.pos);
			}

			GenerateWaypoint();

			RefreshIcons();

			waypointSelecting = false;
		}

		public void CancelWaypoint()
		{
			if (bigInterface != null)
			{
				bigInterface.LockInput = false;
			}

			GenerateWaypoint();

			RefreshIcons();

			waypointSelecting = false;
		}

		public void MechJebLanding()
		{
			if (bigInterface != null)
			{
				bigInterface.LockInput = false;
			}

			waypoint = "";

			if (tempWaypointLabel != null)
			{
				bigInterface.SetMJWaypoint(tempWaypointLabel.Info.pos);
			}

			GenerateWaypoint();

			RefreshIcons();

			waypointSelecting = false;
		}

		private void DestroyWaypoint(SCAN_MapLabel waypoint)
		{
			if (waypoint != null)
			{
				waypoint.gameObject.SetActive(false);
				Destroy(waypoint.gameObject);
				waypoint = null;
			}
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_ColorAltimetry.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_ColorAltimetry - Script for controlling the altimetry color management UI
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_ColorAltimetry : SettingsPage
	{
		[SerializeField]
		private ToggleGroup m_DropDownToggles = null;
		[SerializeField]
		private GameObject m_PalettePrefab = null;
		[SerializeField]
		private Transform m_PaletteGrid = null;
		[SerializeField]
		private Transform m_PaletteSelection = null;
		[SerializeField]
		private TextHandler m_PaletteName = null;
		[SerializeField]
		private RawImage m_PaletteOld = null;
		[SerializeField]
		private RawImage m_PalettePreview = null;
		[SerializeField]
		private Transform m_PlanetSelection = null;
		[SerializeField]
		private TextHandler m_PlanetName = null;
		[SerializeField]
		private Slider m_MinSlider = null;
		[SerializeField]
		private Slider m_MaxSlider = null;
		[SerializeField]
		private Slider m_ClampSlider = null;
		[SerializeField]
		private Slider m_SizeSlider = null;
		[SerializeField]
		private GameObject m_ClampObject = null;
		[SerializeField]
		private GameObject m_SizeObject = null;
		[SerializeField]
		private TextHandler m_MinSliderLabelOne = null;
		[SerializeField]
		private TextHandler m_MinSliderLabelTwo = null;
		[SerializeField]
		private TextHandler m_MaxSliderLabelOne = null;
		[SerializeField]
		private TextHandler m_MaxSliderLabelTwo = null;
		[SerializeField]
		private TextHandler m_ClampSliderLabelOne = null;
		[SerializeField]
		private TextHandler m_ClampSliderLabelTwo = null;
		[SerializeField]
		private TextHandler m_SizeSliderLabelOne = null;
		[SerializeField]
		private TextHandler m_SizeSliderLabelTwo = null;
		[SerializeField]
		private TextHandler m_MinText = null;
		[SerializeField]
		private TextHandler m_MaxText = null;
		[SerializeField]
		private TextHandler m_ClampText = null;
		[SerializeField]
		private TextHandler m_SizeText = null;
		[SerializeField]
		private InputHandler m_MinInputField = null;
		[SerializeField]
		private InputHandler m_MaxInputField = null;
		[SerializeField]
		private InputHandler m_ClampInputField = null;
		[SerializeField]
		private Toggle m_ClampToggle = null;
		[SerializeField]
		private Toggle m_ReverseToggle = null;
		[SerializeField]
		private Toggle m_DiscreteToggle = null;

		private bool loaded;

		private ISCAN_Color colorInterface;
		private ISCAN_Settings settingsInterface;

		private List paletteButtons = new List();

		private void Awake()
		{
			if (m_MinInputField != null)
			{
				m_MinInputField.OnValueChange.AddListener(new UnityAction(OnMinInputChange));
			}

			if (m_MaxInputField != null)
			{
				m_MaxInputField.OnValueChange.AddListener(new UnityAction(OnMaxInputChange));
			}

			if (m_ClampInputField != null)
			{
				m_ClampInputField.OnValueChange.AddListener(new UnityAction(OnClampInputChange));
			}
		}

		private void Update()
		{
			if (settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				if (m_MinInputField != null && !m_MinInputField.IsFocused
					&& m_MaxInputField != null && !m_MaxInputField.IsFocused
					&& m_ClampInputField != null && !m_ClampInputField.IsFocused)
				{
					settingsInterface.LockInput = false;
				}
			}
		}

		public void SetTerrain(ISCAN_Color color, ISCAN_Settings settings)
		{
			if (color == null || settings == null)
			{
				return;
			}

			colorInterface = color;
			settingsInterface = settings;

			color.Refresh();

			SetUI();
		}

		private void SetUI()
		{
			if (colorInterface == null)
			{
				return;
			}

			SetMinSlider();

			SetMaxSlider();

			if (m_MinSlider != null)
			{
				m_MinSlider.value = colorInterface.TerrainCurrentMin;
			}

			if (m_MaxSlider != null)
			{
				m_MaxSlider.value = colorInterface.TerrainCurrentMax;
			}

			if (colorInterface.TerrainClampOn && m_ClampSlider != null)
			{
				m_ClampSlider.value = colorInterface.TerrainClamp;
			}

			if (m_ClampToggle != null)
			{
				m_ClampToggle.isOn = colorInterface.TerrainClampOn;
			}

			if (m_ReverseToggle != null)
			{
				m_ReverseToggle.isOn = colorInterface.TerrainReverse;
			}

			if (m_DiscreteToggle != null)
			{
				m_DiscreteToggle.isOn = colorInterface.TerrainDiscrete;
			}

			if (m_PaletteName != null)
			{
				m_PaletteName.OnTextUpdate.Invoke(colorInterface.TerrainPaletteStyle);
			}

			if (m_PlanetName != null)
			{
				m_PlanetName.OnTextUpdate.Invoke(colorInterface.TerrainPlanet);
			}

			if (m_PaletteName != null)
			{
				m_PaletteName.OnTextUpdate.Invoke(colorInterface.TerrainPaletteStyle);
			}

			CreatePalettes(colorInterface.TerrainPalettes);

			SetPalettePreviews();

			SetSizeSlider();

			loaded = true;
		}

		public void OnInputClick(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData) || settingsInterface == null)
			{
				return;
			}

			if (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)
			{
				return;
			}

			settingsInterface.LockInput = true;
		}

		public override void OnPointerDown(PointerEventData eventData)
		{
			if (SCAN_Settings.Instance == null)
			{
				return;
			}

			if (SCAN_Settings.Instance.DropDown != null)
			{
				RectTransform r = SCAN_Settings.Instance.DropDown.GetComponent();

				if (r != null)
				{
					if (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))
					{
						SCAN_Settings.Instance.DropDown.FadeOut();
						SCAN_Settings.Instance.DropDown = null;

						if (m_DropDownToggles != null)
						{
							m_DropDownToggles.SetAllTogglesOff();
						}
					}
				}
			}

			if (SCAN_Settings.Instance.WarningPopup != null)
			{
				RectTransform r = SCAN_Settings.Instance.WarningPopup.GetComponent();

				if (r != null)
				{
					if (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))
					{
						SCAN_Settings.Instance.WarningPopup.FadeOut();
						SCAN_Settings.Instance.WarningPopup = null;
					}
				}
			}
		}

		public void PaletteStyleDropDown(bool isOn)
		{
			if (SCAN_Settings.Instance.DropDown != null)
			{
				SCAN_Settings.Instance.DropDown.FadeOut(true);
				SCAN_Settings.Instance.DropDown = null;
			}

			if (!isOn)
			{
				return;
			}

			if (m_PaletteSelection == null || SCAN_Settings.Instance.DropDownPrefab == null || colorInterface == null)
			{
				return;
			}

			SCAN_Settings.Instance.DropDown = Instantiate(SCAN_Settings.Instance.DropDownPrefab).GetComponent();

			if (SCAN_Settings.Instance.DropDown == null)
			{
				return;
			}

			SCAN_Settings.Instance.DropDown.transform.SetParent(m_PaletteSelection, false);

			SCAN_Settings.Instance.DropDown.Setup(colorInterface.PaletteStyleNames, colorInterface.TerrainPaletteStyle);

			SCAN_Settings.Instance.DropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction(PaletteStyle));
		}

		public void PaletteStyle(string style)
		{
			if (m_PaletteName != null)
			{
				m_PaletteName.OnTextUpdate.Invoke(style);
			}

			SCAN_Settings.Instance.DropDown.FadeOut(true);
			SCAN_Settings.Instance.DropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}

			if (colorInterface == null)
			{
				return;
			}

			colorInterface.TerrainPaletteStyle = style;

			ClearPalettes();

			CreatePalettes(colorInterface.TerrainPalettes);

			SetPalettePreviews();

			SetSizeSlider();
		}

		private void ClearPalettes()
		{
			for (int i = paletteButtons.Count - 1; i >= 0; i--)
			{
				SCAN_PaletteButton button = paletteButtons[i];

				button.gameObject.SetActive(false);
				DestroyImmediate(button.gameObject);
			}

			paletteButtons.Clear();
		}

		private void CreatePalettes(IList> palettes)
		{
			if (colorInterface == null || m_PaletteGrid == null || m_PalettePrefab == null || palettes == null)
			{
				return;
			}

			for (int i = 0; i < palettes.Count; i++)
			{
				KeyValuePair palette = palettes[i];

				CreatePalette(palette);
			}
		}

		private void CreatePalette(KeyValuePair palette)
		{
			SCAN_PaletteButton button = Instantiate(m_PalettePrefab).GetComponent();

			if (button == null)
			{
				return;
			}

			button.transform.SetParent(m_PaletteGrid, false);

			button.setup(palette.Value, palette.Key, this);

			paletteButtons.Add(button);
		}

		public void SetPalette(string palette)
		{
			if (string.IsNullOrEmpty(palette) || colorInterface == null)
			{
				return;
			}

			colorInterface.TerrainPalette = palette;

			SetPalettePreviews();

			SetSizeSlider();
		}

		private void SetPalettePreviews()
		{
			if (colorInterface == null)
			{
				return;
			}

			if (m_PaletteOld != null)
			{
				m_PaletteOld.texture = colorInterface.TerrainPaletteOld;
			}

			if (m_PalettePreview != null)
			{
				m_PalettePreview.texture = colorInterface.TerrainPaletteNew;
			}
		}

		public void PlanetDropDown(bool isOn)
		{
			if (SCAN_Settings.Instance.DropDown != null)
			{
				SCAN_Settings.Instance.DropDown.FadeOut(true);
				SCAN_Settings.Instance.DropDown = null;
			}

			if (!isOn)
			{
				return;
			}

			if (m_PlanetSelection == null || SCAN_Settings.Instance.DropDownPrefab == null || colorInterface == null)
			{
				return;
			}

			SCAN_Settings.Instance.DropDown = Instantiate(SCAN_Settings.Instance.DropDownPrefab).GetComponent();

			if (SCAN_Settings.Instance.DropDown == null)
			{
				return;
			}

			SCAN_Settings.Instance.DropDown.transform.SetParent(m_PlanetSelection, false);

			SCAN_Settings.Instance.DropDown.Setup(colorInterface.CelestialBodies, colorInterface.TerrainPlanet);

			SCAN_Settings.Instance.DropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction(Planet));
		}

		public void Planet(string planet)
		{
			SCAN_Settings.Instance.DropDown.FadeOut(true);
			SCAN_Settings.Instance.DropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}

			if (colorInterface == null)
			{
				return;
			}

			colorInterface.TerrainPlanet = planet;

			loaded = false;

			ClearPalettes();

			SetUI();
		}

		public void OnMinChange(float value)
		{
			if (colorInterface == null)
			{
				return;
			}

			float max = (((int)(colorInterface.TerrainCurrentMax * 100)) / 100) - 200;

			if (value > max)
			{
				value = max;
			}
			else if (value < colorInterface.TerrainGlobalMin)
			{
				value = colorInterface.TerrainGlobalMin;
			}

			colorInterface.TerrainCurrentMin = value;

			SetMaxSlider();

			if (m_MinText != null)
			{
				m_MinText.OnTextUpdate.Invoke(string.Format("Min: {0}m", value.ToString("N0")));
			}

			if (colorInterface.TerrainClampOn)
			{
				SetClamp();
			}
		}

		public void OnMinInputChange(string input)
		{
			if (m_MinSlider == null)
			{
				return;
			}

			float min = SCAN_ColorControl.ParseInput(input, m_MinSlider.value, m_MinSlider.minValue, m_MinSlider.maxValue, 0);

			if (min != m_MinSlider.value)
			{
				m_MinSlider.value = min;
			}
		}

		public void OnMaxChange(float value)
		{
			if (colorInterface == null)
			{
				return;
			}

			float min = (((int)(colorInterface.TerrainCurrentMin * 100)) / 100) + 200;

			if (value < min)
			{
				value = min;
			}
			else if (value > colorInterface.TerrainGlobalMax)
			{
				value = colorInterface.TerrainGlobalMax;
			}

			colorInterface.TerrainCurrentMax = value;

			SetMinSlider();

			if (m_MaxText != null)
			{
				m_MaxText.OnTextUpdate.Invoke(string.Format("Max: {0}m", value.ToString("N0")));
			}

			if (colorInterface.TerrainClampOn)
			{
				SetClamp();
			}
		}

		public void OnMaxInputChange(string input)
		{
			if (m_MaxSlider == null)
			{
				return;
			}

			float max = SCAN_ColorControl.ParseInput(input, m_MaxSlider.value, m_MaxSlider.minValue, m_MaxSlider.maxValue, 0);

			if (max != m_MaxSlider.value)
			{
				m_MaxSlider.value = max;
			}
		}

		public void OnClampChange(float value)
		{
			if (colorInterface == null)
			{
				return;
			}

			if (m_ClampText != null)
			{
				m_ClampText.OnTextUpdate.Invoke(string.Format("Clamp: {0}m", value.ToString("N0")));
			}

			if (!loaded)
			{
				return;
			}

			colorInterface.TerrainClamp = value;
		}

		public void OnClampInputChange(string input)
		{
			if (m_ClampSlider == null)
			{
				return;
			}

			float clamp = SCAN_ColorControl.ParseInput(input, m_ClampSlider.value, m_ClampSlider.minValue, m_ClampSlider.maxValue, 0);

			if (clamp != m_ClampSlider.value)
			{
				m_ClampSlider.value = clamp;
			}
		}

		public void ClampToggle(bool isOn)
		{
			if (m_ClampObject != null)
			{
				m_ClampObject.SetActive(isOn);
			}

			if (isOn)
			{
				SetClamp();
			}

			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.TerrainClampOn = isOn;

			SetPalettePreviews();
		}

		private void SetMinSlider()
		{
			if (colorInterface == null || m_MinSlider == null)
			{
				return;
			}

			float min = (((int)(colorInterface.TerrainGlobalMin * 100)) / 100);

			float max = (((int)(colorInterface.TerrainCurrentMax * 100)) / 100) - 200;

			m_MinSlider.minValue = min;
			m_MinSlider.maxValue = max;

			if (m_MinSliderLabelOne != null)
			{
				m_MinSliderLabelOne.OnTextUpdate.Invoke(string.Format("|\n{0}m", min.ToString("N0")));
			}

			if (m_MinSliderLabelTwo != null)
			{
				m_MinSliderLabelTwo.OnTextUpdate.Invoke(string.Format("|\n{0}m", max.ToString("N0")));
			}
		}

		private void SetMaxSlider()
		{
			if (colorInterface == null || m_MaxSlider == null)
			{
				return;
			}

			float min = (((int)(colorInterface.TerrainCurrentMin * 100)) / 100) + 200;

			float max = (((int)(colorInterface.TerrainGlobalMax * 100)) / 100);

			m_MaxSlider.minValue = min;
			m_MaxSlider.maxValue = max;

			if (m_MaxSliderLabelOne != null)
			{
				m_MaxSliderLabelOne.OnTextUpdate.Invoke(string.Format("|\n{0}m", min.ToString("N0")));
			}

			if (m_MaxSliderLabelTwo != null)
			{
				m_MaxSliderLabelTwo.OnTextUpdate.Invoke(string.Format("|\n{0}m", max.ToString("N0")));
			}
		}

		private void SetClamp()
		{
			if (colorInterface == null || m_ClampSlider == null)
			{
				return;
			}

			float min = (((int)(colorInterface.TerrainCurrentMin * 100)) / 100) + 100;

			float max = (((int)(colorInterface.TerrainCurrentMax * 100)) / 100) - 100;

			m_ClampSlider.minValue = min;
			m_ClampSlider.maxValue = max;

			if (m_ClampSliderLabelOne != null)
			{
				m_ClampSliderLabelOne.OnTextUpdate.Invoke(string.Format("|\n{0}m", min.ToString("N0")));
			}

			if (m_ClampSliderLabelTwo != null)
			{
				m_ClampSliderLabelTwo.OnTextUpdate.Invoke(string.Format("|\n{0}m", max.ToString("N0")));
			}

			float clamp = colorInterface.TerrainClamp;

			if (clamp <= min)
			{
				clamp = min;
			}
			else if (clamp >= max)
			{
				clamp = max;
			}

			m_ClampSlider.value = clamp;
		}

		private void SetSizeSlider()
		{
			if (colorInterface == null || m_SizeSlider == null)
			{
				return;
			}

			if (m_SizeObject != null)
			{
				m_SizeObject.SetActive(colorInterface.TerrainHasSize);
			}

			if (!colorInterface.TerrainHasSize)
			{
				return;
			}

			int min = colorInterface.TerrainSizeMin;
			int max = colorInterface.TerrainSizeMax;

			m_SizeSlider.minValue = min;
			m_SizeSlider.maxValue = max;

			if (m_SizeSliderLabelOne != null)
			{
				m_SizeSliderLabelOne.OnTextUpdate.Invoke(string.Format("|\n{0}", min));
			}

			if (m_SizeSliderLabelTwo != null)
			{
				m_SizeSliderLabelTwo.OnTextUpdate.Invoke(string.Format("|\n{0}", max));
			}

			int size = colorInterface.TerrainSize;

			if (size < min)
			{
				size = min;
			}
			else if (size > max)
			{
				size = max;
			}

			m_SizeSlider.value = size;
		}

		public void OnSizeChange(float value)
		{
			if (m_SizeText != null)
			{
				m_SizeText.OnTextUpdate.Invoke(string.Format("Size: {0}", ((int)value).ToString()));
			}

			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.TerrainSize = (int)value;

			ClearPalettes();

			CreatePalettes(colorInterface.TerrainPalettes);

			SetPalettePreviews();

			SetSizeSlider();
		}

		public void ReverseToggle(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.TerrainReverse = isOn;

			SetPalettePreviews();
		}

		public void DiscreteToggle(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.TerrainDiscrete = isOn;

			SetPalettePreviews();
		}

		public void Apply()
		{
			if (colorInterface == null)
			{
				return;
			}

			if (settingsInterface != null)
			{
				settingsInterface.LockInput = false;
			}

			colorInterface.TerrainApply();

			SetPalettePreviews();
		}

		public void Default()
		{
			if (colorInterface == null)
			{
				return;
			}

			if (settingsInterface != null)
			{
				settingsInterface.LockInput = false;
			}

			colorInterface.TerrainDefault();

			loaded = false;

			ClearPalettes();

			SetUI();
		}

		public void SaveToConfig()
		{
			if (SCAN_Settings.Instance == null)
			{
				return;
			}

			if (SCAN_Settings.Instance.WarningPopup != null)
			{
				SCAN_Settings.Instance.WarningPopup.FadeOut(true);
				SCAN_Settings.Instance.WarningPopup = null;
			}

			if (SCAN_Settings.Instance.PopupPrefab == null)
			{
				return;
			}

			SCAN_Settings.Instance.WarningPopup = Instantiate(SCAN_Settings.Instance.PopupPrefab).GetComponent();

			if (SCAN_Settings.Instance.WarningPopup == null)
			{
				return;
			}

			SCAN_Settings.Instance.WarningPopup.transform.SetParent(transform, false);

			SCAN_Settings.Instance.WarningPopup.Setup(settingsInterface.SaveToConfig);

			SCAN_Settings.Instance.WarningPopup.OnSelectUpdate.AddListener(ConfirmSaveToConfig);
		}

		private void ConfirmSaveToConfig()
		{
			SCAN_Settings.Instance.WarningPopup.FadeOut(true);
			SCAN_Settings.Instance.WarningPopup = null;

			if (colorInterface == null)
			{
				return;
			}

			if (settingsInterface != null)
			{
				settingsInterface.LockInput = false;
			}

			colorInterface.TerrainSaveToConfig();
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_ColorBiome.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_ColorBiome - Script for controlling the biome color management UI
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;
using SCANsat.Unity.HSVPicker.UI;

namespace SCANsat.Unity.Unity
{
	public class SCAN_ColorBiome : SettingsPage
	{
		[SerializeField]
		private SCAN_ColorPicker m_ColorPicker = null;
		[SerializeField]
		private Toggle m_BigMapColor = null;
		[SerializeField]
		private Toggle m_BigMapBorder = null;
		[SerializeField]
		private Toggle m_ZoomMapBorder = null;
		[SerializeField]
		private Toggle m_SmallMapColor = null;
		[SerializeField]
		private Toggle m_SmallMapBorder = null;
		[SerializeField]
		private Slider m_TransparencySlider = null;
		[SerializeField]
		private TextHandler m_TransparencyText = null;
		[SerializeField]
		private InputHandler m_TransInputField = null;

		private bool loaded;

		private ISCAN_Color colorInterface;
		private ISCAN_Settings settingsInterface;

		private void Awake()
		{
			if (m_TransInputField != null)
			{
				m_TransInputField.OnValueChange.AddListener(new UnityAction(OnTransparencyInputChange));
			}
		}

		private void Update()
		{
			if (settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				if (m_TransInputField != null && !m_TransInputField.IsFocused
					&& m_ColorPicker != null && !m_ColorPicker.AnyInputActive)
				{
					settingsInterface.LockInput = false;
				}
			}
		}

		public void SetBiome(ISCAN_Color color, ISCAN_Settings settings)
		{
			if (color == null)
			{
				return;
			}

			colorInterface = color;
			settingsInterface = settings;

			color.Refresh();

			if (m_BigMapColor != null)
			{
				m_BigMapColor.isOn = color.BiomeBigMapStockColor;
			}

			if (m_BigMapBorder != null)
			{
				m_BigMapBorder.isOn = color.BiomeBigMapWhiteBorder;
			}

			if (m_ZoomMapBorder != null)
			{
				m_ZoomMapBorder.isOn = color.BiomeZoomMapWhiteBorder;
			}

			if (m_SmallMapColor != null)
			{
				m_SmallMapColor.isOn = color.BiomeSmallMapStockColor;
			}

			if (m_SmallMapBorder != null)
			{
				m_SmallMapBorder.isOn = color.BiomeSmallMapWhiteBorder;
			}

			if (m_TransparencySlider != null)
			{
				m_TransparencySlider.value = color.BiomeTransparency;
			}

			if (m_ColorPicker != null)
			{
				m_ColorPicker.Setup(color.BiomeColorOne, color.BiomeColorTwo, true);
			}

			loaded = true;
		}

		public void OnInputClick(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData) || settingsInterface == null)
			{
				return;
			}

			if (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)
			{
				return;
			}

			settingsInterface.LockInput = true;
		}

		public void BigMapColor(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.BiomeBigMapStockColor = isOn;
		}

		public void BigMapBorder(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.BiomeBigMapWhiteBorder = isOn;
		}

		public void ZoomMapBorder(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.BiomeZoomMapWhiteBorder = isOn;
		}

		public void SmallMapColor(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.BiomeSmallMapStockColor = isOn;
		}

		public void SmallMapBorder(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.BiomeSmallMapWhiteBorder = isOn;
		}

		public void Transparency(float value)
		{
			if (m_TransparencyText != null)
			{
				m_TransparencyText.OnTextUpdate.Invoke(string.Format("Terrain Transparency: {0}%", value.ToString("N0")));
			}

			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.BiomeTransparency = value;
		}

		public void OnTransparencyInputChange(string input)
		{
			if (m_TransparencySlider == null)
			{
				return;
			}

			float tran = SCAN_ColorControl.ParseInput(input, m_TransparencySlider.value, m_TransparencySlider.minValue, m_TransparencySlider.maxValue, 0);

			if (tran != m_TransparencySlider.value)
			{
				m_TransparencySlider.value = tran;
			}
		}

		public void Apply()
		{
			if (colorInterface == null || m_ColorPicker == null)
			{
				return;
			}

			colorInterface.BiomeApply(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo);

			if (m_ColorPicker != null)
			{
				m_ColorPicker.Setup(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo, false);
			}
		}

		public void Default()
		{
			if (colorInterface == null)
			{
				return;
			}

			colorInterface.BiomeDefault();

			if (m_ColorPicker != null)
			{
				m_ColorPicker.Setup(colorInterface.BiomeColorOne, colorInterface.BiomeColorTwo, false);
			}

			loaded = false;

			if (m_BigMapColor != null)
			{
				m_BigMapColor.isOn = colorInterface.BiomeBigMapStockColor;
			}

			if (m_BigMapBorder != null)
			{
				m_BigMapBorder.isOn = colorInterface.BiomeBigMapWhiteBorder;
			}

			if (m_SmallMapColor != null)
			{
				m_SmallMapColor.isOn = colorInterface.BiomeSmallMapStockColor;
			}

			if (m_SmallMapBorder != null)
			{
				m_SmallMapBorder.isOn = colorInterface.BiomeSmallMapWhiteBorder;
			}

			if (m_TransparencySlider != null)
			{
				m_TransparencySlider.value = colorInterface.BiomeTransparency;
			}

			loaded = true;
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_ColorControl.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_ColorControl - Script for controlling the color management settings tab
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_ColorControl : SettingsPage
	{
		[SerializeField]
		private GameObject m_MapPrefab = null;
		[SerializeField]
		private GameObject m_AltimetryPrefab = null;
		[SerializeField]
		private GameObject m_SlopePrefab = null;
		[SerializeField]
		private GameObject m_BiomePrefab = null;
		[SerializeField]
		private GameObject m_ResourcePrefab = null;
		[SerializeField]
		private Transform m_ContentTransform = null;

		private ISCAN_Settings settingsInterface;
		private ISCAN_Color colorInterface;

		private SettingsPage currentPage;

		public bool IsResourcePage(string body, string resource)
		{
			if (currentPage != null)
			{
				if (currentPage is SCAN_ColorResource)
				{
					if (colorInterface != null)
					{
						if (colorInterface.ResourcePlanet == body)
						{
							if (colorInterface.ResourceCurrent == resource)
							{
								return true;
							}
						}
					}
				}
			}

			return false;
		}

		public void setup(ISCAN_Settings settings, ISCAN_Color color, bool resource)
		{
			if (settings == null || color == null)
			{
				return;
			}

			settingsInterface = settings;
			colorInterface = color;

			if (resource)
			{
				ResourceSettings(true);
			}
			else
			{
				AltimetrySettings(true);
			}
		}

		public override void OnPointerDown(PointerEventData eventData)
		{
			if (currentPage != null)
			{
				currentPage.OnPointerDown(eventData);
			}
		}

		public void MapSettings(bool isOn)
		{
			if (!isOn)
			{
				return;
			}

			if (currentPage != null)
			{
				currentPage.gameObject.SetActive(false);
				DestroyImmediate(currentPage.gameObject);
			}

			if (m_ContentTransform == null || m_MapPrefab == null || settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				settingsInterface.LockInput = false;
			}

			currentPage = Instantiate(m_MapPrefab).GetComponent();

			if (currentPage == null)
			{
				return;
			}

			currentPage.transform.SetParent(m_ContentTransform, false);

			((SCAN_ColorMap)currentPage).SetMap(colorInterface, settingsInterface);

			if (SCAN_Settings.Instance != null)
			{
				SCAN_Settings.Instance.ProcessTooltips();
			}

			if (SCAN_Settings.Instance != null)
			{
				SCAN_Settings.Instance.ClearWarningsAndDropDown();
			}
		}

		public void AltimetrySettings(bool isOn)
		{
			if (!isOn)
			{
				return;
			}

			if (currentPage != null)
			{
				currentPage.gameObject.SetActive(false);
				DestroyImmediate(currentPage.gameObject);
			}

			if (m_ContentTransform == null || m_AltimetryPrefab == null || settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				settingsInterface.LockInput = false;
			}

			currentPage = Instantiate(m_AltimetryPrefab).GetComponent();

			if (currentPage == null)
			{
				return;
			}

			currentPage.transform.SetParent(m_ContentTransform, false);

			((SCAN_ColorAltimetry)currentPage).SetTerrain(colorInterface, settingsInterface);

			if (SCAN_Settings.Instance != null)
			{
				SCAN_Settings.Instance.ProcessTooltips();
			}

			if (SCAN_Settings.Instance != null)
			{
				SCAN_Settings.Instance.ClearWarningsAndDropDown();
			}
		}

		public void SlopeSettings(bool isOn)
		{
			if (!isOn)
			{
				return;
			}

			if (currentPage != null)
			{
				currentPage.gameObject.SetActive(false);
				DestroyImmediate(currentPage.gameObject);
			}

			if (m_ContentTransform == null || m_SlopePrefab == null || settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				settingsInterface.LockInput = false;
			}

			currentPage = Instantiate(m_SlopePrefab).GetComponent();

			if (currentPage == null)
			{
				return;
			}

			currentPage.transform.SetParent(m_ContentTransform, false);

			((SCAN_ColorSlope)currentPage).SetSlope(colorInterface, settingsInterface);

			if (SCAN_Settings.Instance != null)
			{
				SCAN_Settings.Instance.ProcessTooltips();
			}

			if (SCAN_Settings.Instance != null)
			{
				SCAN_Settings.Instance.ClearWarningsAndDropDown();
			}
		}

		public void BiomeSettings(bool isOn)
		{
			if (!isOn)
			{
				return;
			}

			if (currentPage != null)
			{
				currentPage.gameObject.SetActive(false);
				DestroyImmediate(currentPage.gameObject);
			}

			if (m_ContentTransform == null || m_BiomePrefab == null || settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				settingsInterface.LockInput = false;
			}

			currentPage = Instantiate(m_BiomePrefab).GetComponent();

			if (currentPage == null)
			{
				return;
			}

			currentPage.transform.SetParent(m_ContentTransform, false);

			((SCAN_ColorBiome)currentPage).SetBiome(colorInterface, settingsInterface);

			if (SCAN_Settings.Instance != null)
			{
				SCAN_Settings.Instance.ProcessTooltips();
			}

			if (SCAN_Settings.Instance != null)
			{
				SCAN_Settings.Instance.ClearWarningsAndDropDown();
			}
		}

		public void ResourceSettings(bool isOn)
		{
			if (!isOn)
			{
				return;
			}

			if (currentPage != null)
			{
				currentPage.gameObject.SetActive(false);
				DestroyImmediate(currentPage.gameObject);
			}

			if (m_ContentTransform == null || m_ResourcePrefab == null || settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				settingsInterface.LockInput = false;
			}

			currentPage = Instantiate(m_ResourcePrefab).GetComponent();

			if (currentPage == null)
			{
				return;
			}

			currentPage.transform.SetParent(m_ContentTransform, false);

			((SCAN_ColorResource)currentPage).SetResource(colorInterface, settingsInterface);

			if (SCAN_Settings.Instance != null)
			{
				SCAN_Settings.Instance.ProcessTooltips();
			}

			if (SCAN_Settings.Instance != null)
			{
				SCAN_Settings.Instance.ClearWarningsAndDropDown();
			}
		}

		public static float ParseInput(string input, float original, float min, float max, int digits)
		{
			float f = original;

			if (!float.TryParse(input, out f))
			{
				return f;
			}

			if (f < min)
			{
				return original;
			}
			else if (f > max)
			{
				return original;
			}

			f = (float)Math.Round(f, digits);

			return f;
		}

	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_ColorMap.cs
================================================

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_ColorMap : SettingsPage
	{
		[SerializeField]
		private SCAN_ColorPicker m_ColorPicker = null;
		[SerializeField]
		private Toggle m_MapVignette = null;
		[SerializeField]
		private Slider m_UnscannedSlider = null;
		[SerializeField]
		private TextHandler m_UnscannedText = null;
		[SerializeField]
		private InputHandler m_UnscannedInputField = null;
		[SerializeField]
		private Slider m_TransparencySlider = null;
		[SerializeField]
		private TextHandler m_TransparencyText = null;
		[SerializeField]
		private InputHandler m_TransInputField = null;


		[SerializeField]
		private TextHandler m_MapWidth = null;
		[SerializeField]
		private InputHandler m_MapWidthInputHandler = null;
		[SerializeField]
		private Toggle m_MapWidthToggle = null;
		[SerializeField]
		private Toggle m_PixelFiltering = null;
		[SerializeField]
		private Toggle m_NormalMap = null;
		[SerializeField]
		private Toggle m_ColorMap = null;
		[SerializeField]
		private Slider m_NormalSlider = null;
		[SerializeField]
		private TextHandler m_NormalText = null;
		[SerializeField]
		private Slider m_LuminanceSlider = null;
		[SerializeField]
		private TextHandler m_LuminanceText = null;


		private bool loaded;

		private ISCAN_Color colorInterface;
		private ISCAN_Settings settingsInterface;

		private void Awake()
		{
			if (m_TransInputField != null)
			{
				m_TransInputField.OnValueChange.AddListener(new UnityAction(OnTransparencyInputChange));
			}

			if (m_UnscannedInputField != null)
			{
				m_UnscannedInputField.OnValueChange.AddListener(new UnityAction(OnUnscannedTransparencyInputChange));
			}
		}

		private void Update()
		{
			if (settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				if (m_TransInputField != null && !m_TransInputField.IsFocused
					&& m_UnscannedInputField != null && !m_UnscannedInputField.IsFocused
					&& m_MapWidthInputHandler != null && !m_MapWidthInputHandler.IsFocused
					&& m_ColorPicker != null && !m_ColorPicker.AnyInputActive)
				{
					settingsInterface.LockInput = false;
				}
			}
		}

		public void SetMap(ISCAN_Color color, ISCAN_Settings settings)
		{
			if (color == null)
			{
				return;
			}

			colorInterface = color;
			settingsInterface = settings;

			color.Refresh();

			if (m_MapVignette != null)
			{
				m_MapVignette.isOn = color.MapVignette;
			}

			if (m_UnscannedSlider != null)
			{
				m_UnscannedSlider.value = color.UnscannedTransparency;
			}

			if (m_TransparencySlider != null)
			{
				m_TransparencySlider.value = color.BackgroundTransparency;
			}

			if (m_MapWidth != null)
			{
				m_MapWidth.OnTextUpdate.Invoke("Map Width: " + color.MapWidth.ToString());
			}

			if (m_MapWidthToggle != null)
			{
				m_MapWidthToggle.isOn = color.UseMapWidth;
			}

			if (m_PixelFiltering != null)
			{
				m_PixelFiltering.isOn = color.PixelFiltering;
			}

			if (m_NormalMap != null)
			{
				m_NormalMap.isOn = color.NormalMap;
			}

			if (m_ColorMap != null)
			{
				m_ColorMap.isOn = color.ColorMap;
			}

			if (m_NormalSlider != null)
			{
				m_NormalSlider.value = color.NormalOpacity;
			}

			if (m_LuminanceSlider != null)
			{
				m_LuminanceSlider.value = color.LuminanceReduction;
			}

			if (m_ColorPicker != null)
			{
				m_ColorPicker.Setup(color.MapBackgroundColor, color.UnscannedColor, true);
			}

			loaded = true;
		}

		public void OnInputClick(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData) || settingsInterface == null)
			{
				return;
			}

			if (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)
			{
				return;
			}

			settingsInterface.LockInput = true;
		}

		public void MapVignette(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.MapVignette = isOn;
		}

		public void UnscannedTrans(float value)
		{
			if (m_UnscannedText != null)
			{
				m_UnscannedText.OnTextUpdate.Invoke(string.Format("Unscanned Transparency: {0}%", value.ToString("N0")));
			}

			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.UnscannedTransparency = value;
		}

		public void Transparency(float value)
		{
			if (m_TransparencyText != null)
			{
				m_TransparencyText.OnTextUpdate.Invoke(string.Format("Background Transparency: {0}%", value.ToString("N0")));
			}

			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.BackgroundTransparency = value;
		}


		public void SetMapWidth()
		{
			if (colorInterface == null || m_MapWidthInputHandler == null)
			{
				return;
			}

			settingsInterface.LockInput = false;

			int width = colorInterface.MapWidth;

			if (int.TryParse(m_MapWidthInputHandler.Text, out width))
			{
				if (width % 2 != 0)
				{
					width += 1;
				}

				if (width > 8192)
				{
					width = 8192;
				}
				else if (width < 256)
				{
					width = 256;
				}

				m_MapWidthInputHandler.OnTextUpdate.Invoke(width.ToString());

				colorInterface.MapWidth = width;

				if (m_MapWidth != null)
				{
					m_MapWidth.OnTextUpdate.Invoke("Map Width: " + width.ToString());
				}
			}
		}

		public void MapWidthToggle(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.UseMapWidth = isOn;
		}

		public void PixelFilterToggle(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.PixelFiltering = isOn;
		}

		public void NormalMapToggle(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.NormalMap = isOn;
		}

		public void ColorMapToggle(bool isOn)
		{
			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.ColorMap = isOn;
		}

		public void NormalOpacity(float value)
		{
			if (m_NormalText != null)
			{
				m_NormalText.OnTextUpdate.Invoke(string.Format("Normal Opacity: {0}%", value.ToString("N0")));
			}

			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.NormalOpacity = value;
		}

		public void LuminanceReduction(float value)
		{
			if (m_LuminanceText != null)
			{
				m_LuminanceText.OnTextUpdate.Invoke(string.Format("Luminance Reduction: {0}%", value.ToString("N0")));
			}

			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.LuminanceReduction = value;
		}


		public void OnTransparencyInputChange(string input)
		{
			if (m_TransparencySlider == null)
			{
				return;
			}

			float tran = SCAN_ColorControl.ParseInput(input, m_TransparencySlider.value, m_TransparencySlider.minValue, m_TransparencySlider.maxValue, 0);

			if (tran != m_TransparencySlider.value)
			{
				m_TransparencySlider.value = tran;
			}
		}

		public void OnUnscannedTransparencyInputChange(string input)
		{
			if (m_UnscannedSlider == null)
			{
				return;
			}

			float tran = SCAN_ColorControl.ParseInput(input, m_UnscannedSlider.value, m_UnscannedSlider.minValue, m_UnscannedSlider.maxValue, 0);

			if (tran != m_UnscannedSlider.value)
			{
				m_UnscannedSlider.value = tran;
			}
		}

		public void Apply()
		{
			if (colorInterface == null || m_ColorPicker == null)
			{
				return;
			}

			colorInterface.MapApply(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo);

			if (m_ColorPicker != null)
			{
				m_ColorPicker.Setup(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo, false);
			}
		}

		public void Default()
		{
			if (colorInterface == null)
			{
				return;
			}

			colorInterface.MapDefault();

			if (m_ColorPicker != null)
			{
				m_ColorPicker.Setup(colorInterface.MapBackgroundColor, colorInterface.UnscannedColor, false);
			}

			loaded = false;

			if (m_UnscannedSlider != null)
			{
				m_UnscannedSlider.value = colorInterface.UnscannedTransparency;
			}

			if (m_TransparencySlider != null)
			{
				m_TransparencySlider.value = colorInterface.BackgroundTransparency;
			}

			loaded = true;
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_ColorResource.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_ColorResource - Script for controlling the resource color management UI
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;
using SCANsat.Unity.HSVPicker.UI;

namespace SCANsat.Unity.Unity
{
	public class SCAN_ColorResource : SettingsPage
	{
		[SerializeField]
		private SCAN_ColorPicker m_ColorPicker = null;
		[SerializeField]
		private Transform m_PlanetSelection = null;
		[SerializeField]
		private Transform m_ResourceSelection = null;
		[SerializeField]
		private ToggleGroup m_DropDownToggles = null;
		[SerializeField]
		private TextHandler m_PlanetName = null;
		[SerializeField]
		private TextHandler m_ResourceName = null;
		[SerializeField]
		private Slider m_MinSlider = null;
		[SerializeField]
		private Slider m_MaxSlider = null;
		[SerializeField]
		private Slider m_TransSlider = null;
		[SerializeField]
		private TextHandler m_MinSliderLabelTwo = null;
		[SerializeField]
		private TextHandler m_MaxSliderLabelOne = null;
		[SerializeField]
		private TextHandler m_MinText = null;
		[SerializeField]
		private TextHandler m_MaxText = null;
		[SerializeField]
		private TextHandler m_TransText = null;
		[SerializeField]
		private InputHandler m_MinInputField = null;
		[SerializeField]
		private InputHandler m_MaxInputField = null;
		[SerializeField]
		private InputHandler m_TransInputField = null;

		private ISCAN_Color colorInterface;
		private ISCAN_Settings settingsInterface;

		private void Awake()
		{
			if (m_MinInputField != null)
			{
				m_MinInputField.OnValueChange.AddListener(new UnityAction(OnMinInputChange));
			}

			if (m_MaxInputField != null)
			{
				m_MaxInputField.OnValueChange.AddListener(new UnityAction(OnMaxInputChange));
			}

			if (m_TransInputField != null)
			{
				m_TransInputField.OnValueChange.AddListener(new UnityAction(OnTransparencyInputChange));
			}
		}

		private void Update()
		{
			if (settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				if (m_MinInputField != null && !m_MinInputField.IsFocused
					&& m_MaxInputField != null && !m_MaxInputField.IsFocused
					&& m_TransInputField != null && !m_TransInputField.IsFocused
					&& m_ColorPicker != null && !m_ColorPicker.AnyInputActive)
				{
					settingsInterface.LockInput = false;
				}
			}
		}

		public void SetResource(ISCAN_Color color, ISCAN_Settings settings)
		{
			if (color == null || settings == null)
			{
				return;
			}

			colorInterface = color;
			settingsInterface = settings;

			color.Refresh();

			SetUI();
		}

		private void SetUI(bool color = true)
		{
			if (colorInterface == null)
			{
				return;
			}

			SetMinSlider();

			SetMaxSlider();

			if (m_MinSlider != null)
			{
				m_MinSlider.value = colorInterface.ResourceMin;
			}

			if (m_MinText != null)
			{
				m_MinText.OnTextUpdate.Invoke(string.Format("Min: {0}%", colorInterface.ResourceMin.ToString("N2")));
			}

			if (m_MaxSlider != null)
			{
				m_MaxSlider.value = colorInterface.ResourceMax;
			}

			if (m_MaxText != null)
			{
				m_MaxText.OnTextUpdate.Invoke(string.Format("Max: {0}%", colorInterface.ResourceMax.ToString("N2")));
			}

			if (m_TransSlider != null)
			{
				m_TransSlider.value = colorInterface.ResourceTransparency;
			}

			if (m_ColorPicker != null && color)
			{
				m_ColorPicker.Setup(colorInterface.ResourceColorOne, colorInterface.ResourceColorTwo, true);
			}

			if (m_PlanetName != null)
			{
				m_PlanetName.OnTextUpdate.Invoke(colorInterface.ResourcePlanet);
			}

			if (m_ResourceName != null)
			{
				m_ResourceName.OnTextUpdate.Invoke(colorInterface.ResourceCurrent);
			}
		}

		public override void OnPointerDown(PointerEventData eventData)
		{
			if (SCAN_Settings.Instance == null)
			{
				return;
			}

			if (SCAN_Settings.Instance.DropDown != null)
			{
				RectTransform r = SCAN_Settings.Instance.DropDown.GetComponent();

				if (r != null)
				{
					if (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))
					{
						SCAN_Settings.Instance.DropDown.FadeOut();
						SCAN_Settings.Instance.DropDown = null;

						if (m_DropDownToggles != null)
						{
							m_DropDownToggles.SetAllTogglesOff();
						}
					}
				}
			}

			if (SCAN_Settings.Instance.WarningPopup != null)
			{
				RectTransform r = SCAN_Settings.Instance.WarningPopup.GetComponent();

				if (r != null)
				{
					if (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))
					{
						SCAN_Settings.Instance.WarningPopup.FadeOut();
						SCAN_Settings.Instance.WarningPopup = null;
					}
				}
			}
		}

		public void PlanetDropDown(bool isOn)
		{
			if (SCAN_Settings.Instance.DropDown != null)
			{
				SCAN_Settings.Instance.DropDown.FadeOut(true);
				SCAN_Settings.Instance.DropDown = null;
			}

			if (!isOn)
			{
				return;
			}

			if (m_PlanetSelection == null || SCAN_Settings.Instance.DropDownPrefab == null || colorInterface == null)
			{
				return;
			}

			SCAN_Settings.Instance.DropDown = Instantiate(SCAN_Settings.Instance.DropDownPrefab).GetComponent();

			if (SCAN_Settings.Instance.DropDown == null)
			{
				return;
			}

			SCAN_Settings.Instance.DropDown.transform.SetParent(m_PlanetSelection, false);

			SCAN_Settings.Instance.DropDown.Setup(colorInterface.CelestialBodies, colorInterface.ResourcePlanet);

			SCAN_Settings.Instance.DropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction(Planet));
		}

		public void Planet(string planet)
		{
			if (m_PlanetName != null)
			{
				m_PlanetName.OnTextUpdate.Invoke(planet);
			}

			SCAN_Settings.Instance.DropDown.FadeOut(true);
			SCAN_Settings.Instance.DropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}

			if (colorInterface == null)
			{
				return;
			}

			colorInterface.ResourcePlanet = planet;

			SetUI(false);
		}

		public void ResourceDropDown(bool isOn)
		{
			if (SCAN_Settings.Instance.DropDown != null)
			{
				SCAN_Settings.Instance.DropDown.FadeOut(true);
				SCAN_Settings.Instance.DropDown = null;
			}

			if (!isOn)
			{
				return;
			}

			if (m_ResourceSelection == null || SCAN_Settings.Instance.DropDownPrefab == null || colorInterface == null)
			{
				return;
			}

			SCAN_Settings.Instance.DropDown = Instantiate(SCAN_Settings.Instance.DropDownPrefab).GetComponent();

			if (SCAN_Settings.Instance.DropDown == null)
			{
				return;
			}

			SCAN_Settings.Instance.DropDown.transform.SetParent(m_ResourceSelection, false);

			SCAN_Settings.Instance.DropDown.Setup(colorInterface.Resources, colorInterface.ResourceCurrent);

			SCAN_Settings.Instance.DropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction(Resource));
		}

		public void Resource(string resource)
		{
			if (m_ResourceName != null)
			{
				m_ResourceName.OnTextUpdate.Invoke(resource);
			}

			SCAN_Settings.Instance.DropDown.FadeOut(true);
			SCAN_Settings.Instance.DropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}

			if (colorInterface == null)
			{
				return;
			}

			colorInterface.ResourceCurrent = resource;

			SetUI();
		}

		public void OnInputClick(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData) || settingsInterface == null)
			{
				return;
			}

			if (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)
			{
				return;
			}

			settingsInterface.LockInput = true;
		}

		public void OnMinChange(float value)
		{
			if (colorInterface == null)
			{
				return;
			}

			float max = colorInterface.ResourceMax - 1;

			if (value > max)
			{
				value = max;
			}
			else if (value < 0)
			{
				value = 0;
			}

			colorInterface.ResourceMin = value;

			SetMaxSlider();

			if (m_MinText != null)
			{
				m_MinText.OnTextUpdate.Invoke(string.Format("Min: {0}%", value.ToString("N2")));
			}
		}

		public void OnMinInputChange(string input)
		{
			if (m_MinSlider == null)
			{
				return;
			}

			float min = SCAN_ColorControl.ParseInput(input, m_MinSlider.value, m_MinSlider.minValue, m_MinSlider.maxValue, 2);

			if (min != m_MinSlider.value)
			{
				m_MinSlider.value = min;
			}
		}

		public void OnMaxChange(float value)
		{
			if (colorInterface == null)
			{
				return;
			}

			float min = colorInterface.ResourceMin + 1;

			if (value < min)
			{
				value = min;
			}
			else if (value > 100)
			{
				value = 100;
			}

			colorInterface.ResourceMax = value;

			SetMinSlider();

			if (m_MaxText != null)
			{
				m_MaxText.OnTextUpdate.Invoke(string.Format("Max: {0}%", value.ToString("N2")));
			}
		}

		public void OnMaxInputChange(string input)
		{
			if (m_MaxSlider == null)
			{
				return;
			}

			float max = SCAN_ColorControl.ParseInput(input, m_MaxSlider.value, m_MaxSlider.minValue, m_MaxSlider.maxValue, 2);

			if (max != m_MaxSlider.value)
			{
				m_MaxSlider.value = max;
			}
		}

		private void SetMinSlider()
		{
			if (colorInterface == null || m_MinSlider == null)
			{
				return;
			}

			float max = colorInterface.ResourceMax - 1;

			m_MinSlider.minValue = 0;
			m_MinSlider.maxValue = max;

			if (m_MinSliderLabelTwo != null)
			{
				m_MinSliderLabelTwo.OnTextUpdate.Invoke(string.Format("|\n{0}%", max.ToString("N1")));
			}
		}

		private void SetMaxSlider()
		{
			if (colorInterface == null || m_MaxSlider == null)
			{
				return;
			}

			float min = colorInterface.ResourceMin + 1;

			m_MaxSlider.minValue = min;
			m_MaxSlider.maxValue = 100;

			if (m_MaxSliderLabelOne != null)
			{
				m_MaxSliderLabelOne.OnTextUpdate.Invoke(string.Format("|\n{0}%", min.ToString("N1")));
			}
		}

		public void OnTransparencyChange(float value)
		{
			if (m_TransText != null)
			{
				m_TransText.OnTextUpdate.Invoke(string.Format("Trans: {0}%", value.ToString("N0")));
			}

			if (colorInterface == null)
			{
				return;
			}

			colorInterface.ResourceTransparency = value;
		}

		public void OnTransparencyInputChange(string input)
		{
			if (m_TransSlider == null)
			{
				return;
			}

			float tran = SCAN_ColorControl.ParseInput(input, m_TransSlider.value, m_TransSlider.minValue, m_TransSlider.maxValue, 0);

			if (tran != m_TransSlider.value)
			{
				m_TransSlider.value = tran;
			}
		}

		public void Apply()
		{
			if (colorInterface == null || m_ColorPicker == null)
			{
				return;
			}

			if (settingsInterface != null)
			{
				settingsInterface.LockInput = false;
			}

			colorInterface.ResourceApply(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo);

			if (m_ColorPicker != null)
			{
				m_ColorPicker.Setup(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo, false);
			}
		}

		public void ApplyToAll()
		{
			if (colorInterface == null || m_ColorPicker == null)
			{
				return;
			}

			if (settingsInterface != null)
			{
				settingsInterface.LockInput = false;
			}

			colorInterface.ResourceApplyToAll(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo);

			if (m_ColorPicker != null)
			{
				m_ColorPicker.Setup(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo, false);
			}
		}

		public void Default()
		{
			if (colorInterface == null)
			{
				return;
			}

			if (settingsInterface != null)
			{
				settingsInterface.LockInput = false;
			}

			colorInterface.ResourceDefault();

			if (m_ColorPicker != null)
			{
				m_ColorPicker.Setup(colorInterface.ResourceColorOne, colorInterface.ResourceColorTwo, false);
			}

			SetUI();
		}

		public void DefaultToAll()
		{
			if (colorInterface == null)
			{
				return;
			}

			if (settingsInterface != null)
			{
				settingsInterface.LockInput = false;
			}

			colorInterface.ResourceDefaultToAll();

			if (m_ColorPicker != null)
			{
				m_ColorPicker.Setup(colorInterface.ResourceColorOne, colorInterface.ResourceColorTwo, false);
			}

			SetUI();
		}

		public void SaveToConfig()
		{
			if (SCAN_Settings.Instance == null)
			{
				return;
			}

			if (SCAN_Settings.Instance.WarningPopup != null)
			{
				SCAN_Settings.Instance.WarningPopup.FadeOut(true);
				SCAN_Settings.Instance.WarningPopup = null;
			}

			if (SCAN_Settings.Instance.PopupPrefab == null)
			{
				return;
			}

			SCAN_Settings.Instance.WarningPopup = Instantiate(SCAN_Settings.Instance.PopupPrefab).GetComponent();

			if (SCAN_Settings.Instance.WarningPopup == null)
			{
				return;
			}

			SCAN_Settings.Instance.WarningPopup.transform.SetParent(transform, false);

			SCAN_Settings.Instance.WarningPopup.Setup(settingsInterface.SaveToConfig);

			SCAN_Settings.Instance.WarningPopup.OnSelectUpdate.AddListener(ConfirmSaveToConfig);
		}

		private void ConfirmSaveToConfig()
		{
			SCAN_Settings.Instance.WarningPopup.FadeOut(true);
			SCAN_Settings.Instance.WarningPopup = null;

			if (colorInterface == null || m_ColorPicker == null)
			{
				return;
			}

			if (settingsInterface != null)
			{
				settingsInterface.LockInput = false;
			}

			colorInterface.ResourceSaveToConfig(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo);

			if (m_ColorPicker != null)
			{
				m_ColorPicker.Setup(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo, false);
			}
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_ColorSlope.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_ColorSlope - Script for controlling the slope color management UI
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;
using SCANsat.Unity.HSVPicker.UI;

namespace SCANsat.Unity.Unity
{
	public class SCAN_ColorSlope : SettingsPage
	{
		[SerializeField]
		private SCAN_ColorPicker m_ColorPickerOne = null;
		[SerializeField]
		private SCAN_ColorPicker m_ColorPickerTwo = null;
		[SerializeField]
		private Slider m_CutoffSlider = null;
		[SerializeField]
		private TextHandler m_CutoffText = null;
		[SerializeField]
		private InputHandler m_CutoffInputField = null;

		private bool loaded;

		private ISCAN_Color colorInterface;
		private ISCAN_Settings settingsInterface;

		private void Awake()
		{
			if (m_CutoffInputField != null)
			{
				m_CutoffInputField.OnValueChange.AddListener(new UnityAction(OnCutoffInputChange));
			}
		}

		private void Update()
		{
			if (settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				if (m_CutoffInputField != null && !m_CutoffInputField.IsFocused
					&& m_ColorPickerOne != null && !m_ColorPickerOne.AnyInputActive
					&& m_ColorPickerTwo != null && !m_ColorPickerTwo.AnyInputActive)
				{
					settingsInterface.LockInput = false;
				}
			}
		}

		public void SetSlope(ISCAN_Color color, ISCAN_Settings settings)
		{
			if (color == null)
			{
				return;
			}

			colorInterface = color;
			settingsInterface = settings;

			color.Refresh();

			if (m_CutoffSlider != null)
			{
				m_CutoffSlider.value = color.SlopeCutoff;
			}

			if (m_ColorPickerOne != null)
			{
				m_ColorPickerOne.Setup(color.SlopeColorOneLo, color.SlopeColorOneHi, true);
			}

			if (m_ColorPickerTwo != null)
			{
				m_ColorPickerTwo.Setup(color.SlopeColorTwoLo, color.SlopeColorTwoHi, true);
			}

			loaded = true;
		}

		public void OnInputClick(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData) || settingsInterface == null)
			{
				return;
			}

			if (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)
			{
				return;
			}

			settingsInterface.LockInput = true;
		}

		public void Cutoff(float value)
		{
			if (m_CutoffText != null)
			{
				m_CutoffText.OnTextUpdate.Invoke(string.Format("Slope Cutoff: {0}", value.ToString("N1")));
			}

			if (!loaded || colorInterface == null)
			{
				return;
			}

			colorInterface.SlopeCutoff = value;
		}

		public void OnCutoffInputChange(string input)
		{
			if (m_CutoffSlider == null)
			{
				return;
			}

			float cutoff = SCAN_ColorControl.ParseInput(input, m_CutoffSlider.value, m_CutoffSlider.minValue, m_CutoffSlider.maxValue, 1);

			if (cutoff != m_CutoffSlider.value)
			{
				m_CutoffSlider.value = cutoff;
			}
		}

		public void Apply()
		{
			if (colorInterface == null || m_ColorPickerOne == null || m_ColorPickerTwo == null)
			{
				return;
			}

			colorInterface.SlopeApply(m_ColorPickerOne.GetColorOne, m_ColorPickerOne.GetColorTwo, m_ColorPickerTwo.GetColorOne, m_ColorPickerTwo.GetColorTwo);

			if (m_ColorPickerOne != null)
			{
				m_ColorPickerOne.Setup(m_ColorPickerOne.GetColorOne, m_ColorPickerOne.GetColorTwo, false);
			}

			if (m_ColorPickerTwo != null)
			{
				m_ColorPickerTwo.Setup(m_ColorPickerTwo.GetColorOne, m_ColorPickerTwo.GetColorTwo, false);
			}
		}

		public void Default()
		{
			if (colorInterface == null)
			{
				return;
			}

			colorInterface.SlopeDefault();

			if (m_ColorPickerOne != null)
			{
				m_ColorPickerOne.Setup(colorInterface.SlopeColorOneLo, colorInterface.SlopeColorOneHi, false);
			}

			if (m_ColorPickerTwo != null)
			{
				m_ColorPickerTwo.Setup(colorInterface.SlopeColorTwoLo, colorInterface.SlopeColorTwoHi, false);
			}
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_DropDown.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_DropDown - Script for controlling drop down menus
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;

namespace SCANsat.Unity.Unity
{
	public class SCAN_DropDown : CanvasFader
	{
		public class OnSelectEvent : UnityEvent { }

		[SerializeField]
		private Transform m_ContentTransform = null;
		[SerializeField]
		private GameObject m_ContentPrefab = null;
		[SerializeField]
		private ScrollRect m_Scrollbar = null;
		[SerializeField]
		private LayoutElement m_Layout = null;

		private string currentElement;
		private OnSelectEvent _onSelectUpdate = new OnSelectEvent();
		private int fontsize = 14;
		private int maxLength = 12;

		protected override void Awake()
		{
			base.Awake();

			Alpha(0);
		}

		public OnSelectEvent OnSelectUpdate
		{
			get { return _onSelectUpdate; }
		}

		public void Setup(IList elements, string current, int font = 14, int max = 12)
		{
			if (elements == null)
			{
				return;
			}

			if (m_Layout != null)
			{
				float height = elements.Count * 25;

				height += 5;

				if (height > 155)
				{
					height = 155;
				}

				m_Layout.preferredHeight = height;
			}

			fontsize = font;
			maxLength = 12;

			currentElement = current;

			AddElements(elements);

			FadeIn();
		}

		public void FadeIn()
		{
			Fade(1, true);
		}

		public void FadeOut(bool fast = false)
		{
			Fade(0, fast, Close, false);
		}

		private void Close()
		{
			gameObject.SetActive(false);
			DestroyImmediate(gameObject);
		}

		public void SetElement(string element)
		{
			_onSelectUpdate.Invoke(element);
		}

		private void AddElements(IList elements)
		{
			if (m_ContentPrefab == null || m_ContentTransform == null)
			{
				return;
			}

			for (int i = 0; i < elements.Count; i++)
			{
				string element = elements[i];

				AddElement(element);
			}
		}

		private void AddElement(string element)
		{
			SCAN_DropDownElement dropDown = Instantiate(m_ContentPrefab).GetComponent();

			if (dropDown == null)
			{
				return;
			}

			dropDown.transform.SetParent(m_ContentTransform, false);

			dropDown.Setup(element, element == currentElement, this, m_Scrollbar, fontsize, maxLength);
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_DropDownElement.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_DropDownElement - Script for controlling individual elements of drop down menus
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

namespace SCANsat.Unity.Unity
{
	public class SCAN_DropDownElement : MonoBehaviour
	{
		[SerializeField]
		private TextHandler m_ElementTitle = null;
		[SerializeField]
		private Color m_HighlightColor = Color.white;

		private SCAN_DropDown dropdown;
		private string title;

		public void Setup(string element, bool current, SCAN_DropDown parent, ScrollRect scroll, int size, int max)
		{
			if (parent == null)
			{
				return;
			}

			dropdown = parent;
			title = element;

			if (m_ElementTitle != null)
			{
				if (scroll != null)
				{
					m_ElementTitle.SetScroller(scroll);
				}

				if (element.Length > max + 8)
				{
					size -= 6;
				}
				else if (element.Length > max + 4)
				{
					size -= 4;
				}
				else if (element.Length > max)
				{
					size -= 2;
				}

				m_ElementTitle.OnTextUpdate.Invoke(string.Format("{1}", size, element));

				if (current)
				{
					m_ElementTitle.OnColorUpdate.Invoke(m_HighlightColor);
					m_ElementTitle.SetNormalColor(m_HighlightColor);
				}
			}
		}

		public void Select()
		{
			dropdown.SetElement(title);
		}

	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_Instruments.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_Instruments - Script for controlling the instruments window UI
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_Instruments : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler
	{
		[SerializeField]
		private TextHandler m_Version = null;
		[SerializeField]
		private TextHandler m_ReadoutText = null;
		[SerializeField]
		private RectTransform m_ResourceButtons = null;
		[SerializeField]
		private GameObject m_AnomalyButtons = null;
		[SerializeField]
		private RawImage m_AnomalyImage = null;
		[SerializeField]
		private TextHandler m_AnomalyPrintText = null;
		[SerializeField]
		private TextHandler m_AnomalyNameText = null;
		[SerializeField]
		private GameObject m_AnomalyObject = null;
		[SerializeField]
		private Shader m_EdgeDetectShader = null;
		[SerializeField]
		private Shader m_GrayScaleShader = null;

		private ISCAN_Instruments insInterface;
		private RectTransform rect;
		private Vector2 mouseStart;
		private Vector3 windowStart;

		//public Shader EdgeDetectShader
		//{
		//	get { return m_EdgeDetectShader; }
		//}

		//public Shader GrayScaleShader
		//{
		//	get { return m_GrayScaleShader; }
		//}

		protected override void Awake()
		{
			base.Awake();

			rect = GetComponent();

			//string s;

			//if (m_EdgeDetectShader != null)
			//	s = m_EdgeDetectShader.name;

			//if (m_GrayScaleShader != null)
			//	s = m_GrayScaleShader.name;

			Alpha(0);
		}

		private void Update()
		{
			if (insInterface == null || !insInterface.IsVisible)
			{
				return;
			}

			insInterface.Update();
		}

		public void SetInstruments(ISCAN_Instruments ins)
		{
			if (ins == null)
			{
				return;
			}

			insInterface = ins;

			if (m_Version != null)
			{
				m_Version.OnTextUpdate.Invoke(ins.Version);
			}

			if (!ins.ResourceButtons && m_ResourceButtons != null)
			{
				m_ResourceButtons.gameObject.SetActive(false);
			}

			if (!ins.AnomalyButtons && m_AnomalyButtons != null)
			{
				m_AnomalyButtons.SetActive(false);
			}

			SetScale(ins.Scale);

			SetPosition(ins.Position);

			ProcessTooltips();

			FadeIn();
		}

		public void FadeIn()
		{
			Fade(1, true);
		}

		public void FadeOut()
		{
			Fade(0, false, Kill, false);
		}

		private void Kill()
		{
			gameObject.SetActive(false);
			Destroy(gameObject);
		}

		public void Close()
		{
			if (insInterface != null)
			{
				insInterface.IsVisible = false;
			}
		}

		public void ProcessTooltips()
		{
			if (insInterface == null)
			{
				return;
			}

			TooltipHandler[] handlers = gameObject.GetComponentsInChildren(true);

			if (handlers == null)
			{
				return;
			}

			for (int j = 0; j < handlers.Length; j++)
			{
				ProcessTooltip(handlers[j], insInterface.TooltipsOn, insInterface.TooltipCanvas, insInterface.Scale);
			}
		}

		private void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)
		{
			if (handler == null)
			{
				return;
			}

			handler.IsActive = isOn && !handler.HelpTip;
			handler._Canvas = c;
			handler.Scale = scale;
		}

		public void SetResourceButtons(int lines)
		{
			if (insInterface == null || m_ResourceButtons == null)
			{
				return;
			}

			float y = -1 * lines * 24;

			if (insInterface.ResourceButtons)
			{
				m_ResourceButtons.anchoredPosition3D = new Vector3(m_ResourceButtons.anchoredPosition.x, y, 0);
			}
		}

		public void SetAnomalyButtons()
		{
			if (insInterface == null || m_AnomalyButtons == null)
			{
				return;
			}

			if (!insInterface.AnomalyButtons)
			{
				if (m_AnomalyButtons.activeSelf)
				{
					m_AnomalyButtons.SetActive(false);
				}
			}
			else
			{
				if (!m_AnomalyButtons.activeSelf)
				{
					m_AnomalyButtons.SetActive(true);
				}
			}
		}

		public void SetScale(float scale)
		{
			rect.localScale = Vector3.one * scale;
		}

		public void SetPosition(Vector2 pos)
		{
			if (rect == null)
			{
				return;
			}

			rect.anchoredPosition = new Vector3(pos.x, pos.y, 0);
		}

		public void OnPointerDown(PointerEventData eventData)
		{
			transform.SetAsLastSibling();
		}

		public void OnBeginDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			mouseStart = eventData.position;
			windowStart = rect.position;
		}

		public void OnDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			rect.position = windowStart + (Vector3)(eventData.position - mouseStart);

			if (insInterface == null)
			{
				return;
			}

			insInterface.ClampToScreen(rect);
		}

		public void OnEndDrag(PointerEventData eventData)
		{
			if (rect == null || insInterface == null)
			{
				return;
			}

			insInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);
		}

		public void UpdateText(string s)
		{
			if (m_ReadoutText == null)
			{
				return;
			}

			m_ReadoutText.OnTextUpdate.Invoke(s);
		}

		public void UpdateAnomaly(Texture tex)
		{
			if (m_AnomalyImage == null)
			{
				return;
			}

			m_AnomalyImage.texture = tex;
		}

		public void UpdateAnomalyText(string s)
		{
			if (m_AnomalyPrintText == null)
			{
				return;
			}

			m_AnomalyPrintText.OnTextUpdate.Invoke(s);
		}

		public void UpdateAnomalyName(string s)
		{
			if (m_AnomalyNameText == null)
			{
				return;
			}

			m_AnomalyNameText.OnTextUpdate.Invoke(s);
		}

		public void PreviousResource()
		{
			if (insInterface == null)
			{
				return;
			}

			insInterface.PreviousResource();
		}

		public void NextResource()
		{
			if (insInterface == null)
			{
				return;
			}

			insInterface.NextResource();
		}

		public void NextAnomaly()
		{
			if (insInterface == null)
			{
				return;
			}

			insInterface.NextAnomaly();
		}

		public void SetDetailState(bool isOn)
		{
			if (m_AnomalyObject == null)
			{
				return;
			}

			if (isOn && !m_AnomalyObject.activeSelf)
			{
				m_AnomalyObject.SetActive(true);
			}
			else if (!isOn && m_AnomalyObject.activeSelf)
			{
				m_AnomalyObject.SetActive(false);
			}
		}

		public void OnMouseEnterAnomaly(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData) || insInterface == null)
			{
				return;
			}

			insInterface.MouseAnomaly = true;
		}

		public void OnMouseExitAnomaly(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData) || insInterface == null)
			{
				return;
			}

			insInterface.MouseAnomaly = false;
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_MainMap.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_MainMap - Script for controlling the main map UI
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_MainMap : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler
	{
		[SerializeField]
		private TextHandler m_Version = null;
		[SerializeField]
		private Toggle m_ColorToggle = null;
		[SerializeField]
		private Toggle m_TerminatorToggle = null;
		[SerializeField]
		private Toggle m_TypeToggle = null;
		[SerializeField]
		private Toggle m_MinimizeToggle = null;
		[SerializeField]
		private TextHandler m_MinimizeText = null;
		[SerializeField]
		private TextHandler m_TypeLabel = null;
		[SerializeField]
		private RawImage m_MainMap = null;
		[SerializeField]
		private TextHandler m_LoText = null;
		[SerializeField]
		private TextHandler m_HiText = null;
		[SerializeField]
		private TextHandler m_MultiText = null;
		[SerializeField]
		private TextHandler m_M700Text = null;
		[SerializeField]
		private TextHandler m_VisLoText = null;
		[SerializeField]
		private TextHandler m_VisHiText = null;
		[SerializeField]
		private TextHandler m_OreText = null;
		[SerializeField]
		private TextHandler m_PercentageText = null;
		[SerializeField]
		private GameObject m_VesselPrefab = null;
		[SerializeField]
		private Transform m_VesselTransform = null;
		[SerializeField]
		private GameObject m_MapPrefab = null;
		[SerializeField]
		private GameObject m_GeneratingText = null;

		private ISCAN_MainMap mapInterface;
		private bool loaded;
		private bool generating;
		private RectTransform rect;
		private Vector2 mouseStart;
		private Vector3 windowStart;
		private List vessels = new List();
		private List mapLabels = new List();

		protected override void Awake()
		{
			base.Awake();

			rect = GetComponent();

			Alpha(0);
		}

		private void Update()
		{
			if (mapInterface == null || !mapInterface.IsVisible)
			{
				return;
			}

			mapInterface.Update();

			if (generating)
			{
				SetGeneratingText(mapInterface.MapGenerating);
			}

			if (!mapInterface.Minimized)
			{
				for (int i = vessels.Count - 1; i >= 0; i--)
				{
					SCAN_VesselInfo vessel = vessels[i];

					vessel.UpdateText(mapInterface.VesselInfo(vessel.ID));
				}
			}

			for (int i = mapLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel mapLabel = mapLabels[i];

				mapLabel.UpdatePosition(mapInterface.VesselPosition(mapLabel.ID));
			}
		}

		public void setMap(ISCAN_MainMap map)
		{
			if (map == null)
			{
				return;
			}

			mapInterface = map;

			if (m_Version != null)
			{
				m_Version.OnTextUpdate.Invoke(map.Version);
			}

			if (m_ColorToggle != null)
			{
				m_ColorToggle.isOn = map.Color;
			}

			if (m_TerminatorToggle != null)
			{
				m_TerminatorToggle.isOn = map.TerminatorToggle;
			}

			if (m_TypeToggle != null)
			{
				m_TypeToggle.isOn = map.MapType;
			}

			if (m_MinimizeToggle != null)
			{
				m_MinimizeToggle.isOn = map.Minimized;
			}

			//if (m_M700Text != null && !map.ResourcesOn)
			//	m_M700Text.gameObject.SetActive(false);

			//if (m_OreText != null && !map.ResourcesOn)
			//	m_OreText.gameObject.SetActive(false);

			CreateVessels(map.VesselInfoList);

			SetScale(map.Scale);

			SetPosition(map.Position);

			if (!map.MapType)
			{
				SetGeneratingText(map.MapGenerating);
			}

			ProcessTooltips();

			if (m_VesselTransform != null)
			{
				m_VesselTransform.gameObject.SetActive(!map.Minimized);
			}

			FadeIn();

			loaded = true;
		}

		public void FadeIn()
		{
			Fade(1, true);
		}

		public void FadeOut()
		{
			Fade(0, false, Kill, false);
		}

		private void Kill()
		{
			gameObject.SetActive(false);
			Destroy(gameObject);
		}

		public void Close()
		{
			if (mapInterface != null)
			{
				mapInterface.IsVisible = false;
			}
		}

		private void SetGeneratingText(bool isOn)
		{
			if (m_GeneratingText == null)
			{
				return;
			}

			generating = isOn;

			if (isOn && !m_GeneratingText.activeSelf)
			{
				m_GeneratingText.SetActive(true);
			}
			else if (!isOn && m_GeneratingText.activeSelf)
			{
				m_GeneratingText.SetActive(false);
			}
		}

		public void ProcessTooltips()
		{
			if (mapInterface == null)
			{
				return;
			}

			TooltipHandler[] handlers = gameObject.GetComponentsInChildren(true);

			if (handlers == null)
			{
				return;
			}

			for (int j = 0; j < handlers.Length; j++)
			{
				ProcessTooltip(handlers[j], mapInterface.TooltipsOn, mapInterface.TooltipCanvas, mapInterface.Scale);
			}
		}

		private void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)
		{
			if (handler == null)
			{
				return;
			}

			handler.IsActive = isOn && !handler.HelpTip;
			handler._Canvas = c;
			handler.Scale = scale;
		}

		public void SetScale(float scale)
		{
			rect.localScale = Vector3.one * scale;
		}

		public void SetPosition(Vector2 pos)
		{
			if (rect == null)
			{
				return;
			}

			rect.anchoredPosition = new Vector3(pos.x, pos.y, 0);
		}

		public void RefreshVesselTypes()
		{
			if (mapInterface == null)
			{
				return;
			}

			for (int i = mapLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel mapLabel = mapLabels[i];

				mapLabel.UpdateImage(mapInterface.VesselType(mapLabel.ID));
			}
		}

		public void RefreshVessels()
		{
			for (int i = vessels.Count - 1; i >= 0; i--)
			{
				SCAN_VesselInfo v = vessels[i];

				v.gameObject.SetActive(false);
				Destroy(v.gameObject);
			}

			for (int i = mapLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel m = mapLabels[i];

				m.gameObject.SetActive(false);
				Destroy(m.gameObject);
			}

			vessels.Clear();
			mapLabels.Clear();

			if (mapInterface != null)
			{
				CreateVessels(mapInterface.VesselInfoList);
			}
		}

		private void CreateVessels(Dictionary vessels)
		{
			if (vessels == null)
			{
				return;
			}

			if (mapInterface == null || m_VesselPrefab == null || m_MapPrefab == null || m_VesselTransform == null || m_MainMap == null)
			{
				return;
			}

			for (int i = 0; i < vessels.Count; i++)
			{
				Guid id = vessels.ElementAt(i).Key;

				MapLabelInfo label;

				if (!vessels.TryGetValue(id, out label))
				{
					continue;
				}

				CreateVessel(id, label);

				CreateMapLabel(id, label);
			}
		}

		private void CreateVessel(Guid id, MapLabelInfo info)
		{
			SCAN_VesselInfo vInfo = Instantiate(m_VesselPrefab).GetComponent();

			if (vInfo == null)
			{
				return;
			}

			vInfo.transform.SetParent(m_VesselTransform, false);

			vInfo.SetVessel(id, info, mapInterface);

			vessels.Add(vInfo);
		}

		private void CreateMapLabel(Guid id, MapLabelInfo info)
		{
			SCAN_MapLabel mapLabel = Instantiate(m_MapPrefab).GetComponent();

			if (mapLabel == null)
			{
				return;
			}

			mapLabel.transform.SetParent(m_MainMap.transform, false);

			mapLabel.Setup(id, info);

			mapLabels.Add(mapLabel);
		}

		public void OnPointerDown(PointerEventData eventData)
		{
			transform.SetAsLastSibling();
		}

		public void OnBeginDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			mouseStart = eventData.position;
			windowStart = rect.position;
		}

		public void OnDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			rect.position = windowStart + (Vector3)(eventData.position - mouseStart);

			if (mapInterface == null)
			{
				return;
			}

			mapInterface.ClampToScreen(rect);
		}

		public void OnEndDrag(PointerEventData eventData)
		{
			if (rect == null || mapInterface == null)
			{
				return;
			}

			mapInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);
		}

		public void UpdateLoColor(Color c)
		{
			if (m_LoText == null)
			{
				return;
			}

			m_LoText.OnColorUpdate.Invoke(c);
		}

		public void UpdateHiColor(Color c)
		{
			if (m_HiText == null)
			{
				return;
			}

			m_HiText.OnColorUpdate.Invoke(c);
		}

		public void UpdateMultiColor(Color c)
		{
			if (m_MultiText == null)
			{
				return;
			}

			m_MultiText.OnColorUpdate.Invoke(c);
		}

		public void UpdateM700Color(Color c)
		{
			if (m_M700Text == null)
			{
				return;
			}

			m_M700Text.OnColorUpdate.Invoke(c);
		}

		public void UpdateVisLoColor(Color c)
		{
			if (m_VisLoText == null)
			{
				return;
			}

			m_VisLoText.OnColorUpdate.Invoke(c);
		}

		public void UpdateVisHiColor(Color c)
		{
			if (m_VisHiText == null)
			{
				return;
			}

			m_VisHiText.OnColorUpdate.Invoke(c);
		}

		public void UpdateOreColor(Color c)
		{
			if (m_OreText == null)
			{
				return;
			}

			m_OreText.OnColorUpdate.Invoke(c);
		}

		public void UpdatePercentage(string text)
		{
			if (m_PercentageText == null)
			{
				return;
			}

			m_PercentageText.OnTextUpdate.Invoke(text);
		}

		public void UpdateMapTexture(Texture2D map)
		{
			if (m_MainMap == null)
			{
				return;
			}

			m_MainMap.texture = map;
		}

		public void ToggleColor(bool isOn)
		{
			if (!loaded || mapInterface == null)
			{
				return;
			}

			mapInterface.Color = isOn;
		}

		public void ToggleTerminator(bool isOn)
		{
			if (!loaded || mapInterface == null)
			{
				return;
			}

			mapInterface.TerminatorToggle = isOn;
		}

		public void ToggleType(bool isOn)
		{
			if (m_TypeLabel != null)
			{
				m_TypeLabel.OnTextUpdate.Invoke(isOn ? "Biome" : "Terrain");
			}

			if (!loaded || mapInterface == null)
			{
				return;
			}

			mapInterface.MapType = isOn;
		}

		public void ToggleSize(bool isOn)
		{
			if (m_MinimizeText != null)
			{
				m_MinimizeText.OnTextUpdate.Invoke(isOn ? "+" : "-");
			}

			if (!loaded || mapInterface == null)
			{
				return;
			}

			mapInterface.Minimized = isOn;

			if (m_VesselTransform != null)
			{
				m_VesselTransform.gameObject.SetActive(!isOn);
			}
		}

		public void OpenBigMap()
		{
			if (mapInterface == null)
			{
				return;
			}

			mapInterface.OpenBigMap();
		}

		public void OpenInstruments()
		{
			if (mapInterface == null)
			{
				return;
			}

			mapInterface.OpenInstruments();
		}

		public void OpenSettings()
		{
			if (mapInterface == null)
			{
				return;
			}

			mapInterface.OpenSettings();
		}

		public void OpenZoomMap()
		{
			if (mapInterface == null)
			{
				return;
			}

			mapInterface.OpenZoomMap();
		}

		public void OpenOverlay()
		{
			if (mapInterface == null)
			{
				return;
			}

			mapInterface.OpenOverlay();
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_MapLabel.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_MapLabel - Script for controlling map icon labels
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using UnityEngine;
using UnityEngine.UI;

namespace SCANsat.Unity.Unity
{
	public class SCAN_MapLabel : MonoBehaviour
	{
		[SerializeField]
		private Image m_Image = null;
		[SerializeField]
		private TextHandler m_Label = null;
		[SerializeField]
		private LayoutElement m_Layout = null;

		private Guid _guid;
		private int _intID;
		private string _stringID;
		private RectTransform rect;
		private MapLabelInfo label;

		private int updateInterval = 60;
		private int lastUpdate;
		private bool flip;

		public Guid ID
		{
			get { return _guid; }
		}

		public int IntID
		{
			get { return _intID; }
		}

		public string StringID
		{
			get { return _stringID; }
		}

		public MapLabelInfo Info
		{
			get { return label; }
		}

		private void Awake()
		{
			rect = GetComponent();
		}

		private void Update()
		{
			if (!label.flash || m_Image == null || m_Label == null)
			{
				return;
			}

			lastUpdate++;

			if (lastUpdate < updateInterval)
			{
				return;
			}

			lastUpdate = 0;
			flip = !flip;

			if (flip)
			{
				m_Image.color = label.flashColor;
				m_Label.OnColorUpdate.Invoke(label.flashColor);
			}
			else
			{
				m_Image.color = label.baseColor;
				m_Label.OnColorUpdate.Invoke(label.baseColor);
			}
		}

		public void Setup(Guid id, MapLabelInfo info)
		{
			_guid = id;

			Setup(info);
		}

		public void Setup(int id, MapLabelInfo info)
		{
			_intID = id;

			Setup(info);
		}

		public void Setup(string id, MapLabelInfo info)
		{
			_stringID = id;

			Setup(info);
		}

		public void Setup(MapLabelInfo info)
		{
			label = info;

			if (m_Image != null)
			{
				m_Image.color = info.baseColor;
			}

			if (m_Label != null)
			{
				m_Label.OnColorUpdate.Invoke(info.baseColor);
			}

			if (rect != null)
			{
				rect.anchoredPosition = new Vector2(rect.anchoredPosition.x - (info.width / 2), rect.anchoredPosition.y + info.alignBottom);
			}

			UpdateLabel(info.label);

			UpdateImage(info.image);

			UpdatePosition(info.pos);

			UpdateActive(info.show);

			UpdateSize(info.width);
		}

		public void UpdateLabel(string l)
		{
			if (m_Label != null)
			{
				m_Label.OnTextUpdate.Invoke(l);
			}
		}

		public void UpdateImage(Sprite s)
		{
			if (m_Image != null)
			{
				m_Image.sprite = s;
			}
		}

		public void UpdateSize(int i)
		{
			if (m_Layout != null)
			{
				m_Layout.preferredHeight = i;
				m_Layout.preferredWidth = i;
			}
		}

		public void UpdateActive(bool show)
		{
			if (gameObject.activeSelf && !show)
			{
				gameObject.SetActive(false);
				return;
			}
			else if (!gameObject.activeSelf && show)
			{
				gameObject.SetActive(true);
			}
		}

		public void UpdatePosition(Vector2 p)
		{
			if (rect != null)
			{
				rect.anchoredPosition = new Vector2(p.x - (label.width / 2), p.y + label.alignBottom);
			}
		}

		public void UpdatePositionActivation(MapLabelInfo info)
		{
			UpdateActive(info.show);

			if (!info.show)
			{
				return;
			}

			UpdatePosition(info.pos);

			if (label.label != info.label)
			{
				UpdateLabel(info.label);
			}
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_Overlay.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_Overlay - Script for controlling the planetary overlay UI
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_Overlay : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler
	{
		[SerializeField]
		private TextHandler m_Version = null;
		[SerializeField]
		private TextHandler m_BiomeText = null;
		[SerializeField]
		private TextHandler m_TerrainText = null;
		[SerializeField]
		private SCAN_Toggle m_OverlayToggle = null;
		[SerializeField]
		private GameObject m_RefreshButton = null;
		[SerializeField]
		private GameObject m_ResourcePrefab = null;
		[SerializeField]
		private Transform m_ResourceTransform = null;
		[SerializeField]
		private Color m_ActiveColor = Color.white;
		[SerializeField]
		private Color m_NormalColor = Color.white;
		[SerializeField]
		private GameObject m_TooltipPrefab = null;
		[SerializeField]
		private GameObject m_ResourceBar = null;
		[SerializeField]
		private RawImage m_ResourceLegendImage = null;
		[SerializeField]
		private TextHandler m_ResourceLegendLabelOne = null;
		[SerializeField]
		private TextHandler m_ResourceLegendLabelTwo = null;

		private ISCAN_Overlay overInterface;
		private bool loaded;
		private RectTransform rect;
		private Vector2 mouseStart;
		private Vector3 windowStart;

		private bool tooltipOn;
		private SCAN_Tooltip _tooltip;

		private List resources = new List();

		public Color ActiveColor
		{
			get { return m_ActiveColor; }
		}

		public Color NormalColor
		{
			get { return m_NormalColor; }
		}

		public ISCAN_Overlay OverlayInterface
		{
			get { return overInterface; }
		}

		protected override void Awake()
		{
			base.Awake();

			rect = GetComponent();

			Alpha(0);
		}

		private void Update()
		{
			if (overInterface == null || !overInterface.IsVisible)
			{
				return;
			}

			overInterface.Update();

			if (overInterface.OverlayTooltip)
			{
				if (!tooltipOn)
				{
					if (_tooltip != null)
					{
						CloseTooltip();
					}

					tooltipOn = true;
					OpenTooltip();
				}
				else if (_tooltip != null)
				{
					_tooltip.UpdateText(overInterface.TooltipText);
				}
			}
			else if (tooltipOn)
			{
				tooltipOn = false;
				CloseTooltip();
			}
		}

		private void OpenTooltip()
		{
			if (m_TooltipPrefab == null || overInterface.TooltipCanvas == null)
			{
				return;
			}

			_tooltip = Instantiate(m_TooltipPrefab).GetComponent();

			if (_tooltip == null)
			{
				return;
			}

			_tooltip.transform.SetParent(overInterface.TooltipCanvas.transform, false);
			_tooltip.transform.SetAsLastSibling();

			_tooltip.Setup(overInterface.TooltipCanvas, "0°0'0\"N 0°0'0\"W", overInterface.Scale);
		}

		private void CloseTooltip()
		{
			if (_tooltip == null)
			{
				return;
			}

			_tooltip.gameObject.SetActive(false);
			Destroy(_tooltip.gameObject);
			_tooltip = null;
		}

		public void SetOverlay(ISCAN_Overlay over)
		{
			if (over == null)
			{
				return;
			}

			overInterface = over;

			if (m_Version != null)
			{
				m_Version.OnTextUpdate.Invoke(over.Version);
			}

			if (m_OverlayToggle != null)
			{
				m_OverlayToggle.isOn = over.DrawOverlay;
			}

			if (over.DrawBiome)
			{
				if (m_BiomeText != null)
				{
					m_BiomeText.OnColorUpdate.Invoke(m_ActiveColor);
					m_BiomeText.SetNormalColor(m_ActiveColor);
				}

				if (m_ResourceBar != null)
				{
					m_ResourceBar.SetActive(false);
				}
			}
			else if (over.DrawTerrain)
			{
				if (m_TerrainText != null)
				{
					m_TerrainText.OnColorUpdate.Invoke(m_ActiveColor);
					m_TerrainText.SetNormalColor(m_ActiveColor);
				}

				if (m_ResourceBar != null)
				{
					m_ResourceBar.SetActive(false);
				}
			}
			else if (over.DrawResource)
			{
				if (m_ResourceBar != null)
				{
					m_ResourceBar.SetActive(true);
				}

				SetResourceLegend();
			}

			if (m_RefreshButton != null)
			{
				m_RefreshButton.SetActive(over.DrawOverlay);
			}

			CreateResources(over.Resources);

			SetScale(over.Scale);

			SetPosition(over.Position);

			ProcessTooltips();

			FadeIn();

			loaded = true;
		}

		public void FadeIn()
		{
			Fade(1, true);
		}

		public void FadeOut()
		{
			Fade(0, false, Kill, false);
		}

		private void Kill()
		{
			gameObject.SetActive(false);
			Destroy(gameObject);
		}

		public void Close()
		{
			if (overInterface != null)
			{
				overInterface.IsVisible = false;
			}
		}

		public void ProcessTooltips()
		{
			if (overInterface == null)
			{
				return;
			}

			TooltipHandler[] handlers = gameObject.GetComponentsInChildren(true);

			if (handlers == null)
			{
				return;
			}

			for (int j = 0; j < handlers.Length; j++)
			{
				ProcessTooltip(handlers[j], overInterface.WindowTooltips, overInterface.TooltipCanvas, overInterface.Scale);
			}
		}

		private void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)
		{
			if (handler == null)
			{
				return;
			}

			handler.IsActive = isOn && !handler.HelpTip;
			handler._Canvas = c;
			handler.Scale = scale;
		}

		public void SetScale(float scale)
		{
			rect.localScale = Vector3.one * scale;
		}

		public void SetPosition(Vector2 pos)
		{
			if (rect == null)
			{
				return;
			}

			rect.anchoredPosition = new Vector3(pos.x, pos.y, 0);
		}

		public void OnPointerDown(PointerEventData eventData)
		{
			transform.SetAsLastSibling();
		}

		public void OnBeginDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			mouseStart = eventData.position;
			windowStart = rect.position;
		}

		public void OnDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			rect.position = windowStart + (Vector3)(eventData.position - mouseStart);

			if (overInterface == null)
			{
				return;
			}

			overInterface.ClampToScreen(rect);
		}

		public void OnEndDrag(PointerEventData eventData)
		{
			if (rect == null || overInterface == null)
			{
				return;
			}

			overInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);
		}

		private void CreateResources(IList resources)
		{
			if (resources == null)
			{
				return;
			}

			if (m_ResourcePrefab == null || m_ResourceTransform == null)
			{
				return;
			}

			for (int i = 0; i < resources.Count; i++)
			{
				string s = resources[i];

				CreateResource(s);
			}
		}

		private void CreateResource(string resource)
		{
			SCAN_ResourceOverlay res = Instantiate(m_ResourcePrefab).GetComponent();

			if (res == null)
			{
				return;
			}

			res.transform.SetParent(m_ResourceTransform, false);

			res.SetResource(resource, this, overInterface.DrawResource && overInterface.CurrentResource == resource);

			resources.Add(res);
		}

		public void SetResourceLegend()
		{
			if (m_ResourceLegendImage != null)
			{
				m_ResourceLegendImage.texture = overInterface.ResourceLegendImage;
			}

			Vector2 res = overInterface.ResourceLegendLabels;

			if (m_ResourceLegendLabelOne != null)
			{
				m_ResourceLegendLabelOne.OnTextUpdate.Invoke(res.x.ToString(res.x < 0.1 ? "P1" : "P0"));
			}

			if (m_ResourceLegendLabelTwo != null)
			{
				m_ResourceLegendLabelTwo.OnTextUpdate.Invoke(res.y.ToString(res.y < 0.1 ? "P1" : "P0"));
			}
		}

		public void SetResource(string resource, bool isOn)
		{
			if (overInterface == null)
			{
				return;
			}

			overInterface.SetResource(resource, isOn);

			if (isOn)
			{
				if (m_RefreshButton != null)
				{
					m_RefreshButton.SetActive(true);
				}

				loaded = false;

				if (m_OverlayToggle != null)
				{
					m_OverlayToggle.isOn = true;
				}

				loaded = true;

				if (m_ResourceBar != null)
				{
					m_ResourceBar.SetActive(true);
				}

				SetResourceLegend();
			}
			else
			{
				if (overInterface.DrawResource && overInterface.CurrentResource == resource)
				{
					if (m_RefreshButton != null)
					{
						m_RefreshButton.SetActive(false);
					}

					loaded = false;

					if (m_OverlayToggle != null)
					{
						m_OverlayToggle.isOn = false;
					}

					loaded = true;

					if (m_ResourceBar != null)
					{
						m_ResourceBar.SetActive(false);
					}
				}
			}

			InactivateOthers();
		}

		public void DrawBiome()
		{
			if (!loaded || overInterface == null)
			{
				return;
			}

			overInterface.DrawBiome = overInterface.DrawBiome ? !overInterface.DrawOverlay : true;

			if (m_BiomeText != null)
			{
				m_BiomeText.OnColorUpdate.Invoke(m_ActiveColor);
				m_BiomeText.SetNormalColor(m_ActiveColor);
			}

			if (m_RefreshButton != null)
			{
				m_RefreshButton.SetActive(overInterface.DrawOverlay);
			}

			if (m_OverlayToggle != null)
			{
				loaded = false;
				m_OverlayToggle.isOn = overInterface.DrawOverlay;
				loaded = true;
			}

			if (m_ResourceBar != null)
			{
				m_ResourceBar.SetActive(false);
			}

			InactivateOthers();
		}

		public void DrawTerrain()
		{
			if (!loaded || overInterface == null)
			{
				return;
			}

			overInterface.DrawTerrain = overInterface.DrawTerrain ? !overInterface.DrawOverlay : true;

			if (m_TerrainText != null)
			{
				m_TerrainText.OnColorUpdate.Invoke(m_ActiveColor);
				m_TerrainText.SetNormalColor(m_ActiveColor);
			}

			if (m_RefreshButton != null)
			{
				m_RefreshButton.SetActive(overInterface.DrawOverlay);
			}

			if (m_OverlayToggle != null)
			{
				loaded = false;
				m_OverlayToggle.isOn = overInterface.DrawOverlay;
				loaded = true;
			}

			if (m_ResourceBar != null)
			{
				m_ResourceBar.SetActive(false);
			}

			InactivateOthers();
		}

		private void InactivateOthers()
		{
			if (overInterface == null)
			{
				return;
			}

			if (m_BiomeText != null && !overInterface.DrawBiome)
			{
				m_BiomeText.OnColorUpdate.Invoke(m_NormalColor);
				m_BiomeText.SetNormalColor(m_NormalColor);
			}

			if (m_TerrainText != null && !overInterface.DrawTerrain)
			{
				m_TerrainText.OnColorUpdate.Invoke(m_NormalColor);
				m_TerrainText.SetNormalColor(m_NormalColor);
			}

			for (int i = resources.Count - 1; i >= 0; i--)
			{
				SCAN_ResourceOverlay resource = resources[i];

				if (resource == null)
				{
					continue;
				}

				if (!overInterface.DrawResource)
				{
					resource.Inactivate();
				}
				else if (resource.Resource != overInterface.CurrentResource)
				{
					resource.Inactivate();
				}
			}
		}

		public void DrawOverlay(bool isOn)
		{
			if (!loaded || overInterface == null)
			{
				return;
			}

			overInterface.DrawOverlay = isOn;

			if (m_RefreshButton != null)
			{
				m_RefreshButton.SetActive(isOn);
			}
		}

		public void Refresh()
		{
			if (overInterface == null)
			{
				return;
			}

			overInterface.Refresh();
		}

		public void IncreaseCutoff()
		{
			if (overInterface == null)
			{
				return;
			}

			overInterface.IncreaseResourceCutoff();

			SetResourceLegend();
		}

		public void DecreaseCutoff()
		{
			if (overInterface == null)
			{
				return;
			}

			overInterface.DecreaseResourceCutoff();

			SetResourceLegend();
		}

		public void ColorSettings()
		{
			if (overInterface == null)
			{
				return;
			}

			overInterface.OpenResourceSettings();
		}

		public void Settings()
		{
			if (overInterface == null)
			{
				return;
			}

			overInterface.OpenSettings();
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_PaletteButton.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_PaletteButton - Script for controlling the color palette button elements
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using UnityEngine;
using UnityEngine.UI;

namespace SCANsat.Unity.Unity
{
	public class SCAN_PaletteButton : MonoBehaviour
	{
		[SerializeField]
		private RawImage m_Palette = null;

		private string paletteName;
		private SCAN_ColorAltimetry color;

		public void setup(Texture2D tex, string palette, SCAN_ColorAltimetry c)
		{
			if (m_Palette == null || c == null)
			{
				return;
			}

			m_Palette.texture = tex;
			paletteName = palette;
			color = c;
		}

		public void Select()
		{
			if (color == null)
			{
				return;
			}

			color.SetPalette(paletteName);
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_Popup.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_Popup - Script for controlling the warning popup windows
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;

namespace SCANsat.Unity.Unity
{
	public class SCAN_Popup : CanvasFader
	{
		public class OnSelectEvent : UnityEvent { }

		[SerializeField]
		private TextHandler m_WarningText = null;

		private OnSelectEvent _onSelectUpdate = new OnSelectEvent();

		public OnSelectEvent OnSelectUpdate
		{
			get { return _onSelectUpdate; }
		}

		protected override void Awake()
		{
			base.Awake();

			Alpha(0);
		}

		public void Setup(string text)
		{
			if (m_WarningText != null)
			{
				m_WarningText.OnTextUpdate.Invoke(text);
			}

			FadeIn();
		}

		private void FadeIn()
		{
			Fade(1, true);
		}

		public void FadeOut(bool fast = false)
		{
			Fade(0, fast, Close, false);
		}

		private void Close()
		{
			gameObject.SetActive(false);
			DestroyImmediate(gameObject);
		}

		public void Confirm()
		{
			_onSelectUpdate.Invoke();
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_ResourceOverlay.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_ResourceOverlay - Script for controlling each resource toggle for the planetary overlay window
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

namespace SCANsat.Unity.Unity
{
	public class SCAN_ResourceOverlay : MonoBehaviour
	{
		[SerializeField]
		private TextHandler m_ResourceName = null;

		private SCAN_Overlay parent;
		private string resource;
		private bool active;

		public string Resource
		{
			get { return resource; }
		}

		public void SetResource(string name, SCAN_Overlay p, bool isOn)
		{
			if (p == null)
			{
				return;
			}

			parent = p;
			resource = name;

			if (m_ResourceName != null)
			{
				m_ResourceName.OnTextUpdate.Invoke(name);
			}

			if (isOn && p.OverlayInterface.DrawResource)
			{
				m_ResourceName.OnColorUpdate.Invoke(p.ActiveColor);
				m_ResourceName.SetNormalColor(p.ActiveColor);
			}
		}

		public void DrawResource()
		{
			if (parent == null)
			{
				return;
			}

			active = !active;

			parent.SetResource(resource, active);

			if (m_ResourceName != null)
			{
				m_ResourceName.OnColorUpdate.Invoke(parent.ActiveColor);
				m_ResourceName.SetNormalColor(parent.ActiveColor);
			}
		}

		public void Inactivate()
		{
			active = false;

			if (m_ResourceName != null)
			{
				m_ResourceName.OnColorUpdate.Invoke(parent.NormalColor);
				m_ResourceName.SetNormalColor(parent.NormalColor);
			}
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_Settings.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_Settings - Script for controlling the settings UI
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_Settings : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler
	{
		[SerializeField]
		private TextHandler m_Version = null;
		[SerializeField]
		private Transform m_ContentTransform = null;
		[SerializeField]
		private Toggle m_GeneralToggle = null;
		[SerializeField]
		private Toggle m_BackgroundToggle = null;
		[SerializeField]
		private Toggle m_ResourceToggle = null;
		[SerializeField]
		private Toggle m_DataToggle = null;
		[SerializeField]
		private Toggle m_ColorToggle = null;
		[SerializeField]
		private Toggle m_HelpTips = null;
		[SerializeField]
		private GameObject m_GeneralPrefab = null;
		[SerializeField]
		private GameObject m_BackgroundPrefab = null;
		[SerializeField]
		private GameObject m_ResourcePrefab = null;
		[SerializeField]
		private GameObject m_DataPrefab = null;
		[SerializeField]
		private GameObject m_ColorPrefab = null;
		[SerializeField]
		private GameObject m_PopupPrefab = null;
		[SerializeField]
		private GameObject m_DropDownPrefab = null;

		private ISCAN_Settings settingsInterface;
		private RectTransform rect;
		private Vector2 mouseStart;
		private Vector3 windowStart;
		private int _page;
		private bool _forceResource;

		private SettingsPage CurrentPage;
		private SCAN_Popup warningPopup;
		private SCAN_DropDown dropDown;

		private static SCAN_Settings instance;

		public static SCAN_Settings Instance
		{
			get { return instance; }
		}

		public int Page
		{
			get { return _page; }
		}

		public GameObject PopupPrefab
		{
			get { return m_PopupPrefab; }
		}

		public GameObject DropDownPrefab
		{
			get { return m_DropDownPrefab; }
		}

		public SCAN_Popup WarningPopup
		{
			get { return warningPopup; }
			set { warningPopup = value; }
		}

		public SCAN_DropDown DropDown
		{
			get { return dropDown; }
			set { dropDown = value; }
		}

		public bool IsCurrentResourceActive(string body, string resource)
		{
			if (CurrentPage != null)
			{
				if (CurrentPage is SCAN_ColorControl)
				{
					return ((SCAN_ColorControl)CurrentPage).IsResourcePage(body, resource);
				}
			}

			return false;
		}

		public void ClearWarningsAndDropDown()
		{
			if (dropDown != null)
			{
				dropDown.gameObject.SetActive(false);
				DestroyImmediate(dropDown.gameObject);
				dropDown = null;
			}

			if (warningPopup != null)
			{
				warningPopup.gameObject.SetActive(false);
				DestroyImmediate(warningPopup.gameObject);
				warningPopup = null;
			}
		}

		protected override void Awake()
		{
			base.Awake();

			instance = this;

			rect = GetComponent();

			Alpha(0);
		}

		private void Update()
		{
			if (settingsInterface == null || !settingsInterface.IsVisible)
			{
				return;
			}

			settingsInterface.Update();
		}

		public void setSettings(ISCAN_Settings settings, int page, bool resource)
		{
			if (settings == null)
			{
				return;
			}

			settingsInterface = settings;

			if (m_Version != null)
			{
				m_Version.OnTextUpdate.Invoke(settings.Version);
			}

			_page = page;
			_forceResource = resource;

			switch (page)
			{
				case 0:
					if (m_GeneralToggle != null)
					{
						m_GeneralToggle.isOn = true;
					}

					break;
				case 1:
					if (m_BackgroundToggle != null)
					{
						m_BackgroundToggle.isOn = true;
					}

					break;
				case 2:
					if (m_ResourceToggle != null)
					{
						m_ResourceToggle.isOn = true;
					}

					break;
				case 3:
					if (m_DataToggle != null)
					{
						m_DataToggle.isOn = true;
					}

					break;
				case 4:
					if (m_ColorToggle != null)
					{
						m_ColorToggle.isOn = true;
					}

					break;
				default:
					if (m_GeneralToggle != null)
					{
						m_GeneralToggle.isOn = true;
					}

					break;
			}

			SetScale(settings.UIScale);

			FadeIn();
		}

		public void FadeIn()
		{
			Fade(1, true);
		}

		public void FadeOut()
		{
			Fade(0, false, Kill, false);
		}

		private void Kill()
		{
			gameObject.SetActive(false);
			Destroy(gameObject);
		}

		public void Close()
		{
			if (settingsInterface != null)
			{
				settingsInterface.IsVisible = false;
			}
		}

		public void ProcessTooltips()
		{
			if (settingsInterface == null)
			{
				return;
			}

			TooltipHandler[] handlers = gameObject.GetComponentsInChildren(true);

			if (handlers == null)
			{
				return;
			}

			for (int j = 0; j < handlers.Length; j++)
			{
				ProcessTooltip(handlers[j], settingsInterface.WindowTooltips, settingsInterface.TooltipCanvas, settingsInterface.UIScale);
			}

			if (m_HelpTips != null)
			{
				ProcessHelpTooltips(m_HelpTips.isOn);
			}
		}

		private void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)
		{
			if (handler == null)
			{
				return;
			}

			handler.IsActive = isOn && !handler.HelpTip;
			handler._Canvas = c;
			handler.Scale = scale;
		}

		public void SetScale(float scale)
		{
			rect.localScale = Vector3.one * scale;
		}

		public void SetPosition(Vector2 pos)
		{
			if (rect == null)
			{
				return;
			}

			rect.anchoredPosition = new Vector3(pos.x, pos.y, 0);
		}

		public void OnPointerDown(PointerEventData eventData)
		{
			transform.SetAsLastSibling();

			((SettingsPage)CurrentPage).OnPointerDown(eventData);
		}

		public void OnBeginDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			mouseStart = eventData.position;
			windowStart = rect.position;
		}

		public void OnDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			rect.position = windowStart + (Vector3)(eventData.position - mouseStart);

			if (settingsInterface == null)
			{
				return;
			}

			settingsInterface.ClampToScreen(rect);
		}

		public void OnEndDrag(PointerEventData eventData)
		{
			if (rect == null || settingsInterface == null)
			{
				return;
			}

			settingsInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);
		}

		public void KSPedia(bool isOn)
		{
			if (settingsInterface != null)
			{
				settingsInterface.OpenKSPedia(isOn);
			}
		}

		public void HelpTips(bool isOn)
		{
			ProcessHelpTooltips(isOn);
		}

		public void ProcessHelpTooltips(bool isOn)
		{
			if (settingsInterface == null)
			{
				return;
			}

			TooltipHandler[] handlers = gameObject.GetComponentsInChildren(true);

			if (handlers == null)
			{
				return;
			}

			for (int j = 0; j < handlers.Length; j++)
			{
				ProcessHelpTooltip(handlers[j], isOn, settingsInterface.TooltipCanvas);
			}
		}

		private void ProcessHelpTooltip(TooltipHandler handler, bool isOn, Canvas c)
		{
			if (handler == null)
			{
				return;
			}

			handler.IsActive = isOn && handler.HelpTip;
			handler._Canvas = c;
		}

		public void GeneralSettings(bool isOn)
		{
			if (!isOn)
			{
				return;
			}

			if (CurrentPage != null)
			{
				CurrentPage.gameObject.SetActive(false);
				DestroyImmediate(CurrentPage.gameObject);
			}

			if (m_GeneralPrefab == null || m_ContentTransform == null || settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				settingsInterface.LockInput = false;
			}

			CurrentPage = Instantiate(m_GeneralPrefab).GetComponent();

			if (CurrentPage == null)
			{
				return;
			}

			_page = 0;

			CurrentPage.transform.SetParent(m_ContentTransform, false);

			((SCAN_SettingsGeneral)CurrentPage).setup(settingsInterface);

			ProcessTooltips();

			ClearWarningsAndDropDown();
		}

		public void BackgroundSettings(bool isOn)
		{
			if (!isOn)
			{
				return;
			}

			if (CurrentPage != null)
			{
				CurrentPage.gameObject.SetActive(false);
				DestroyImmediate(CurrentPage.gameObject);
			}

			if (m_BackgroundPrefab == null || m_ContentTransform == null || settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				settingsInterface.LockInput = false;
			}

			CurrentPage = Instantiate(m_BackgroundPrefab).GetComponent();

			if (CurrentPage == null)
			{
				return;
			}

			_page = 1;

			CurrentPage.transform.SetParent(m_ContentTransform, false);

			((SCAN_SettingsBackground)CurrentPage).setup(settingsInterface);

			ProcessTooltips();

			ClearWarningsAndDropDown();
		}

		public void ResourceSettings(bool isOn)
		{
			if (!isOn)
			{
				return;
			}

			if (CurrentPage != null)
			{
				CurrentPage.gameObject.SetActive(false);
				DestroyImmediate(CurrentPage.gameObject);
			}

			if (m_ResourcePrefab == null || m_ContentTransform == null || settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				settingsInterface.LockInput = false;
			}

			CurrentPage = Instantiate(m_ResourcePrefab).GetComponent();

			if (CurrentPage == null)
			{
				return;
			}

			_page = 2;

			CurrentPage.transform.SetParent(m_ContentTransform, false);

			((SCAN_SettingsResource)CurrentPage).setup(settingsInterface);

			ProcessTooltips();

			ClearWarningsAndDropDown();
		}

		public void DataSettings(bool isOn)
		{
			if (!isOn)
			{
				return;
			}

			if (CurrentPage != null)
			{
				CurrentPage.gameObject.SetActive(false);
				DestroyImmediate(CurrentPage.gameObject);
			}

			if (m_DataPrefab == null || m_ContentTransform == null || settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				settingsInterface.LockInput = false;
			}

			CurrentPage = Instantiate(m_DataPrefab).GetComponent();

			if (CurrentPage == null)
			{
				return;
			}

			_page = 3;

			CurrentPage.transform.SetParent(m_ContentTransform, false);

			((SCAN_SettingsData)CurrentPage).setup(settingsInterface);

			ProcessTooltips();

			ClearWarningsAndDropDown();
		}

		public void ColorSettings(bool isOn)
		{
			if (!isOn)
			{
				return;
			}

			if (CurrentPage != null)
			{
				CurrentPage.gameObject.SetActive(false);
				DestroyImmediate(CurrentPage.gameObject);
			}

			if (m_ColorPrefab == null || m_ContentTransform == null || settingsInterface == null)
			{
				return;
			}

			if (settingsInterface.LockInput)
			{
				settingsInterface.LockInput = false;
			}

			CurrentPage = Instantiate(m_ColorPrefab).GetComponent();

			if (CurrentPage == null)
			{
				return;
			}

			_page = 4;

			CurrentPage.transform.SetParent(m_ContentTransform, false);

			((SCAN_ColorControl)CurrentPage).setup(settingsInterface, settingsInterface.ColorInterface, _forceResource);

			ProcessTooltips();

			ClearWarningsAndDropDown();
		}

	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_SettingsBackground.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_SettingsBackground - Script for controlling the background settings page
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_SettingsBackground : SettingsPage
	{
		[SerializeField]
		private GameObject m_BodyInfoPrefab = null;
		[SerializeField]
		private Transform m_BodyInfoTransform = null;
		[SerializeField]
		private SCAN_Toggle m_ScanActiveToggle = null;
		[SerializeField]
		private Slider m_TimeWarpResolution = null;
		[SerializeField]
		private TextHandler m_SensorInfo = null;

		private bool loaded;
		private ISCAN_Settings settings;
		private List backgroundBodies = new List();

		private void Update()
		{
			if (settings == null || !settings.IsVisible)
			{
				return;
			}

			for (int i = backgroundBodies.Count - 1; i >= 0; i--)
			{
				SCAN_BackgroundElement background = backgroundBodies[i];

				background.UpdateText(settings.BodyPercentage(background.BodyName));
			}

			if (m_SensorInfo != null)
			{
				m_SensorInfo.OnTextUpdate.Invoke(settings.SensorCount);
			}
		}

		public void setup(ISCAN_Settings set)
		{
			if (set == null)
			{
				return;
			}

			settings = set;

			if (m_ScanActiveToggle != null)
			{
				m_ScanActiveToggle.isOn = set.BackgroundScanning;
			}

			if (m_TimeWarpResolution != null)
			{
				m_TimeWarpResolution.value = set.TimeWarp;
			}

			CreateBodySections(set.BackgroundBodies);

			loaded = true;
		}

		private void CreateBodySections(IList bodies)
		{
			if (bodies == null || settings == null || m_BodyInfoPrefab == null || m_BodyInfoTransform == null)
			{
				return;
			}

			for (int i = 0; i < bodies.Count; i++)
			{
				string s = bodies[i];

				if (string.IsNullOrEmpty(s))
				{
					continue;
				}

				CreateBodySection(s);
			}
		}

		private void CreateBodySection(string body)
		{
			SCAN_BackgroundElement background = Instantiate(m_BodyInfoPrefab).GetComponent();

			if (background == null)
			{
				return;
			}

			background.transform.SetParent(m_BodyInfoTransform, false);

			background.Setup(body, settings.ToggleBodyActive(body), settings);

			backgroundBodies.Add(background);
		}

		public void ScanToggle(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.BackgroundScanning = isOn;
		}

		public void TimeWarpSlider(float value)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.TimeWarp = (int)value;
		}

		public void UpdateScanners(string s)
		{
			if (settings == null || m_SensorInfo == null)
			{
				return;
			}

			m_SensorInfo.OnTextUpdate.Invoke(s);
		}

	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_SettingsData.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_SettingsData - Script for controlling the data management settings page
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_SettingsData : SettingsPage
	{
		[SerializeField]
		private SCAN_Toggle m_GreyScaleToggle = null;
		[SerializeField]
		private SCAN_Toggle m_CSVExportToggle = null;
		[SerializeField]
		private TextHandler m_MapWidth = null;
		[SerializeField]
		private TextHandler m_ResetCurrentText = null;
		[SerializeField]
		private TextHandler m_ResetCurrentStockText = null;
		[SerializeField]
		private TextHandler m_FillCurrentText = null;
		[SerializeField]
		private TextHandler m_TypeText = null;
		[SerializeField]
		private InputHandler m_MapWidthInputHandler = null;
		[SerializeField]
		private GameObject m_ResetStockResource = null;
		[SerializeField]
		private GameObject m_MapFill = null;
		[SerializeField]
		private Transform m_MapTypeOption = null;

		private bool loaded;
		private ISCAN_Settings settings;

		private void Update()
		{
			if (settings == null)
			{
				return;
			}

			if (settings.LockInput)
			{
				if (m_MapWidthInputHandler != null && !m_MapWidthInputHandler.IsFocused)
				{
					settings.LockInput = false;
				}
			}
		}

		public void setup(ISCAN_Settings set)
		{
			if (set == null)
			{
				return;
			}

			settings = set;

			if (m_GreyScaleToggle != null)
			{
				m_GreyScaleToggle.isOn = set.GreyScale;
			}

			if (m_CSVExportToggle != null)
			{
				m_CSVExportToggle.isOn = set.ExportCSV;
			}

			if (m_MapWidth != null)
			{
				m_MapWidth.OnTextUpdate.Invoke("Map Width: " + set.MapWidth.ToString());
			}

			if (!set.ShowStockReset)
			{
				if (m_ResetStockResource != null)
				{
					m_ResetStockResource.SetActive(false);
				}
			}

			if (!set.ShowMapFill && m_MapFill != null)
			{
				m_MapFill.SetActive(false);
			}

			SetButtonText();

			loaded = true;
		}

		public void SetButtonText()
		{
			if (settings == null)
			{
				return;
			}

			if (m_ResetCurrentText != null)
			{
				m_ResetCurrentText.OnTextUpdate.Invoke("Reset Map of " + settings.CurrentBody);
			}

			if (m_ResetCurrentStockText != null)
			{
				m_ResetCurrentStockText.OnTextUpdate.Invoke("Reset stock resource data for " + settings.CurrentBody);
			}

			if (m_FillCurrentText != null)
			{
				m_FillCurrentText.OnTextUpdate.Invoke("Fill map of " + settings.CurrentBody);
			}

			if (m_TypeText != null)
			{
				m_TypeText.OnTextUpdate.Invoke(settings.CurrentMapData);
			}
		}

		public void GreyScale(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.GreyScale = isOn;
		}

		public void ExportCSV(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.ExportCSV = isOn;
		}

		public void SetMapWidth()
		{
			if (settings == null || m_MapWidthInputHandler == null)
			{
				return;
			}

			settings.LockInput = false;

			int width = settings.MapWidth;

			if (int.TryParse(m_MapWidthInputHandler.Text, out width))
			{
				if (width % 2 != 0)
				{
					width += 1;
				}

				if (width > 8192)
				{
					width = 8192;
				}
				else if (width < 560)
				{
					width = 560;
				}

				m_MapWidthInputHandler.OnTextUpdate.Invoke(width.ToString());

				settings.MapWidth = width;

				if (m_MapWidth != null)
				{
					m_MapWidth.OnTextUpdate.Invoke("Map Width: " + width.ToString());
				}
			}
		}

		public void OnInputClick(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData) || settings == null)
			{
				return;
			}

			if (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)
			{
				return;
			}

			settings.LockInput = true;
		}

		public override void OnPointerDown(PointerEventData eventData)
		{
			if (SCAN_Settings.Instance == null)
			{
				return;
			}

			if (SCAN_Settings.Instance.DropDown != null)
			{
				RectTransform r = SCAN_Settings.Instance.DropDown.GetComponent();

				if (r != null)
				{
					if (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))
					{
						SCAN_Settings.Instance.DropDown.FadeOut();
						SCAN_Settings.Instance.DropDown = null;
					}
				}
			}

			if (SCAN_Settings.Instance.WarningPopup != null)
			{
				RectTransform r = SCAN_Settings.Instance.WarningPopup.GetComponent();

				if (r != null)
				{
					if (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))
					{
						SCAN_Settings.Instance.WarningPopup.FadeOut();
						SCAN_Settings.Instance.WarningPopup = null;
					}
				}
			}
		}

		private void PopupPopup(string message, UnityAction callback)
		{
			if (SCAN_Settings.Instance == null)
			{
				return;
			}

			if (SCAN_Settings.Instance.WarningPopup != null)
			{
				SCAN_Settings.Instance.WarningPopup.FadeOut(true);
				SCAN_Settings.Instance.WarningPopup = null;
			}

			if (SCAN_Settings.Instance.PopupPrefab == null)
			{
				return;
			}

			SCAN_Settings.Instance.WarningPopup = Instantiate(SCAN_Settings.Instance.PopupPrefab).GetComponent();

			if (SCAN_Settings.Instance.WarningPopup == null)
			{
				return;
			}

			SCAN_Settings.Instance.WarningPopup.transform.SetParent(transform, false);

			SCAN_Settings.Instance.WarningPopup.Setup(message);

			SCAN_Settings.Instance.WarningPopup.OnSelectUpdate.AddListener(callback);
		}

		public void ResetCurrentMap()
		{
			if (settings != null)
			{
				PopupPopup(settings.DataResetCurrent, ConfirmResetCurrentMap);
			}
		}

		private void ConfirmResetCurrentMap()
		{
			SCAN_Settings.Instance.WarningPopup.FadeOut(true);
			SCAN_Settings.Instance.WarningPopup = null;

			if (settings == null)
			{
				return;
			}

			settings.ResetCurrent();
		}

		public void ResetAllMaps()
		{
			if (settings != null)
			{
				PopupPopup(settings.DataResetAll, ConfirmResetAllMaps);
			}
		}

		private void ConfirmResetAllMaps()
		{
			SCAN_Settings.Instance.WarningPopup.FadeOut(true);
			SCAN_Settings.Instance.WarningPopup = null;

			if (settings == null)
			{
				return;
			}

			settings.ResetAll();
		}

		public void ResetStockResourceCurrent()
		{
			if (settings != null)
			{
				PopupPopup(settings.StockResourceResetCurrent, ConfirmResetStockResourceCurrent);
			}
		}

		private void ConfirmResetStockResourceCurrent()
		{
			SCAN_Settings.Instance.WarningPopup.FadeOut(true);
			SCAN_Settings.Instance.WarningPopup = null;

			if (settings == null)
			{
				return;
			}

			settings.ResetStockResourceCurrent();
		}

		public void ResetStockResourceAll()
		{
			if (settings != null)
			{
				PopupPopup(settings.StockResourceResetAll, ConfirmResetStockResourceAll);
			}
		}

		private void ConfirmResetStockResourceAll()
		{
			SCAN_Settings.Instance.WarningPopup.FadeOut(true);
			SCAN_Settings.Instance.WarningPopup = null;

			if (settings == null)
			{
				return;
			}

			settings.ResetStockResourceAll();
		}

		public void MapTypeDropDown(bool isOn)
		{
			if (SCAN_Settings.Instance.DropDown != null)
			{
				SCAN_Settings.Instance.DropDown.FadeOut(true);
				SCAN_Settings.Instance.DropDown = null;
			}

			if (!isOn)
			{
				return;
			}

			if (m_MapTypeOption == null || SCAN_Settings.Instance.DropDownPrefab == null || settings == null)
			{
				return;
			}

			SCAN_Settings.Instance.DropDown = Instantiate(SCAN_Settings.Instance.DropDownPrefab).GetComponent();

			if (SCAN_Settings.Instance.DropDown == null)
			{
				return;
			}

			SCAN_Settings.Instance.DropDown.transform.SetParent(m_MapTypeOption, false);

			SCAN_Settings.Instance.DropDown.Setup(settings.MapDataTypes, settings.CurrentMapData, 12, 14);

			SCAN_Settings.Instance.DropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction(MapTypeOption));
		}

		public void MapTypeOption(string scanType)
		{
			if (m_TypeText != null)
			{
				m_TypeText.OnTextUpdate.Invoke(scanType);
			}

			SCAN_Settings.Instance.DropDown.FadeOut(true);
			SCAN_Settings.Instance.DropDown = null;

			if (settings == null)
			{
				return;
			}

			settings.CurrentMapData = scanType;
		}

		public void FillCurrentMap()
		{
			if (settings != null)
			{
				PopupPopup(settings.WarningMapFillCurrent, ConfirmFillCurrentMap);
			}
		}

		public void ConfirmFillCurrentMap()
		{
			SCAN_Settings.Instance.WarningPopup.FadeOut(true);
			SCAN_Settings.Instance.WarningPopup = null;

			if (settings == null)
			{
				return;
			}

			settings.FillCurrent();
		}

		public void FillAllMaps()
		{
			if (settings != null)
			{
				PopupPopup(settings.WarningMapFillAll, ConfirmFillAllMaps);
			}
		}

		public void ConfirmFillAllMaps()
		{
			SCAN_Settings.Instance.WarningPopup.FadeOut(true);
			SCAN_Settings.Instance.WarningPopup = null;

			if (settings == null)
			{
				return;
			}

			settings.FillAll();
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_SettingsGeneral.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_SettingsGeneral - Script for controlling the general settings page
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_SettingsGeneral : SettingsPage
	{
		[SerializeField]
		private SCAN_Toggle m_GroundTrackToggle = null;
		[SerializeField]
		private SCAN_Toggle m_GroundTrackActiveToggle = null;
		[SerializeField]
		private SCAN_Toggle m_WindowTooltipToggle = null;
		[SerializeField]
		private SCAN_Toggle m_LegendTooltipToggle = null;
		[SerializeField]
		private SCAN_Toggle m_StockToolbarToggle = null;
		[SerializeField]
		private SCAN_Toggle m_ToolbarMenuToggle = null;
		[SerializeField]
		private SCAN_Toggle m_StockUIToggle = null;
		[SerializeField]
		private SCAN_Toggle m_MechJebToggle = null;
		[SerializeField]
		private SCAN_Toggle m_MechJebLoadToggle = null;
		[SerializeField]
		private SCAN_Toggle m_DaylightCheckToggle = null;
		[SerializeField]
		private GameObject m_MechJebBar = null;
		[SerializeField]
		private TextHandler m_UIScale = null;
		[SerializeField]
		private Slider m_MapSpeedSlider = null;
		[SerializeField]
		private Slider m_UIScaleSlider = null;

		private bool loaded;
		private ISCAN_Settings settings;

		public void setup(ISCAN_Settings set)
		{
			if (set == null)
			{
				return;
			}

			settings = set;

			if (m_GroundTrackToggle != null)
			{
				m_GroundTrackToggle.isOn = set.GroundTracks;
			}

			if (m_GroundTrackActiveToggle != null)
			{
				m_GroundTrackActiveToggle.isOn = set.ActiveGround;
				m_GroundTrackActiveToggle.gameObject.SetActive(set.GroundTracks);
			}

			if (m_WindowTooltipToggle != null)
			{
				m_WindowTooltipToggle.isOn = set.WindowTooltips;
			}

			if (m_LegendTooltipToggle != null)
			{
				m_LegendTooltipToggle.isOn = set.LegendTooltips;
			}

			if (m_StockToolbarToggle != null)
			{
				m_StockToolbarToggle.isOn = set.StockToolbar;
			}

			if (m_MechJebBar != null)
			{
				m_MechJebBar.SetActive(set.MechJebAvailable);

				if (m_MechJebToggle != null)
				{
					m_MechJebToggle.isOn = set.MechJebTarget;
				}

				if (m_MechJebLoadToggle != null)
				{
					m_MechJebLoadToggle.isOn = set.MechJebLoad;
					m_MechJebLoadToggle.gameObject.SetActive(set.MechJebTarget);
				}
			}

			if (m_DaylightCheckToggle != null)
			{
				m_DaylightCheckToggle.isOn = set.DaylightCheck;
			}

			if (m_ToolbarMenuToggle != null)
			{
				m_ToolbarMenuToggle.isOn = set.ToolbarMenu;
				m_ToolbarMenuToggle.gameObject.SetActive(set.StockToolbar);
			}

			if (m_StockUIToggle != null)
			{
				m_StockUIToggle.isOn = set.StockUIStyle;
			}

			if (m_MapSpeedSlider != null)
			{
				m_MapSpeedSlider.value = set.MapGenSpeed;
			}

			if (m_UIScale != null)
			{
				m_UIScale.OnTextUpdate.Invoke("UI Scale: " + set.UIScale.ToString("P0"));
			}

			if (m_UIScaleSlider != null)
			{
				m_UIScaleSlider.value = set.UIScale * 100;
			}

			loaded = true;
		}

		public void GroundTrack(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.GroundTracks = isOn;

			if (m_GroundTrackActiveToggle != null)
			{
				m_GroundTrackActiveToggle.gameObject.SetActive(isOn);
			}
		}

		public void ActiveTrackOnly(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.ActiveGround = isOn;
		}

		public void WindowTooltip(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.WindowTooltips = isOn;
		}

		public void LegendTooltip(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.LegendTooltips = isOn;
		}

		public void StockToolbar(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.StockToolbar = isOn;

			if (m_ToolbarMenuToggle != null)
			{
				m_ToolbarMenuToggle.gameObject.SetActive(isOn);
			}
		}

		public void ToolbarMenu(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.ToolbarMenu = isOn;
		}

		public void StockUIStlye(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.StockUIStyle = isOn;
		}

		public void DaylightCheck(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.DaylightCheck = isOn;
		}

		public void MechJebTargetSelection(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.MechJebTarget = isOn;

			if (m_MechJebLoadToggle != null)
			{
				m_MechJebLoadToggle.gameObject.SetActive(isOn);
			}
		}

		public void MechJebLoadTarget(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.MechJebLoad = isOn;
		}

		public void MapGenSlider(float speed)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.MapGenSpeed = Mathf.RoundToInt(speed);
		}

		public void UISlider(float scale)
		{
			if (!loaded || m_UIScale == null)
			{
				return;
			}

			m_UIScale.OnTextUpdate.Invoke("UI Scale: " + (scale / 100).ToString("P0"));
		}

		public void SetUIScale()
		{
			if (settings == null || m_UIScaleSlider == null)
			{
				return;
			}

			settings.UIScale = m_UIScaleSlider.value / 100;
		}

		public void ResetWindows()
		{
			if (settings == null)
			{
				return;
			}

			settings.ResetWindows();
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_SettingsResource.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_SettingsResource - Script for controlling the resource settings page
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_SettingsResource : SettingsPage
	{
		[SerializeField]
		private SCAN_Toggle m_BiomeLockToggle = null;
		[SerializeField]
		private SCAN_Toggle m_NarrowBandToggle = null;
		[SerializeField]
		private SCAN_Toggle m_InstantScanToggle = null;
		[SerializeField]
		private SCAN_Toggle m_DisableStockToggle = null;
		[SerializeField]
		private GameObject m_StockThresholdObject = null;
		[SerializeField]
		private SCAN_Toggle m_StockThresholdToggle = null;
		[SerializeField]
		private SCAN_Toggle m_HideZeroResourcesToggle = null;
		[SerializeField]
		private TextHandler m_StockThresholdValue = null;
		[SerializeField]
		private InputHandler m_ThresholdInput = null;
		[SerializeField]
		private SCAN_Toggle m_OverlayTooltipToggle = null;
		[SerializeField]
		private TextHandler m_MapInterpolation = null;
		[SerializeField]
		private TextHandler m_MapHeight = null;
		[SerializeField]
		private TextHandler m_CoverageTransparency = null;
		[SerializeField]
		private TextHandler m_BiomeMapHeight = null;

		private bool loaded;
		private bool ignoreWarning;
		private ISCAN_Settings settings;

		private void Update()
		{
			if (settings == null)
			{
				return;
			}

			if (settings.LockInput)
			{
				if (m_ThresholdInput != null && !m_ThresholdInput.IsFocused)
				{
					settings.LockInput = false;
				}
			}
		}

		public void setup(ISCAN_Settings set)
		{
			if (set == null)
			{
				return;
			}

			settings = set;

			if (m_BiomeLockToggle != null)
			{
				m_BiomeLockToggle.isOn = set.BiomeLock;
			}

			if (m_NarrowBandToggle != null)
			{
				m_NarrowBandToggle.isOn = set.NarrowBand;
			}

			if (m_DisableStockToggle != null)
			{
				m_DisableStockToggle.isOn = set.DisableStock;
			}

			if (m_InstantScanToggle != null)
			{
				m_InstantScanToggle.isOn = set.InstantScan;
				m_InstantScanToggle.gameObject.SetActive(!set.DisableStock);
			}

			if (m_StockThresholdObject != null)
			{
				m_StockThresholdObject.gameObject.SetActive(set.DisableStock);
			}

			if (m_StockThresholdToggle != null)
			{
				m_StockThresholdToggle.isOn = set.StockThreshold;
			}

			if (m_StockThresholdValue != null)
			{
				m_StockThresholdValue.OnTextUpdate.Invoke("Stock Scan Threshold: " + set.StockThresholdValue.ToString("P0"));
			}

			if (m_HideZeroResourcesToggle != null)
			{
				m_HideZeroResourcesToggle.isOn = set.HideZeroResources;
			}

			if (set.DisableStock)
			{
				if (m_InstantScanToggle != null)
				{
					m_InstantScanToggle.gameObject.SetActive(false);
				}
			}
			else
			{
				if (m_StockThresholdObject != null)
				{
					m_StockThresholdObject.gameObject.SetActive(false);
				}
			}

			if (m_OverlayTooltipToggle != null)
			{
				m_OverlayTooltipToggle.isOn = set.OverlayTooltips;
			}

			if (m_MapInterpolation != null)
			{
				m_MapInterpolation.OnTextUpdate.Invoke(set.Interpolation.ToString());
			}

			if (m_MapHeight != null)
			{
				m_MapHeight.OnTextUpdate.Invoke(set.MapHeight.ToString());
			}

			if (m_CoverageTransparency != null)
			{
				m_CoverageTransparency.OnTextUpdate.Invoke(set.Transparency.ToString("P0"));
			}

			if (m_BiomeMapHeight != null)
			{
				m_BiomeMapHeight.OnTextUpdate.Invoke(set.BiomeMapHeight.ToString());
			}

			loaded = true;
		}

		public override void OnPointerDown(PointerEventData eventData)
		{
			if (SCAN_Settings.Instance == null)
			{
				return;
			}

			if (SCAN_Settings.Instance.WarningPopup != null)
			{
				RectTransform r = SCAN_Settings.Instance.WarningPopup.GetComponent();

				if (r != null)
				{
					if (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))
					{
						SCAN_Settings.Instance.WarningPopup.FadeOut();
						SCAN_Settings.Instance.WarningPopup = null;
					}
				}
			}
		}

		public void BimomeLock(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.BiomeLock = isOn;
		}

		public void RequireNarrowBand(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.NarrowBand = isOn;
		}

		public void DisableStock(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			//if (isOn && !settings.ModuleManager && !ignoreWarning)
			//{
			//	if (SCAN_Settings.Instance == null)
			//		return;

			//	if (SCAN_Settings.Instance.WarningPopup != null)
			//	{
			//		SCAN_Settings.Instance.WarningPopup.FadeOut(true);
			//		SCAN_Settings.Instance.WarningPopup = null;
			//	}

			//	if (SCAN_Settings.Instance.PopupPrefab == null)
			//		return;

			//	SCAN_Settings.Instance.WarningPopup = Instantiate(SCAN_Settings.Instance.PopupPrefab).GetComponent();

			//	if (SCAN_Settings.Instance.WarningPopup == null)
			//		return;

			//	SCAN_Settings.Instance.WarningPopup.transform.SetParent(transform, false);

			//	SCAN_Settings.Instance.WarningPopup.Setup(settings.ModuleManagerWarning);

			//	SCAN_Settings.Instance.WarningPopup.OnSelectUpdate.AddListener(ConfirmStockDisable);

			//	return;
			//}

			settings.DisableStock = isOn;

			if (m_InstantScanToggle != null)
			{
				m_InstantScanToggle.gameObject.SetActive(!isOn);
			}

			if (m_StockThresholdObject != null)
			{
				m_StockThresholdObject.gameObject.SetActive(isOn);
			}
		}

		private void ConfirmStockDisable()
		{
			SCAN_Settings.Instance.WarningPopup.FadeOut(true);
			SCAN_Settings.Instance.WarningPopup = null;

			if (settings == null)
			{
				return;
			}

			ignoreWarning = true;

			settings.DisableStock = true;

			if (m_InstantScanToggle != null)
			{
				m_InstantScanToggle.gameObject.SetActive(false);
			}

			if (m_StockThresholdObject != null)
			{
				m_StockThresholdObject.gameObject.SetActive(true);
			}
		}

		public void InstantScan(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.InstantScan = isOn;
		}

		public void StockTreshold(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.LockInput = false;

			settings.StockThreshold = isOn;
		}

		public void SetThreshold()
		{
			if (m_ThresholdInput == null || settings == null)
			{
				return;
			}

			settings.LockInput = false;

			float value = settings.StockThresholdValue;

			if (float.TryParse(m_ThresholdInput.Text, out value))
			{
				value /= 100;

				if (value < 0)
				{
					value = 0;
				}
				else if (value > 1)
				{
					value = 1;
				}

				m_ThresholdInput.OnTextUpdate.Invoke((value * 100).ToString("N0"));

				settings.StockThresholdValue = value;

				if (m_StockThresholdValue != null)
				{
					m_StockThresholdValue.OnTextUpdate.Invoke("Stock Scan Threshold: " + value.ToString("P0"));
				}
			}
		}

		public void HideZeroResources(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.HideZeroResources = isOn;
		}

		public void OnInputClick(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData) || settings == null)
			{
				return;
			}

			if (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)
			{
				return;
			}

			settings.LockInput = true;
		}

		public void OverlayTooltip(bool isOn)
		{
			if (!loaded || settings == null)
			{
				return;
			}

			settings.OverlayTooltips = isOn;
		}

		public void InterpolationDown()
		{
			if (settings == null)
			{
				return;
			}

			settings.Interpolation = Math.Max(2, settings.Interpolation / 2);

			if (m_MapInterpolation != null)
			{
				m_MapInterpolation.OnTextUpdate.Invoke(settings.Interpolation.ToString());
			}
		}

		public void InterpolationUp()
		{
			if (settings == null)
			{
				return;
			}

			settings.Interpolation = Math.Min(32, settings.Interpolation * 2);

			if (m_MapInterpolation != null)
			{
				m_MapInterpolation.OnTextUpdate.Invoke(settings.Interpolation.ToString());
			}
		}

		public void MapHeightDown()
		{
			if (settings == null)
			{
				return;
			}

			settings.MapHeight = Math.Max(64, settings.MapHeight / 2);

			if (m_MapHeight != null)
			{
				m_MapHeight.OnTextUpdate.Invoke(settings.MapHeight.ToString());
			}
		}

		public void MapHeightUp()
		{
			if (settings == null)
			{
				return;
			}

			settings.MapHeight = Math.Min(1024, settings.MapHeight * 2);

			if (m_MapHeight != null)
			{
				m_MapHeight.OnTextUpdate.Invoke(settings.MapHeight.ToString());
			}
		}

		public void TransparencyDown()
		{
			if (settings == null)
			{
				return;
			}

			settings.Transparency = Mathf.Max(0f, settings.Transparency - 0.1f);

			if (m_CoverageTransparency != null)
			{
				m_CoverageTransparency.OnTextUpdate.Invoke(settings.Transparency.ToString("P0"));
			}
		}

		public void TransparencyUp()
		{
			if (settings == null)
			{
				return;
			}

			settings.Transparency = Mathf.Min(1f, settings.Transparency + 0.1f);

			if (m_CoverageTransparency != null)
			{
				m_CoverageTransparency.OnTextUpdate.Invoke(settings.Transparency.ToString("P0"));
			}
		}

		public void BiomeMapHeightDown()
		{
			if (settings == null)
			{
				return;
			}

			settings.BiomeMapHeight = Math.Max(256, settings.BiomeMapHeight / 2);

			if (m_BiomeMapHeight != null)
			{
				m_BiomeMapHeight.OnTextUpdate.Invoke(settings.BiomeMapHeight.ToString());
			}
		}

		public void BiomeMapHeightUp()
		{
			if (settings == null)
			{
				return;
			}

			settings.BiomeMapHeight = Math.Min(1024, settings.BiomeMapHeight * 2);

			if (m_BiomeMapHeight != null)
			{
				m_BiomeMapHeight.OnTextUpdate.Invoke(settings.BiomeMapHeight.ToString());
			}
		}

	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_SimpleLabel.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_SimpleLabel - Script for controlling simple map icons
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using UnityEngine;
using UnityEngine.UI;

namespace SCANsat.Unity.Unity
{
	public class SCAN_SimpleLabel : MonoBehaviour
	{
		private Image icon;
		private RectTransform rect;
		private SimpleLabelInfo info;

		public void Setup(SimpleLabelInfo label)
		{
			if (label == null)
			{
				return;
			}

			info = label;

			rect = gameObject.AddComponent();
			rect.anchorMin = new Vector2(0, 0);
			rect.anchorMax = new Vector2(0, 0);
			rect.pivot = new Vector2(0.5f, 0.5f);
			rect.localScale = new Vector3(1, 1, 1);
			rect.localPosition = new Vector3(0, 0, 0);
			rect.anchoredPosition3D = new Vector3(label.pos.x, label.pos.y, 0);
			rect.sizeDelta = new Vector2(label.width, label.width);

			icon = gameObject.AddComponent();
			icon.sprite = label.image;
			icon.color = label.color;
			icon.raycastTarget = false;
			icon.type = Image.Type.Sliced;
		}

		public void UpdateIcon(SimpleLabelInfo label)
		{
			if (icon == null || rect == null || label == null)
			{
				return;
			}

			if (gameObject.activeSelf && !label.show)
			{
				gameObject.SetActive(false);
				return;
			}
			else if (!gameObject.activeSelf && label.show)
			{
				gameObject.SetActive(true);
			}

			if (icon.color != label.color)
			{
				icon.color = label.color;
			}

			rect.anchoredPosition = label.pos;
		}

	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_Style.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_Style - Script for applying UI style elements
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

namespace SCANsat.Unity.Unity
{
	public class SCAN_Style : MonoBehaviour
	{
		public enum StyleTypes
		{
			None,
			Window,
			Box,
			HiddenBox,
			Button,
			HiddenButton,
			ToggleButton,
			Toggle,
			HorizontalSlider,
			TextInput,
			KSPToggle,
			VerticalScrollbar,
			KSPWindow,
			AppButton,
			Tooltip,
			VerticalSlider,
			Popup,
		}

		[SerializeField]
		private StyleTypes m_StyleType = StyleTypes.None;

		public StyleTypes StlyeType
		{
			get { return m_StyleType; }
		}

		private void setSelectable(Sprite normal, Sprite highlight, Sprite active, Sprite inactive)
		{
			Selectable select = GetComponent();

			if (select == null)
			{
				return;
			}

			select.image.sprite = normal;
			select.image.type = Image.Type.Sliced;
			select.transition = Selectable.Transition.SpriteSwap;

			SpriteState spriteState = select.spriteState;
			spriteState.highlightedSprite = highlight;
			spriteState.pressedSprite = active;
			spriteState.disabledSprite = inactive;
			select.spriteState = spriteState;
		}

		public void setImage(Sprite sprite)
		{
			Image image = GetComponent();

			if (image == null)
			{
				return;
			}

			image.sprite = sprite;
		}

		public void setButton(Sprite normal, Sprite highlight, Sprite active, Sprite inactive)
		{
			setSelectable(normal, highlight, active, inactive);
		}

		public void setToggle(Sprite normal, Sprite highlight, Sprite active, Sprite inactive, Sprite checkmark, Sprite checkmarkHover)
		{
			setSelectable(normal, highlight, active, inactive);

			Toggle toggle = GetComponent();

			if (toggle == null)
			{
				return;
			}

			Image toggleImage = toggle.graphic as Image;

			if (toggleImage == null)
			{
				return;
			}

			toggleImage.sprite = checkmark;
			toggleImage.type = Image.Type.Sliced;

			SCAN_Toggle scan_toggle = GetComponent();

			if (scan_toggle != null)
			{
				scan_toggle.HoverCheckmark = checkmarkHover;
			}
		}

		public void setToggleButton(Sprite normal, Sprite highlight, Sprite active, Sprite inactive, Sprite checkmark)
		{
			setSelectable(normal, highlight, active, inactive);

			Toggle toggle = GetComponent();

			if (toggle == null)
			{
				return;
			}

			Image toggleImage = toggle.graphic as Image;

			if (toggleImage == null)
			{
				return;
			}

			toggleImage.sprite = checkmark;
			toggleImage.type = Image.Type.Sliced;
		}

		public void setSlider(Sprite background, Sprite thumb, Sprite thumbHighlight, Sprite thumbActive, Sprite thumbInactive)
		{
			setSelectable(thumb, thumbHighlight, thumbActive, thumbInactive);

			if (background == null)
			{
				return;
			}

			Slider slider = GetComponent();

			if (slider == null)
			{
				return;
			}

			Image back = slider.GetComponentInChildren();

			if (back == null)
			{
				return;
			}

			back.sprite = background;
			back.type = Image.Type.Sliced;
		}

		public void setScrollbar(Sprite background, Sprite thumb)
		{
			Image back = GetComponent();

			if (back == null)
			{
				return;
			}

			back.sprite = background;

			Scrollbar scroll = GetComponent();

			if (scroll == null)
			{
				return;
			}

			if (scroll.targetGraphic == null)
			{
				return;
			}

			Image scrollThumb = scroll.targetGraphic.GetComponent();

			if (scrollThumb == null)
			{
				return;
			}

			scrollThumb.sprite = thumb;
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_Toolbar.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_Toolbar - Script for controlling the toolbar menu UI
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using SCANsat.Unity.Interfaces;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

namespace SCANsat.Unity.Unity
{
	public class SCAN_Toolbar : CanvasFader, IPointerEnterHandler, IPointerExitHandler
	{
		[SerializeField]
		private Toggle m_MainMapToggle = null;
		[SerializeField]
		private Toggle m_BigMapToggle = null;
		[SerializeField]
		private Toggle m_ZoomMapToggle = null;
		[SerializeField]
		private Toggle m_OverlayToggle = null;
		[SerializeField]
		private Toggle m_InstrumentsToggle = null;
		[SerializeField]
		private Toggle m_SettingsToggle = null;

		private bool loaded;
		private ISCAN_Toolbar toolbarInterface;

		protected override void Awake()
		{
			base.Awake();

			Alpha(0);
		}

		public void Setup(ISCAN_Toolbar toolbar)
		{
			if (toolbar == null)
			{
				return;
			}

			toolbarInterface = toolbar;

			if (m_MainMapToggle != null)
			{
				m_MainMapToggle.isOn = toolbar.MainMap;
			}

			if (m_BigMapToggle != null)
			{
				m_BigMapToggle.isOn = toolbar.BigMap;
			}

			if (m_ZoomMapToggle != null)
			{
				m_ZoomMapToggle.isOn = toolbar.ZoomMap;
			}

			if (m_OverlayToggle != null)
			{
				m_OverlayToggle.isOn = toolbar.Overlay;
			}

			if (m_InstrumentsToggle != null)
			{
				m_InstrumentsToggle.isOn = toolbar.Instruments;
			}

			if (m_SettingsToggle != null)
			{
				m_SettingsToggle.isOn = toolbar.Settings;
			}

			ProcessTooltips();

			FadeIn();

			loaded = true;
		}

		public void FadeIn()
		{
			Fade(1, true);
		}

		public void FadeOut()
		{
			Fade(0, false, Kill, false);
		}

		private void Kill()
		{
			gameObject.SetActive(false);
			Destroy(gameObject);
		}

		public void ProcessTooltips()
		{
			if (toolbarInterface == null)
			{
				return;
			}

			TooltipHandler[] handlers = gameObject.GetComponentsInChildren(true);

			if (handlers == null)
			{
				return;
			}

			for (int j = 0; j < handlers.Length; j++)
			{
				ProcessTooltip(handlers[j], toolbarInterface.TooltipsOn, toolbarInterface.TooltipCanvas, toolbarInterface.Scale);
			}
		}

		private void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)
		{
			if (handler == null)
			{
				return;
			}

			handler.IsActive = isOn && !handler.HelpTip;
			handler._Canvas = c;
			handler.Scale = scale;
		}

		public void SetMainMapToggle(bool isOn)
		{
			if (m_MainMapToggle == null)
			{
				return;
			}

			loaded = false;

			m_MainMapToggle.isOn = isOn;

			loaded = true;
		}

		public void SetBigMapToggle(bool isOn)
		{
			if (m_BigMapToggle == null)
			{
				return;
			}

			loaded = false;

			m_BigMapToggle.isOn = isOn;

			loaded = true;
		}

		public void SetZoomMapToggle(bool isOn)
		{
			if (m_ZoomMapToggle == null)
			{
				return;
			}

			loaded = false;

			m_ZoomMapToggle.isOn = isOn;

			loaded = true;
		}

		public void SetOverlayToggle(bool isOn)
		{
			if (m_OverlayToggle == null)
			{
				return;
			}

			loaded = false;

			m_OverlayToggle.isOn = isOn;

			loaded = true;
		}

		public void SetInstrumentToggle(bool isOn)
		{
			if (m_InstrumentsToggle == null)
			{
				return;
			}

			loaded = false;

			m_InstrumentsToggle.isOn = isOn;

			loaded = true;
		}

		public void SetSettingsToggle(bool isOn)
		{
			if (m_SettingsToggle == null)
			{
				return;
			}

			loaded = false;

			m_SettingsToggle.isOn = isOn;

			loaded = true;
		}

		public void ToggleMainMap(bool isOn)
		{
			if (!loaded || toolbarInterface == null)
			{
				return;
			}

			toolbarInterface.MainMap = isOn;
		}

		public void ToggleBigMap(bool isOn)
		{
			if (!loaded || toolbarInterface == null)
			{
				return;
			}

			toolbarInterface.BigMap = isOn;
		}

		public void ToggleZoomMap(bool isOn)
		{
			if (!loaded || toolbarInterface == null)
			{
				return;
			}

			toolbarInterface.ZoomMap = isOn;
		}

		public void ToggleOverlay(bool isOn)
		{
			if (!loaded || toolbarInterface == null)
			{
				return;
			}

			toolbarInterface.Overlay = isOn;
		}

		public void ToggleInstruments(bool isOn)
		{
			if (!loaded || toolbarInterface == null)
			{
				return;
			}

			toolbarInterface.Instruments = isOn;
		}

		public void ToggleSettings(bool isOn)
		{
			if (!loaded || toolbarInterface == null)
			{
				return;
			}

			toolbarInterface.Settings = isOn;
		}

		public void OnPointerEnter(PointerEventData eventData)
		{
			if (toolbarInterface != null)
			{
				toolbarInterface.InMenu = true;
			}
		}

		public void OnPointerExit(PointerEventData eventData)
		{
			if (toolbarInterface != null)
			{
				toolbarInterface.InMenu = false;
			}
		}
	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_Tooltip.cs
================================================
/// Credit drHogan 
/// Sourced from - http://forum.unity3d.com/threads/screenspace-camera-tooltip-controller-sweat-and-tears.293991/#post-1938929
/// updated ddreaper - refactored code to be more performant.
/// *Note - only works for Screenspace Camera canvases at present, needs updating to include Screenspace and Worldspace!

//ToolTip is written by Emiliano Pastorelli, H&R Tallinn (Estonia), http://www.hammerandravens.com
//Copyright (c) 2015 Emiliano Pastorelli, H&R - Hammer&Ravens, Tallinn, Estonia.
//All rights reserved.

//Modified by DMagic - 2017

//Redistribution and use in source and binary forms are permitted
//provided that the above copyright notice and this paragraph are
//duplicated in all such forms and that any documentation,
//advertising materials, and other materials related to such
//distribution and use acknowledge that the software was developed
//by H&R, Hammer&Ravens. The name of the
//H&R, Hammer&Ravens may not be used to endorse or promote products derived
//from this software without specific prior written permission.
//THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
//IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
//WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

using System;
using UnityEngine;
using UnityEngine.UI;

namespace SCANsat.Unity.Unity
{
	[RequireComponent(typeof(RectTransform))]
	[AddComponentMenu("UI/Extensions/Tooltip")]
	public class SCAN_Tooltip : MonoBehaviour
	{
		//text of the tooltip
		private TextHandler _handler;
		private RectTransform _rectTransform;

		//if the tooltip is inside a UI element
		private bool _inside;

		private float width, height;

		private float YShift, xShift;

		private RenderMode _guiMode;

		private Camera _guiCamera;

		private static SCAN_Tooltip instance;

		private void Awake()
		{
			_rectTransform = GetComponent();
			_handler = GetComponentInChildren();
		}

		// Use this for initialization
		public void Setup(Canvas c, string t, float f)
		{
			if (instance != null)
			{
				instance.gameObject.SetActive(false);
				DestroyImmediate(instance.gameObject);
				instance = null;
			}

			if (c == null || string.IsNullOrEmpty(t) || _rectTransform == null || _handler == null)
			{
				return;
			}

			var _canvas = c;
			_guiCamera = _canvas.worldCamera;
			_guiMode = _canvas.renderMode;

			xShift = 5f;
			YShift = -5f;

			_handler.OnTextUpdate.Invoke(t);

			_rectTransform.sizeDelta = new Vector2(_handler.PreferredSize.x + 10f, _handler.PreferredSize.y + 0f);

			_rectTransform.localScale = Vector3.one * f;

			OnScreenSpaceCamera();

			_inside = true;

			instance = this;
		}

		public void UpdateText(string text)
		{
			if (_handler != null)
			{
				_handler.OnTextUpdate.Invoke(text);
			}
		}

		// Update is called once per frame
		void FixedUpdate()
		{
			if (_inside && _guiMode == RenderMode.ScreenSpaceCamera)
			{
				OnScreenSpaceCamera();
			}
		}

		//main tooltip edge of screen guard and movement
		public void OnScreenSpaceCamera()
		{
			Vector3 newPos = _guiCamera.ScreenToViewportPoint(Input.mousePosition - new Vector3(xShift, YShift, 0f));
			Vector3 newPosWVP = _guiCamera.ViewportToWorldPoint(newPos);

			width = _rectTransform.sizeDelta[0];
			height = _rectTransform.sizeDelta[1];

			// check and solve problems for the tooltip that goes out of the screen on the horizontal axis
			float val;

			Vector3 lowerLeft = _guiCamera.ViewportToWorldPoint(new Vector3(0.0f, 0.0f, 0.0f));
			Vector3 upperRight = _guiCamera.ViewportToWorldPoint(new Vector3(1.0f, 1.0f, 0.0f));

			//check for right edge of screen
			val = (newPosWVP.x + width / 2);
			if (val > upperRight.x)
			{
				Vector3 shifter = new Vector3(val - upperRight.x, 0f, 0f);
				Vector3 newWorldPos = new Vector3(newPosWVP.x - shifter.x, newPosWVP.y, 0f);
				newPos.x = _guiCamera.WorldToViewportPoint(newWorldPos).x;
			}
			//check for left edge of screen
			val = (newPosWVP.x - width / 2);
			if (val < lowerLeft.x)
			{
				Vector3 shifter = new Vector3(lowerLeft.x - val, 0f, 0f);
				Vector3 newWorldPos = new Vector3(newPosWVP.x + shifter.x, newPosWVP.y, 0f);
				newPos.x = _guiCamera.WorldToViewportPoint(newWorldPos).x;
			}

			// check and solve problems for the tooltip that goes out of the screen on the vertical axis

			//check for upper edge of the screen
			val = (newPosWVP.y + height);
			if (val > upperRight.y)
			{
				Vector3 shifter = new Vector3(0f, 30f + height, 0f);
				Vector3 newWorldPos = new Vector3(newPosWVP.x, newPosWVP.y - shifter.y, 0f);
				newPos.y = _guiCamera.WorldToViewportPoint(newWorldPos).y;
			}

			//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)
			val = newPosWVP.y;
			if (val < lowerLeft.y)
			{
				Vector3 shifter = new Vector3(0f, 10f, 0f);
				Vector3 newWorldPos = new Vector3(newPosWVP.x, lowerLeft.y + shifter.y, 0f);
				newPos.y = _guiCamera.WorldToViewportPoint(newWorldPos).y;
			}
			newPosWVP = _guiCamera.ViewportToWorldPoint(newPos);
			this.transform.position = new Vector3(newPosWVP.x, newPosWVP.y, 1f);
			_inside = true;
		}
	}
}

================================================
FILE: SCANsat.Unity/Unity/SCAN_VesselInfo.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_VesselInfo - Script for controlling vessel information readout buttons
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using SCANsat.Unity.Interfaces;

namespace SCANsat.Unity.Unity
{
	public class SCAN_VesselInfo : MonoBehaviour
	{
		[SerializeField]
		private TextHandler m_VesselText = null;

		private Guid _id;
		private ISCAN_MainMap mapInterface;
		private MapLabelInfo label;

		public Guid ID
		{
			get { return _id; }
		}

		public void SetVessel(Guid id, MapLabelInfo info, ISCAN_MainMap map)
		{
			if (map == null)
			{
				return;
			}

			_id = id;
			label = info;
			label.name = !string.IsNullOrEmpty(label.name) && label.name.Length > 26 ? label.name.Substring(0, 26) : label.name;
			mapInterface = map;

			if (m_VesselText == null)
			{
				return;
			}

			if (info.label != "1")
			{
				m_VesselText.SetNormalColor(Color.white);
				m_VesselText.OnColorUpdate.Invoke(Color.white);
			}

			m_VesselText.OnTextUpdate.Invoke(label.name);
		}

		public void UpdateText(string value)
		{
			if (m_VesselText == null)
			{
				return;
			}

			m_VesselText.OnTextUpdate.Invoke(string.Format("[{0}] {1}: {2}", label.label, label.name, value));
		}

		public void ChangeToVessel()
		{
			if (mapInterface == null)
			{
				return;
			}

			mapInterface.ChangeToVessel(_id);
		}

	}
}


================================================
FILE: SCANsat.Unity/Unity/SCAN_ZoomMap.cs
================================================
#region license
/* 
 * [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCAN_ZoomMap - Script for controlling the zoom map UI
 * 
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using SCANsat.Unity.Interfaces;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

namespace SCANsat.Unity.Unity
{
	public class SCAN_ZoomMap : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler
	{
		[SerializeField]
		private float m_MaxWidth = 520;
		[SerializeField]
		private float m_MaxHeight = 440;
		[SerializeField]
		private TextHandler m_Version = null;
		[SerializeField]
		private Transform m_MapTypeMenu = null;
		[SerializeField]
		private Transform m_ResourceMenu = null;
		[SerializeField]
		private ToggleGroup m_DropDownToggles = null;
		[SerializeField]
		private GameObject m_DropDownPrefab = null;
		[SerializeField]
		private GameObject m_MapMoveObject = null;
		[SerializeField]
		private GameObject m_TobBarObject = null;
		[SerializeField]
		private GameObject m_TobBarSecondObject = null;
		[SerializeField]
		private GameObject m_ToggleBarObject = null;
		[SerializeField]
		private GameObject m_ReadoutBar = null;
		[SerializeField]
		private GameObject m_LegendBar = null;
		[SerializeField]
		private GameObject m_WaypointBar = null;
		[SerializeField]
		private GameObject m_MechJebButton = null;
		[SerializeField]
		private TextHandler m_Title = null;
		[SerializeField]
		private TextHandler m_ZoomLevel = null;
		[SerializeField]
		private GameObject m_OrbitObject = null;
		[SerializeField]
		private SCAN_Toggle m_OrbitToggle = null;
		[SerializeField]
		private SCAN_Toggle m_ColorToggle = null;
		[SerializeField]
		private SCAN_Toggle m_TerminatorToggle = null;
		[SerializeField]
		private SCAN_Toggle m_LegendToggle = null;
		[SerializeField]
		private SCAN_Toggle m_ResourceToggle = null;
		[SerializeField]
		private SCAN_Toggle m_IconsToggle = null;
		[SerializeField]
		private TextHandler m_ReadoutText = null;
		[SerializeField]
		private RawImage m_ZoomImage = null;
		[SerializeField]
		private LayoutElement m_MapLayout = null;
		[SerializeField]
		private GameObject m_ResourceBar = null;
		[SerializeField]
		private RawImage m_ResourceLegendImage = null;
		[SerializeField]
		private TextHandler m_ResourceLegendLabelOne = null;
		[SerializeField]
		private TextHandler m_ResourceLegendLabelTwo = null;
		[SerializeField]
		private RawImage m_LegendImage = null;
		[SerializeField]
		private TextHandler m_LegendLabelOne = null;
		[SerializeField]
		private TextHandler m_LegendLabelTwo = null;
		[SerializeField]
		private TextHandler m_LegendLabelThree = null;
		[SerializeField]
		private GameObject m_MapLabelPrefab = null;
		[SerializeField]
		private InputHandler m_WaypointInput = null;
		[SerializeField]
		private GameObject m_VesselSyncButton = null;
		[SerializeField]
		private GameObject m_VesselLockButton = null;
		[SerializeField]
		private Image m_VesselLockImage = null;
		[SerializeField]
		private Sprite m_VesselLock = null;
		[SerializeField]
		private Sprite m_VesselUnlock = null;
		[SerializeField]
		private Image m_ZoomPersistImage = null;
		[SerializeField]
		private Sprite m_ZoomPersistSprite = null;
		[SerializeField]
		private Sprite m_ZoomForgetSprite = null;
		[SerializeField]
		private Image m_WindowState = null;
		[SerializeField]
		private Sprite m_WindowMax = null;
		[SerializeField]
		private Sprite m_WindowMed = null;
		[SerializeField]
		private Sprite m_WindowMin = null;
		[SerializeField]
		private Image m_AutoRefresh = null;
		[SerializeField]
		private GameObject m_TooltipPrefab = null;

		private VerticalLayoutGroup windowLayout;
		private RectTransform rect;
		private Vector2 mouseStart;
		private Vector3 windowStart;
		private Vector2 resizeStart;
		private bool resizing;
		private bool loaded;
		private bool inMap;
		private bool waypointSelecting;
		private string waypoint;
		private Vector2 rectPos = new Vector2();

		private float nextRefresh;
		private const float refreshTimeOne = 8f;
		private const float refreshTimeTwo = 4f;

		private bool tooltipOn;
		private SCAN_Tooltip _tooltip;

		private SCAN_DropDown dropDown;

		private List orbitLabels = new List();
		private List orbitIconLabels = new List();
		private List anomalyLabels = new List();
		private List rocLabels = new List();
		private List waypointLabels = new List();
		private List flagLabels = new List();
		private SCAN_MapLabel vesselLabel;
		private SCAN_MapLabel tempWaypointLabel;
		private SCAN_MapLabel hoverWaypointLabel;

		private ISCAN_ZoomMap zoomInterface;

		private readonly Color WHITE_REFRESH = new Color(0.68f, 0.68f, 0.68f);
		private readonly Color YELLOW_REFRESH = new Color(0.92f, 0.55f, 0.03f);
		private readonly Color GREEN_REFRESH = new Color(0.64f, 0.91f, 0.26f);

		protected override void Awake()
		{
			base.Awake();

			rect = GetComponent();
			windowLayout = GetComponent();

			Alpha(0);
		}

		private void Update()
		{
			if (zoomInterface == null || !zoomInterface.IsVisible)
			{
				return;
			}

			if (zoomInterface.LockInput)
			{
				if (m_WaypointInput != null && !m_WaypointInput.IsFocused)
				{
					zoomInterface.LockInput = false;
				}
			}

			zoomInterface.Update();

			if (vesselLabel != null)
			{
				Vector2 pos = zoomInterface.VesselPosition();

				if (pos.x < 0 || pos.y < 0)
				{
					vesselLabel.UpdateActive(false);
				}
				else
				{
					vesselLabel.UpdateActive(true);
					vesselLabel.UpdatePosition(pos);
				}
			}

			if (inMap && m_ZoomImage != null && m_ReadoutText != null)
			{
				RectTransformUtility.ScreenPointToLocalPointInRectangle(m_ZoomImage.rectTransform, Input.mousePosition, zoomInterface.MainCanvas.worldCamera, out rectPos);

				m_ReadoutText.OnTextUpdate.Invoke(zoomInterface.MapInfo(rectPos));

				if (waypointSelecting)
				{
					if (hoverWaypointLabel != null)
					{
						Vector2 mapPos = new Vector2(rectPos.x, rectPos.y + zoomInterface.Size.y);

						hoverWaypointLabel.UpdateActive(true);

						hoverWaypointLabel.UpdatePosition(mapPos);
					}
				}
			}
			else if (waypointSelecting)
			{
				if (hoverWaypointLabel != null)
				{
					hoverWaypointLabel.UpdateActive(false);
				}
			}

			if (tooltipOn)
			{
				RectTransformUtility.ScreenPointToLocalPointInRectangle(m_LegendImage.rectTransform, Input.mousePosition, zoomInterface.MainCanvas.worldCamera, out rectPos);

				float halfWidth = m_LegendImage.rectTransform.rect.width / 2;

				float legendXPos = (rectPos.x + halfWidth) / m_LegendImage.rectTransform.rect.width;

				if (_tooltip != null)
				{
					_tooltip.UpdateText(zoomInterface.TooltipText(legendXPos));
				}
			}

			if (zoomInterface.OrbitToggle && zoomInterface.ShowOrbit)
			{
				for (int i = orbitLabels.Count - 1; i >= 0; i--)
				{
					SCAN_SimpleLabel label = orbitLabels[i];

					label.UpdateIcon(zoomInterface.OrbitInfo(i));
				}

				for (int i = orbitIconLabels.Count - 1; i >= 0; i--)
				{
					SCAN_MapLabel label = orbitIconLabels[i];

					label.UpdatePositionActivation(zoomInterface.OrbitIconInfo(label.StringID));
				}
			}

			if (zoomInterface.MapRefresh > 0 && !resizing && !zoomInterface.Rebuilding)
			{
				if (Time.realtimeSinceStartup > nextRefresh)
				{
					RefreshMap();
				}
			}
		}

		public void ResetRefresh()
		{
			if (zoomInterface.MapRefresh > 0)
			{
				float time = Time.realtimeSinceStartup;

				if (zoomInterface.MapRefresh == 1)
				{
					nextRefresh = time + refreshTimeOne;
				}
				else
				{
					nextRefresh = time + refreshTimeTwo;
				}
			}
		}

		public void setMap(ISCAN_ZoomMap map)
		{
			if (map == null)
			{
				return;
			}

			zoomInterface = map;

			if (m_Version != null)
			{
				m_Version.OnTextUpdate.Invoke(map.Version);
			}

			if (m_ColorToggle != null)
			{
				m_ColorToggle.isOn = map.ColorToggle;
			}

			if (m_TerminatorToggle != null)
			{
				m_TerminatorToggle.isOn = map.TerminatorToggle;
			}

			if (m_OrbitToggle != null)
			{
				m_OrbitToggle.isOn = map.OrbitToggle;
			}

			if (m_IconsToggle != null)
			{
				m_IconsToggle.isOn = map.IconsToggle;
			}

			if (m_LegendToggle != null)
			{
				m_LegendToggle.isOn = map.LegendToggle;
			}

			if (m_ResourceToggle != null)
			{
				m_ResourceToggle.isOn = map.ResourceToggle;
			}

			if (m_ResourceBar != null)
			{
				m_ResourceBar.SetActive(map.ResourceToggle);
			}

			if (!map.OrbitAvailable && m_OrbitObject != null)
			{
				m_OrbitObject.SetActive(false);
			}

			if (!map.ShowResource && m_ResourceMenu != null)
			{
				m_ResourceMenu.gameObject.SetActive(false);
			}

			if (map.VesselLock && m_MapMoveObject != null)
			{
				m_MapMoveObject.SetActive(false);
			}

			if (m_VesselLockImage != null && m_VesselLock != null && m_VesselUnlock != null)
			{
				m_VesselLockImage.sprite = map.VesselLock ? m_VesselLock : m_VesselUnlock;
			}

			if (m_ZoomPersistImage != null && m_ZoomPersistSprite != null && m_ZoomForgetSprite != null)
			{
				m_ZoomPersistImage.sprite = map.ZoomPersist ? m_ZoomPersistSprite : m_ZoomForgetSprite;
			}

			if (!map.ShowVessel)
			{
				if (m_VesselLockButton != null)
				{
					m_VesselLockButton.SetActive(false);
				}

				if (m_VesselSyncButton != null)
				{
					m_VesselSyncButton.SetActive(false);
				}
			}

			SetLegend(map.LegendToggle);

			if (map.ResourceToggle)
			{
				SetResourceLegend();
			}

			SetWindowState(map.WindowState);

			SetRefreshState(map.MapRefresh);

			SetScale(map.Scale);

			SetPosition(map.Position);

			SetSize(map.Size);

			ClearIcons();

			SetIcons();

			ProcessTooltips();

			ResetText();

			FadeIn();

			loaded = true;
		}

		public void FadeIn()
		{
			Fade(1, true);
		}

		public void FadeOut()
		{
			Fade(0, false, Kill, false);
		}

		private void Kill()
		{
			gameObject.SetActive(false);
			Destroy(gameObject);
		}

		public void Close()
		{
			if (zoomInterface != null)
			{
				zoomInterface.IsVisible = false;
			}
		}

		public void ProcessTooltips()
		{
			if (zoomInterface == null)
			{
				return;
			}

			TooltipHandler[] handlers = gameObject.GetComponentsInChildren(true);

			if (handlers == null)
			{
				return;
			}

			for (int j = 0; j < handlers.Length; j++)
			{
				ProcessTooltip(handlers[j], zoomInterface.TooltipsOn, zoomInterface.TooltipCanvas, zoomInterface.Scale);
			}
		}

		private void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)
		{
			if (handler == null)
			{
				return;
			}

			handler.IsActive = isOn && !handler.HelpTip;
			handler._Canvas = c;
			handler.Scale = scale;
		}

		public void SetScale(float scale)
		{
			rect.localScale = Vector3.one * scale;
		}

		public void SetPosition(Vector2 pos)
		{
			if (rect == null)
			{
				return;
			}

			rect.anchoredPosition = new Vector3(pos.x, pos.y, 0);
		}

		private void SetSize(Vector2 size)
		{
			if (m_MapLayout == null)
			{
				return;
			}

			if (size.x + 8 < m_MapLayout.minWidth)
			{
				size.x = m_MapLayout.minWidth - 8;
			}
			else if (size.x + 8 > m_MaxWidth)
			{
				size.x = m_MaxWidth - 8;
			}

			if (size.y + 8 < m_MapLayout.minHeight)
			{
				size.y = m_MapLayout.minHeight - 8;
			}
			else if (size.y + 8 > m_MaxHeight)
			{
				size.y = m_MaxHeight - 8;
			}

			if (size.x % 2 != 0)
			{
				size.x += 1;
			}

			if (size.y % 2 != 0)
			{
				size.y += 1;
			}

			if (size.x % 4 != 0)
			{
				size.x += 2;
			}

			if (size.y % 4 != 0)
			{
				size.y += 2;
			}

			m_MapLayout.preferredWidth = size.x + 8;
			m_MapLayout.preferredHeight = size.y + 8;
		}

		private void SetWindowState(int i)
		{
			switch (i)
			{
				case 0:
					if (m_WindowState != null && m_WindowMax != null)
					{
						m_WindowState.sprite = m_WindowMax;
					}

					if (m_TobBarObject != null)
					{
						m_TobBarObject.SetActive(true);
					}

					if (m_TobBarSecondObject != null)
					{
						m_TobBarSecondObject.SetActive(true);
					}

					if (m_ToggleBarObject != null)
					{
						m_ToggleBarObject.SetActive(true);
					}

					SetLegend(zoomInterface.LegendToggle);

					if (windowLayout != null)
					{
						RectOffset padding = windowLayout.padding;

						windowLayout.padding = new RectOffset(padding.left, 14, padding.top, 6);
					}

					break;
				case 1:
					if (m_WindowState != null && m_WindowMed != null)
					{
						m_WindowState.sprite = m_WindowMed;
					}

					if (m_TobBarObject != null)
					{
						m_TobBarObject.SetActive(true);
					}

					if (m_TobBarSecondObject != null)
					{
						m_TobBarSecondObject.SetActive(true);
					}

					if (m_ToggleBarObject != null)
					{
						m_ToggleBarObject.SetActive(false);
					}

					if (m_LegendBar != null)
					{
						m_LegendBar.SetActive(false);
					}

					if (windowLayout != null)
					{
						RectOffset padding = windowLayout.padding;

						windowLayout.padding = new RectOffset(padding.left, 18, padding.top, 18);
					}

					break;
				case 2:
					if (m_WindowState != null && m_WindowMin != null)
					{
						m_WindowState.sprite = m_WindowMin;
					}

					if (m_TobBarObject != null)
					{
						m_TobBarObject.SetActive(false);
					}

					if (m_TobBarSecondObject != null)
					{
						m_TobBarSecondObject.SetActive(false);
					}

					if (m_ToggleBarObject != null)
					{
						m_ToggleBarObject.SetActive(false);
					}

					if (m_LegendBar != null)
					{
						m_LegendBar.SetActive(false);
					}

					if (windowLayout != null)
					{
						RectOffset padding = windowLayout.padding;

						windowLayout.padding = new RectOffset(padding.left, 18, padding.top, 18);
					}

					break;
			}
		}

		private void SetRefreshState(int i)
		{
			switch (i)
			{
				case 0:
					if (m_AutoRefresh != null)
					{
						m_AutoRefresh.color = WHITE_REFRESH;
					}

					break;
				case 1:
					if (m_AutoRefresh != null)
					{
						m_AutoRefresh.color = YELLOW_REFRESH;
					}

					break;
				case 2:
					if (m_AutoRefresh != null)
					{
						m_AutoRefresh.color = GREEN_REFRESH;
					}

					break;
			}

			ResetRefreshState(i);
		}

		private void ResetRefreshState(int i)
		{
			if (zoomInterface.Rebuilding)
			{
				nextRefresh = float.MaxValue;
			}
			else
			{
				switch (i)
				{
					case 0:
						nextRefresh = float.MaxValue;
						break;
					case 1:
						nextRefresh = Time.realtimeSinceStartup + refreshTimeOne;
						break;
					case 2:
						nextRefresh = Time.realtimeSinceStartup + refreshTimeTwo;
						break;
				}
			}
		}

		public void SetLegends(bool isOn)
		{
			SetLegend(isOn);

			if (zoomInterface.ResourceToggle)
			{
				SetResourceLegend();
			}
		}

		private void SetLegend(bool isOn)
		{
			if (m_LegendBar == null)
			{
				return;
			}

			if (zoomInterface.LegendAvailable)
			{
				m_LegendBar.SetActive(isOn);
			}
			else
			{
				m_LegendBar.SetActive(false);
				return;
			}

			if (!isOn)
			{
				return;
			}

			if (m_LegendImage != null)
			{
				m_LegendImage.texture = zoomInterface.LegendImage;
			}

			if (zoomInterface.CurrentMapType == "Biome")
			{
				if (m_LegendLabelOne != null)
				{
					m_LegendLabelOne.gameObject.SetActive(false);
				}

				if (m_LegendLabelTwo != null)
				{
					m_LegendLabelTwo.gameObject.SetActive(false);
				}

				if (m_LegendLabelThree != null)
				{
					m_LegendLabelThree.gameObject.SetActive(false);
				}
			}
			else
			{
				IList labels = zoomInterface.LegendLabels;

				if (labels == null || labels.Count != 3)
				{
					return;
				}

				if (m_LegendLabelOne != null)
				{
					m_LegendLabelOne.gameObject.SetActive(true);
					m_LegendLabelOne.OnTextUpdate.Invoke(labels[0]);
				}

				if (m_LegendLabelTwo != null)
				{
					m_LegendLabelTwo.gameObject.SetActive(true);
					m_LegendLabelTwo.OnTextUpdate.Invoke(labels[1]);
				}

				if (m_LegendLabelThree != null)
				{
					m_LegendLabelThree.gameObject.SetActive(true);
					m_LegendLabelThree.OnTextUpdate.Invoke(labels[2]);
				}
			}
		}

		public void SetResourceLegend()
		{
			if (m_ResourceLegendImage != null)
			{
				m_ResourceLegendImage.texture = zoomInterface.ResourceLegendImage;
			}

			Vector2 res = zoomInterface.ResourceLegendLabels;

			if (m_ResourceLegendLabelOne != null)
			{
				m_ResourceLegendLabelOne.OnTextUpdate.Invoke(res.x.ToString(res.x < 0.1 ? "P1" : "P0"));
			}

			if (m_ResourceLegendLabelTwo != null)
			{
				m_ResourceLegendLabelTwo.OnTextUpdate.Invoke(res.y.ToString(res.y < 0.1 ? "P1" : "P0"));
			}
		}

		private void SetFlagIcons(IList flags)
		{
			if (flags == null)
			{
				return;
			}

			if (m_MapLabelPrefab == null || m_ZoomImage == null)
			{
				return;
			}

			for (int i = 0; i < flags.Count; i++)
			{
				MapLabelInfo info = flags[i];

				createFlag(info);
			}
		}

		private void createFlag(MapLabelInfo info)
		{
			SCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent();

			if (mapLabel == null)
			{
				return;
			}

			mapLabel.transform.SetParent(m_ZoomImage.transform, false);

			mapLabel.Setup(info);

			flagLabels.Add(mapLabel);
		}

		private void SetAnomalyIcons(Dictionary anomalies)
		{
			if (anomalies == null)
			{
				return;
			}

			if (m_MapLabelPrefab == null || m_ZoomImage == null)
			{
				return;
			}

			for (int i = 0; i < anomalies.Count; i++)
			{
				string id = anomalies.ElementAt(i).Key;

				MapLabelInfo info;

				if (!anomalies.TryGetValue(id, out info))
				{
					continue;
				}

				createAnomaly(id, info);
			}
		}

		private void createAnomaly(string id, MapLabelInfo info)
		{
			SCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent();

			if (mapLabel == null)
			{
				return;
			}

			mapLabel.transform.SetParent(m_ZoomImage.transform, false);

			mapLabel.Setup(id, info);

			anomalyLabels.Add(mapLabel);
		}

		private void SetROCIcons(IList rocs)
		{
			if (rocs == null)
			{
				return;
			}

			if (m_MapLabelPrefab == null || m_ZoomImage == null)
			{
				return;
			}

			for (int i = 0; i < rocs.Count; i++)
			{
				MapLabelInfo info = rocs[i];

				createROC(info);
			}
		}

		private void createROC(MapLabelInfo info)
		{
			SCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent();

			if (mapLabel == null)
			{
				return;
			}

			mapLabel.transform.SetParent(m_ZoomImage.transform, false);

			mapLabel.Setup(info);

			rocLabels.Add(mapLabel);
		}

		private void SetWaypointIcons(Dictionary waypoints)
		{
			if (waypoints == null)
			{
				return;
			}

			if (m_MapLabelPrefab == null || m_ZoomImage == null)
			{
				return;
			}

			for (int i = 0; i < waypoints.Count; i++)
			{
				int id = waypoints.ElementAt(i).Key;

				MapLabelInfo info;

				if (!waypoints.TryGetValue(id, out info))
				{
					continue;
				}

				createWaypoint(id, info);
			}
		}

		private SCAN_MapLabel createWaypoint(int id, MapLabelInfo info, bool temp = false)
		{
			SCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent();

			if (mapLabel == null)
			{
				return null;
			}

			mapLabel.transform.SetParent(m_ZoomImage.transform, false);

			mapLabel.Setup(id, info);

			if (!temp)
			{
				waypointLabels.Add(mapLabel);
			}

			return mapLabel;
		}

		private void SetVesselIcon(KeyValuePair vessel)
		{
			if (vessel.Value.label == "null")
			{
				return;
			}

			if (m_MapLabelPrefab == null || m_ZoomImage == null)
			{
				return;
			}

			SCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent();

			if (mapLabel == null)
			{
				return;
			}

			mapLabel.transform.SetParent(m_ZoomImage.transform, false);

			mapLabel.Setup(vessel.Key, vessel.Value);

			vesselLabel = mapLabel;
		}

		private void SetOrbitIcons(int count)
		{
			if (zoomInterface == null || m_ZoomImage == null)
			{
				return;
			}

			for (int i = 0; i < count; i++)
			{
				SimpleLabelInfo info = zoomInterface.OrbitInfo(i);

				CreateOrbitIcon(info);
			}
		}

		private void CreateOrbitIcon(SimpleLabelInfo info)
		{
			GameObject labelObj = new GameObject("SCAN_SimpleLabel");

			SCAN_SimpleLabel label = labelObj.AddComponent();

			if (label == null)
			{
				return;
			}

			label.transform.SetParent(m_ZoomImage.transform, false);

			label.Setup(info);

			orbitLabels.Add(label);
		}

		private void SetOrbitMapIcons(Dictionary orbitLabels)
		{
			if (orbitLabels == null)
			{
				return;
			}

			if (m_MapLabelPrefab == null || m_ZoomImage == null)
			{
				return;
			}

			for (int i = 0; i < orbitLabels.Count; i++)
			{
				string id = orbitLabels.ElementAt(i).Key;

				MapLabelInfo info;

				if (!orbitLabels.TryGetValue(id, out info))
				{
					continue;
				}

				CreateOrbitMapIcon(id, info);
			}
		}

		private void CreateOrbitMapIcon(string id, MapLabelInfo info)
		{
			SCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent();

			if (mapLabel == null)
			{
				return;
			}

			mapLabel.transform.SetParent(m_ZoomImage.transform, false);

			mapLabel.Setup(id, info);

			orbitIconLabels.Add(mapLabel);
		}

		private void ClearIcons()
		{
			for (int i = waypointLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel m = waypointLabels[i];

				m.gameObject.SetActive(false);
				Destroy(m.gameObject);
			}

			for (int i = anomalyLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel m = anomalyLabels[i];

				m.gameObject.SetActive(false);
				Destroy(m.gameObject);
			}

			for (int i = rocLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel m = rocLabels[i];

				m.gameObject.SetActive(false);
				Destroy(m.gameObject);
			}

			for (int i = flagLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel m = flagLabels[i];

				m.gameObject.SetActive(false);
				Destroy(m.gameObject);
			}

			for (int i = orbitLabels.Count - 1; i >= 0; i--)
			{
				SCAN_SimpleLabel s = orbitLabels[i];

				s.gameObject.SetActive(false);
				Destroy(s.gameObject);
			}

			for (int i = orbitIconLabels.Count - 1; i >= 0; i--)
			{
				SCAN_MapLabel m = orbitIconLabels[i];

				m.gameObject.SetActive(false);
				Destroy(m.gameObject);
			}

			if (vesselLabel != null)
			{
				vesselLabel.gameObject.SetActive(false);
				Destroy(vesselLabel.gameObject);
			}

			DestroyWaypoint(tempWaypointLabel);

			flagLabels.Clear();
			anomalyLabels.Clear();
			rocLabels.Clear();
			waypointLabels.Clear();
			orbitLabels.Clear();
			orbitIconLabels.Clear();
			vesselLabel = null;
		}

		public void RefreshIcons()
		{
			ClearIcons();

			SetIcons();
		}

		private void SetIcons()
		{
			if (zoomInterface == null)
			{
				return;
			}

			if (zoomInterface.IconsToggle)
			{
				SetFlagIcons(zoomInterface.FlagInfoList);

				SetAnomalyIcons(zoomInterface.AnomalyInfoList);

				SetROCIcons(zoomInterface.ROCInfoList);

				if (zoomInterface.ShowWaypoint)
				{
					SetWaypointIcons(zoomInterface.WaypointInfoList);
				}
			}

			if (zoomInterface.OrbitToggle && zoomInterface.ShowOrbit)
			{
				SetOrbitIcons(zoomInterface.OrbitSteps);
				SetOrbitMapIcons(zoomInterface.OrbitLabelList);
			}

			SetVesselIcon(zoomInterface.VesselInfo);
		}

		private void ResetText()
		{
			if (zoomInterface == null)
			{
				return;
			}

			if (m_ZoomLevel != null)
			{
				m_ZoomLevel.OnTextUpdate.Invoke(zoomInterface.ZoomLevelText);
			}

			if (m_Title != null)
			{
				m_Title.OnTextUpdate.Invoke(zoomInterface.MapCenterText);
			}
		}

		public void OnEnterLegend(BaseEventData eventData)
		{
			if (zoomInterface == null || !zoomInterface.LegendToggle || !zoomInterface.LegendTooltips)
			{
				return;
			}

			if (_tooltip != null)
			{
				CloseTooltip();
			}

			tooltipOn = true;
			OpenTooltip();
		}

		public void OnExitLegend(BaseEventData eventData)
		{
			if (zoomInterface == null || !zoomInterface.LegendToggle || !zoomInterface.LegendTooltips)
			{
				return;
			}

			tooltipOn = false;
			CloseTooltip();
		}

		private void OpenTooltip()
		{
			if (m_TooltipPrefab == null || zoomInterface.TooltipCanvas == null)
			{
				return;
			}

			_tooltip = Instantiate(m_TooltipPrefab).GetComponent();

			if (_tooltip == null)
			{
				return;
			}

			_tooltip.transform.SetParent(zoomInterface.TooltipCanvas.transform, false);
			_tooltip.transform.SetAsLastSibling();

			_tooltip.Setup(zoomInterface.TooltipCanvas, "_", zoomInterface.Scale);
		}

		private void CloseTooltip()
		{
			if (_tooltip == null)
			{
				return;
			}

			_tooltip.gameObject.SetActive(false);
			Destroy(_tooltip.gameObject);
			_tooltip = null;
		}

		public void OnEnterMap(BaseEventData eventData)
		{
			inMap = true;

			if (m_ReadoutBar != null)
			{
				m_ReadoutBar.SetActive(true);
			}
		}

		public void OnExitMap(BaseEventData eventData)
		{
			inMap = false;

			if (m_ReadoutBar != null)
			{
				m_ReadoutBar.SetActive(false);
			}

			if (m_ReadoutText != null)
			{
				m_ReadoutText.OnTextUpdate.Invoke("");
			}
		}

		public void OnClickMap(BaseEventData eventData)
		{
			if (!inMap || zoomInterface == null || m_ZoomImage == null || !(eventData is PointerEventData))
			{
				return;
			}

			OnPointerDown((PointerEventData)eventData);

			Vector2 pos;

			RectTransformUtility.ScreenPointToLocalPointInRectangle(m_ZoomImage.rectTransform, Input.mousePosition, zoomInterface.MainCanvas.worldCamera, out pos);

			if (waypointSelecting)
			{
				DestroyWaypoint(tempWaypointLabel);

				SetWaypoint(pos);
			}
			else
			{
				zoomInterface.ClickMap((int)((PointerEventData)eventData).button, pos);

				UpdateMapData(true);
			}
		}

		private void SetWaypoint(Vector2 p)
		{
			Vector2 mapPos = new Vector2(p.x, p.y + zoomInterface.Size.y);

			MapLabelInfo info = new MapLabelInfo()
			{
				label = "",
				image = zoomInterface.WaypointSprite,
				pos = mapPos,
				baseColor = Color.white,
				flash = false,
				width = 20,
				alignBottom = 10,
				show = true
			};

			tempWaypointLabel = createWaypoint(0, info, true);
		}

		public void OnBeginDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			mouseStart = eventData.position;
			windowStart = rect.position;
		}

		public void OnDrag(PointerEventData eventData)
		{
			if (rect == null)
			{
				return;
			}

			rect.position = windowStart + (Vector3)(eventData.position - mouseStart);

			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.ClampToScreen(rect);
		}

		public void OnEndDrag(PointerEventData eventData)
		{
			if (rect == null || zoomInterface == null)
			{
				return;
			}

			zoomInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);
		}

		public void OnStartResize(BaseEventData eventData)
		{
			if (m_MapLayout == null)
			{
				return;
			}

			if (!(eventData is PointerEventData))
			{
				return;
			}

			resizing = true;

			mouseStart = ((PointerEventData)eventData).position;
			resizeStart = new Vector2(m_MapLayout.preferredWidth, m_MapLayout.preferredHeight);

			ClearIcons();
		}

		public void OnResize(BaseEventData eventData)
		{
			if (m_MapLayout == null)
			{
				return;
			}

			if (!(eventData is PointerEventData))
			{
				return;
			}

			float width = resizeStart.x + (((PointerEventData)eventData).position.x - mouseStart.x);
			float height = resizeStart.y - (((PointerEventData)eventData).position.y - mouseStart.y);

			if (width < m_MapLayout.minWidth)
			{
				width = m_MapLayout.minWidth;
			}
			else if (width > m_MaxWidth)
			{
				width = m_MaxWidth;
			}

			if (height < m_MapLayout.minHeight)
			{
				height = m_MapLayout.minHeight;
			}
			else if (height > m_MaxHeight)
			{
				height = m_MaxHeight;
			}

			if (width % 2 != 0)
			{
				width += 1;
			}

			if (width % 4 != 0)
			{
				width += 2;
			}

			if (height % 2 != 0)
			{
				height += 1;
			}

			if (height % 4 != 0)
			{
				height += 2;
			}

			m_MapLayout.preferredWidth = width;
			m_MapLayout.preferredHeight = height;
		}

		public void OnEndResize(BaseEventData eventData)
		{
			if (m_MapLayout == null || zoomInterface == null)
			{
				return;
			}

			resizing = false;

			zoomInterface.Size = new Vector2(m_MapLayout.preferredWidth - 8, m_MapLayout.preferredHeight - 8);

			UpdateMapData(true);
		}

		public void OnPointerDown(PointerEventData eventData)
		{
			transform.SetAsLastSibling();

			if (dropDown == null)
			{
				return;
			}

			RectTransform r = dropDown.GetComponent();

			if (r == null)
			{
				return;
			}

			if (RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))
			{
				return;
			}

			dropDown.FadeOut();
			dropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}
		}

		public void UpdateTitle(string text)
		{
			if (m_Title == null)
			{
				return;
			}

			m_Title.OnTextUpdate.Invoke(text);
		}

		public void UpdateMapTexture(Texture2D map)
		{
			if (m_ZoomImage == null)
			{
				return;
			}

			m_ZoomImage.texture = map;
		}

		public void UpdateMapData(bool text)
		{
			if (text || zoomInterface.VesselLock)
			{
				ResetText();
			}

			ResetRefreshState(zoomInterface.MapRefresh);

			RefreshIcons();

			if (zoomInterface.ResourceToggle)
			{
				SetResourceLegend();
			}

			SetLegend(zoomInterface.LegendToggle);
		}

		public void ToggleWindowState()
		{
			if (zoomInterface == null)
			{
				return;
			}

			int i = zoomInterface.WindowState + 1;

			if (i > 2)
			{
				i = 0;
			}

			zoomInterface.WindowState = i;

			SetWindowState(i);
		}

		public void ToggleZoomMapRefresh()
		{
			if (zoomInterface == null)
			{
				return;
			}

			int i = zoomInterface.MapRefresh + 1;

			if (i > 2)
			{
				i = 0;
			}

			zoomInterface.MapRefresh = i;

			SetRefreshState(i);
		}

		public void ToggleTypeSelection(bool isOn)
		{
			if (dropDown != null)
			{
				dropDown.FadeOut(true);
				dropDown = null;
			}

			if (!isOn)
			{
				return;
			}

			if (zoomInterface == null || m_DropDownPrefab == null || m_MapTypeMenu == null)
			{
				return;
			}

			dropDown = Instantiate(m_DropDownPrefab).GetComponent();

			if (dropDown == null)
			{
				return;
			}

			dropDown.transform.SetParent(m_MapTypeMenu, false);

			dropDown.Setup(zoomInterface.MapTypes, zoomInterface.CurrentMapType);

			dropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction(SetType));
		}

		private void SetType(string selection)
		{
			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.CurrentMapType = selection;

			dropDown.FadeOut();
			dropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}

			UpdateMapData(false);
		}

		public void ToggleResourceSelection(bool isOn)
		{
			if (dropDown != null)
			{
				dropDown.FadeOut(true);
				dropDown = null;
			}

			if (!isOn)
			{
				return;
			}

			if (zoomInterface == null || m_DropDownPrefab == null || m_ResourceMenu == null)
			{
				return;
			}

			dropDown = Instantiate(m_DropDownPrefab).GetComponent();

			if (dropDown == null)
			{
				return;
			}

			dropDown.transform.SetParent(m_ResourceMenu, false);

			dropDown.Setup(zoomInterface.Resources, zoomInterface.CurrentResource);

			dropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction(SetResource));
		}

		private void SetResource(string selection)
		{
			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.CurrentResource = selection;

			loaded = false;
			if (m_ResourceToggle != null)
			{
				m_ResourceToggle.isOn = true;
			}

			loaded = true;

			zoomInterface.ResourceToggle = true;

			dropDown.FadeOut();
			dropDown = null;

			if (m_DropDownToggles != null)
			{
				m_DropDownToggles.SetAllTogglesOff();
			}

			UpdateMapData(false);
		}

		public void RefreshMap()
		{
			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.RefreshMap();

			UpdateMapData(false);
		}

		public void ToggleColor(bool isOn)
		{
			if (!loaded || zoomInterface == null)
			{
				return;
			}

			zoomInterface.ColorToggle = isOn;

			UpdateMapData(false);
		}

		public void ToggleTerminator(bool isOn)
		{
			if (!loaded || zoomInterface == null)
			{
				return;
			}

			zoomInterface.TerminatorToggle = isOn;

			UpdateMapData(false);
		}

		public void ToggleOrbit(bool isOn)
		{
			if (!loaded || zoomInterface == null)
			{
				return;
			}

			zoomInterface.OrbitToggle = isOn;

			RefreshIcons();
		}

		public void ToggleIcons(bool isOn)
		{
			if (!loaded || zoomInterface == null)
			{
				return;
			}

			zoomInterface.IconsToggle = isOn;

			RefreshIcons();
		}

		public void ToggleLegend(bool isOn)
		{
			if (!loaded || zoomInterface == null)
			{
				return;
			}

			zoomInterface.LegendToggle = isOn;

			SetLegend(isOn);
		}

		public void ToggleResource(bool isOn)
		{
			if (!loaded || zoomInterface == null)
			{
				return;
			}

			zoomInterface.ResourceToggle = isOn;

			if (m_ResourceBar != null)
			{
				m_ResourceBar.SetActive(isOn);
			}

			UpdateMapData(false);
		}

		public void SyncVessel()
		{
			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.VesselSync();

			UpdateMapData(false);
		}

		public void LockVessel()
		{
			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.VesselLock = !zoomInterface.VesselLock;

			if (m_VesselLockImage != null && m_VesselLock != null && m_VesselUnlock != null)
			{
				m_VesselLockImage.sprite = zoomInterface.VesselLock ? m_VesselLock : m_VesselUnlock;
			}

			if (m_MapMoveObject != null)
			{
				m_MapMoveObject.SetActive(!zoomInterface.VesselLock);
			}

			UpdateMapData(false);
		}

		public void ToggleZoomPersist()
		{
			if (!loaded || zoomInterface == null)
			{
				return;
			}

			zoomInterface.ZoomPersist = !zoomInterface.ZoomPersist;

			if (m_ZoomPersistImage != null && m_ZoomPersistSprite != null && m_ZoomForgetSprite != null)
			{
				m_ZoomPersistImage.sprite = zoomInterface.ZoomPersist ? m_ZoomPersistSprite : m_ZoomForgetSprite;
			}
		}

		public void ZoomOut()
		{
			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.ZoomMap(false);

			UpdateMapData(true);
		}

		public void ZoomIn()
		{
			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.ZoomMap(true);

			UpdateMapData(true);
		}

		public void MoveLeft()
		{
			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.MoveMap(0);

			UpdateMapData(true);
		}

		public void MoveRight()
		{
			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.MoveMap(1);

			UpdateMapData(true);
		}

		public void MoveUp()
		{
			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.MoveMap(2);

			UpdateMapData(true);
		}

		public void MoveDown()
		{
			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.MoveMap(3);

			UpdateMapData(true);
		}

		public void GenerateWaypoint()
		{
			waypointSelecting = !waypointSelecting;

			DestroyWaypoint(tempWaypointLabel);
			DestroyWaypoint(hoverWaypointLabel);

			if (zoomInterface == null)
			{
				return;
			}

			zoomInterface.LockInput = false;

			if (m_WaypointBar != null)
			{
				m_WaypointBar.SetActive(waypointSelecting);
			}

			if (waypointSelecting)
			{
				HoverWaypoint();

				if (m_MechJebButton != null)
				{
					m_MechJebButton.SetActive(zoomInterface.MechJebAvailable);
				}

				if (m_WaypointInput != null)
				{
					if (string.IsNullOrEmpty(waypoint))
					{
						m_WaypointInput.OnTextUpdate.Invoke(zoomInterface.RandomWaypoint);
					}
					else
					{
						m_WaypointInput.OnTextUpdate.Invoke(waypoint);
					}
				}
			}
		}

		private void HoverWaypoint()
		{
			MapLabelInfo info = new MapLabelInfo()
			{
				label = "",
				image = zoomInterface.WaypointSprite,
				pos = new Vector2(),
				baseColor = Color.white,
				flashColor = Color.red,
				flash = true,
				width = 20,
				alignBottom = 10,
				show = false
			};

			hoverWaypointLabel = createWaypoint(0, info, true);
		}

		public void OnInputClick(BaseEventData eventData)
		{
			if (!(eventData is PointerEventData) || zoomInterface == null)
			{
				return;
			}

			if (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)
			{
				return;
			}

			zoomInterface.LockInput = true;
		}

		public void RefreshWaypoint()
		{
			DestroyWaypoint(tempWaypointLabel);

			if (zoomInterface == null || m_WaypointInput == null)
			{
				return;
			}

			m_WaypointInput.OnTextUpdate.Invoke(zoomInterface.RandomWaypoint);

			waypoint = "";
		}

		public void SetWaypoint()
		{
			if (zoomInterface == null || m_WaypointInput == null)
			{
				return;
			}

			waypoint = "";

			if (tempWaypointLabel != null)
			{
				zoomInterface.SetWaypoint(m_WaypointInput.Text, tempWaypointLabel.Info.pos);
			}

			GenerateWaypoint();

			RefreshIcons();

			waypointSelecting = false;
		}

		public void CancelWaypoint()
		{
			GenerateWaypoint();

			RefreshIcons();

			waypointSelecting = false;
		}

		public void MechJebLanding()
		{
			if (zoomInterface == null)
			{
				return;
			}

			waypoint = "";

			if (tempWaypointLabel != null)
			{
				zoomInterface.SetMJWaypoint(tempWaypointLabel.Info.pos);
			}

			GenerateWaypoint();

			RefreshIcons();

			waypointSelecting = false;
		}

		private void DestroyWaypoint(SCAN_MapLabel waypoint)
		{
			if (waypoint != null)
			{
				waypoint.gameObject.SetActive(false);
				Destroy(waypoint.gameObject);
				waypoint = null;
			}
		}
	}
}


================================================
FILE: SCANsat.props
================================================


  
  
    GameData/SCANsat/Plugins
  


================================================
FILE: SCANsat.sln
================================================

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.11.35312.102
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SCANsat", "SCANsat\SCANsat.csproj", "{3AE13948-477D-4375-8AB4-B45664966D9E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SCANmechjeb", "SCANmechjeb\SCANmechjeb.csproj", "{A2B942AF-3AB2-4A9F-9211-FFC47364128D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SCANsat.Unity", "SCANsat.Unity\SCANsat.Unity.csproj", "{4ED5E40D-273A-4643-9009-04C1DD02F3E2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{63914E47-3B9A-4298-BAA4-362B47D8F105}"
	ProjectSection(SolutionItems) = preProject
		.editorconfig = .editorconfig
		.gitignore = .gitignore
		CHANGELOG.md = CHANGELOG.md
		CONTRIBUTING.md = CONTRIBUTING.md
		LICENSE.txt = LICENSE.txt
		README.md = README.md
		SCANsat.props = SCANsat.props
		SCANsat.props.user = SCANsat.props.user
		SCANsat.version.props = SCANsat.version.props
	EndProjectSection
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{3AE13948-477D-4375-8AB4-B45664966D9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{3AE13948-477D-4375-8AB4-B45664966D9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{3AE13948-477D-4375-8AB4-B45664966D9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{3AE13948-477D-4375-8AB4-B45664966D9E}.Release|Any CPU.Build.0 = Release|Any CPU
		{A2B942AF-3AB2-4A9F-9211-FFC47364128D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{A2B942AF-3AB2-4A9F-9211-FFC47364128D}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{A2B942AF-3AB2-4A9F-9211-FFC47364128D}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{A2B942AF-3AB2-4A9F-9211-FFC47364128D}.Release|Any CPU.Build.0 = Release|Any CPU
		{4ED5E40D-273A-4643-9009-04C1DD02F3E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{4ED5E40D-273A-4643-9009-04C1DD02F3E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{4ED5E40D-273A-4643-9009-04C1DD02F3E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{4ED5E40D-273A-4643-9009-04C1DD02F3E2}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {316FD7A6-78EB-48DD-92DE-595FE8DD957D}
	EndGlobalSection
	GlobalSection(MonoDevelopProperties) = preSolution
		StartupItem = SCANdebug\SCANdebug.csproj
		Policies = $0
		$0.DotNetNamingPolicy = $1
		$1.DirectoryNamespaceAssociation = None
		$1.ResourceNamePolicy = FileFormatDefault
		$0.StandardHeader = $2
		$2.Text = 
		$2.IncludeInNewFiles = True
		$0.TextStylePolicy = $39
		$3.inheritsSet = null
		$3.scope = text/x-csharp
		$0.CSharpFormattingPolicy = $4
		$4.IndentSwitchBody = True
		$4.NamespaceBraceStyle = EndOfLine
		$4.ClassBraceStyle = EndOfLine
		$4.InterfaceBraceStyle = EndOfLine
		$4.StructBraceStyle = EndOfLine
		$4.EnumBraceStyle = EndOfLine
		$4.MethodBraceStyle = EndOfLine
		$4.ConstructorBraceStyle = EndOfLine
		$4.DestructorBraceStyle = EndOfLine
		$4.WithinMethodDeclarationParentheses = True
		$4.WithinConstructorDeclarationParentheses = True
		$4.BeforeIndexerDeclarationBracket = False
		$4.AfterDelegateDeclarationParameterComma = True
		$4.WithinDelegateDeclarationParentheses = True
		$4.AroundShiftOperatorParentheses = False
		$4.SpacesBeforeBrackets = False
		$4.BlankLinesBetweenTypes = 2
		$4.inheritsSet = Mono
		$4.inheritsScope = text/x-csharp
		$4.scope = text/x-csharp
		$5.FileWidth = 120
		$5.TabWidth = 2
		$5.NoTabsAfterNonTabs = True
		$5.EolMarker = Windows
		$5.inheritsSet = Mono
		$5.inheritsScope = text/plain
		$5.scope = text/plain
		$6.inheritsSet = null
		$6.scope = application/octet-stream
		$0.NameConventionPolicy = $7
		$7.Rules = $8
		$8.NamingRule = $33
		$9.Name = Namespaces
		$9.AffectedEntity = Namespace
		$9.VisibilityMask = VisibilityMask
		$9.NamingStyle = PascalCase
		$9.IncludeInstanceMembers = True
		$9.IncludeStaticEntities = True
		$10.Name = Types
		$10.AffectedEntity = Class, Struct, Enum, Delegate
		$10.VisibilityMask = VisibilityMask
		$10.NamingStyle = PascalCase
		$10.IncludeInstanceMembers = True
		$10.IncludeStaticEntities = True
		$11.Name = Interfaces
		$11.RequiredPrefixes = $12
		$12.String = I
		$11.AffectedEntity = Interface
		$11.VisibilityMask = VisibilityMask
		$11.NamingStyle = PascalCase
		$11.IncludeInstanceMembers = True
		$11.IncludeStaticEntities = True
		$13.Name = Attributes
		$13.RequiredSuffixes = $14
		$14.String = Attribute
		$13.AffectedEntity = CustomAttributes
		$13.VisibilityMask = VisibilityMask
		$13.NamingStyle = PascalCase
		$13.IncludeInstanceMembers = True
		$13.IncludeStaticEntities = True
		$15.Name = Event Arguments
		$15.RequiredSuffixes = $16
		$16.String = EventArgs
		$15.AffectedEntity = CustomEventArgs
		$15.VisibilityMask = VisibilityMask
		$15.NamingStyle = PascalCase
		$15.IncludeInstanceMembers = True
		$15.IncludeStaticEntities = True
		$17.Name = Exceptions
		$17.RequiredSuffixes = $18
		$18.String = Exception
		$17.AffectedEntity = CustomExceptions
		$17.VisibilityMask = VisibilityMask
		$17.NamingStyle = PascalCase
		$17.IncludeInstanceMembers = True
		$17.IncludeStaticEntities = True
		$19.Name = Methods
		$19.AffectedEntity = Methods
		$19.VisibilityMask = VisibilityMask
		$19.NamingStyle = PascalCase
		$19.IncludeInstanceMembers = True
		$19.IncludeStaticEntities = True
		$20.Name = Static Readonly Fields
		$20.AffectedEntity = ReadonlyField
		$20.VisibilityMask = Internal, Protected, Public
		$20.NamingStyle = PascalCase
		$20.IncludeInstanceMembers = False
		$20.IncludeStaticEntities = True
		$21.Name = Fields (Non Private)
		$21.AffectedEntity = Field
		$21.VisibilityMask = Internal, Protected, Public
		$21.NamingStyle = PascalCase
		$21.IncludeInstanceMembers = True
		$21.IncludeStaticEntities = True
		$22.Name = ReadOnly Fields (Non Private)
		$22.AffectedEntity = ReadonlyField
		$22.VisibilityMask = Internal, Protected, Public
		$22.NamingStyle = PascalCase
		$22.IncludeInstanceMembers = True
		$22.IncludeStaticEntities = False
		$23.Name = Fields (Private)
		$23.AllowedPrefixes = $24
		$24.String = m_
		$23.AffectedEntity = Field, ReadonlyField
		$23.VisibilityMask = Private
		$23.NamingStyle = CamelCase
		$23.IncludeInstanceMembers = True
		$23.IncludeStaticEntities = False
		$25.Name = Static Fields (Private)
		$25.AffectedEntity = Field
		$25.VisibilityMask = Private
		$25.NamingStyle = CamelCase
		$25.IncludeInstanceMembers = False
		$25.IncludeStaticEntities = True
		$26.Name = ReadOnly Fields (Private)
		$26.AllowedPrefixes = $27
		$27.String = m_
		$26.AffectedEntity = ReadonlyField
		$26.VisibilityMask = Private
		$26.NamingStyle = CamelCase
		$26.IncludeInstanceMembers = True
		$26.IncludeStaticEntities = False
		$28.Name = Constant Fields
		$28.AffectedEntity = ConstantField
		$28.VisibilityMask = VisibilityMask
		$28.NamingStyle = PascalCase
		$28.IncludeInstanceMembers = True
		$28.IncludeStaticEntities = True
		$29.Name = Properties
		$29.AffectedEntity = Property
		$29.VisibilityMask = VisibilityMask
		$29.NamingStyle = PascalCase
		$29.IncludeInstanceMembers = True
		$29.IncludeStaticEntities = True
		$30.Name = Events
		$30.AffectedEntity = Event
		$30.VisibilityMask = VisibilityMask
		$30.NamingStyle = PascalCase
		$30.IncludeInstanceMembers = True
		$30.IncludeStaticEntities = True
		$31.Name = Enum Members
		$31.AffectedEntity = EnumMember
		$31.VisibilityMask = VisibilityMask
		$31.NamingStyle = PascalCase
		$31.IncludeInstanceMembers = True
		$31.IncludeStaticEntities = True
		$32.Name = Parameters
		$32.AffectedEntity = Parameter
		$32.VisibilityMask = VisibilityMask
		$32.NamingStyle = CamelCase
		$32.IncludeInstanceMembers = True
		$32.IncludeStaticEntities = True
		$33.Name = Type Parameters
		$33.RequiredPrefixes = $34
		$34.String = T
		$33.AffectedEntity = TypeParameter
		$33.VisibilityMask = VisibilityMask
		$33.NamingStyle = PascalCase
		$33.IncludeInstanceMembers = True
		$33.IncludeStaticEntities = True
		$35.inheritsSet = null
		$35.scope = application/x-csproject
		$0.XmlFormattingPolicy = $40
		$36.inheritsSet = null
		$36.scope = application/x-csproject
		$37.inheritsSet = null
		$37.scope = application/x-msbuild
		$38.inheritsSet = null
		$38.scope = application/x-msbuild
		$39.inheritsSet = null
		$39.scope = application/xml
		$40.inheritsSet = Mono
		$40.inheritsScope = application/xml
		$40.scope = application/xml
		$0.VersionControlPolicy = $41
		$41.inheritsSet = Mono
		$0.ChangeLogPolicy = $42
		$42.UpdateMode = None
		$42.MessageStyle = $43
		$43.LineAlign = 0
		$42.inheritsSet = Mono
		version = 1.0.8.0
		outputpath = ..\..\GameData\SCANsat
	EndGlobalSection
EndGlobal


================================================
FILE: SCANsat.version.props
================================================


  
    21.1
  


================================================
FILE: SCANsat.version.props.versiontemplate
================================================


  
    @VERSION_FULL@
  


================================================
FILE: SCANsatkethane/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("SCANsatKethane")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SCANsatKethane")]
[assembly: AssemblyCopyright("SCANsat Copyright ©  2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.6.0")]
[assembly: AssemblyFileVersion("1.0.7.5")]
[assembly: AssemblyInformationalVersion("v7rc5")]

[assembly: KSPAssembly ("SCANsatKethane", 0, 75)]
[assembly: KSPAssemblyDependency ("SCANsat", 0, 75)]


================================================
FILE: SCANsatkethane/SCANStarter.cs
================================================
/*
 *  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANStarter - Helper method to check for the presence or abesence of Kethane
 *
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 *
 */

using System;
using System.Linq;
using System.Diagnostics;
using System.Reflection;
using UnityEngine;

namespace SCANsatKethane
{
    [KSPAddon(KSPAddon.Startup.Flight, false)]
    class SCANStarter : MonoBehaviour
    {
        private SCANsatKethane SCANK;
		private readonly string Version = "0.9";

        public void Start() {
            print("[SCAN Kethane] Searching For Kethane Assembly...");
            searching();
        }

        private void searching () {
            var KAssembly = AssemblyLoader.loadedAssemblies.SingleOrDefault(a => a.assembly.GetName().Name == "Kethane");
            if (KAssembly != null) {
				var ainfoV = Attribute.GetCustomAttribute(KAssembly.assembly, typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute;
				if (ainfoV != null)
				{
					if (ainfoV.InformationalVersion == Version)
					{
						print("[SCAN Kethane] Kethane Assembly Found; Version: " + Version + ", Launching Watcher");
						launcher();
					}
                }
                else
                    print("[SCAN Kethane] Kethane Assembly Found; Unsupported Version, Shutting Down");
            } else
                print("[SCAN Kethane] Kethane Assembly Not Found, Shutting Down");
        }
        
        private void launcher () {
            if (SCANK == null) {
                print("[SCAN Kethane] Starting Watcher");
                SCANK = gameObject.AddComponent();
            }
        }

		private void OnDestroy()
		{
			if (SCANK != null)
				Destroy(SCANK);
		}

    }
}


================================================
FILE: SCANsatkethane/SCANsatkethane.cs
================================================
/*
 *  [Scientific Committee on Advanced Navigation]
 * 			S.C.A.N. Satellite
 *
 * SCANsatKethane - Module for interfacing with Kethane assembly
 *
 * Copyright (c)2014 David Grandy ;
 * Copyright (c)2014 technogeeky ;
 * Copyright (c)2014 (Your Name Here) ; see LICENSE.txt for licensing details.
 *
 */

using System;
using SCANsat;
using Kethane;
using UnityEngine;
using GeodesicGrid;

namespace SCANsatKethane
{

	public class SCANsatKethane: MonoBehaviour
	{
		private CelestialBody body;
		private SCANdata.SCANResource resource;
		private bool rebuild, reset;
		private int rebuildStep, rebuildValueStep;
		private bool initialized, rebuildingArray, rebuildingValue = false;
		private Cell cell;

		public void Start() {
		print("[SCAN Kethane] Starting Up");
			GameEvents.onFlightReady.Add(initialize);
		}

		public void OnDestroy() {
			print("[SCAN Kethane] Shutting Down");
			GameEvents.onFlightReady.Remove(initialize);
		}

		public void Update() {
			if (initialized) {
				if (rebuildStep < 180) {
					rebuildResourceArray();
				}
				if (rebuildValueStep < 45) {
					rebuildResourceValue(resource.type);
				}
				if (SCANcontroller.controller.resourceOverlayType == 1 && SCANcontroller.ResourcesList.Count > 0 && !SCANcontroller.controller.kethaneBusy)
				{
					setBody (FlightGlobals.currentMainBody);
					setResource(SCANcontroller.ResourcesList[SCANcontroller.controller.gridSelection].name);
					setRebuild (SCANcontroller.controller.kethaneRebuild);
					setReset (SCANcontroller.controller.kethaneReset);
				}
			}
		}

		private void initialize() {
			rebuild = SCANcontroller.controller.kethaneRebuild;
			print("[SCAN Kethane] Initialized");
			rebuildStep = 180;
			rebuildValueStep = 180;
			initialized = true;
		}

		private void setBody(CelestialBody b) { //Watcher to check for Celestial Body changes
			if (body == b) return;
			if (b != null) {
				body = b;
				resource = SCANcontroller.ResourcesList[SCANcontroller.controller.gridSelection];
				reset = SCANcontroller.controller.kethaneReset;
				SCANcontroller.controller.map_ResourceOverlay = false; //Force the overlay off to allow array to rebuild
				SCANdata data = SCANUtil.getData(body);
				data.kethaneValueMap = new float[360, 180];
				rebuildStep = 0;
				SCANcontroller.controller.kethaneBusy = true;
			}
		}

		private void setResource(string s) { //Watcher to check for the user switching to different Kethane resources
			if (s == resource.name) return;
			resource = SCANcontroller.ResourcesList[SCANcontroller.controller.gridSelection];
			reset = SCANcontroller.controller.kethaneReset;
			SCANcontroller.controller.map_ResourceOverlay = false; //Force the overlay off to allow array to rebuild
			SCANdata data = SCANUtil.getData (body);
			data.kethaneValueMap = new float[360, 180];
			rebuildStep = 0;
			SCANcontroller.controller.kethaneBusy = true;
		}

		private void setRebuild(bool b) { //Watcher to check for "Rebuild" button pushes from UI
			if (b == rebuild) return;
			rebuild = b;
			updateKethaneData (resource.type); //Update the Kethane database after background scanning
		}

		private void setReset (bool b) { //Watcher to check for big map reset
			if (b == reset) return;
			reset = b;
			rebuildValueStep = 0;
		}

		//Update the Kethane database - used after background scanning
		private void updateKethaneData (SCANdata.SCANtype type) {
			print("[SCAN Kethane] Updating Kethane Database");
			for (int ilat = 0; ilat < 180; ilat++) {
				for (int ilon = 0; ilon < 360; ilon++) {
					if (SCANUtil.isCovered (ilon, ilat, body, (int)type)) {
						cell = getKethaneCell (ilon - 180, ilat - 90);
						if (!KethaneData.Current[resource.name][body].IsCellScanned(cell)) {
							KethaneData.Current[resource.name][body].ScanCell(cell);
						}
					}
				}
			}
		}

		//Pulls data out of the Kethane database to update the SCANsat resource coverage map - intentionally slow
		private void rebuildResourceArray () {
			SCANdata data = SCANUtil.getData (body);
			if (!rebuildingArray) {
				print("[SCAN Kethane] Rebuilding SCANsat Kethane Array");
				rebuildingArray = true;
			}
			for (int ilon = 0; ilon < 360; ilon++) {//Run 360 points per frame; 3 seconds at 60FPS
				cell = getKethaneCell(ilon - 180, rebuildStep - 90);
				if (KethaneData.Current[resource.name][body].IsCellScanned(cell)) {
					updateResourceArray(ilon, rebuildStep, resource.type, data);
					double? depositValue = KethaneData.Current[resource.name][body].Resources.GetQuantity(cell);
					if (depositValue != null)
						updateResourceValue(ilon, rebuildStep, depositValue, data);
					else
						updateResourceValue(ilon, rebuildStep, -1d, data); //Give empty cells -1 resources, account for this later on
				}
			}
			rebuildStep++;
			if (rebuildStep >= 180) {
				SCANcontroller.controller.kethaneBusy = false;
				rebuildingArray = false;
				print("[SCAN Kethane] SCANsat Kethane Array Rebuilt");
			}
		}

		//Reset the resource value array - quicker than rebuildKethaneData (), called on map resets
		private void rebuildResourceValue (SCANdata.SCANtype type) {
			if (!rebuildingValue) {
				print("[SCAN Kethane] Rebuilding Value Array");
				rebuildingValue = true;
			}
			SCANdata data = SCANUtil.getData(body);
			for (int ilat = 4 * rebuildValueStep; ilat < 4 * (rebuildValueStep + 1); ilat++) {
				for (int ilon = 0; ilon < 360; ilon++) {
					if (SCANUtil.isCovered(ilon, ilat, body, (int)type))
					{
						if (data.kethaneValueMap[ilon, ilat] == 0) { //Only check unassigned values
							cell = getKethaneCell(ilon - 180, ilat - 90);
							double? depositValue = KethaneData.Current[resource.name][body].Resources.GetQuantity(cell);
							if (depositValue != null)
								updateResourceValue (ilon, ilat, depositValue, data);
							else
								updateResourceValue (ilon, ilat, -1d, data); //Give empty cells -1 resources, account for this later on
						}
					}
				}
			}
			rebuildValueStep++;
			if (rebuildValueStep >= 45) {
				print("[SCAN Kethane] Value Array Rebuilt");
				rebuildingValue = false;
			}
		}

		private Cell getKethaneCell (int ilon, int ilat) {  //Find the Kethane cell corresponding to the current position
			Vector3 pos = body.GetRelSurfaceNVector((double)ilat, (double)ilon); 
			return Cell.Containing(pos, 5);
		}

		private void updateResourceArray (int lon, int lat, SCANdata.SCANtype type, SCANdata data) {
			data.coverage[lon, lat] |= (Int32)type;
		}

		private void updateResourceValue (int lon, int lat, double? value, SCANdata data) {
			data.kethaneValueMap[lon, lat] = (float)value;
		}
	}
}


================================================
FILE: Unity/SCANsat/.gitignore
================================================
.vs/
Library/
Logs/
Temp/
obj/
bin/
AssetBundles/

================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Skin.guiskin.meta
================================================
fileFormatVersion: 2
guid: d235ba1d10f9c6a45b428bd777b7e5b2
timeCreated: 1470853215
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/Arial Rounded Bold.ttf.meta
================================================
fileFormatVersion: 2
guid: 93c51599ea7238543b44294027bab304
timeCreated: 1470853215
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/DropDownTex.png.meta
================================================
fileFormatVersion: 2
guid: 0e0ae18f4594ff74a93edc01359694af
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 4, y: 4, z: 4, w: 4}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/box.png.meta
================================================
fileFormatVersion: 2
guid: 9488bd4d6b3882c4fbbf08698a6dbfd2
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 4, y: 4, z: 4, w: 4}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/builtin skin source.psd.meta
================================================
fileFormatVersion: 2
guid: 8ed7726534327fb4bbed9fcac30e463c
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 1
  pSDShowRemoveMatteOption: 1
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/button active.png.meta
================================================
fileFormatVersion: 2
guid: b01df32de3b6f1746862a5b5d13d8244
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 5, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/button hover.png.meta
================================================
fileFormatVersion: 2
guid: 9ea2fe418e06bbc4fa156a0a55338c62
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 5, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/button on hover.png.meta
================================================
fileFormatVersion: 2
guid: fa99336287c44f74da45b02f32db7660
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 5, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/button on.png.meta
================================================
fileFormatVersion: 2
guid: 895c433ff88d41d448b007428fb56cf7
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 5, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/button.png.meta
================================================
fileFormatVersion: 2
guid: 5e813a9bf4f0e824d97c05a7f264a3ba
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 5, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/horizontal scrollbar thumb.png.meta
================================================
fileFormatVersion: 2
guid: 43eae036ac6000d4f893669e938b4439
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 5, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/horizontal scrollbar.png.meta
================================================
fileFormatVersion: 2
guid: 447fdf649aaa9394f900505b2fcb6b6e
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 7, y: 7, z: 7, w: 7}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/horizontalslider.png.meta
================================================
fileFormatVersion: 2
guid: bb456cad67a7b094a985b2398c43844d
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 3, y: 3, z: 3, w: 3}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/slider thumb active.png.meta
================================================
fileFormatVersion: 2
guid: c2feba2496570fe478e3b40736c6ca07
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 3, y: 4, z: 3, w: 4}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/slider thumb.png.meta
================================================
fileFormatVersion: 2
guid: 1c9cb6c6af3c09c41819447f062bebb5
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 3, y: 4, z: 3, w: 4}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/slidert humb hover.png.meta
================================================
fileFormatVersion: 2
guid: 6e022ecf83711614898f353118151c0c
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 3, y: 4, z: 3, w: 4}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/source Photoshop file.psd.meta
================================================
fileFormatVersion: 2
guid: fe86bff5401c09e4b9fbd217b3e828d6
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 1
  pSDShowRemoveMatteOption: 1
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/textfield hover.png.meta
================================================
fileFormatVersion: 2
guid: 8e39db43beb39574e9e50ada5b328219
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 4, y: 4, z: 4, w: 4}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/textfield on.png.meta
================================================
fileFormatVersion: 2
guid: 71d691a1ba90b014586b4b38a7035877
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 4, y: 4, z: 4, w: 4}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/textfield.png.meta
================================================
fileFormatVersion: 2
guid: cefb5ab793806dc48b90c065aecda727
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 4, y: 4, z: 4, w: 4}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/toggle active.png.meta
================================================
fileFormatVersion: 2
guid: 11c5c83d3b0ac0247b109ad870c58146
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 6, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/toggle active_border.png.meta
================================================
fileFormatVersion: 2
guid: b21d3833d09dd574d974c0a18749d204
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 9, y: 9, z: 10, w: 9}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/toggle hover.png.meta
================================================
fileFormatVersion: 2
guid: 13c5b748b138496489fc0b816a6c88d3
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 6, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/toggle hover_border.png.meta
================================================
fileFormatVersion: 2
guid: ab467d8b409343b418fffd55bff263d8
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 9, y: 9, z: 10, w: 9}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/toggle on active.png.meta
================================================
fileFormatVersion: 2
guid: a0cf4583e793b864f95a2fe0758fe2bc
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 6, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/toggle on hover.png.meta
================================================
fileFormatVersion: 2
guid: f67ef66e05e50a444a9c2067a18be37e
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 6, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/toggle on.png.meta
================================================
fileFormatVersion: 2
guid: cccdfce7525b43b4b8b42b57d34ea018
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 6, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/toggle.png.meta
================================================
fileFormatVersion: 2
guid: b24617616f4d30941a7f98eecfc2907c
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 6, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/toggle_border.png.meta
================================================
fileFormatVersion: 2
guid: c37906c4bd8ded24eb8af48828f32453
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 9, y: 8, z: 10, w: 8}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/tooltip.png.meta
================================================
fileFormatVersion: 2
guid: 41cd79dedacf24744a6092362c965dbf
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 8, y: 8, z: 8, w: 8}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/vertical scrollbar thumb.png.meta
================================================
fileFormatVersion: 2
guid: 391e4c929e470b64d85dcb8f52fc68d8
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 5, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/vertical scrollbar.png.meta
================================================
fileFormatVersion: 2
guid: bf60c1ca7cea75c4e922adbb1555c523
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 7, y: 7, z: 7, w: 7}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/verticalslider.png.meta
================================================
fileFormatVersion: 2
guid: 90b2f35ab609b0c47885b96b4820c28d
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 3, y: 3, z: 3, w: 3}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/window on.png.meta
================================================
fileFormatVersion: 2
guid: 50b97cebe3750724396523067ccc7b8f
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 7, y: 7, z: 7, w: 17}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources/window.png.meta
================================================
fileFormatVersion: 2
guid: 9f2e95f0cdfe33444a502b831fca611c
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 7, y: 7, z: 7, w: 17}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin/Sources.meta
================================================
fileFormatVersion: 2
guid: 1e9ac78e2708a4f4aa2b27d7edbe906c
folderAsset: yes
timeCreated: 1470853215
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Builtin skin.meta
================================================
fileFormatVersion: 2
guid: a7bc56bd466c8a148aa97fe6a07b7c4c
folderAsset: yes
timeCreated: 1478034312
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Editor/Bundler.cs
================================================
using UnityEditor;

public class Bundler
{
	const string dir = "AssetBundles";
	const string extension = ".scan";
	static readonly string[] bundles = new string[]
	{
		"scan_prefabs",
		"scan_icons",
		"scan_unity_skin",
		"scan_shaders"
	};

	[MenuItem("SCANsat/Build All Bundles")]
	static void BuildAllAssetBundles()
	{
		BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.ChunkBasedCompression | BuildAssetBundleOptions.ForceRebuildAssetBundle, BuildTarget.StandaloneWindows);

		foreach (var bundle in bundles)
		{
			var sourceFile = dir + "/" + bundle;
			FileUtil.ReplaceFile(sourceFile, sourceFile + extension);
			//FileUtil.DeleteFile(sourceFile);
		}
	}
}


================================================
FILE: Unity/SCANsat/Assets/Editor/Bundler.cs.meta
================================================
fileFormatVersion: 2
guid: 904d50651de8b1a408889795a8a3faa3
timeCreated: 1488295788
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Editor.meta
================================================
fileFormatVersion: 2
guid: 48b87658a2c7b724e82b539fa9f44424
folderAsset: yes
timeCreated: 1521057638
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/Amaranth-Bold.ttf.meta
================================================
fileFormatVersion: 2
guid: 416d1084146041e488166d423d3aae4d
timeCreated: 1460393621
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/Amaranth-BoldItalic.ttf.meta
================================================
fileFormatVersion: 2
guid: 63dd60cf8a200d344be8850b7200a374
timeCreated: 1460393622
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/Amaranth-Italic.ttf.meta
================================================
fileFormatVersion: 2
guid: b626a88e355b6284881a16a4fd831236
timeCreated: 1460393623
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/Amaranth-Regular.ttf.meta
================================================
fileFormatVersion: 2
guid: 7baf40380fc75c644b30f0fdaef9df87
timeCreated: 1460393623
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/OpenSans-Bold.ttf.meta
================================================
fileFormatVersion: 2
guid: 6e39034f4b892364b80b8c3c587ec7cf
timeCreated: 1460393623
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/OpenSans-BoldItalic.ttf.meta
================================================
fileFormatVersion: 2
guid: 447176f60300d1a4f9c7b14b585d4f5a
timeCreated: 1460393621
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/OpenSans-ExtraBold.ttf.meta
================================================
fileFormatVersion: 2
guid: 6b182b342e654ec4eaae0c63222c72c5
timeCreated: 1460393622
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/OpenSans-ExtraBoldItalic.ttf.meta
================================================
fileFormatVersion: 2
guid: 2d489457baf3246419ae8083dd92c971
timeCreated: 1460393621
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/OpenSans-Italic.ttf.meta
================================================
fileFormatVersion: 2
guid: 455c0626df2121a458618be36e4cf22b
timeCreated: 1460393621
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/OpenSans-Light.ttf.meta
================================================
fileFormatVersion: 2
guid: 10ad36e30bf82b84a8900113b9faf427
timeCreated: 1460393621
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/OpenSans-LightItalic.ttf.meta
================================================
fileFormatVersion: 2
guid: ab2651154266d0c4c91734d7ceadb978
timeCreated: 1460393623
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/OpenSans-Regular.ttf.meta
================================================
fileFormatVersion: 2
guid: 0d7f916468a6b744db36c0cde00d2923
timeCreated: 1460393621
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/OpenSans-Semibold.ttf.meta
================================================
fileFormatVersion: 2
guid: 47381c4b358666e44876eb83c5272238
timeCreated: 1460393622
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts/OpenSans-SemiboldItalic.ttf.meta
================================================
fileFormatVersion: 2
guid: 1e718c2a2cf3f834bac238bf17737cd5
timeCreated: 1460393621
licenseType: Free
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Fonts.meta
================================================
fileFormatVersion: 2
guid: f0d58e90c62634249b9d5e547c283c3b
folderAsset: yes
timeCreated: 1478034313
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/HSVPicker/Picker 2.0.prefab.meta
================================================
fileFormatVersion: 2
guid: 916ee089a0d7b63419075f91e1c657ec
timeCreated: 1442747914
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/HSVPicker/PickerTest.unity.meta
================================================
fileFormatVersion: 2
guid: ce46c07f0028e314ab7767577ab5e7a6
DefaultImporter:
  userData: 


================================================
FILE: Unity/SCANsat/Assets/HSVPicker.meta
================================================
fileFormatVersion: 2
guid: 23371cc964348c240b759eeeeb4d63aa
folderAsset: yes
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/ANMarker.png.meta
================================================
fileFormatVersion: 2
guid: 77ae81dbe9d9e94409ef3b3ff48d0855
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/APMarker.png.meta
================================================
fileFormatVersion: 2
guid: 972df81609a96484eb1aac8bfcc96bc9
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/AnomalyIcon.png.meta
================================================
fileFormatVersion: 2
guid: 9658b7226544a6d4e8f61950879c66b1
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/AnomalyIconOutline.png.meta
================================================
fileFormatVersion: 2
guid: 4b6c0a486d3430542bbc233e47a367c3
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/AsteroidIcon.png.meta
================================================
fileFormatVersion: 2
guid: 4b990d488b6989a4ba1f427f5537f1a5
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/BaseIcon.png.meta
================================================
fileFormatVersion: 2
guid: 603355ae8d09c9348b4f6cb5b2f707d4
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/DNMarker.png.meta
================================================
fileFormatVersion: 2
guid: 32b25ac781bae134994e48a7fbe78d22
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/DebrisIcon.png.meta
================================================
fileFormatVersion: 2
guid: 57f8f3b8cb649154b9ad5263bb3b9954
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/DeployedScienceIcon.png.meta
================================================
fileFormatVersion: 2
guid: 1de1a4a4c9578884bba688ddc8feb477
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: 1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 1
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/EVAIcon.png.meta
================================================
fileFormatVersion: 2
guid: 3e6243b5c967a0d4bb84198432748359
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/Empty_Icon.png.meta
================================================
fileFormatVersion: 2
guid: 0451eb5aa04be2349a4a639757221057
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/EncounterMarker.png.meta
================================================
fileFormatVersion: 2
guid: 148389791fa36e84d89b20b44f055eda
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/ExitMarker.png.meta
================================================
fileFormatVersion: 2
guid: 5735bd452f63d744a99719127c00f342
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/FlagIcon.png.meta
================================================
fileFormatVersion: 2
guid: c2df9feae76de0c4cb6c6d57606696c1
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/KSP_Tooltip.png.meta
================================================
fileFormatVersion: 2
guid: 0b98e00ce393eb1439435f8b864569c2
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 11, y: 10, z: 10, w: 10}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/LanderIcon.png.meta
================================================
fileFormatVersion: 2
guid: 81f74c0f11c3f6840bb5689e3d4106b6
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/ManeuverMarker.png.meta
================================================
fileFormatVersion: 2
guid: 269324e37ca26c04f9a7edce20d68125
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/Map_Right_Icon.png.meta
================================================
fileFormatVersion: 2
guid: 77e9e35a8a2ca2d4790225133fd1f09d
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/MysteryIcon.png.meta
================================================
fileFormatVersion: 2
guid: 47306ae121138d14c8be159ddf854f26
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/PEMarker.png.meta
================================================
fileFormatVersion: 2
guid: 1ad49fbc6a2bfb14c91506bf65263869
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/PlaneIcon.png.meta
================================================
fileFormatVersion: 2
guid: bcfbf717e36253045a22c3c5d182c461
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/PlanetIcon.png.meta
================================================
fileFormatVersion: 2
guid: c29f350bba609ba4f89d6dcfbd742260
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/PodIcon.png.meta
================================================
fileFormatVersion: 2
guid: 5417fed680ca6654c803b39a212abb11
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/ProbeIcon.png.meta
================================================
fileFormatVersion: 2
guid: f8eaebacb3f23304c936147b69a81f01
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/RelayIcon.png.meta
================================================
fileFormatVersion: 2
guid: 0ea1ef8c4c0b0824a81e064453ec1e35
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/RoverIcon.png.meta
================================================
fileFormatVersion: 2
guid: a9fc78755c4b3fa45974263a6cb6f3df
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Asteroid_Icon.png.meta
================================================
fileFormatVersion: 2
guid: d9bb956d49caf9d43992137459d1c7fe
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_ColorToggle_Icon.png.meta
================================================
fileFormatVersion: 2
guid: 73e03e12e4caab048aaece61fcda68b5
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Color_Icon.png.meta
================================================
fileFormatVersion: 2
guid: d602537c16f9505429f142415a6b1616
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Flag_Icon.png.meta
================================================
fileFormatVersion: 2
guid: c7953386e39eafe4fa07be140ee19838
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Grid_Icon.png.meta
================================================
fileFormatVersion: 2
guid: b980c81b79c3cc24ba3dbbe55893fc95
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Instrument_Icon.png.meta
================================================
fileFormatVersion: 2
guid: a40c3a079d0f0654488a9b7321ded2cb
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Instrument_Icon_Large.png.meta
================================================
fileFormatVersion: 2
guid: 8f40541f16841e34f97ce54b4d5b92b1
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Legend_Icon.png.meta
================================================
fileFormatVersion: 2
guid: 48b4b55d336f10a4b820ebe2c6513590
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_LockClose.png.meta
================================================
fileFormatVersion: 2
guid: 09f352e512206e743bc1272ca07705e7
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_LockOpen.png.meta
================================================
fileFormatVersion: 2
guid: f59d72623045a1445b6ac4e17635572e
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Map_Icons.png.meta
================================================
fileFormatVersion: 2
guid: e5466fd25a51a6649b14782d5c463b21
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_MechJebIcon.png.meta
================================================
fileFormatVersion: 2
guid: 76cce73bbb3438a45b519fa3ae916f7c
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Orbit_Icon.png.meta
================================================
fileFormatVersion: 2
guid: ea01fb1e1adeefa488560ed7dfba2ae0
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Overlay_Icon.png.meta
================================================
fileFormatVersion: 2
guid: 9b24a85b915a76146b8d86276a6346fb
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Overlay_Icon_Large.png.meta
================================================
fileFormatVersion: 2
guid: c22bcd21720fb364289d35217792e94e
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Refresh_Icon.png.meta
================================================
fileFormatVersion: 2
guid: 6c0f91a68c891bd448d569c8bf4e57d4
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Resize_Icon.png.meta
================================================
fileFormatVersion: 2
guid: ed082288a9f3def4685ad08898b92293
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Resource_Icon.png.meta
================================================
fileFormatVersion: 2
guid: d7a47e81f84cf5a4eb4b9be5e1c056f8
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Screenshot_Icon.png.meta
================================================
fileFormatVersion: 2
guid: 0dcc7620dac6e1b4193d4e7aea604d45
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Settings_Icon.png.meta
================================================
fileFormatVersion: 2
guid: f5e1ed61c1e31404a8a0692a5afdac5f
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Settings_Icon_Large.png.meta
================================================
fileFormatVersion: 2
guid: 24bc376ff88434c41beb56b261d312e5
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_TargetIcon.png.meta
================================================
fileFormatVersion: 2
guid: f46f82d2b1ded3c4ba6ca65d4d16cecc
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 1
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_TerminatorIcon.png.meta
================================================
fileFormatVersion: 2
guid: 965dd3babd4019745ac8852ebbbcdb4d
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Toggle.png.meta
================================================
fileFormatVersion: 2
guid: 06a2a246979ef154195f532452e7d704
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 6, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Toggle_Border.png.meta
================================================
fileFormatVersion: 2
guid: 7e4d712ebbcaf1947b03ccbafbdcd420
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 9, y: 9, z: 10, w: 9}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Toggle_Hover.png.meta
================================================
fileFormatVersion: 2
guid: 3a93b9902ee525542a31962eaa017f67
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 5, y: 5, z: 6, w: 5}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Toggle_Hover_Border.png.meta
================================================
fileFormatVersion: 2
guid: 725d6049e1afeb9438e3d127eb90ef60
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 9, y: 9, z: 10, w: 9}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Toggle_On_Hover_Border.png.meta
================================================
fileFormatVersion: 2
guid: 754f0135b996a5548b91d97c35f4ffc0
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 9, y: 9, z: 10, w: 9}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_WayPointIcon.png.meta
================================================
fileFormatVersion: 2
guid: 7a56f7dccead3fb4b9a92149edc6383b
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_WayPointIcon_Outline.png.meta
================================================
fileFormatVersion: 2
guid: 74be1b6b08d184a48b938f62ac01ed7a
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_ZoomInIcon.png.meta
================================================
fileFormatVersion: 2
guid: 82d69a3eb260f1240b2f1bd77c20245a
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_ZoomOutIcon.png.meta
================================================
fileFormatVersion: 2
guid: e3855b715f73d4d48ba1ca5563cf8730
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Zoom_Forget.png.meta
================================================
fileFormatVersion: 2
guid: 1888693c512202148a92e8522c6e9b23
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: 1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 1
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Zoom_Map_Icon.png.meta
================================================
fileFormatVersion: 2
guid: 6413f99763adc364d80216dd42365ed8
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Zoom_Map_Icon_Large.png.meta
================================================
fileFormatVersion: 2
guid: 6b114b2b0e687844ca15ff88308c72eb
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Zoom_Max.png.meta
================================================
fileFormatVersion: 2
guid: b02743ab96de8a44f8538044f921be0c
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Zoom_Med.png.meta
================================================
fileFormatVersion: 2
guid: fa8b66a7efe944d4ba3ef52ef4203f9e
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Zoom_Min.png.meta
================================================
fileFormatVersion: 2
guid: add6efbc9e8ba874ca783594a0764d9a
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCAN_Zoom_Recall.png.meta
================================================
fileFormatVersion: 2
guid: f944ec12707abfc459e80d9f8dbaeb7e
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: 1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 1
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCANsat_AppLauncherLarge_Icon.png.meta
================================================
fileFormatVersion: 2
guid: bbe428fcd16aee74993dab6f1431c9e1
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/SCANsat_AppLauncherSmall_Icon.png.meta
================================================
fileFormatVersion: 2
guid: ccc784c67200d5247b2c2e6283d25e79
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/StationIcon.png.meta
================================================
fileFormatVersion: 2
guid: 71b9339d2d6b33e42931f96d703ee98c
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/UI_Sprite.spriteatlas.meta
================================================
fileFormatVersion: 2
guid: 880ce1874d9fe9145bbb76c5e70ab1b1
timeCreated: 1521057185
licenseType: Free
NativeFormatImporter:
  mainObjectFileID: 4343727234628468602
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/ZoomLock.png.meta
================================================
fileFormatVersion: 2
guid: 9fc5790f4d8430747979f5d866bfa756
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: 1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 1
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 1
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images/ZoomReset.png.meta
================================================
fileFormatVersion: 2
guid: 318e0799c0a9c8a4eadd260796f0b65e
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: 1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 1
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 1
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: UI_Sprite
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Images.meta
================================================
fileFormatVersion: 2
guid: f6743e09e9903304384064b4965ade1e
folderAsset: yes
timeCreated: 1478034313
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Advanced.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &117500
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22493720}
  - component: {fileID: 22257222}
  - component: {fileID: 11428472}
  m_Layer: 5
  m_Name: Bad To Good
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22493720
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 117500}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22478788}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 22.5, y: -987}
  m_SizeDelta: {x: 560, y: 263}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22257222
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 117500}
  m_CullTransparentMesh: 0
--- !u!114 &11428472
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 117500}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 0
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Often only a minor burn (<10m/s dV) is required to change a bad orbit into
    a good orbit, with evenly spaced equatorial crossings.
--- !u!1 &140988
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22478406}
  - component: {fileID: 22211106}
  - component: {fileID: 11489922}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22478406
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 140988}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22480598}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22211106
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 140988}
  m_CullTransparentMesh: 0
--- !u!114 &11489922
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 140988}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 4a568ba141fb1444eaaa3ccd8d661979, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &142478
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22491042}
  - component: {fileID: 22283642}
  - component: {fileID: 11411204}
  m_Layer: 5
  m_Name: Orbit Overlay Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22491042
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142478}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22432262}
  m_Father: {fileID: 22480598}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -452, y: 382}
  m_SizeDelta: {x: 1025, y: 72}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22283642
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142478}
  m_CullTransparentMesh: 0
--- !u!114 &11411204
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142478}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Orbit Overlays and Equatorial Crossings:'
--- !u!1 &145696
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22440200}
  - component: {fileID: 22293328}
  - component: {fileID: 11430444}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22440200
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 145696}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22475360}
  m_Father: {fileID: 22480598}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22293328
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 145696}
  m_CullTransparentMesh: 0
--- !u!114 &11430444
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 145696}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Advanced Scanning
--- !u!1 &154306
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22478788}
  - component: {fileID: 22225766}
  - component: {fileID: 11449326}
  m_Layer: 5
  m_Name: Bad orbit
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22478788
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154306}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22493720}
  m_Father: {fileID: 22480598}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 677, y: 448.5}
  m_SizeDelta: {x: 515, y: 177}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22225766
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154306}
  m_CullTransparentMesh: 0
--- !u!114 &11449326
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154306}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Bunched up equatorial crossings indicate a poor orbit.
--- !u!1 &168888
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22475360}
  - component: {fileID: 22207624}
  - component: {fileID: 11405436}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22475360
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 168888}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22440200}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 628.5, y: -35}
  m_SizeDelta: {x: 1257, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22207624
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 168888}
  m_CullTransparentMesh: 0
--- !u!114 &11405436
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 168888}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: How to optimize your orbit for the fastest scan.
--- !u!1 &180962
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22432262}
  - component: {fileID: 22203628}
  - component: {fileID: 11486354}
  m_Layer: 5
  m_Name: Orbit text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22432262
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 180962}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22491042}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 518, y: -66}
  m_SizeDelta: {x: 1038, y: 131}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22203628
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 180962}
  m_CullTransparentMesh: 0
--- !u!114 &11486354
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 180962}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The big map's orbit overlay provides useful data for determining the best
    scanning orbit.
--- !u!1 &184290
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22480598}
  - component: {fileID: 22211206}
  - component: {fileID: 11419204}
  - component: {fileID: 11421960}
  m_Layer: 5
  m_Name: SCANsat_Advanced
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22480598
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 184290}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22440200}
  - {fileID: 22478406}
  - {fileID: 22491042}
  - {fileID: 22478788}
  - {fileID: 22490296}
  - {fileID: 2622246676227591862}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22211206
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 184290}
  m_CullTransparentMesh: 0
--- !u!114 &11419204
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 184290}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11421960
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 184290}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &190192
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22490296}
  - component: {fileID: 22284994}
  - component: {fileID: 11485770}
  m_Layer: 5
  m_Name: Big Map caption
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22490296
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190192}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22480598}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 668.5, y: 160}
  m_SizeDelta: {x: 1234, y: 183}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22284994
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190192}
  m_CullTransparentMesh: 0
--- !u!114 &11485770
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190192}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The orbit overlay* shows your previous (orange) and next (blue) orbit; the
    hash marks along the equator show where the vessel will cross the equator over
    the next 100 orbits.
--- !u!1 &740226565880126992
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6182973102801577537}
  - component: {fileID: 2065020977753560888}
  - component: {fileID: 5726347841425186501}
  m_Layer: 5
  m_Name: Note Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6182973102801577537
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 740226565880126992}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 2622246676227591862}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0.5}
  m_AnchorMax: {x: 0, y: 0.5}
  m_AnchoredPosition: {x: 125, y: 0}
  m_SizeDelta: {x: 1110, y: 54}
  m_Pivot: {x: 0, y: 0.5}
--- !u!222 &2065020977753560888
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 740226565880126992}
  m_CullTransparentMesh: 0
--- !u!114 &5726347841425186501
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 740226565880126992}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Orbit overlay not available with level 0 tracking station in career mode.
--- !u!1 &8965583041169331041
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2622246676227591862}
  - component: {fileID: 7799610966322806564}
  - component: {fileID: 950838770867677949}
  m_Layer: 5
  m_Name: Orbit note
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2622246676227591862
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8965583041169331041}
  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 6182973102801577537}
  m_Father: {fileID: 22480598}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -166.88, y: -720}
  m_SizeDelta: {x: 125, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7799610966322806564
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8965583041169331041}
  m_CullTransparentMesh: 0
--- !u!114 &950838770867677949
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8965583041169331041}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: '* Note:'


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Advanced.prefab.meta
================================================
fileFormatVersion: 2
guid: 0059d5a7b3746454885658d0f88fd94d
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_AltimetryMap.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &467842731028228921
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4732590185099029305}
  - component: {fileID: 304156747461951790}
  - component: {fileID: 7336347942555010102}
  m_Layer: 5
  m_Name: Radarsat
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &4732590185099029305
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 467842731028228921}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 791979691223957832}
  m_Father: {fileID: 1277141702620797406}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 767, y: -613}
  m_SizeDelta: {x: 458.3, y: 60}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &304156747461951790
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 467842731028228921}
  m_CullTransparentMesh: 0
--- !u!114 &7336347942555010102
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 467842731028228921}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SAR-C Antenna
--- !u!1 &1000140707460821993
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 7990477721680955122}
  - component: {fileID: 1055888807929064448}
  - component: {fileID: 3996671041346177001}
  m_Layer: 5
  m_Name: Tandem
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &7990477721680955122
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1000140707460821993}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 2005398017197731459}
  m_Father: {fileID: 1277141702620797406}
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 748, y: -69}
  m_SizeDelta: {x: 458.3, y: 60}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1055888807929064448
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1000140707460821993}
  m_CullTransparentMesh: 0
--- !u!114 &3996671041346177001
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1000140707460821993}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SAR-L Antenna
--- !u!1 &1277141702642507466
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1277141702620803856}
  - component: {fileID: 1277141702620562676}
  - component: {fileID: 1277141702636156656}
  m_Layer: 5
  m_Name: Poseidon Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1277141702620803856
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642507466}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 1277141702620773426}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: -1.0499725, y: -60}
  m_SizeDelta: {x: 463.7, y: 60}
  m_Pivot: {x: 0, y: 1}
--- !u!222 &1277141702620562676
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642507466}
  m_CullTransparentMesh: 0
--- !u!114 &1277141702636156656
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642507466}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 32
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 0
    m_MaxSize: 62
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Low-resolution altimetry.
--- !u!1 &1277141702642533094
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1277141702620865134}
  - component: {fileID: 1277141702620485350}
  - component: {fileID: 1277141702635961152}
  m_Layer: 5
  m_Name: Seasat Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1277141702620865134
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642533094}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 1277141702620764202}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 0.000015258789, y: -60}
  m_SizeDelta: {x: 462.2, y: 60}
  m_Pivot: {x: 0, y: 1}
--- !u!222 &1277141702620485350
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642533094}
  m_CullTransparentMesh: 0
--- !u!114 &1277141702635961152
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642533094}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 32
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 0
    m_MaxSize: 62
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Low-resolution altimetry.
--- !u!1 &1277141702642548250
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1277141702620764202}
  - component: {fileID: 1277141702620562724}
  - component: {fileID: 1277141702635986256}
  m_Layer: 5
  m_Name: Seasat
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1277141702620764202
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642548250}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 1277141702620865134}
  m_Father: {fileID: 1277141702620797406}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -263, y: -613}
  m_SizeDelta: {x: 450.1, y: 60}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1277141702620562724
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642548250}
  m_CullTransparentMesh: 0
--- !u!114 &1277141702635986256
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642548250}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: R-EO-1 Radar Antenna
--- !u!1 &1277141702642555908
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1277141702620752972}
  - component: {fileID: 1277141702620581888}
  - component: {fileID: 1277141702636066796}
  m_Layer: 5
  m_Name: Paz
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1277141702620752972
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642555908}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 1277141702620750768}
  m_Father: {fileID: 1277141702620797406}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 201, y: -613}
  m_SizeDelta: {x: 329, y: 60}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1277141702620581888
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642555908}
  m_CullTransparentMesh: 0
--- !u!114 &1277141702636066796
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642555908}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SAR-X Antenna
--- !u!1 &1277141702642557194
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1277141702620797406}
  - component: {fileID: 1277141702620572550}
  - component: {fileID: 1277141702636001948}
  - component: {fileID: 1277141702635951372}
  m_Layer: 5
  m_Name: SCANsat_AltimetryMap
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1277141702620797406
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642557194}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 1277141702620843068}
  - {fileID: 1277141702620950634}
  - {fileID: 1277141702620773426}
  - {fileID: 1277141702620764202}
  - {fileID: 1277141702620752972}
  - {fileID: 4732590185099029305}
  - {fileID: 7990477721680955122}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1277141702620572550
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642557194}
  m_CullTransparentMesh: 0
--- !u!114 &1277141702636001948
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642557194}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &1277141702635951372
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642557194}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &1277141702642557940
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1277141702620950634}
  - component: {fileID: 1277141702620589954}
  - component: {fileID: 1277141702636051380}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1277141702620950634
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642557940}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 1277141702620797406}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1277141702620589954
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642557940}
  m_CullTransparentMesh: 0
--- !u!114 &1277141702636051380
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642557940}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 2ee1bf3623dd3c8459b812bba9660523, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &1277141702642562420
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1277141702620773426}
  - component: {fileID: 1277141702620607484}
  - component: {fileID: 1277141702636063936}
  m_Layer: 5
  m_Name: Poseidon
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1277141702620773426
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642562420}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 1277141702620803856}
  m_Father: {fileID: 1277141702620797406}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -761, y: -613}
  m_SizeDelta: {x: 423.6, y: 60}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1277141702620607484
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642562420}
  m_CullTransparentMesh: 0
--- !u!114 &1277141702636063936
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642562420}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'R-3B Radar Altimeter

'
--- !u!1 &1277141702642614856
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1277141702620762126}
  - component: {fileID: 1277141702620563158}
  - component: {fileID: 1277141702635971280}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1277141702620762126
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642614856}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 1277141702620843068}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 657.9, y: -35}
  m_SizeDelta: {x: 1314.8, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1277141702620563158
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642614856}
  m_CullTransparentMesh: 0
--- !u!114 &1277141702635971280
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642614856}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate low and high resolution altimetry data and slope maps.
--- !u!1 &1277141702642614960
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1277141702620750768}
  - component: {fileID: 1277141702620604632}
  - component: {fileID: 1277141702635971036}
  m_Layer: 5
  m_Name: Paz Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1277141702620750768
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642614960}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 1277141702620752972}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 0, y: -60}
  m_SizeDelta: {x: 405.2, y: 60}
  m_Pivot: {x: 0, y: 1}
--- !u!222 &1277141702620604632
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642614960}
  m_CullTransparentMesh: 0
--- !u!114 &1277141702635971036
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642614960}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 32
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 0
    m_MaxSize: 62
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: High-resolution altimetry.
--- !u!1 &1277141702642697148
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1277141702620843068}
  - component: {fileID: 1277141702620582252}
  - component: {fileID: 1277141702636065860}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1277141702620843068
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642697148}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 1277141702620762126}
  m_Father: {fileID: 1277141702620797406}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -597.1, y: 690}
  m_SizeDelta: {x: 750.7, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1277141702620582252
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642697148}
  m_CullTransparentMesh: 0
--- !u!114 &1277141702636065860
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1277141702642697148}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Terrain Scanners
--- !u!1 &3728557360220064113
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2005398017197731459}
  - component: {fileID: 6940190567245812150}
  - component: {fileID: 7316495952782930825}
  m_Layer: 5
  m_Name: Tandem Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2005398017197731459
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3728557360220064113}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 7990477721680955122}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: -0.000030517578, y: -60}
  m_SizeDelta: {x: 429.8, y: 96.2}
  m_Pivot: {x: 0, y: 1}
--- !u!222 &6940190567245812150
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3728557360220064113}
  m_CullTransparentMesh: 0
--- !u!114 &7316495952782930825
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3728557360220064113}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 32
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 0
    m_MaxSize: 62
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: High-resolution altimetry, and biome data.
--- !u!1 &5257749000955934109
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 791979691223957832}
  - component: {fileID: 3929723438263233972}
  - component: {fileID: 7261051105291977299}
  m_Layer: 5
  m_Name: Radarsat Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &791979691223957832
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 5257749000955934109}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4732590185099029305}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 0, y: -60}
  m_SizeDelta: {x: 411.5, y: 60}
  m_Pivot: {x: 0, y: 1}
--- !u!222 &3929723438263233972
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 5257749000955934109}
  m_CullTransparentMesh: 0
--- !u!114 &7261051105291977299
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 5257749000955934109}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 32
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 0
    m_MaxSize: 62
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: High-resolution altimetry.


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_AltimetryMap.prefab.meta
================================================
fileFormatVersion: 2
guid: 3ea4cd8b78d44e94fa002811263665ab
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Basic.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &103116
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22483908}
  - component: {fileID: 22270202}
  - component: {fileID: 11459232}
  m_Layer: 5
  m_Name: Maps
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22483908
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103116}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22454218}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 593.9, y: -565.3}
  m_SizeDelta: {x: 905.8, y: 160}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22270202
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103116}
  m_CullTransparentMesh: 0
--- !u!114 &11459232
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103116}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The flashing lights on the small map indicate scanner status (green for
    ideal altitude, flashing orange for below the ideal altitude, solid orange for
    too high or too low).
--- !u!1 &127670
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22461404}
  - component: {fileID: 22241538}
  - component: {fileID: 11433076}
  m_Layer: 5
  m_Name: SubHead
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22461404
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 127670}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22415644}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 653, y: -34}
  m_SizeDelta: {x: 1307, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22241538
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 127670}
  m_CullTransparentMesh: 0
--- !u!114 &11433076
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 127670}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'How to start scanning, find the right orbit, and build maps. '
--- !u!1 &147686
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22498390}
  - component: {fileID: 22268622}
  - component: {fileID: 11418748}
  m_Layer: 5
  m_Name: VAB Info
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22498390
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 147686}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22454218}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 1192, y: -355}
  m_SizeDelta: {x: 823, y: 113}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22268622
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 147686}
  m_CullTransparentMesh: 0
--- !u!114 &11418748
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 147686}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: VAB/SPH extra info panels show the scanning parameters for each instrument.
--- !u!1 &148192
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22415644}
  - component: {fileID: 22276520}
  - component: {fileID: 11428072}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22415644
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 148192}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22461404}
  m_Father: {fileID: 22409398}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22276520
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 148192}
  m_CullTransparentMesh: 0
--- !u!114 &11428072
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 148192}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Basic Scanning
--- !u!1 &149300
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22477426}
  - component: {fileID: 22264782}
  - component: {fileID: 11432508}
  m_Layer: 5
  m_Name: Context
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22477426
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 149300}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22454218}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 182, y: -1130}
  m_SizeDelta: {x: 791, y: 62}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22264782
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 149300}
  m_CullTransparentMesh: 0
--- !u!114 &11432508
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 149300}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Right-Click context menus show the current status.
--- !u!1 &149936
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22478188}
  - component: {fileID: 22254016}
  - component: {fileID: 11498340}
  m_Layer: 5
  m_Name: Ground Tracks
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22478188
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 149936}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22454218}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 1206, y: -1050}
  m_SizeDelta: {x: 732, y: 218}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22254016
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 149936}
  m_CullTransparentMesh: 0
--- !u!114 &11498340
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 149936}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Map view ground track indicators show the area currently being scanned only
    when the scanner is within the acceptable altitude range (dependent on settings).
--- !u!1 &172540
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22409398}
  - component: {fileID: 22230916}
  - component: {fileID: 11482598}
  - component: {fileID: 11490552}
  m_Layer: 5
  m_Name: SCANsat_Basic
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22409398
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172540}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22415644}
  - {fileID: 22454218}
  - {fileID: 22491556}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22230916
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172540}
  m_CullTransparentMesh: 0
--- !u!114 &11482598
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172540}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11490552
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172540}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &172944
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22454218}
  - component: {fileID: 22294362}
  - component: {fileID: 11491246}
  m_Layer: 5
  m_Name: Indicators
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22454218
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172944}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22410410}
  - {fileID: 22477426}
  - {fileID: 22478188}
  - {fileID: 22498390}
  - {fileID: 22483908}
  m_Father: {fileID: 22409398}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -606, y: 478.4}
  m_SizeDelta: {x: 659, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22294362
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172944}
  m_CullTransparentMesh: 0
--- !u!114 &11491246
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172944}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Scanning Indicators:'
--- !u!1 &173806
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22491556}
  - component: {fileID: 22204390}
  - component: {fileID: 11492416}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22491556
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173806}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22409398}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22204390
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173806}
  m_CullTransparentMesh: 0
--- !u!114 &11492416
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173806}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 83aea5a51e8d4b04bb6b5301832a9666, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &174198
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22410410}
  - component: {fileID: 22295048}
  - component: {fileID: 11493040}
  m_Layer: 5
  m_Name: Indicator_sub
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22410410
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 174198}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22454218}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 467, y: -80}
  m_SizeDelta: {x: 935, y: 163}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22295048
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 174198}
  m_CullTransparentMesh: 0
--- !u!114 &11493040
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 174198}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'There are numerous indicators available for monitoring scanning activity,
    these include:'


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Basic.prefab.meta
================================================
fileFormatVersion: 2
guid: c7ab9f55ac09fc8488c2693de9d8ba3e
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Big_Map.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &110764
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22423414}
  - component: {fileID: 22208112}
  - component: {fileID: 11435924}
  m_Layer: 5
  m_Name: MechJeb note
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22423414
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110764}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22461770}
  m_Father: {fileID: 22484462}
  m_RootOrder: 15
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -551.5, y: -725}
  m_SizeDelta: {x: 125, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22208112
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110764}
  m_CullTransparentMesh: 0
--- !u!114 &11435924
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110764}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: '* Note:'
--- !u!1 &113382
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22452486}
  - component: {fileID: 22297632}
  - component: {fileID: 11495646}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22452486
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113382}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22472820}
  m_Father: {fileID: 22484462}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22297632
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113382}
  m_CullTransparentMesh: 0
--- !u!114 &11495646
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113382}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat Big Map
--- !u!1 &114114
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22472820}
  - component: {fileID: 22260106}
  - component: {fileID: 11418816}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22472820
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 114114}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452486}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 855, y: -62}
  m_SizeDelta: {x: 1712, y: 117}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22260106
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 114114}
  m_CullTransparentMesh: 0
--- !u!114 &11418816
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 114114}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The SCANsat big map shows celestial bodies in greater detail, offers multiple
    different map types, can be re-sized, and features several map overlays along
    with other functions.
--- !u!1 &114646
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22457612}
  - component: {fileID: 22267356}
  - component: {fileID: 11435210}
  m_Layer: 5
  m_Name: Refresh
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22457612
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 114646}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 8
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1091, y: 1103.5}
  m_SizeDelta: {x: 345, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22267356
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 114646}
  m_CullTransparentMesh: 0
--- !u!114 &11435210
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 114646}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Refresh the map.
--- !u!1 &115352
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22474142}
  - component: {fileID: 22254614}
  - component: {fileID: 11414950}
  m_Layer: 5
  m_Name: Map Export
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22474142
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115352}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 11
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1864.5, y: 294}
  m_SizeDelta: {x: 350, y: 219}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22254614
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115352}
  m_CullTransparentMesh: 0
--- !u!114 &11414950
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115352}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Export the current map to the SCANsat/PluginData folder.
--- !u!1 &123184
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22465868}
  - component: {fileID: 22271698}
  - component: {fileID: 11480294}
  m_Layer: 5
  m_Name: Map Selection
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22465868
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 123184}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 427, y: 1107.3}
  m_SizeDelta: {x: 273, y: 126.5}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22271698
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 123184}
  m_CullTransparentMesh: 0
--- !u!114 &11480294
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 123184}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Select different map types.
--- !u!1 &130160
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22485478}
  - component: {fileID: 22262546}
  - component: {fileID: 11460504}
  m_Layer: 5
  m_Name: Window Buttons
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22485478
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130160}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 243, y: 179}
  m_SizeDelta: {x: 306, y: 186}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22262546
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130160}
  m_CullTransparentMesh: 0
--- !u!114 &11460504
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130160}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Open and close different SCANsat windows.
--- !u!1 &153448
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22418284}
  - component: {fileID: 22239206}
  - component: {fileID: 11494374}
  m_Layer: 5
  m_Name: Resource Selection
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22418284
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 153448}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 10
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1652, y: 1070.53}
  m_SizeDelta: {x: 284, y: 127}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22239206
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 153448}
  m_CullTransparentMesh: 0
--- !u!114 &11494374
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 153448}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Select resource for overlay.
--- !u!1 &155364
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22443032}
  - component: {fileID: 22287354}
  - component: {fileID: 11456956}
  m_Layer: 5
  m_Name: Resize
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22443032
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 155364}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 12
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1863, y: 120}
  m_SizeDelta: {x: 347, y: 111}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22287354
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 155364}
  m_CullTransparentMesh: 0
--- !u!114 &11456956
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 155364}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Drag this handle to resize the map.
--- !u!1 &162344
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22461770}
  - component: {fileID: 22209770}
  - component: {fileID: 11455190}
  m_Layer: 5
  m_Name: Note Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22461770
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 162344}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22423414}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 1, y: 0.5}
  m_AnchorMax: {x: 1, y: 0.5}
  m_AnchoredPosition: {x: 730, y: 0}
  m_SizeDelta: {x: 1460, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22209770
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 162344}
  m_CullTransparentMesh: 0
--- !u!114 &11455190
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 162344}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: When MechJeb is installed the waypoint button can be used to set the landing
    guidance site.
--- !u!1 &165180
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22484462}
  - component: {fileID: 22206170}
  - component: {fileID: 11450564}
  - component: {fileID: 11431422}
  m_Layer: 5
  m_Name: SCANsat_Big_Map
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22484462
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 165180}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22452486}
  - {fileID: 22446044}
  - {fileID: 22475622}
  - {fileID: 22485478}
  - {fileID: 22411416}
  - {fileID: 1083140510823707257}
  - {fileID: 22465868}
  - {fileID: 22479198}
  - {fileID: 22457612}
  - {fileID: 22466624}
  - {fileID: 22418284}
  - {fileID: 22474142}
  - {fileID: 22443032}
  - {fileID: 22421580}
  - {fileID: 22444680}
  - {fileID: 22423414}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22206170
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 165180}
  m_CullTransparentMesh: 0
--- !u!114 &11450564
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 165180}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11431422
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 165180}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &172816
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22446044}
  - component: {fileID: 22227146}
  - component: {fileID: 11419736}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22446044
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172816}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22227146
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172816}
  m_CullTransparentMesh: 0
--- !u!114 &11419736
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172816}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 5cf86f805eaada442b9f2877c70fd161, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &177570
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22421580}
  - component: {fileID: 22274716}
  - component: {fileID: 11482148}
  m_Layer: 5
  m_Name: Target Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22421580
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177570}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 13
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1888, y: 583.38}
  m_SizeDelta: {x: 270, y: 150.25}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22274716
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177570}
  m_CullTransparentMesh: 0
--- !u!114 &11482148
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177570}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Create new waypoints. *
--- !u!1 &177794
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22411416}
  - component: {fileID: 22271628}
  - component: {fileID: 11439820}
  m_Layer: 5
  m_Name: Toggles
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22411416
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177794}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 284, y: 758}
  m_SizeDelta: {x: 281, y: 128}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22271628
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177794}
  m_CullTransparentMesh: 0
--- !u!114 &11439820
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177794}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Various map overlay toggles.
--- !u!1 &182348
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22466624}
  - component: {fileID: 22293244}
  - component: {fileID: 11412570}
  m_Layer: 5
  m_Name: Celestial Body Selection
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22466624
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182348}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 9
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1845, y: 945.6}
  m_SizeDelta: {x: 292, y: 143}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22293244
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182348}
  m_CullTransparentMesh: 0
--- !u!114 &11412570
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182348}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Select different celestial bodies.
--- !u!1 &182388
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22479198}
  - component: {fileID: 22232658}
  - component: {fileID: 11422196}
  m_Layer: 5
  m_Name: Projection Selection
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22479198
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182388}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 7
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 263, y: 976}
  m_SizeDelta: {x: 294, y: 136}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22232658
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182388}
  m_CullTransparentMesh: 0
--- !u!114 &11422196
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182388}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Select different map projections.
--- !u!1 &192496
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22444680}
  - component: {fileID: 22295644}
  - component: {fileID: 11435858}
  m_Layer: 5
  m_Name: Waypoint Bar
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22444680
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 192496}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 14
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1147, y: 142}
  m_SizeDelta: {x: 308, y: 131}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22295644
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 192496}
  m_CullTransparentMesh: 0
--- !u!114 &11435858
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 192496}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Enter custom waypoint names.
--- !u!1 &193098
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22475622}
  - component: {fileID: 22247398}
  - component: {fileID: 11425654}
  m_Layer: 5
  m_Name: Readout
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22475622
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 193098}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 711, y: 159}
  m_SizeDelta: {x: 399, y: 200}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22247398
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 193098}
  m_CullTransparentMesh: 0
--- !u!114 &11425654
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 193098}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Information about the area under the current mouse position.
--- !u!1 &5984124962833373539
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1083140510823707257}
  - component: {fileID: 4752157793599285001}
  - component: {fileID: 2010056115074328284}
  m_Layer: 5
  m_Name: Status Bars
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1083140510823707257
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 5984124962833373539}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484462}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 240.35, y: 458}
  m_SizeDelta: {x: 368.3, y: 266}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4752157793599285001
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 5984124962833373539}
  m_CullTransparentMesh: 0
--- !u!114 &2010056115074328284
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 5984124962833373539}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Scan status indicators: Bars show overall coverage, colors indicate coverage
    at current mouse position.'


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Big_Map.prefab.meta
================================================
fileFormatVersion: 2
guid: 8c31f97dd43914e4ead7935221940956
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &164518
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22417942}
  - component: {fileID: 22295808}
  - component: {fileID: 11414916}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22417942
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 164518}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22470728}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22295808
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 164518}
  m_CullTransparentMesh: 0
--- !u!114 &11414916
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 164518}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: d044e69a5b60f8a46bcd414071bd1702, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &173504
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22470728}
  - component: {fileID: 22294948}
  - component: {fileID: 11422520}
  - component: {fileID: 11477158}
  m_Layer: 5
  m_Name: SCANsat_Colors
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22470728
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173504}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22401428}
  - {fileID: 22417942}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22294948
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173504}
  m_CullTransparentMesh: 0
--- !u!114 &11422520
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173504}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11477158
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173504}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &191054
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22401428}
  - component: {fileID: 22212598}
  - component: {fileID: 11484236}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22401428
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 191054}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22409628}
  m_Father: {fileID: 22470728}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -527, y: 690}
  m_SizeDelta: {x: 892, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22212598
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 191054}
  m_CullTransparentMesh: 0
--- !u!114 &11484236
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 191054}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat Color Management
--- !u!1 &196898
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22409628}
  - component: {fileID: 22285392}
  - component: {fileID: 11482056}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22409628
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196898}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22401428}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 896, y: -58}
  m_SizeDelta: {x: 1790, y: 117}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22285392
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196898}
  m_CullTransparentMesh: 0
--- !u!114 &11482056
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196898}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat allows for numerous adjustments to the colors used for all of the
    included map types; all controlled through the Color Management Page of the Settings
    Window.


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors.prefab.meta
================================================
fileFormatVersion: 2
guid: 3a999eaf05d61904487ab5f61e07f650
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Biome.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &101402
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22450472}
  - component: {fileID: 22236748}
  - component: {fileID: 11444398}
  m_Layer: 5
  m_Name: Biome Options
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22450472
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 101402}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22485522}
  m_Father: {fileID: 22492444}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 525, y: 135}
  m_SizeDelta: {x: 322, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22236748
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 101402}
  m_CullTransparentMesh: 0
--- !u!114 &11444398
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 101402}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Biome Options:'
--- !u!1 &110154
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22485522}
  - component: {fileID: 22239212}
  - component: {fileID: 11454914}
  m_Layer: 5
  m_Name: Biome Options Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22485522
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110154}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22450472}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 280, y: -199}
  m_SizeDelta: {x: 562, y: 398}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22239212
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110154}
  m_CullTransparentMesh: 0
--- !u!114 &11454914
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110154}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Switch to using the bright stock biome map colors, toggle the white border
    between biomes and adjust the level of transparency for the terrain shading drawn
    below the biome map.
--- !u!1 &138650
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22407180}
  - component: {fileID: 22294998}
  - component: {fileID: 11456014}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22407180
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138650}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22439110}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 646, y: -35}
  m_SizeDelta: {x: 1292, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22294998
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138650}
  m_CullTransparentMesh: 0
--- !u!114 &11456014
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138650}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Adjust biome color values or switch to using stock biome map colors.
--- !u!1 &151456
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22429160}
  - component: {fileID: 22276752}
  - component: {fileID: 11414946}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22429160
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 151456}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22492444}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22276752
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 151456}
  m_CullTransparentMesh: 0
--- !u!114 &11414946
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 151456}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: f90de7220ae175748843b638e369c1c9, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &163138
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22482186}
  - component: {fileID: 22280842}
  - component: {fileID: 11425470}
  m_Layer: 5
  m_Name: Color Picker
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22482186
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 163138}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22428084}
  m_Father: {fileID: 22492444}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -811.5, y: -511}
  m_SizeDelta: {x: 322, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22280842
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 163138}
  m_CullTransparentMesh: 0
--- !u!114 &11425470
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 163138}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Color Picker:'
--- !u!1 &170496
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22400726}
  - component: {fileID: 22241180}
  - component: {fileID: 11460106}
  m_Layer: 5
  m_Name: Biome Colors
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22400726
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170496}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22413858}
  m_Father: {fileID: 22492444}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -811.5, y: 440}
  m_SizeDelta: {x: 322, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22241180
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170496}
  m_CullTransparentMesh: 0
--- !u!114 &11460106
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170496}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Biome Colors:'
--- !u!1 &184934
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22428084}
  - component: {fileID: 22235664}
  - component: {fileID: 11468586}
  m_Layer: 5
  m_Name: Color Picker Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22428084
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 184934}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22482186}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 834, y: -104}
  m_SizeDelta: {x: 1669, y: 207}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22235664
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 184934}
  m_CullTransparentMesh: 0
--- !u!114 &11468586
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 184934}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Use the HSV color picker on this and other pages to select a new color.
    Switch between Low and High color selection using the toggle buttons along the
    bottom. Adjust the hue using the slider along the right. The new selection will
    be shown above the existing color. RGB color can be manually selected using the
    text input fields on the left; both 0-1 and 0-255 ranges can be used.
--- !u!1 &190166
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22492444}
  - component: {fileID: 22296438}
  - component: {fileID: 11440166}
  - component: {fileID: 11441932}
  m_Layer: 5
  m_Name: SCANsat_Colors_Biome
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22492444
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190166}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22439110}
  - {fileID: 22429160}
  - {fileID: 22482186}
  - {fileID: 22450472}
  - {fileID: 22400726}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 716, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22296438
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190166}
  m_CullTransparentMesh: 0
--- !u!114 &11440166
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190166}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11441932
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190166}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &190702
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22439110}
  - component: {fileID: 22216414}
  - component: {fileID: 11462660}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22439110
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190702}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22407180}
  m_Father: {fileID: 22492444}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -650, y: 690}
  m_SizeDelta: {x: 645, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22216414
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190702}
  m_CullTransparentMesh: 0
--- !u!114 &11462660
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190702}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Biome Color Options
--- !u!1 &196936
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22413858}
  - component: {fileID: 22200440}
  - component: {fileID: 11483298}
  m_Layer: 5
  m_Name: Biome Colors Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22413858
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196936}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22400726}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 834, y: -77}
  m_SizeDelta: {x: 1667, y: 154}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22200440
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196936}
  m_CullTransparentMesh: 0
--- !u!114 &11483298
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196936}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat biome maps assign each biome a color by interpolating between two
    color end-points. Adjust these end-points using the color picker to generate different
    color biome maps.


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Biome.prefab.meta
================================================
fileFormatVersion: 2
guid: 0dcaf90783495d04bbfaa384151f4618
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Resources.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &106286
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22420952}
  - component: {fileID: 22255212}
  - component: {fileID: 11400466}
  m_Layer: 5
  m_Name: Resource Color Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22420952
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 106286}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22427604}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 505, y: -78}
  m_SizeDelta: {x: 1012, y: 156}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22255212
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 106286}
  m_CullTransparentMesh: 0
--- !u!114 &11400466
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 106286}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat resource maps use two colors to represent each resource; varying
    resource concentrations interpolate between these two colors.
--- !u!1 &113596
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22491450}
  - component: {fileID: 22212602}
  - component: {fileID: 11413272}
  m_Layer: 5
  m_Name: Apply
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22491450
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113596}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22436994}
  m_Father: {fileID: 22435776}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 497, y: -179}
  m_SizeDelta: {x: 499, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22212602
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113596}
  m_CullTransparentMesh: 0
--- !u!114 &11413272
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113596}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Apply Current Values:'
--- !u!1 &128202
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22427604}
  - component: {fileID: 22238544}
  - component: {fileID: 11455380}
  m_Layer: 5
  m_Name: Resource Color
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22427604
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 128202}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22420952}
  m_Father: {fileID: 22435776}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -777.5, y: 472}
  m_SizeDelta: {x: 390, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22238544
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 128202}
  m_CullTransparentMesh: 0
--- !u!114 &11455380
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 128202}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Resource Colors:'
--- !u!1 &156002
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22432978}
  - component: {fileID: 22226130}
  - component: {fileID: 11450330}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22432978
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 156002}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22491696}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 635, y: -35}
  m_SizeDelta: {x: 1269, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22226130
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 156002}
  m_CullTransparentMesh: 0
--- !u!114 &11450330
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 156002}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Adjust resource color and cutoff values for each planetary resource.
--- !u!1 &159510
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22435776}
  - component: {fileID: 22258590}
  - component: {fileID: 11495238}
  - component: {fileID: 11421708}
  m_Layer: 5
  m_Name: SCANsat_Colors_Resources
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22435776
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159510}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22491696}
  - {fileID: 22405916}
  - {fileID: 22427604}
  - {fileID: 22405532}
  - {fileID: 22455348}
  - {fileID: 22491450}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22258590
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159510}
  m_CullTransparentMesh: 0
--- !u!114 &11495238
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159510}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11421708
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159510}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &163630
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22405532}
  - component: {fileID: 22208480}
  - component: {fileID: 11478168}
  m_Layer: 5
  m_Name: Cutoffs
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22405532
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 163630}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22458408}
  m_Father: {fileID: 22435776}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -547.5, y: -463}
  m_SizeDelta: {x: 850, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22208480
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 163630}
  m_CullTransparentMesh: 0
--- !u!114 &11478168
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 163630}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Resource Concentration Cutoff Values:'
--- !u!1 &170152
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22434976}
  - component: {fileID: 22270282}
  - component: {fileID: 11486782}
  m_Layer: 5
  m_Name: Transparency Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22434976
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170152}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22455348}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 353, y: -114}
  m_SizeDelta: {x: 709, y: 227}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22270282
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170152}
  m_CullTransparentMesh: 0
--- !u!114 &11486782
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170152}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Change the transparency value to adjust how much of the underlying SCANsat
    map is visible below the resource overlay.
--- !u!1 &173248
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22405916}
  - component: {fileID: 22256358}
  - component: {fileID: 11452514}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22405916
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173248}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22435776}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22256358
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173248}
  m_CullTransparentMesh: 0
--- !u!114 &11452514
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173248}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 48126e775ef7f8040a9a222745100d27, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &185362
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22491696}
  - component: {fileID: 22284876}
  - component: {fileID: 11494710}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22491696
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185362}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22432978}
  m_Father: {fileID: 22435776}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22284876
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185362}
  m_CullTransparentMesh: 0
--- !u!114 &11494710
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185362}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Resource Color Options
--- !u!1 &186002
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22455348}
  - component: {fileID: 22218178}
  - component: {fileID: 11417520}
  m_Layer: 5
  m_Name: Transparency
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22455348
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 186002}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22434976}
  m_Father: {fileID: 22435776}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 595.5, y: 360}
  m_SizeDelta: {x: 696, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22218178
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 186002}
  m_CullTransparentMesh: 0
--- !u!114 &11417520
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 186002}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Resource Overlay Transparency:'
--- !u!1 &192570
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22436994}
  - component: {fileID: 22275922}
  - component: {fileID: 11478254}
  m_Layer: 5
  m_Name: Apply Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22436994
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 192570}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22491450}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 348, y: -128}
  m_SizeDelta: {x: 697, y: 257}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22275922
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 192570}
  m_CullTransparentMesh: 0
--- !u!114 &11478254
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 192570}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Resource cutoff values are saved separately for each celestial body. Apply
    values to only the current selection or to all celestial bodies. '
--- !u!1 &197966
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22458408}
  - component: {fileID: 22251914}
  - component: {fileID: 11464744}
  m_Layer: 5
  m_Name: Cutoffs Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22458408
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 197966}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22405532}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 596, y: -110}
  m_SizeDelta: {x: 1191, y: 219}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22251914
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 197966}
  m_CullTransparentMesh: 0
--- !u!114 &11464744
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 197966}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Resources with concentrations below the Min Cutoff will not be displayed;
    anything above the Max Cutoff will be displayed using the High Color.


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Resources.prefab.meta
================================================
fileFormatVersion: 2
guid: 376d276781fe9f54da393639ff880f54
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Slope.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &104366
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22474862}
  - component: {fileID: 22262932}
  - component: {fileID: 11481508}
  m_Layer: 5
  m_Name: Slope Cuttoff
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22474862
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 104366}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22485206}
  m_Father: {fileID: 22430136}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -811.5, y: -393}
  m_SizeDelta: {x: 322, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22262932
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 104366}
  m_CullTransparentMesh: 0
--- !u!114 &11481508
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 104366}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Slope Cutoff:'
--- !u!1 &108862
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22478208}
  - component: {fileID: 22201788}
  - component: {fileID: 11404274}
  m_Layer: 5
  m_Name: Slope color pair note
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22478208
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 108862}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22498920}
  m_Father: {fileID: 22430136}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -831, y: -714}
  m_SizeDelta: {x: 125, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22201788
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 108862}
  m_CullTransparentMesh: 0
--- !u!114 &11404274
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 108862}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: '* Note:'
--- !u!1 &118210
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22430136}
  - component: {fileID: 22211182}
  - component: {fileID: 11424652}
  - component: {fileID: 11442432}
  m_Layer: 5
  m_Name: SCANsat_Colors_Slope
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22430136
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 118210}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22433032}
  - {fileID: 22472024}
  - {fileID: 22439948}
  - {fileID: 22474862}
  - {fileID: 22478208}
  - {fileID: 22457324}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22211182
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 118210}
  m_CullTransparentMesh: 0
--- !u!114 &11424652
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 118210}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11442432
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 118210}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &126856
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22485206}
  - component: {fileID: 22295750}
  - component: {fileID: 11466288}
  m_Layer: 5
  m_Name: Slope Cuttoff Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22485206
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126856}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22474862}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 680, y: -89}
  m_SizeDelta: {x: 1362, y: 176}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22295750
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126856}
  m_CullTransparentMesh: 0
--- !u!114 &11466288
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126856}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Adjust the slope cutoff value to alter the slope level where SCANsat switches
    between the two color pairs; this is particularly useful when using the zoom map.
--- !u!1 &130030
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22433032}
  - component: {fileID: 22258148}
  - component: {fileID: 11454858}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22433032
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130030}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22473082}
  m_Father: {fileID: 22430136}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22258148
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130030}
  m_CullTransparentMesh: 0
--- !u!114 &11454858
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130030}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Slope Color Options
--- !u!1 &149676
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22439948}
  - component: {fileID: 22295782}
  - component: {fileID: 11444934}
  m_Layer: 5
  m_Name: Slope Color
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22439948
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 149676}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22476084}
  m_Father: {fileID: 22430136}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -811.5, y: 478}
  m_SizeDelta: {x: 322, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22295782
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 149676}
  m_CullTransparentMesh: 0
--- !u!114 &11444934
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 149676}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Slope Colors:'
--- !u!1 &158746
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22473082}
  - component: {fileID: 22280314}
  - component: {fileID: 11480060}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22473082
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 158746}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22433032}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 493, y: -35}
  m_SizeDelta: {x: 987, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22280314
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 158746}
  m_CullTransparentMesh: 0
--- !u!114 &11480060
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 158746}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Adjust slope colors and cutoff values to your likings.
--- !u!1 &161772
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22472024}
  - component: {fileID: 22266288}
  - component: {fileID: 11416680}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22472024
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 161772}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430136}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22266288
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 161772}
  m_CullTransparentMesh: 0
--- !u!114 &11416680
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 161772}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: b967916f9873b5042a5429bd31daa3f9, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &164690
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22476084}
  - component: {fileID: 22202388}
  - component: {fileID: 11476302}
  m_Layer: 5
  m_Name: Slope Color Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22476084
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 164690}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22439948}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 693, y: -57}
  m_SizeDelta: {x: 1389, y: 115}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22202388
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 164690}
  m_CullTransparentMesh: 0
--- !u!114 &11476302
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 164690}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat slope maps use two pairs of colors to display terrain slope. One
    pair for areas with relatively low slope angles, and another for high slope angles.
    *
--- !u!1 &178442
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22498920}
  - component: {fileID: 22201294}
  - component: {fileID: 11467346}
  m_Layer: 5
  m_Name: Note Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22498920
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178442}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22478208}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 1, y: 0.5}
  m_AnchorMax: {x: 1, y: 0.5}
  m_AnchoredPosition: {x: 591, y: 0}
  m_SizeDelta: {x: 1183, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22201294
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178442}
  m_CullTransparentMesh: 0
--- !u!114 &11467346
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178442}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: It is generally best to choose the same color for the middle two color values.
--- !u!1 &195294
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22457324}
  - component: {fileID: 22287936}
  - component: {fileID: 11485740}
  m_Layer: 5
  m_Name: Slope Zoom Caption
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22457324
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195294}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430136}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 707, y: -603}
  m_SizeDelta: {x: 511, y: 168}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22287936
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195294}
  m_CullTransparentMesh: 0
--- !u!114 &11485740
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195294}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Demonstrating the difference between a slope cutoff value of 1 on top, and
    0.3 on the bottom.


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Slope.prefab.meta
================================================
fileFormatVersion: 2
guid: 9d76f1b45769ba44ca549cdfb23d1aaf
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Terrain.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &105406
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22418900}
  - component: {fileID: 22208732}
  - component: {fileID: 11412180}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22418900
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 105406}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22491606}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22208732
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 105406}
  m_CullTransparentMesh: 0
--- !u!114 &11412180
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 105406}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 96605d83275fb7e41a047fb8ebb364b0, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &107290
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22438612}
  - component: {fileID: 22249202}
  - component: {fileID: 11416662}
  m_Layer: 5
  m_Name: Color Palettes
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22438612
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 107290}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22466858}
  m_Father: {fileID: 22491606}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -802, y: 456}
  m_SizeDelta: {x: 341, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22249202
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 107290}
  m_CullTransparentMesh: 0
--- !u!114 &11416662
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 107290}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Color Palettes:'
--- !u!1 &109178
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22496220}
  - component: {fileID: 22228750}
  - component: {fileID: 11400684}
  m_Layer: 5
  m_Name: Clamp Terrain Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22496220
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109178}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22421276}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 380, y: -159}
  m_SizeDelta: {x: 759, y: 316}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22228750
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109178}
  m_CullTransparentMesh: 0
--- !u!114 &11400684
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109178}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The Clamp Terrain value is used to separate the chosen palette into two
    regions; below this altitude only the first two colors of the palette will be
    used. This is particularly useful on ocean planets.
--- !u!1 &109514
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22491606}
  - component: {fileID: 22292080}
  - component: {fileID: 11470672}
  - component: {fileID: 11446442}
  m_Layer: 5
  m_Name: SCANsat_Colors_Terrain
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22491606
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109514}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22491510}
  - {fileID: 22418900}
  - {fileID: 22438612}
  - {fileID: 22477652}
  - {fileID: 22421276}
  - {fileID: 22459274}
  - {fileID: 22440242}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22292080
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109514}
  m_CullTransparentMesh: 0
--- !u!114 &11470672
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109514}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11446442
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109514}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &110892
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22419728}
  - component: {fileID: 22282810}
  - component: {fileID: 11492710}
  m_Layer: 5
  m_Name: Config Save Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22419728
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110892}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22440242}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 507, y: -116}
  m_SizeDelta: {x: 1014, y: 231}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22282810
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110892}
  m_CullTransparentMesh: 0
--- !u!114 &11492710
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110892}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: From this page, or the resource color page, use the Save Values To Config
    button to store all selections in a separate file located in the SCANsat/Resources
    folder. These values will be used as defaults and for any new save files.
--- !u!1 &116546
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22491510}
  - component: {fileID: 22275442}
  - component: {fileID: 11408540}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22491510
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 116546}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22499058}
  m_Father: {fileID: 22491606}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22275442
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 116546}
  m_CullTransparentMesh: 0
--- !u!114 &11408540
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 116546}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Terrain Color Options
--- !u!1 &136446
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22421276}
  - component: {fileID: 22265746}
  - component: {fileID: 11462970}
  m_Layer: 5
  m_Name: Clamp Terrain
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22421276
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 136446}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22496220}
  m_Father: {fileID: 22491606}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 357, y: 14}
  m_SizeDelta: {x: 341, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22265746
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 136446}
  m_CullTransparentMesh: 0
--- !u!114 &11462970
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 136446}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Terrain Clamp:'
--- !u!1 &137932
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22408202}
  - component: {fileID: 22244786}
  - component: {fileID: 11441816}
  m_Layer: 5
  m_Name: Terrain Settings Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22408202
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137932}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22477652}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 373, y: -161}
  m_SizeDelta: {x: 747, y: 322}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22244786
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137932}
  m_CullTransparentMesh: 0
--- !u!114 &11441816
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137932}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Adjust the minimum and maximum terrain altitude values; these are used to
    set the end points for the chosen color palette. Most values with a slider can
    be adjusted using the text input field on the left.
--- !u!1 &143222
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22477652}
  - component: {fileID: 22232830}
  - component: {fileID: 11470058}
  m_Layer: 5
  m_Name: Terrain Settings
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22477652
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143222}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22408202}
  m_Father: {fileID: 22491606}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 376, y: 423}
  m_SizeDelta: {x: 379, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22232830
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143222}
  m_CullTransparentMesh: 0
--- !u!114 &11470058
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143222}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Terrain Settings:'
--- !u!1 &150222
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22440242}
  - component: {fileID: 22294436}
  - component: {fileID: 11462650}
  m_Layer: 5
  m_Name: Config Save
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22440242
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150222}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22419728}
  m_Father: {fileID: 22491606}
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 100, y: -456}
  m_SizeDelta: {x: 351, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22294436
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150222}
  m_CullTransparentMesh: 0
--- !u!114 &11462650
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150222}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Save To Config:'
--- !u!1 &152022
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22499058}
  - component: {fileID: 22286012}
  - component: {fileID: 11497708}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22499058
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152022}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22491510}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 899, y: -35}
  m_SizeDelta: {x: 1799, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22286012
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152022}
  m_CullTransparentMesh: 0
--- !u!114 &11497708
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152022}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Choose from various terrain color palettes and adjust numerous settings
    for each celestial body.
--- !u!1 &154942
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22407860}
  - component: {fileID: 22227892}
  - component: {fileID: 11420002}
  m_Layer: 5
  m_Name: Palette Options Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22407860
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154942}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22459274}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 389, y: -84}
  m_SizeDelta: {x: 777, y: 167}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22227892
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154942}
  m_CullTransparentMesh: 0
--- !u!114 &11420002
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154942}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Further modify the selected color palette using the various options available.
--- !u!1 &155720
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22466858}
  - component: {fileID: 22208898}
  - component: {fileID: 11453660}
  m_Layer: 5
  m_Name: Color Palettes Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22466858
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 155720}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22438612}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 374, y: -97}
  m_SizeDelta: {x: 750, y: 192}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22208898
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 155720}
  m_CullTransparentMesh: 0
--- !u!114 &11453660
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 155720}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Choose from a number of different terrain color palettes; use the drop-down
    menu to switch between four palette types.
--- !u!1 &164056
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22459274}
  - component: {fileID: 22287808}
  - component: {fileID: 11468766}
  m_Layer: 5
  m_Name: Palette Options
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22459274
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 164056}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22407860}
  m_Father: {fileID: 22491606}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -784, y: -456}
  m_SizeDelta: {x: 377, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22287808
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 164056}
  m_CullTransparentMesh: 0
--- !u!114 &11468766
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 164056}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Palette Options:'


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Terrain.prefab.meta
================================================
fileFormatVersion: 2
guid: 289b4dd2278e9f34d83d2420436eb06a
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Features.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &100056
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22410686}
  - component: {fileID: 22232424}
  - component: {fileID: 11410008}
  m_Layer: 5
  m_Name: Info
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22410686
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 100056}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22412982}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 632, y: 1180}
  m_SizeDelta: {x: 604.8, y: 147.9}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22232424
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 100056}
  m_CullTransparentMesh: 0
--- !u!114 &11410008
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 100056}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Instruments window data readouts; these are dependent on scanning coverage.
--- !u!1 &119182
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22478134}
  - component: {fileID: 22212860}
  - component: {fileID: 11435046}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22478134
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 119182}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22412982}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22212860
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 119182}
  m_CullTransparentMesh: 0
--- !u!114 &11435046
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 119182}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 232947a74e6dfcd4a91b221ffeb20fa0, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &121062
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22431532}
  - component: {fileID: 22226250}
  - component: {fileID: 11427402}
  m_Layer: 5
  m_Name: Icons
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22431532
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 121062}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22412982}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1887.1, y: 524.6}
  m_SizeDelta: {x: 281.9, y: 212.7}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22226250
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 121062}
  m_CullTransparentMesh: 0
--- !u!114 &11427402
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 121062}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle anomaly, surface feature, waypoint, and flag icons.
--- !u!1 &126192
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22436592}
  - component: {fileID: 22244606}
  - component: {fileID: 11478558}
  m_Layer: 5
  m_Name: Anomaly Icon
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22436592
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126192}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22412982}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1875, y: 960}
  m_SizeDelta: {x: 306, y: 217}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22244606
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126192}
  m_CullTransparentMesh: 0
--- !u!114 &11478558
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126192}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Anomaly position is indicated by the circle of the question mark.
--- !u!1 &144870
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22494920}
  - component: {fileID: 22252844}
  - component: {fileID: 11411916}
  m_Layer: 5
  m_Name: Anomalies Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22494920
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 144870}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22494674}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 442.1, y: -81.1}
  m_SizeDelta: {x: 886.2, y: 150.2}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22252844
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 144870}
  m_CullTransparentMesh: 0
--- !u!114 &11411916
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 144870}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Gather detailed information about anomalies with the BTDT scanner after
    scanning with a high-resolution visual scanner or other orbital anomaly scanner.
--- !u!1 &152200
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22412982}
  - component: {fileID: 22244328}
  - component: {fileID: 11462732}
  - component: {fileID: 11437590}
  m_Layer: 5
  m_Name: SCANsat_Features
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22412982
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152200}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22400462}
  - {fileID: 22478134}
  - {fileID: 22494674}
  - {fileID: 22436592}
  - {fileID: 22431532}
  - {fileID: 22410686}
  - {fileID: 22413602}
  - {fileID: 22420840}
  - {fileID: 7912493553075925999}
  - {fileID: 1767368716962491346}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22244328
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152200}
  m_CullTransparentMesh: 0
--- !u!114 &11462732
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152200}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11437590
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152200}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &158124
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22413602}
  - component: {fileID: 22216900}
  - component: {fileID: 11453080}
  m_Layer: 5
  m_Name: Resource Buttons
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22413602
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 158124}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22412982}
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 189, y: 723}
  m_SizeDelta: {x: 293.6, y: 300}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22216900
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 158124}
  m_CullTransparentMesh: 0
--- !u!114 &11453080
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 158124}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle between different resources if more than one is installed.
--- !u!1 &181994
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22458610}
  - component: {fileID: 22248202}
  - component: {fileID: 11493784}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22458610
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181994}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22400462}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 709, y: -35}
  m_SizeDelta: {x: 1418, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22248202
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181994}
  m_CullTransparentMesh: 0
--- !u!114 &11493784
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181994}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat includes many features related to mapping, navigation, and more.
--- !u!1 &185984
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22494674}
  - component: {fileID: 22249646}
  - component: {fileID: 11421698}
  m_Layer: 5
  m_Name: Study Anomalies
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22494674
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185984}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22494920}
  m_Father: {fileID: 22412982}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 273, y: 526}
  m_SizeDelta: {x: 295, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22249646
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185984}
  m_CullTransparentMesh: 0
--- !u!114 &11421698
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185984}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Anomalies:'
--- !u!1 &190884
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22420840}
  - component: {fileID: 22263904}
  - component: {fileID: 11404922}
  m_Layer: 5
  m_Name: Anomaly Info
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22420840
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190884}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22412982}
  m_RootOrder: 7
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 226.8, y: 397.5}
  m_SizeDelta: {x: 287.4, y: 249.1}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22263904
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190884}
  m_CullTransparentMesh: 0
--- !u!114 &11404922
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190884}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Anomaly and Breaking Ground Surface features window and information.
--- !u!1 &194082
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22400462}
  - component: {fileID: 22255206}
  - component: {fileID: 11463736}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22400462
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 194082}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22458610}
  m_Father: {fileID: 22412982}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22255206
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 194082}
  m_CullTransparentMesh: 0
--- !u!114 &11463736
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 194082}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Other Features

'
--- !u!1 &4062883575837208681
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 7912493553075925999}
  - component: {fileID: 8428523947047309265}
  - component: {fileID: 4567460163124861721}
  m_Layer: 5
  m_Name: BTDT
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &7912493553075925999
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 4062883575837208681}
  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22412982}
  m_RootOrder: 8
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 485.62, y: -624}
  m_SizeDelta: {x: 424.75, y: 121.2}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8428523947047309265
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 4062883575837208681}
  m_CullTransparentMesh: 0
--- !u!114 &4567460163124861721
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 4062883575837208681}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: "Been There, Done That Scanner (BTDT\xAE)"
--- !u!1 &7341906426290666210
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1767368716962491346}
  - component: {fileID: 663103751871028215}
  - component: {fileID: 8361594410109357560}
  m_Layer: 5
  m_Name: ROC note
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1767368716962491346
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7341906426290666210}
  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 1314990393757130105}
  m_Father: {fileID: 22412982}
  m_RootOrder: 9
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -666.7, y: -725}
  m_SizeDelta: {x: 125, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &663103751871028215
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7341906426290666210}
  m_CullTransparentMesh: 0
--- !u!114 &8361594410109357560
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7341906426290666210}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: '* Note:'
--- !u!1 &7880000784742335305
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1314990393757130105}
  - component: {fileID: 8109676175071545680}
  - component: {fileID: 5045005032937845493}
  m_Layer: 5
  m_Name: Note Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1314990393757130105
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7880000784742335305}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 1767368716962491346}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 1, y: 0.5}
  m_AnchorMax: {x: 1, y: 0.5}
  m_AnchoredPosition: {x: 805, y: 0}
  m_SizeDelta: {x: 1610, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8109676175071545680
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7880000784742335305}
  m_CullTransparentMesh: 0
--- !u!114 &5045005032937845493
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7880000784742335305}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Nearby large Breaking Ground surface features can be detected and displayed
    on the zoom map.


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Features.prefab.meta
================================================
fileFormatVersion: 2
guid: 818caf5dabeacc944982692d6b72f9cb
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Header.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &103590
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22422824}
  - component: {fileID: 22283130}
  - component: {fileID: 11418892}
  m_Layer: 5
  m_Name: Subhead
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22422824
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103590}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22486230}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0}
  m_AnchorMax: {x: 0.5, y: 0}
  m_AnchoredPosition: {x: -0.000061035156, y: -48}
  m_SizeDelta: {x: 1595, y: 97}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22283130
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103590}
  m_CullTransparentMesh: 0
--- !u!114 &11418892
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103590}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.39215687, g: 0.4509804, b: 0.003921569, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 4
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 1
    m_LineSpacing: 1
  m_Text: "Scientific Committee On Advanced Navigation\t"
--- !u!1 &112084
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22486230}
  - component: {fileID: 22273680}
  - component: {fileID: 11436024}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22486230
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 112084}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22422824}
  m_Father: {fileID: 22479950}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 640}
  m_SizeDelta: {x: 1595, y: 212}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22273680
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 112084}
  m_CullTransparentMesh: 0
--- !u!114 &11436024
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 112084}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.39215687, g: 0.4509804, b: 0.003921569, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 220
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 220
    m_Alignment: 4
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 1
    m_LineSpacing: 1
  m_Text: SCANsat
--- !u!1 &137958
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22479950}
  - component: {fileID: 22237316}
  - component: {fileID: 11401290}
  - component: {fileID: 11412552}
  m_Layer: 5
  m_Name: SCANsat_Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22479950
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137958}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22486230}
  - {fileID: 22441392}
  - {fileID: 22438346}
  - {fileID: 22465418}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22237316
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137958}
  m_CullTransparentMesh: 0
--- !u!114 &11401290
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137958}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11412552
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137958}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &142028
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22438346}
  - component: {fileID: 22200358}
  - component: {fileID: 11414936}
  m_Layer: 5
  m_Name: Byline
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22438346
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142028}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22400306}
  m_Father: {fileID: 22479950}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -523.5, y: -374}
  m_SizeDelta: {x: 548, y: 125}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22200358
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142028}
  m_CullTransparentMesh: 0
--- !u!114 &11414936
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142028}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 75
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 75
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'SCANsat By:'
--- !u!1 &154356
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22491506}
  - component: {fileID: 22253666}
  - component: {fileID: 11421912}
  m_Layer: 5
  m_Name: Contributors
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22491506
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154356}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22465418}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 1, y: 0}
  m_AnchorMax: {x: 1, y: 0}
  m_AnchoredPosition: {x: 0, y: -124}
  m_SizeDelta: {x: 685.1, y: 249}
  m_Pivot: {x: 1, y: 0.5}
--- !u!222 &22253666
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154356}
  m_CullTransparentMesh: 0
--- !u!114 &11421912
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154356}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 45
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 45
    m_Alignment: 2
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Nertea (Parts)

    Mihara (RPM)

    severedSolo (Contracts)

    Milkshakefiend (Legacy Parts)'
--- !u!1 &156402
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22441392}
  - component: {fileID: 22286640}
  - component: {fileID: 11451738}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22441392
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 156402}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22479950}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22286640
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 156402}
  m_CullTransparentMesh: 0
--- !u!114 &11451738
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 156402}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 41a89754b4339344c865b7fdbe89bb80, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &182114
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22400306}
  - component: {fileID: 22265960}
  - component: {fileID: 11413914}
  m_Layer: 5
  m_Name: Authors
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22400306
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182114}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22438346}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 0, y: -146}
  m_SizeDelta: {x: 531, y: 292}
  m_Pivot: {x: 0, y: 0.5}
--- !u!222 &22265960
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182114}
  m_CullTransparentMesh: 0
--- !u!114 &11413914
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182114}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 65
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 65
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'damny(thatfool)

    technogeeky

    DMagic'
--- !u!1 &190022
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22465418}
  - component: {fileID: 22201696}
  - component: {fileID: 11480466}
  m_Layer: 5
  m_Name: SubByline
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22465418
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190022}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22491506}
  m_Father: {fileID: 22479950}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 575, y: -374}
  m_SizeDelta: {x: 458, y: 125}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22201696
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190022}
  m_CullTransparentMesh: 0
--- !u!114 &11480466
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190022}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 65
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 65
    m_Alignment: 5
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Contributors:'


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Header.prefab.meta
================================================
fileFormatVersion: 2
guid: 3a2b4da9511066641b0811b44589e1fe
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Intro.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &111094
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22435278}
  - component: {fileID: 22299478}
  - component: {fileID: 11496586}
  m_Layer: 5
  m_Name: Maps
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22435278
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111094}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22456888}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 528, y: -97}
  m_SizeDelta: {x: 1057, y: 193}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22299478
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111094}
  m_CullTransparentMesh: 0
--- !u!114 &11496586
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111094}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Maps can be generated using data from SCANsat instruments; all of which
    can be collected while the scanning vessels are unloaded.
--- !u!1 &113862
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22482344}
  - component: {fileID: 22224296}
  - component: {fileID: 11415900}
  m_Layer: 5
  m_Name: Parts
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22482344
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113862}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22411376}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 445.6, y: -95}
  m_SizeDelta: {x: 893.1, y: 190}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22224296
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113862}
  m_CullTransparentMesh: 0
--- !u!114 &11415900
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113862}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat provides several intruments; these are used to map out a planet
    or moon's surface terrain, biomes, resources, and visual surface.
--- !u!1 &123366
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22456888}
  - component: {fileID: 22201850}
  - component: {fileID: 11438080}
  m_Layer: 5
  m_Name: Build_Maps
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22456888
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 123366}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22435278}
  m_Father: {fileID: 22493486}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -774.5, y: 486}
  m_SizeDelta: {x: 396, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22201850
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 123366}
  m_CullTransparentMesh: 0
--- !u!114 &11438080
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 123366}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Build Maps
--- !u!1 &135182
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22451254}
  - component: {fileID: 22279944}
  - component: {fileID: 11406006}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22451254
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135182}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22425146}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 628.5, y: -35}
  m_SizeDelta: {x: 1257, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22279944
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135182}
  m_CullTransparentMesh: 0
--- !u!114 &11406006
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135182}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: What are some of the things we can do with SCANsat?
--- !u!1 &151480
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22439794}
  - component: {fileID: 22231850}
  - component: {fileID: 11428960}
  m_Layer: 5
  m_Name: Localization
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22439794
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 151480}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22494250}
  m_Father: {fileID: 22493486}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 508.5, y: -270}
  m_SizeDelta: {x: 662, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22231850
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 151480}
  m_CullTransparentMesh: 0
--- !u!114 &11428960
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 151480}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Localization Support
--- !u!1 &158382
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22474396}
  - component: {fileID: 22234478}
  - component: {fileID: 11407896}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22474396
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 158382}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22493486}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22234478
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 158382}
  m_CullTransparentMesh: 0
--- !u!114 &11407896
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 158382}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 900c3c8ca910d3a42947c0fba42b4fbd, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &166966
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22425146}
  - component: {fileID: 22232270}
  - component: {fileID: 11497096}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22425146
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166966}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22451254}
  m_Father: {fileID: 22493486}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22232270
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166966}
  m_CullTransparentMesh: 0
--- !u!114 &11497096
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166966}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Introduction to SCANsat
--- !u!1 &181090
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22484268}
  - component: {fileID: 22253254}
  - component: {fileID: 11423010}
  m_Layer: 5
  m_Name: Much_More
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22484268
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181090}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22433752}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 547, y: -98}
  m_SizeDelta: {x: 1094, y: 195}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22253254
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181090}
  m_CullTransparentMesh: 0
--- !u!114 &11423010
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181090}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Scan for resources, locate ideal landing areas, collect science, track contract
    waypoints, export map images, discover mysterious anomalies, and more.
--- !u!1 &181222
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22494250}
  - component: {fileID: 22298756}
  - component: {fileID: 11455870}
  m_Layer: 5
  m_Name: Translations
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22494250
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181222}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22439794}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 356, y: -256}
  m_SizeDelta: {x: 714, y: 511}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22298756
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181222}
  m_CullTransparentMesh: 0
--- !u!114 &11455870
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181222}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 0
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'SCANsat supports locization for most of its text with translations by:

    Deltathiago98 - Spanish

    Ser and RarogCmex - Russian

    Summerfirefly - Chinese

    h0yer - German

    Orlando - Portuguese

    don-vip - French'
--- !u!1 &183898
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22433752}
  - component: {fileID: 22223686}
  - component: {fileID: 11436780}
  m_Layer: 5
  m_Name: More
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22433752
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183898}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22484268}
  m_Father: {fileID: 22493486}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -572, y: -487}
  m_SizeDelta: {x: 764, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22223686
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183898}
  m_CullTransparentMesh: 0
--- !u!114 &11436780
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183898}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: And much, much more
--- !u!1 &188792
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22493486}
  - component: {fileID: 22255562}
  - component: {fileID: 11441804}
  - component: {fileID: 11490678}
  m_Layer: 5
  m_Name: SCANsat_Intro
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22493486
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 188792}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22425146}
  - {fileID: 22433752}
  - {fileID: 22411376}
  - {fileID: 22456888}
  - {fileID: 22439794}
  - {fileID: 22474396}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22255562
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 188792}
  m_CullTransparentMesh: 0
--- !u!114 &11441804
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 188792}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11490678
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 188792}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &195628
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22411376}
  - component: {fileID: 22211158}
  - component: {fileID: 11486712}
  m_Layer: 5
  m_Name: Scanners
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22411376
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195628}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22482344}
  m_Father: {fileID: 22493486}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 395, y: 706}
  m_SizeDelta: {x: 553, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22211158
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195628}
  m_CullTransparentMesh: 0
--- !u!114 &11486712
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195628}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Scan The Surface


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Intro.prefab.meta
================================================
fileFormatVersion: 2
guid: f9937bebb2ebece4986143c7aaad64f7
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Main_Map.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &104060
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22463966}
  - component: {fileID: 22269774}
  - component: {fileID: 11462212}
  m_Layer: 5
  m_Name: Windows Buttons
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22463966
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 104060}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 7
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1604, y: 478}
  m_SizeDelta: {x: 427, y: 115}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22269774
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 104060}
  m_CullTransparentMesh: 0
--- !u!114 &11462212
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 104060}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Open and close different SCANsat windows.
--- !u!1 &106978
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22437962}
  - component: {fileID: 22229870}
  - component: {fileID: 11485456}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22437962
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 106978}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22489566}
  m_Father: {fileID: 22404484}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22229870
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 106978}
  m_CullTransparentMesh: 0
--- !u!114 &11485456
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 106978}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat Main Map
--- !u!1 &109098
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22404484}
  - component: {fileID: 22236338}
  - component: {fileID: 11474390}
  - component: {fileID: 11471004}
  m_Layer: 5
  m_Name: SCANsat_Main_Map
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22404484
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109098}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22437962}
  - {fileID: 22462730}
  - {fileID: 22474030}
  - {fileID: 22439466}
  - {fileID: 22464778}
  - {fileID: 22463778}
  - {fileID: 22408510}
  - {fileID: 22463966}
  - {fileID: 22430032}
  - {fileID: 22440562}
  - {fileID: 22497368}
  - {fileID: 22426644}
  - {fileID: 22472408}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22236338
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109098}
  m_CullTransparentMesh: 0
--- !u!114 &11474390
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109098}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11471004
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109098}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &109736
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22463778}
  - component: {fileID: 22209186}
  - component: {fileID: 11469664}
  m_Layer: 5
  m_Name: Minimize
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22463778
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109736}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1594, y: 835}
  m_SizeDelta: {x: 407, y: 119}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22209186
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109736}
  m_CullTransparentMesh: 0
--- !u!114 &11469664
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109736}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Minimize the vessel info section at the bottom.
--- !u!1 &110890
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22462730}
  - component: {fileID: 22214532}
  - component: {fileID: 11413750}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22462730
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110890}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22214532
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110890}
  m_CullTransparentMesh: 0
--- !u!114 &11413750
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 110890}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: e5beb55dc6eea0c4888b1a177a7520f4, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &111748
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22408510}
  - component: {fileID: 22238526}
  - component: {fileID: 11415402}
  m_Layer: 5
  m_Name: Map
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22408510
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111748}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1694, y: 650}
  m_SizeDelta: {x: 594, y: 166}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22238526
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111748}
  m_CullTransparentMesh: 0
--- !u!114 &11415402
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111748}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The map continuously updates and shows the current position of all active
    SCANsat vessels.
--- !u!1 &128984
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22440562}
  - component: {fileID: 22259906}
  - component: {fileID: 11477916}
  m_Layer: 5
  m_Name: Vessel Button
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22440562
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 128984}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 9
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 824.3, y: 234}
  m_SizeDelta: {x: 327.9, y: 231.7}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22259906
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 128984}
  m_CullTransparentMesh: 0
--- !u!114 &11477916
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 128984}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Double click on any vessel to switch to that vessel.
--- !u!1 &130450
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22430032}
  - component: {fileID: 22282962}
  - component: {fileID: 11463536}
  m_Layer: 5
  m_Name: Current Vessel
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22430032
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130450}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 8
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1576.9, y: 290}
  m_SizeDelta: {x: 504.9, y: 162.9}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22282962
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130450}
  m_CullTransparentMesh: 0
--- !u!114 &11463536
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130450}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Shows information about the current vessel, even if it does not have a SCANsat
    sensor.
--- !u!1 &135006
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22439466}
  - component: {fileID: 22259664}
  - component: {fileID: 11485312}
  m_Layer: 5
  m_Name: Color
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22439466
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135006}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1039, y: 1037}
  m_SizeDelta: {x: 321, y: 93}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22259664
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135006}
  m_CullTransparentMesh: 0
--- !u!114 &11485312
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135006}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle map color.
--- !u!1 &146044
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22497368}
  - component: {fileID: 22294134}
  - component: {fileID: 11475382}
  m_Layer: 5
  m_Name: Vessel Info
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22497368
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 146044}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 10
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 264.2, y: 241}
  m_SizeDelta: {x: 438.6, y: 260}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22294134
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 146044}
  m_CullTransparentMesh: 0
--- !u!114 &11475382
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 146044}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Shows information about all vessels with active SCANsat sensors orbiting
    the current celestial body.
--- !u!1 &146706
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22426644}
  - component: {fileID: 22250350}
  - component: {fileID: 11498666}
  m_Layer: 5
  m_Name: Scanning Percentage
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22426644
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 146706}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 11
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 418, y: 513}
  m_SizeDelta: {x: 477, y: 204}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22250350
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 146706}
  m_CullTransparentMesh: 0
--- !u!114 &11498666
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 146706}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The scanning completion percentage for all active sensors onboard the vessel.
--- !u!1 &153090
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22472408}
  - component: {fileID: 22223778}
  - component: {fileID: 11488458}
  m_Layer: 5
  m_Name: Scanning Status
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22472408
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 153090}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 12
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 357, y: 709}
  m_SizeDelta: {x: 451, y: 189}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22223778
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 153090}
  m_CullTransparentMesh: 0
--- !u!114 &11488458
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 153090}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Scanning status indicators for different sensor types.
--- !u!1 &154024
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22464778}
  - component: {fileID: 22283012}
  - component: {fileID: 11471168}
  m_Layer: 5
  m_Name: Type
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22464778
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154024}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1556, y: 992}
  m_SizeDelta: {x: 455, y: 109}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22283012
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154024}
  m_CullTransparentMesh: 0
--- !u!114 &11471168
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 154024}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle between altimetry and biome maps.
--- !u!1 &185620
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22489566}
  - component: {fileID: 22242132}
  - component: {fileID: 11407454}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22489566
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185620}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22437962}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 829, y: -62}
  m_SizeDelta: {x: 1659, y: 117}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22242132
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185620}
  m_CullTransparentMesh: 0
--- !u!114 &11407454
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185620}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The SCANsat main map provides an overview of scanning operations for the
    current celestial body. It also serves as a gateway to all of the other SCANsat
    windows.
--- !u!1 &195598
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22474030}
  - component: {fileID: 22277914}
  - component: {fileID: 11441522}
  m_Layer: 5
  m_Name: Terminator
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22474030
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195598}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22404484}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 517, y: 1001}
  m_SizeDelta: {x: 357, y: 153}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22277914
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195598}
  m_CullTransparentMesh: 0
--- !u!114 &11441522
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195598}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle the day/night map overlay.


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Main_Map.prefab.meta
================================================
fileFormatVersion: 2
guid: 68851f0046c86d244804eb291dcc1720
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_MultiMap.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6636796034800988455
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6636796034789756967}
  - component: {fileID: 6636796034789448527}
  - component: {fileID: 6636796034811236939}
  m_Layer: 5
  m_Name: Msi Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!224 &6636796034789756967
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034800988455}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 6636796034789760987}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 299.75, y: -68}
  m_SizeDelta: {x: 599.5, y: 134}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6636796034789448527
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034800988455}
  m_CullTransparentMesh: 0
--- !u!114 &6636796034811236939
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034800988455}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate low-resolution visual and resource maps, and biome data.
--- !u!1 &6636796034800988639
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6636796034789745561}
  - component: {fileID: 6636796034789422401}
  - component: {fileID: 6636796034811236679}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6636796034789745561
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034800988639}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 6636796034789736363}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 657.9, y: -35}
  m_SizeDelta: {x: 1314.8, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6636796034789422401
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034800988639}
  m_CullTransparentMesh: 0
--- !u!114 &6636796034811236679
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034800988639}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate low-resolution visual and resource maps, and biome data.
--- !u!1 &6636796034801036637
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6636796034789769351}
  - component: {fileID: 6636796034789422947}
  - component: {fileID: 6636796034811315559}
  m_Layer: 5
  m_Name: Modis Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6636796034789769351
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801036637}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 6636796034789740453}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 193.6, y: -38.6}
  m_SizeDelta: {x: 387.2, y: 77.3}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6636796034789422947
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801036637}
  m_CullTransparentMesh: 0
--- !u!114 &6636796034811315559
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801036637}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 32
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: No resource data.
--- !u!1 &6636796034801043171
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6636796034789740453}
  - component: {fileID: 6636796034789441643}
  - component: {fileID: 6636796034811215703}
  m_Layer: 5
  m_Name: Modis
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6636796034789740453
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801043171}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 6636796034789769351}
  m_Father: {fileID: 6636796034789780041}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -689, y: -626}
  m_SizeDelta: {x: 387.2, y: 121.2}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6636796034789441643
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801043171}
  m_CullTransparentMesh: 0
--- !u!114 &6636796034811215703
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801043171}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'MS-1 Multispectral

    Scanner'
--- !u!1 &6636796034801045603
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6636796034789819389}
  - component: {fileID: 6636796034789465109}
  - component: {fileID: 6636796034811226147}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6636796034789819389
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801045603}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 6636796034789780041}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6636796034789465109
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801045603}
  m_CullTransparentMesh: 0
--- !u!114 &6636796034811226147
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801045603}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 1ac01c02706c5974c93568bab481e585, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &6636796034801046173
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6636796034789780041}
  - component: {fileID: 6636796034789414929}
  - component: {fileID: 6636796034811275531}
  - component: {fileID: 6636796034811258523}
  m_Layer: 5
  m_Name: SCANsat_MultiMap
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6636796034789780041
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801046173}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 6636796034789736363}
  - {fileID: 6636796034789819389}
  - {fileID: 6636796034789740453}
  - {fileID: 6636796034789747645}
  - {fileID: 6636796034789760987}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6636796034789414929
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801046173}
  m_CullTransparentMesh: 0
--- !u!114 &6636796034811275531
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801046173}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &6636796034811258523
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801046173}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &6636796034801053587
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6636796034789760987}
  - component: {fileID: 6636796034789467031}
  - component: {fileID: 6636796034811208827}
  m_Layer: 5
  m_Name: Msi
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6636796034789760987
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801053587}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 6636796034789756967}
  m_Father: {fileID: 6636796034789780041}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 709, y: -626}
  m_SizeDelta: {x: 458.3, y: 121.2}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6636796034789467031
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801053587}
  m_CullTransparentMesh: 0
--- !u!114 &6636796034811208827
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801053587}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'MS-2A Advanced

    Multispectral Scanner'
--- !u!1 &6636796034801061261
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6636796034789747645}
  - component: {fileID: 6636796034789422771}
  - component: {fileID: 6636796034811293383}
  m_Layer: 5
  m_Name: Abi
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6636796034789747645
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801061261}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 6636796034789708281}
  m_Father: {fileID: 6636796034789780041}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: -626}
  m_SizeDelta: {x: 466.8, y: 121.2}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6636796034789422771
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801061261}
  m_CullTransparentMesh: 0
--- !u!114 &6636796034811293383
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801061261}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'MS-R Enhanced

    Multispectral Scanner'
--- !u!1 &6636796034801070449
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6636796034789708281}
  - component: {fileID: 6636796034789500273}
  - component: {fileID: 6636796034811250903}
  m_Layer: 5
  m_Name: Abi Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!224 &6636796034789708281
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801070449}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 6636796034789747645}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 288.8, y: -77}
  m_SizeDelta: {x: 577.6, y: 136}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6636796034789500273
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801070449}
  m_CullTransparentMesh: 0
--- !u!114 &6636796034811250903
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801070449}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate low-resolution visual and resource maps, and biome data.
--- !u!1 &6636796034801102891
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6636796034789736363}
  - component: {fileID: 6636796034789466875}
  - component: {fileID: 6636796034811209683}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6636796034789736363
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801102891}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 6636796034789745561}
  m_Father: {fileID: 6636796034789780041}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -597.1, y: 690}
  m_SizeDelta: {x: 750.7, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6636796034789466875
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801102891}
  m_CullTransparentMesh: 0
--- !u!114 &6636796034811209683
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6636796034801102891}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Multispectral Scanners


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_MultiMap.prefab.meta
================================================
fileFormatVersion: 2
guid: 4567359c4c5c6cc498367deb5be6f425
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Parts.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &101934
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22453872}
  - component: {fileID: 22287880}
  - component: {fileID: 11454390}
  m_Layer: 5
  m_Name: BTDT Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22453872
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 101934}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22456162}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 311, y: -84}
  m_SizeDelta: {x: 621, y: 167}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22287880
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 101934}
  m_CullTransparentMesh: 0
--- !u!114 &11454390
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 101934}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate detailed data on any nearby surface anomalies. Make sure to scan
    for anomalies from orbit first.
--- !u!1 &118018
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22495874}
  - component: {fileID: 22241234}
  - component: {fileID: 11475706}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22495874
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 118018}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22453936}
  m_Father: {fileID: 22419296}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -670, y: 690}
  m_SizeDelta: {x: 605, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22241234
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 118018}
  m_CullTransparentMesh: 0
--- !u!114 &11475706
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 118018}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat Scanners
--- !u!1 &135866
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22471410}
  - component: {fileID: 22240958}
  - component: {fileID: 11475282}
  m_Layer: 5
  m_Name: Biome
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22471410
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135866}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22473998}
  m_Father: {fileID: 22419296}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -733, y: -180}
  m_SizeDelta: {x: 476.5, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22240958
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135866}
  m_CullTransparentMesh: 0
--- !u!114 &11475282
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135866}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Multispectral Sensor:'
--- !u!1 &139600
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22482156}
  - component: {fileID: 22286874}
  - component: {fileID: 11471268}
  m_Layer: 5
  m_Name: Note Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22482156
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 139600}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22471796}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 1, y: 0.5}
  m_AnchorMax: {x: 1, y: 0.5}
  m_AnchoredPosition: {x: 857, y: 0}
  m_SizeDelta: {x: 1715, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22286874
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 139600}
  m_CullTransparentMesh: 0
--- !u!114 &11471268
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 139600}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: FOV increases linearly from the min scanning altitude to the ideal altitude,
    above which it retains its max value.
--- !u!1 &142666
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22413012}
  - component: {fileID: 22241596}
  - component: {fileID: 11490570}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22413012
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142666}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22419296}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22241596
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142666}
  m_CullTransparentMesh: 0
--- !u!114 &11490570
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142666}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 5050c9713aa09704b8adbeee0f74de01, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &143284
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22419296}
  - component: {fileID: 22259000}
  - component: {fileID: 11408418}
  - component: {fileID: 11459506}
  m_Layer: 5
  m_Name: SCANsat_Parts
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22419296
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143284}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22495874}
  - {fileID: 22413012}
  - {fileID: 22459020}
  - {fileID: 22451860}
  - {fileID: 22471410}
  - {fileID: 22456162}
  - {fileID: 22471796}
  - {fileID: 22487854}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22259000
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143284}
  m_CullTransparentMesh: 0
--- !u!114 &11408418
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143284}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11459506
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143284}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &146378
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22459020}
  - component: {fileID: 22232386}
  - component: {fileID: 11469438}
  m_Layer: 5
  m_Name: Radar
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22459020
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 146378}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22429102}
  m_Father: {fileID: 22419296}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -684, y: 503}
  m_SizeDelta: {x: 575, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22232386
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 146378}
  m_CullTransparentMesh: 0
--- !u!114 &11469438
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 146378}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'RADAR Altimetry Sensor:'
--- !u!1 &150616
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22490320}
  - component: {fileID: 22206552}
  - component: {fileID: 11466238}
  m_Layer: 5
  m_Name: SAR Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22490320
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150616}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22451860}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 265, y: -77}
  m_SizeDelta: {x: 530, y: 136}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22206552
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150616}
  m_CullTransparentMesh: 0
--- !u!114 &11466238
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150616}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate high-resolution terrain altimetry data.
--- !u!1 &159908
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22451860}
  - component: {fileID: 22252442}
  - component: {fileID: 11424750}
  m_Layer: 5
  m_Name: SAR
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22451860
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159908}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22490320}
  m_Father: {fileID: 22419296}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 380, y: 503}
  m_SizeDelta: {x: 502, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22252442
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159908}
  m_CullTransparentMesh: 0
--- !u!114 &11424750
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159908}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'SAR Altimetry Sensor:'
--- !u!1 &178438
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22456162}
  - component: {fileID: 22258986}
  - component: {fileID: 11499716}
  m_Layer: 5
  m_Name: BTDT
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22456162
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178438}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22453872}
  m_Father: {fileID: 22419296}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 391, y: -180}
  m_SizeDelta: {x: 524, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22258986
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178438}
  m_CullTransparentMesh: 0
--- !u!114 &11499716
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178438}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: "Been There Done That\xAE:"
--- !u!1 &184436
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22429102}
  - component: {fileID: 22252106}
  - component: {fileID: 11401294}
  m_Layer: 5
  m_Name: Radar Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22429102
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 184436}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22459020}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 287, y: -67}
  m_SizeDelta: {x: 576, y: 127}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22252106
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 184436}
  m_CullTransparentMesh: 0
--- !u!114 &11401294
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 184436}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate low-resolution terrain altimetry data.
--- !u!1 &188172
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22471796}
  - component: {fileID: 22279288}
  - component: {fileID: 11461072}
  m_Layer: 5
  m_Name: FOV note
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22471796
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 188172}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22482156}
  m_Father: {fileID: 22419296}
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -892, y: -727}
  m_SizeDelta: {x: 99, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22279288
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 188172}
  m_CullTransparentMesh: 0
--- !u!114 &11461072
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 188172}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Note:'
--- !u!1 &196792
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22487854}
  - component: {fileID: 22278342}
  - component: {fileID: 11447320}
  m_Layer: 5
  m_Name: Ideal Note
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22487854
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196792}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22498818}
  m_Father: {fileID: 22419296}
  m_RootOrder: 7
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -944, y: -27}
  m_SizeDelta: {x: 99, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22278342
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196792}
  m_CullTransparentMesh: 0
--- !u!114 &11447320
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196792}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Note:'
--- !u!1 &198564
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22498818}
  - component: {fileID: 22200656}
  - component: {fileID: 11403890}
  m_Layer: 5
  m_Name: Note Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22498818
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 198564}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22487854}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 1, y: 0.5}
  m_AnchorMax: {x: 1, y: 0.5}
  m_AnchoredPosition: {x: 249, y: -24}
  m_SizeDelta: {x: 500, y: 103}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22200656
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 198564}
  m_CullTransparentMesh: 0
--- !u!114 &11403890
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 198564}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The "best" altitude is the same as the "min' if none is specified.
--- !u!1 &199694
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22473998}
  - component: {fileID: 22226534}
  - component: {fileID: 11448162}
  m_Layer: 5
  m_Name: Biome Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22473998
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 199694}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22471410}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 295, y: -68}
  m_SizeDelta: {x: 590, y: 134}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22226534
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 199694}
  m_CullTransparentMesh: 0
--- !u!114 &11448162
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 199694}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate biome data and detect any surface anomalies.
--- !u!1 &199926
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22453936}
  - component: {fileID: 22251624}
  - component: {fileID: 11447406}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22453936
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 199926}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22495874}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 437, y: -35}
  m_SizeDelta: {x: 873, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22251624
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 199926}
  m_CullTransparentMesh: 0
--- !u!114 &11447406
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 199926}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Four basic scanner instruments are included.


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Parts.prefab.meta
================================================
fileFormatVersion: 2
guid: 544bb4a3180131249ae068c4a136e7ad
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_RPM.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &102470
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22413600}
  - component: {fileID: 22210336}
  - component: {fileID: 11470450}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22413600
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 102470}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22490004}
  m_Father: {fileID: 22430404}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22210336
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 102470}
  m_CullTransparentMesh: 0
--- !u!114 &11470450
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 102470}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Raster Prop Monitor

'
--- !u!1 &108452
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22490004}
  - component: {fileID: 22272632}
  - component: {fileID: 11439010}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22490004
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 108452}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22413600}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 786, y: -35}
  m_SizeDelta: {x: 1572, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22272632
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 108452}
  m_CullTransparentMesh: 0
--- !u!114 &11439010
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 108452}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat includes support for IVA panel displays when using Raster Prop Monitor.
    *
--- !u!1 &111180
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22430404}
  - component: {fileID: 22208464}
  - component: {fileID: 11483840}
  - component: {fileID: 11489210}
  m_Layer: 5
  m_Name: SCANsat_RPM
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22430404
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111180}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22413600}
  - {fileID: 22414342}
  - {fileID: 22431716}
  - {fileID: 22405522}
  - {fileID: 22400938}
  - {fileID: 22462660}
  - {fileID: 22444114}
  - {fileID: 22443136}
  - {fileID: 22425954}
  - {fileID: 22478702}
  - {fileID: 22457400}
  - {fileID: 22411834}
  - {fileID: 22434880}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22208464
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111180}
  m_CullTransparentMesh: 0
--- !u!114 &11483840
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111180}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11489210
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111180}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &115970
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22414342}
  - component: {fileID: 22232792}
  - component: {fileID: 11443854}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22414342
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115970}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430404}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22232792
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115970}
  m_CullTransparentMesh: 0
--- !u!114 &11443854
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115970}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 0d357b2b293f04a4d8304f0d55f300b1, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &132742
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22411834}
  - component: {fileID: 22202204}
  - component: {fileID: 11422452}
  m_Layer: 5
  m_Name: RPM note
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22411834
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 132742}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22497942}
  m_Father: {fileID: 22430404}
  m_RootOrder: 11
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 202, y: -720}
  m_SizeDelta: {x: 125, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22202204
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 132742}
  m_CullTransparentMesh: 0
--- !u!114 &11422452
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 132742}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: '* Note:'
--- !u!1 &133672
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22434880}
  - component: {fileID: 22259412}
  - component: {fileID: 11458600}
  m_Layer: 5
  m_Name: Toggle
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22434880
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 133672}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430404}
  m_RootOrder: 12
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -13, y: -570}
  m_SizeDelta: {x: 245, y: 76}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22259412
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 133672}
  m_CullTransparentMesh: 0
--- !u!114 &11458600
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 133672}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle Map
--- !u!1 &135254
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22431716}
  - component: {fileID: 22213620}
  - component: {fileID: 11497134}
  m_Layer: 5
  m_Name: Zoom Out
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22431716
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135254}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430404}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 664, y: 197}
  m_SizeDelta: {x: 249, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22213620
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135254}
  m_CullTransparentMesh: 0
--- !u!114 &11497134
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 135254}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Zoom Out
--- !u!1 &137074
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22457400}
  - component: {fileID: 22291906}
  - component: {fileID: 11464420}
  m_Layer: 5
  m_Name: Prev Resource
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22457400
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137074}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430404}
  m_RootOrder: 10
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -711, y: -266.5}
  m_SizeDelta: {x: 343, y: 107}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22291906
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137074}
  m_CullTransparentMesh: 0
--- !u!114 &11464420
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137074}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Previous Resource
--- !u!1 &143194
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22444114}
  - component: {fileID: 22275998}
  - component: {fileID: 11471686}
  m_Layer: 5
  m_Name: Orbit Lines
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22444114
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143194}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430404}
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 723, y: -399}
  m_SizeDelta: {x: 367, y: 80}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22275998
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143194}
  m_CullTransparentMesh: 0
--- !u!114 &11471686
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143194}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle Orbit Lines
--- !u!1 &162016
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22443136}
  - component: {fileID: 22253886}
  - component: {fileID: 11432976}
  m_Layer: 5
  m_Name: Waypoints Anomalies
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22443136
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 162016}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430404}
  m_RootOrder: 7
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -704, y: 166}
  m_SizeDelta: {x: 357, y: 149}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22253886
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 162016}
  m_CullTransparentMesh: 0
--- !u!114 &11432976
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 162016}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle Waypoint and Anomaly Icons
--- !u!1 &167174
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22425954}
  - component: {fileID: 22244036}
  - component: {fileID: 11462236}
  m_Layer: 5
  m_Name: Toggle Resource
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22425954
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 167174}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430404}
  m_RootOrder: 8
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -693, y: 19}
  m_SizeDelta: {x: 305, y: 144}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22244036
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 167174}
  m_CullTransparentMesh: 0
--- !u!114 &11462236
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 167174}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle Resource Overlay
--- !u!1 &167982
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22478702}
  - component: {fileID: 22205426}
  - component: {fileID: 11476258}
  m_Layer: 5
  m_Name: Next Resource
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22478702
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 167982}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430404}
  m_RootOrder: 9
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -684, y: -126.75}
  m_SizeDelta: {x: 287, y: 122.5}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22205426
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 167982}
  m_CullTransparentMesh: 0
--- !u!114 &11476258
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 167982}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Next Resource
--- !u!1 &168368
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22497942}
  - component: {fileID: 22270134}
  - component: {fileID: 11468646}
  m_Layer: 5
  m_Name: Note Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22497942
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 168368}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22411834}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 1, y: 0.5}
  m_AnchorMax: {x: 1, y: 0.5}
  m_AnchoredPosition: {x: 372, y: 0}
  m_SizeDelta: {x: 744, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22270134
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 168368}
  m_CullTransparentMesh: 0
--- !u!114 &11468646
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 168368}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Raster Prop Monitor by Mihara and MOARdV.
--- !u!1 &174416
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22400938}
  - component: {fileID: 22269480}
  - component: {fileID: 11491046}
  m_Layer: 5
  m_Name: Map Mode
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22400938
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 174416}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430404}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 723, y: -98}
  m_SizeDelta: {x: 367, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22269480
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 174416}
  m_CullTransparentMesh: 0
--- !u!114 &11491046
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 174416}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Switch Map Mode
--- !u!1 &177298
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22405522}
  - component: {fileID: 22220982}
  - component: {fileID: 11434206}
  m_Layer: 5
  m_Name: Zoom In
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22405522
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177298}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430404}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 664, y: 36}
  m_SizeDelta: {x: 249, y: 71}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22220982
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177298}
  m_CullTransparentMesh: 0
--- !u!114 &11434206
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177298}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Zoom In
--- !u!1 &178012
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22462660}
  - component: {fileID: 22275952}
  - component: {fileID: 11486240}
  m_Layer: 5
  m_Name: Color
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22462660
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178012}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22430404}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 672.5, y: -252}
  m_SizeDelta: {x: 266, y: 78}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22275952
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178012}
  m_CullTransparentMesh: 0
--- !u!114 &11486240
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178012}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle Color


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_RPM.prefab.meta
================================================
fileFormatVersion: 2
guid: 832215bf5e614a7408b83e39152c3a0f
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_ResourceMap.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2878412041225246226
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2878412041237132954}
  - component: {fileID: 2878412041236808210}
  - component: {fileID: 2878412041232363444}
  m_Layer: 5
  m_Name: Abi Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!224 &2878412041237132954
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225246226}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 2878412041237089502}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 288.8, y: -77}
  m_SizeDelta: {x: 577.6, y: 136}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2878412041236808210
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225246226}
  m_CullTransparentMesh: 0
--- !u!114 &2878412041232363444
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225246226}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate low-resolution visual and resource maps, and biome data.
--- !u!1 &2878412041225251566
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2878412041237089502}
  - component: {fileID: 2878412041236894160}
  - component: {fileID: 2878412041232320932}
  m_Layer: 5
  m_Name: Mise
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2878412041237089502
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225251566}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 2878412041237132954}
  m_Father: {fileID: 2878412041237056810}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: -626}
  m_SizeDelta: {x: 466.8, y: 121.2}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2878412041236894160
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225251566}
  m_CullTransparentMesh: 0
--- !u!114 &2878412041232320932
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225251566}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCAN-R2 Advanced Resource Mapper
--- !u!1 &2878412041225259248
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2878412041237084344}
  - component: {fileID: 2878412041236841716}
  - component: {fileID: 2878412041232401176}
  m_Layer: 5
  m_Name: Hyperion
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2878412041237084344
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225259248}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 2878412041237083972}
  m_Father: {fileID: 2878412041237056810}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 693, y: -626}
  m_SizeDelta: {x: 458.3, y: 121.2}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2878412041236841716
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225259248}
  m_CullTransparentMesh: 0
--- !u!114 &2878412041232401176
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225259248}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCAN-RX Hyperspectral Resource Mapper
--- !u!1 &2878412041225265536
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2878412041237096646}
  - component: {fileID: 2878412041236866824}
  - component: {fileID: 2878412041232406580}
  m_Layer: 5
  m_Name: Crism
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2878412041237096646
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225265536}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 2878412041237063652}
  m_Father: {fileID: 2878412041237056810}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -681.5, y: -626}
  m_SizeDelta: {x: 402.3, y: 121.2}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2878412041236866824
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225265536}
  m_CullTransparentMesh: 0
--- !u!114 &2878412041232406580
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225265536}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCAN-R Resource Mapper
--- !u!1 &2878412041225270782
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2878412041237056810}
  - component: {fileID: 2878412041236905842}
  - component: {fileID: 2878412041232338536}
  - component: {fileID: 2878412041232351736}
  m_Layer: 5
  m_Name: SCANsat_ResourceMap
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2878412041237056810
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225270782}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 2878412041237108936}
  - {fileID: 2878412041237275806}
  - {fileID: 2878412041237096646}
  - {fileID: 2878412041237089502}
  - {fileID: 2878412041237084344}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2878412041236905842
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225270782}
  m_CullTransparentMesh: 0
--- !u!114 &2878412041232338536
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225270782}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &2878412041232351736
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225270782}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &2878412041225271040
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2878412041237275806}
  - component: {fileID: 2878412041236855670}
  - component: {fileID: 2878412041232387904}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2878412041237275806
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225271040}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 2878412041237056810}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2878412041236855670
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225271040}
  m_CullTransparentMesh: 0
--- !u!114 &2878412041232387904
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225271040}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 042beaf85f731a64f81deca037cd12e9, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &2878412041225275966
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2878412041237063652}
  - component: {fileID: 2878412041236893696}
  - component: {fileID: 2878412041232556548}
  m_Layer: 5
  m_Name: Ikonos Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!224 &2878412041237063652
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225275966}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 2878412041237096646}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 200.65, y: -120}
  m_SizeDelta: {x: 403.3, y: 60.7}
  m_Pivot: {x: 0.5, y: 1}
--- !u!222 &2878412041236893696
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225275966}
  m_CullTransparentMesh: 0
--- !u!114 &2878412041232556548
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225275966}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 32
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: No anomaly data.
--- !u!1 &2878412041225328196
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2878412041237083972}
  - component: {fileID: 2878412041236872236}
  - component: {fileID: 2878412041232381224}
  m_Layer: 5
  m_Name: Msi Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!224 &2878412041237083972
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225328196}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 2878412041237084344}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 299.75, y: -68}
  m_SizeDelta: {x: 599.5, y: 134}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2878412041236872236
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225328196}
  m_CullTransparentMesh: 0
--- !u!114 &2878412041232381224
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225328196}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate low-resolution visual and resource maps, and biome data.
--- !u!1 &2878412041225328316
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2878412041237087482}
  - component: {fileID: 2878412041236894242}
  - component: {fileID: 2878412041232381476}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2878412041237087482
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225328316}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 2878412041237108936}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 657.9, y: -35}
  m_SizeDelta: {x: 1314.8, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2878412041236894242
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225328316}
  m_CullTransparentMesh: 0
--- !u!114 &2878412041232381476
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225328316}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate high-resolution resource maps.
--- !u!1 &2878412041225475912
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2878412041237108936}
  - component: {fileID: 2878412041236841880}
  - component: {fileID: 2878412041232400560}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2878412041237108936
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225475912}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 2878412041237087482}
  m_Father: {fileID: 2878412041237056810}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -597.1, y: 690}
  m_SizeDelta: {x: 750.7, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2878412041236841880
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225475912}
  m_CullTransparentMesh: 0
--- !u!114 &2878412041232400560
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2878412041225475912}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Resource Scanners


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_ResourceMap.prefab.meta
================================================
fileFormatVersion: 2
guid: 7f8e3fd3b1910a04b801f5c7cb5fd761
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Overlay.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &107700
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22424308}
  - component: {fileID: 22258258}
  - component: {fileID: 11438612}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22424308
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 107700}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22450218}
  m_Father: {fileID: 22452350}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -500, y: 690}
  m_SizeDelta: {x: 945, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22258258
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 107700}
  m_CullTransparentMesh: 0
--- !u!114 &11438612
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 107700}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat Planetary Overlay
--- !u!1 &115772
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22415698}
  - component: {fileID: 22235254}
  - component: {fileID: 11457790}
  m_Layer: 5
  m_Name: Overlay Selection
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22415698
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115772}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452350}
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1857, y: 711}
  m_SizeDelta: {x: 271, y: 115.5}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22235254
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115772}
  m_CullTransparentMesh: 0
--- !u!114 &11457790
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115772}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Available map overlay types.
--- !u!1 &120526
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22460846}
  - component: {fileID: 22268546}
  - component: {fileID: 11497076}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22460846
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 120526}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452350}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22268546
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 120526}
  m_CullTransparentMesh: 0
--- !u!114 &11497076
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 120526}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 381a31bf7f1ac084c95b3c99765bdbd7, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &134768
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22485024}
  - component: {fileID: 22212634}
  - component: {fileID: 11475036}
  m_Layer: 5
  m_Name: Resource Settings
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22485024
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 134768}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452350}
  m_RootOrder: 7
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1841, y: 104}
  m_SizeDelta: {x: 390.5, y: 182.5}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22212634
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 134768}
  m_CullTransparentMesh: 0
--- !u!114 &11475036
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 134768}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Open resource scanning and overlay options settings page.
--- !u!1 &138506
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22452350}
  - component: {fileID: 22243748}
  - component: {fileID: 11417554}
  - component: {fileID: 11486860}
  m_Layer: 5
  m_Name: SCANsat_Resource_Overlay
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22452350
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138506}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22424308}
  - {fileID: 22460846}
  - {fileID: 22418902}
  - {fileID: 22415960}
  - {fileID: 22490132}
  - {fileID: 22471846}
  - {fileID: 22415698}
  - {fileID: 22485024}
  - {fileID: 2847172634587352158}
  - {fileID: 8935959773925315737}
  - {fileID: 4100971052191553570}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22243748
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138506}
  m_CullTransparentMesh: 0
--- !u!114 &11417554
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138506}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11486860
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138506}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &157872
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22418902}
  - component: {fileID: 22232248}
  - component: {fileID: 11442282}
  m_Layer: 5
  m_Name: Overlay Window
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22418902
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 157872}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452350}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 609, y: 286}
  m_SizeDelta: {x: 782, y: 153}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22232248
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 157872}
  m_CullTransparentMesh: 0
--- !u!114 &11442282
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 157872}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Use the Overlay Control window to select the different map overlays.
--- !u!1 &159714
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22490132}
  - component: {fileID: 22272318}
  - component: {fileID: 11478392}
  m_Layer: 5
  m_Name: Overlay Toggle
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22490132
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159714}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452350}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1526, y: 933}
  m_SizeDelta: {x: 454.4, y: 64.6}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22272318
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159714}
  m_CullTransparentMesh: 0
--- !u!114 &11478392
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159714}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle overlay maps.
--- !u!1 &166814
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22415960}
  - component: {fileID: 22211590}
  - component: {fileID: 11472388}
  m_Layer: 5
  m_Name: Tooltips
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22415960
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166814}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452350}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -362, y: -691}
  m_SizeDelta: {x: 1114, y: 103}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22211590
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166814}
  m_CullTransparentMesh: 0
--- !u!114 &11472388
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166814}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Tooltips provide information about the location under the mouse cursor while
    an overlay is active.
--- !u!1 &171960
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22450218}
  - component: {fileID: 22206228}
  - component: {fileID: 11409092}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22450218
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 171960}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22424308}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 839, y: -69}
  m_SizeDelta: {x: 1679, y: 139}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22206228
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 171960}
  m_CullTransparentMesh: 0
--- !u!114 &11409092
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 171960}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat provides a complete planetary overlay system. It can be used to
    display resource deposits, and standard SCANsat terrain and biome data.
--- !u!1 &173744
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22471846}
  - component: {fileID: 22244168}
  - component: {fileID: 11414422}
  m_Layer: 5
  m_Name: Refresh Overlay
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22471846
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173744}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452350}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1718, y: 837}
  m_SizeDelta: {x: 363, y: 68.6}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22244168
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173744}
  m_CullTransparentMesh: 0
--- !u!114 &11414422
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173744}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Refresh current map.
--- !u!1 &1022089436835553158
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2847172634587352158}
  - component: {fileID: 7860258758495150777}
  - component: {fileID: 4107276625817332009}
  m_Layer: 5
  m_Name: Resource Legend
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2847172634587352158
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1022089436835553158}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452350}
  m_RootOrder: 8
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1869.8, y: 529}
  m_SizeDelta: {x: 296.6, y: 69.3}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7860258758495150777
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1022089436835553158}
  m_CullTransparentMesh: 0
--- !u!114 &4107276625817332009
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1022089436835553158}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Resource legend.
--- !u!1 &1933352823253242435
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4100971052191553570}
  - component: {fileID: 1140533941156771360}
  - component: {fileID: 6082827455320473968}
  m_Layer: 5
  m_Name: Color Settings
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &4100971052191553570
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1933352823253242435}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452350}
  m_RootOrder: 10
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1869.8, y: 368}
  m_SizeDelta: {x: 296.62, y: 106.4}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1140533941156771360
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1933352823253242435}
  m_CullTransparentMesh: 0
--- !u!114 &6082827455320473968
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1933352823253242435}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Color settings.

'
--- !u!1 &3474281611043309666
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8935959773925315737}
  - component: {fileID: 6540393005186026603}
  - component: {fileID: 5672612108333556922}
  m_Layer: 5
  m_Name: Overlay Settings
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &8935959773925315737
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3474281611043309666}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452350}
  m_RootOrder: 9
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1430, y: 217}
  m_SizeDelta: {x: 296.62, y: 106.4}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6540393005186026603
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3474281611043309666}
  m_CullTransparentMesh: 0
--- !u!114 &5672612108333556922
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3474281611043309666}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Resource overlay quick settings


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Overlay.prefab.meta
================================================
fileFormatVersion: 2
guid: cf78f8aed0c23f4429db6d35c429b7ef
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Parts.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &111790
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22430930}
  - component: {fileID: 22269608}
  - component: {fileID: 11446508}
  m_Layer: 5
  m_Name: M4435 Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22430930
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111790}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22455406}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 302, y: -67}
  m_SizeDelta: {x: 605, y: 127}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22269608
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111790}
  m_CullTransparentMesh: 0
--- !u!114 &11446508
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111790}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate high-resolution resoucre data for Ore.
--- !u!1 &119276
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22495210}
  - component: {fileID: 22252624}
  - component: {fileID: 11407534}
  m_Layer: 5
  m_Name: Note Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22495210
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 119276}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22400026}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 1, y: 0.5}
  m_AnchorMax: {x: 1, y: 0.5}
  m_AnchoredPosition: {x: 611, y: 0}
  m_SizeDelta: {x: 1224, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22252624
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 119276}
  m_CullTransparentMesh: 0
--- !u!114 &11407534
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 119276}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The scanners above are included in DMagic Orbital Science and Karbonite.
--- !u!1 &119870
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22458994}
  - component: {fileID: 22235982}
  - component: {fileID: 11478148}
  m_Layer: 5
  m_Name: Mod Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22458994
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 119870}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22475814}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 590, y: -70}
  m_SizeDelta: {x: 1183, y: 131}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22235982
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 119870}
  m_CullTransparentMesh: 0
--- !u!114 &11478148
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 119870}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: These scanners, available through various mods, generate high-resolution
    resource data for different resources.
--- !u!1 &120920
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22406318}
  - component: {fileID: 22257442}
  - component: {fileID: 11468940}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22406318
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 120920}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22457138}
  m_Father: {fileID: 22412634}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -531, y: 690}
  m_SizeDelta: {x: 883, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22257442
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 120920}
  m_CullTransparentMesh: 0
--- !u!114 &11468940
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 120920}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat Resource Scanners
--- !u!1 &126628
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22455406}
  - component: {fileID: 22271138}
  - component: {fileID: 11404124}
  m_Layer: 5
  m_Name: M4435
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22455406
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126628}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22430930}
  m_Father: {fileID: 22412634}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 464, y: 466}
  m_SizeDelta: {x: 698, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22271138
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126628}
  m_CullTransparentMesh: 0
--- !u!114 &11404124
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126628}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'M4435 Narrow-Band Scanner:'
--- !u!1 &138202
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22475814}
  - component: {fileID: 22298248}
  - component: {fileID: 11493346}
  m_Layer: 5
  m_Name: Mod
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22475814
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138202}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22458994}
  m_Father: {fileID: 22412634}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -187.5, y: -179}
  m_SizeDelta: {x: 492, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22298248
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138202}
  m_CullTransparentMesh: 0
--- !u!114 &11493346
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138202}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Additional Scanners:'
--- !u!1 &138654
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22427850}
  - component: {fileID: 22214746}
  - component: {fileID: 11457670}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22427850
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138654}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22412634}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22214746
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138654}
  m_CullTransparentMesh: 0
--- !u!114 &11457670
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 138654}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: fb3b87f3c55677c4198f9809eeab4b58, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &150472
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22457138}
  - component: {fileID: 22224938}
  - component: {fileID: 11414858}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22457138
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150472}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22406318}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 606, y: -35}
  m_SizeDelta: {x: 1213, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22224938
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150472}
  m_CullTransparentMesh: 0
--- !u!114 &11414858
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150472}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Several scanning parts are available using stock and mod parts.
--- !u!1 &152758
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22409758}
  - component: {fileID: 22220396}
  - component: {fileID: 11499530}
  m_Layer: 5
  m_Name: M700 Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22409758
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152758}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22408106}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 349, y: -63}
  m_SizeDelta: {x: 699, y: 120}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22220396
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152758}
  m_CullTransparentMesh: 0
--- !u!114 &11499530
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152758}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate low-resolution resource data for all planetary resources.
--- !u!1 &159682
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22412634}
  - component: {fileID: 22294246}
  - component: {fileID: 11426838}
  - component: {fileID: 11487326}
  m_Layer: 5
  m_Name: SCANsat_Resource_Parts
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22412634
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159682}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22406318}
  - {fileID: 22427850}
  - {fileID: 22408106}
  - {fileID: 22455406}
  - {fileID: 22475814}
  - {fileID: 22400026}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22294246
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159682}
  m_CullTransparentMesh: 0
--- !u!114 &11426838
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159682}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11487326
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159682}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &177600
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22408106}
  - component: {fileID: 22287938}
  - component: {fileID: 11422206}
  m_Layer: 5
  m_Name: M700
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22408106
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177600}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22409758}
  m_Father: {fileID: 22412634}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -690, y: 466}
  m_SizeDelta: {x: 513, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22287938
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177600}
  m_CullTransparentMesh: 0
--- !u!114 &11422206
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 177600}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'M700 Survey Scanner:'
--- !u!1 &187958
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22400026}
  - component: {fileID: 22281450}
  - component: {fileID: 11411264}
  m_Layer: 5
  m_Name: Mod note
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22400026
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 187958}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22495210}
  m_Father: {fileID: 22412634}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -300, y: -723}
  m_SizeDelta: {x: 99, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22281450
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 187958}
  m_CullTransparentMesh: 0
--- !u!114 &11411264
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 187958}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Note:'


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Parts.prefab.meta
================================================
fileFormatVersion: 2
guid: a28404db56154ec4b853914a777189a4
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Settings.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &101154
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22429992}
  - component: {fileID: 22213538}
  - component: {fileID: 11476012}
  m_Layer: 5
  m_Name: Narrow Band
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22429992
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 101154}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22423056}
  m_Father: {fileID: 22451344}
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 687.5, y: 520}
  m_SizeDelta: {x: 513, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22213538
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 101154}
  m_CullTransparentMesh: 0
--- !u!114 &11476012
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 101154}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Narrow-Band Scanner:'
--- !u!1 &103498
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22472838}
  - component: {fileID: 22280264}
  - component: {fileID: 11455202}
  m_Layer: 5
  m_Name: Disable Stock
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22472838
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103498}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22442982}
  m_Father: {fileID: 22451344}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -667.5, y: 395}
  m_SizeDelta: {x: 577, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22280264
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103498}
  m_CullTransparentMesh: 0
--- !u!114 &11455202
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103498}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Disable Stock Scanning:'
--- !u!1 &109462
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22479188}
  - component: {fileID: 22298282}
  - component: {fileID: 11461986}
  m_Layer: 5
  m_Name: MM note
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!224 &22479188
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109462}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22418002}
  m_Father: {fileID: 22451344}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -943, y: -658}
  m_SizeDelta: {x: 125, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22298282
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109462}
  m_CullTransparentMesh: 0
--- !u!114 &11461986
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 109462}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: '* Note:'
--- !u!1 &113578
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22424182}
  - component: {fileID: 22282628}
  - component: {fileID: 11494156}
  m_Layer: 5
  m_Name: Biome Height
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22424182
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113578}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22471066}
  m_Father: {fileID: 22451344}
  m_RootOrder: 11
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 603, y: -491}
  m_SizeDelta: {x: 431, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22282628
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113578}
  m_CullTransparentMesh: 0
--- !u!114 &11494156
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 113578}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Biome Map Height:'
--- !u!1 &124468
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22442982}
  - component: {fileID: 22234306}
  - component: {fileID: 11452958}
  m_Layer: 5
  m_Name: Disable Stock Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22442982
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 124468}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22472838}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 266, y: -126}
  m_SizeDelta: {x: 533, y: 249}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22234306
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 124468}
  m_CullTransparentMesh: 0
--- !u!114 &11452958
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 124468}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Completely disable all stock resource scanning functions; SCANsat features
    replacements for these.
--- !u!1 &130412
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22471066}
  - component: {fileID: 22284110}
  - component: {fileID: 11409590}
  m_Layer: 5
  m_Name: Biome Height Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22471066
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130412}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22424182}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 307, y: -50}
  m_SizeDelta: {x: 615, y: 100}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22284110
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130412}
  m_CullTransparentMesh: 0
--- !u!114 &11409590
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130412}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Adjust the size of the biome map.
--- !u!1 &131296
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22499324}
  - component: {fileID: 22229258}
  - component: {fileID: 11451000}
  m_Layer: 5
  m_Name: Resource Height Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22499324
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 131296}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22432242}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 279, y: -77}
  m_SizeDelta: {x: 559, y: 153}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22229258
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 131296}
  m_CullTransparentMesh: 0
--- !u!114 &11451000
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 131296}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Adjust the size of the resource map; affects quality and accuracy.
--- !u!1 &137156
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22475278}
  - component: {fileID: 22242726}
  - component: {fileID: 11484744}
  m_Layer: 5
  m_Name: Overlay Tooltips
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22475278
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137156}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22424680}
  m_Father: {fileID: 22451344}
  m_RootOrder: 8
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -769, y: -322}
  m_SizeDelta: {x: 374, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22242726
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137156}
  m_CullTransparentMesh: 0
--- !u!114 &11484744
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 137156}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Overlay Tooltips:'
--- !u!1 &142646
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22475282}
  - component: {fileID: 22292950}
  - component: {fileID: 11480646}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22475282
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142646}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22451344}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22292950
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142646}
  m_CullTransparentMesh: 0
--- !u!114 &11480646
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142646}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: ae9d8bb8d2eb9f947b074cacb519df3a, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &143844
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22460164}
  - component: {fileID: 22298014}
  - component: {fileID: 11487020}
  m_Layer: 5
  m_Name: Biome Lock
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22460164
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143844}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22419350}
  m_Father: {fileID: 22451344}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -118, y: 520}
  m_SizeDelta: {x: 276, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22298014
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143844}
  m_CullTransparentMesh: 0
--- !u!114 &11487020
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 143844}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Biome Lock:'
--- !u!1 &145072
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22432242}
  - component: {fileID: 22200378}
  - component: {fileID: 11401538}
  m_Layer: 5
  m_Name: Resource Height
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22432242
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 145072}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22499324}
  m_Father: {fileID: 22451344}
  m_RootOrder: 10
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 700.5, y: -270}
  m_SizeDelta: {x: 487, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22200378
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 145072}
  m_CullTransparentMesh: 0
--- !u!114 &11401538
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 145072}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Resource Map Height:'
--- !u!1 &150602
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22441496}
  - component: {fileID: 22244054}
  - component: {fileID: 11488008}
  m_Layer: 5
  m_Name: Stock Threshold Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22441496
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150602}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22459404}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 276, y: -144}
  m_SizeDelta: {x: 553, y: 289}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22244054
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150602}
  m_CullTransparentMesh: 0
--- !u!114 &11488008
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 150602}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Upon reaching the specified threshold of scanning with the M700 scanner,
    a stock resource scan will be performed (no science is awarded for this scan).
--- !u!1 &159134
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22423056}
  - component: {fileID: 22290380}
  - component: {fileID: 11473298}
  m_Layer: 5
  m_Name: Narrow Band Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22423056
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159134}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22429992}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 277, y: -108}
  m_SizeDelta: {x: 554, y: 216}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22290380
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159134}
  m_CullTransparentMesh: 0
--- !u!114 &11473298
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159134}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Full resource abundance accuracy requires a Narrow-Band Scanner to be in
    an orbit that passes over a given area.
--- !u!1 &159290
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22448396}
  - component: {fileID: 22256478}
  - component: {fileID: 11486938}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22448396
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159290}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22464962}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 601, y: -35}
  m_SizeDelta: {x: 1202, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22256478
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159290}
  m_CullTransparentMesh: 0
--- !u!114 &11486938
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 159290}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Adjust the resource scanning options to your likings.
--- !u!1 &165648
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22424680}
  - component: {fileID: 22290110}
  - component: {fileID: 11495052}
  m_Layer: 5
  m_Name: Overlay Tooltips Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22424680
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 165648}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22475278}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 269, y: -57}
  m_SizeDelta: {x: 539, y: 112}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22290110
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 165648}
  m_CullTransparentMesh: 0
--- !u!114 &11495052
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 165648}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Tooltips when the mouse is over the planet in map view.
--- !u!1 &166530
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22489168}
  - component: {fileID: 22293800}
  - component: {fileID: 11430084}
  m_Layer: 5
  m_Name: Coverage Transparency
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22489168
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166530}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22437764}
  m_Father: {fileID: 22451344}
  m_RootOrder: 12
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 151, y: -613}
  m_SizeDelta: {x: 524, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22293800
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166530}
  m_CullTransparentMesh: 0
--- !u!114 &11430084
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166530}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Coverage Transparency:'
--- !u!1 &172944
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22418002}
  - component: {fileID: 22298512}
  - component: {fileID: 11434772}
  m_Layer: 5
  m_Name: Note Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22418002
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172944}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22479188}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 1, y: 0.5}
  m_AnchorMax: {x: 1, y: 0.5}
  m_AnchoredPosition: {x: 295, y: -23}
  m_SizeDelta: {x: 590, y: 100}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22298512
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172944}
  m_CullTransparentMesh: 0
--- !u!114 &11434772
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 172944}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Module Manager is required for SCANsat resource scanning.
--- !u!1 &173678
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22459404}
  - component: {fileID: 22278702}
  - component: {fileID: 11494930}
  m_Layer: 5
  m_Name: Stock Threshold
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22459404
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173678}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22441496}
  m_Father: {fileID: 22451344}
  m_RootOrder: 7
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -710, y: 52}
  m_SizeDelta: {x: 570, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22278702
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173678}
  m_CullTransparentMesh: 0
--- !u!114 &11494930
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 173678}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Stock Scanning Threshold:'
--- !u!1 &178236
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22451344}
  - component: {fileID: 22237248}
  - component: {fileID: 11405510}
  - component: {fileID: 11414728}
  m_Layer: 5
  m_Name: SCANsat_Resource_Settings
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22451344
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178236}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22464962}
  - {fileID: 22475282}
  - {fileID: 22479188}
  - {fileID: 22485080}
  - {fileID: 22460164}
  - {fileID: 22472838}
  - {fileID: 22429992}
  - {fileID: 22459404}
  - {fileID: 22475278}
  - {fileID: 22427040}
  - {fileID: 22432242}
  - {fileID: 22424182}
  - {fileID: 22489168}
  - {fileID: 4321060184433056140}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22237248
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178236}
  m_CullTransparentMesh: 0
--- !u!114 &11405510
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178236}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11414728
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178236}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &178420
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22437764}
  - component: {fileID: 22200514}
  - component: {fileID: 11444016}
  m_Layer: 5
  m_Name: Coverage Transparency Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22437764
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178420}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22489168}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 472, y: -55}
  m_SizeDelta: {x: 946, y: 109}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22200514
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178420}
  m_CullTransparentMesh: 0
--- !u!114 &11444016
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 178420}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Adjust the transparency of the resource map for areas below the cutoff threshold.
--- !u!1 &182810
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22464962}
  - component: {fileID: 22238378}
  - component: {fileID: 11447716}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22464962
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182810}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22448396}
  m_Father: {fileID: 22451344}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -350, y: 690}
  m_SizeDelta: {x: 1245, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22238378
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182810}
  m_CullTransparentMesh: 0
--- !u!114 &11447716
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 182810}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat Resource Scanning Settings
--- !u!1 &187770
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22419350}
  - component: {fileID: 22241298}
  - component: {fileID: 11435670}
  m_Layer: 5
  m_Name: Biome Lock Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22419350
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 187770}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22460164}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 210, y: -96}
  m_SizeDelta: {x: 421, y: 192}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22241298
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 187770}
  m_CullTransparentMesh: 0
--- !u!114 &11435670
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 187770}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Bypass the requirement for ground-truthing surface scans.
--- !u!1 &189564
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22427040}
  - component: {fileID: 22267696}
  - component: {fileID: 11495018}
  m_Layer: 5
  m_Name: Resource Interpolation
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22427040
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 189564}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22426756}
  m_Father: {fileID: 22451344}
  m_RootOrder: 9
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -205, y: -309}
  m_SizeDelta: {x: 313, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22267696
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 189564}
  m_CullTransparentMesh: 0
--- !u!114 &11495018
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 189564}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Interpolation:'
--- !u!1 &190026
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22485080}
  - component: {fileID: 22280826}
  - component: {fileID: 11401650}
  m_Layer: 5
  m_Name: Instant Scan
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22485080
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190026}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22482596}
  m_Father: {fileID: 22451344}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 577, y: 223}
  m_SizeDelta: {x: 292, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22280826
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190026}
  m_CullTransparentMesh: 0
--- !u!114 &11401650
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 190026}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Instant Scan:'
--- !u!1 &195830
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22426756}
  - component: {fileID: 22272346}
  - component: {fileID: 11478124}
  m_Layer: 5
  m_Name: Resource Interpolation Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22426756
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195830}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22427040}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 186, y: -109}
  m_SizeDelta: {x: 373, y: 218}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22272346
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195830}
  m_CullTransparentMesh: 0
--- !u!114 &11478124
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195830}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Adjust the level of interpolation for resource maps; affects map accuracy.
--- !u!1 &196580
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22482596}
  - component: {fileID: 22275612}
  - component: {fileID: 11433832}
  m_Layer: 5
  m_Name: Instant Scan Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22482596
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196580}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22485080}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 293, y: -101}
  m_SizeDelta: {x: 587, y: 201}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22275612
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196580}
  m_CullTransparentMesh: 0
--- !u!114 &11433832
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 196580}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Update all SCANsat resource databases when a stock resource scan is completed.
    Only visible when Stock Scanning is enabled.
--- !u!1 &2103594051805730187
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8127705322723500373}
  - component: {fileID: 2406791717506289914}
  - component: {fileID: 1258487116104808175}
  m_Layer: 5
  m_Name: Instant Scan Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &8127705322723500373
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2103594051805730187}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4321060184433056140}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 293, y: -101}
  m_SizeDelta: {x: 587, y: 201}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2406791717506289914
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2103594051805730187}
  m_CullTransparentMesh: 0
--- !u!114 &1258487116104808175
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2103594051805730187}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Only display resources that are present on a given celestial body.
--- !u!1 &6603436247607541104
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4321060184433056140}
  - component: {fileID: 8726333042619065733}
  - component: {fileID: 976582663870502854}
  m_Layer: 5
  m_Name: Hide Unused
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &4321060184433056140
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6603436247607541104}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 8127705322723500373}
  m_Father: {fileID: 22451344}
  m_RootOrder: 13
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 723, y: -73}
  m_SizeDelta: {x: 532, y: 65}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8726333042619065733
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6603436247607541104}
  m_CullTransparentMesh: 0
--- !u!114 &976582663870502854
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6603436247607541104}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 42
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'Hide Unused Resources:'


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Settings.prefab.meta
================================================
fileFormatVersion: 2
guid: 5c0bb88dccfc7c2469420cd6bb3c5755
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Tools.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &105172
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22484698}
  - component: {fileID: 22247250}
  - component: {fileID: 11472030}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22484698
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 105172}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22493022}
  m_Father: {fileID: 22413270}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -535, y: 690}
  m_SizeDelta: {x: 876, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22247250
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 105172}
  m_CullTransparentMesh: 0
--- !u!114 &11472030
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 105172}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat Resource Tools
--- !u!1 &111990
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22439464}
  - component: {fileID: 22219470}
  - component: {fileID: 11492600}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22439464
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111990}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22413270}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22219470
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111990}
  m_CullTransparentMesh: 0
--- !u!114 &11492600
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111990}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 2a6ca8bb2d295e248a4bf006d8b34d23, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &120538
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22413270}
  - component: {fileID: 22220036}
  - component: {fileID: 11490628}
  - component: {fileID: 11425884}
  m_Layer: 5
  m_Name: SCANsat_Resource_Tools
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22413270
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 120538}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22484698}
  - {fileID: 22439464}
  - {fileID: 22438046}
  - {fileID: 22448156}
  - {fileID: 22403950}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22220036
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 120538}
  m_CullTransparentMesh: 0
--- !u!114 &11490628
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 120538}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11425884
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 120538}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &121646
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22438046}
  - component: {fileID: 22276996}
  - component: {fileID: 11456922}
  m_Layer: 5
  m_Name: Map Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22438046
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 121646}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22413270}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -378, y: -428}
  m_SizeDelta: {x: 1202.5, y: 161}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22276996
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 121646}
  m_CullTransparentMesh: 0
--- !u!114 &11456922
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 121646}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The SCANsat big map features a resource selection button and a resource
    overlay toggle; mouse over the map to display the resource concentration at any
    location. Use these functions to find the best deposits.
--- !u!1 &170924
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22403950}
  - component: {fileID: 22293932}
  - component: {fileID: 11453422}
  m_Layer: 5
  m_Name: Zoom Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22403950
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170924}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22413270}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 641.5, y: -14}
  m_SizeDelta: {x: 638, y: 103}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22293932
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170924}
  m_CullTransparentMesh: 0
--- !u!114 &11453422
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170924}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Use the zoom map for the most accurate data and to pinpoint a landing target.
--- !u!1 &179180
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22493022}
  - component: {fileID: 22250616}
  - component: {fileID: 11414468}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22493022
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 179180}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22484698}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 805, y: -89}
  m_SizeDelta: {x: 1610, y: 177}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22250616
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 179180}
  m_CullTransparentMesh: 0
--- !u!114 &11414468
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 179180}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat features a number of tools that can help to discover resource deposits
    and pinpoint the ideal location for your mining facility.
--- !u!1 &193878
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22448156}
  - component: {fileID: 22202232}
  - component: {fileID: 11489762}
  m_Layer: 5
  m_Name: Instruments Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22448156
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 193878}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22413270}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 628, y: -706}
  m_SizeDelta: {x: 763, y: 107.5}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22202232
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 193878}
  m_CullTransparentMesh: 0
--- !u!114 &11489762
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 193878}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: "Use the instrument data window to see resource concentrations at your vessel\u2019s
    current location."


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Tools.prefab.meta
================================================
fileFormatVersion: 2
guid: 2b1d82fec71a8e74f88661877b54eac9
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resources.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &126790
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22437294}
  - component: {fileID: 22220798}
  - component: {fileID: 11406064}
  - component: {fileID: 11423372}
  m_Layer: 5
  m_Name: SCANsat_Resources
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22437294
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126790}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22418760}
  - {fileID: 22411806}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22220798
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126790}
  m_CullTransparentMesh: 0
--- !u!114 &11406064
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126790}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11423372
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 126790}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &136108
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22411806}
  - component: {fileID: 22201912}
  - component: {fileID: 11487174}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22411806
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 136108}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22437294}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22201912
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 136108}
  m_CullTransparentMesh: 0
--- !u!114 &11487174
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 136108}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 70e33581ef2d6554bbdd43f6fcf156a9, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &170040
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22467488}
  - component: {fileID: 22288270}
  - component: {fileID: 11437732}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22467488
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170040}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22418760}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 755, y: -68}
  m_SizeDelta: {x: 1509, y: 136}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22288270
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170040}
  m_CullTransparentMesh: 0
--- !u!114 &11437732
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170040}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Want to supplement stock resource scanning, enhance it, or go beyond it?
    SCANsat has you covered.
--- !u!1 &195310
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22418760}
  - component: {fileID: 22256046}
  - component: {fileID: 11473768}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22418760
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195310}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22467488}
  m_Father: {fileID: 22437294}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -461.25, y: 690}
  m_SizeDelta: {x: 1022.5, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22256046
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195310}
  m_CullTransparentMesh: 0
--- !u!114 &11473768
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 195310}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat Resource Scanning


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resources.prefab.meta
================================================
fileFormatVersion: 2
guid: cab7ee3b6aec8364db569eb2f72a165e
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_VisualMap.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &8494814576697683595
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8494814576711615313}
  - component: {fileID: 8494814576711398581}
  - component: {fileID: 8494814576688170673}
  m_Layer: 5
  m_Name: Ikonos Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &8494814576711615313
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697683595}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 8494814576711584883}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 200.65, y: -120}
  m_SizeDelta: {x: 403.3, y: 60.7}
  m_Pivot: {x: 0.5, y: 1}
--- !u!222 &8494814576711398581
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697683595}
  m_CullTransparentMesh: 0
--- !u!114 &8494814576688170673
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697683595}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 32
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: No anomaly data.
--- !u!1 &8494814576697708123
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8494814576711592043}
  - component: {fileID: 8494814576711398757}
  - component: {fileID: 8494814576688016657}
  m_Layer: 5
  m_Name: Worldview
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &8494814576711592043
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697708123}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 8494814576711684655}
  m_Father: {fileID: 8494814576711625119}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: -626}
  m_SizeDelta: {x: 466.8, y: 121.2}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8494814576711398757
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697708123}
  m_CullTransparentMesh: 0
--- !u!114 &8494814576688016657
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697708123}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: VS-3 Advanced High Resolution Imager
--- !u!1 &8494814576697717415
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8494814576711684655}
  - component: {fileID: 8494814576711313063}
  - component: {fileID: 8494814576687975169}
  m_Layer: 5
  m_Name: Abi Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!224 &8494814576711684655
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697717415}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 8494814576711592043}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 288.8, y: -77}
  m_SizeDelta: {x: 577.6, y: 136}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8494814576711313063
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697717415}
  m_CullTransparentMesh: 0
--- !u!114 &8494814576687975169
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697717415}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate low-resolution visual and resource maps, and biome data.
--- !u!1 &8494814576697722165
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8494814576711584883}
  - component: {fileID: 8494814576711418813}
  - component: {fileID: 8494814576688102529}
  m_Layer: 5
  m_Name: Ikonos
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &8494814576711584883
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697722165}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 8494814576711615313}
  m_Father: {fileID: 8494814576711625119}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -681.5, y: -626}
  m_SizeDelta: {x: 402.3, y: 121.2}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8494814576711418813
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697722165}
  m_CullTransparentMesh: 0
--- !u!114 &8494814576688102529
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697722165}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: VS-1 High Resolution Imager
--- !u!1 &8494814576697725259
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8494814576711625119}
  - component: {fileID: 8494814576711392199}
  - component: {fileID: 8494814576688032477}
  - component: {fileID: 8494814576687981901}
  m_Layer: 5
  m_Name: SCANsat_VisualMap
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &8494814576711625119
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697725259}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 8494814576711679101}
  - {fileID: 8494814576711761963}
  - {fileID: 8494814576711584883}
  - {fileID: 8494814576711592043}
  - {fileID: 8494814576711572493}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8494814576711392199
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697725259}
  m_CullTransparentMesh: 0
--- !u!114 &8494814576688032477
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697725259}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &8494814576687981901
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697725259}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &8494814576697725877
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8494814576711761963}
  - component: {fileID: 8494814576711409603}
  - component: {fileID: 8494814576688081909}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &8494814576711761963
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697725877}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 8494814576711625119}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8494814576711409603
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697725877}
  m_CullTransparentMesh: 0
--- !u!114 &8494814576688081909
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697725877}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 419b347e9038fda4da94a86879251e97, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &8494814576697732165
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8494814576711572493}
  - component: {fileID: 8494814576711409729}
  - component: {fileID: 8494814576688097197}
  m_Layer: 5
  m_Name: KH11
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &8494814576711572493
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697732165}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 8494814576711570417}
  m_Father: {fileID: 8494814576711625119}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 721, y: -626}
  m_SizeDelta: {x: 458.3, y: 121.2}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8494814576711409729
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697732165}
  m_CullTransparentMesh: 0
--- !u!114 &8494814576688097197
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697732165}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}
    m_FontSize: 38
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 3
    m_MaxSize: 42
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: VS-11 Classified Reconnaissance Imager
--- !u!1 &8494814576697799177
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8494814576711589967}
  - component: {fileID: 8494814576711399063}
  - component: {fileID: 8494814576687993489}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &8494814576711589967
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697799177}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 8494814576711679101}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 657.9, y: -35}
  m_SizeDelta: {x: 1314.8, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8494814576711399063
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697799177}
  m_CullTransparentMesh: 0
--- !u!114 &8494814576687993489
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697799177}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate high-resolution visual maps and anomaly data.
--- !u!1 &8494814576697799409
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8494814576711570417}
  - component: {fileID: 8494814576711424153}
  - component: {fileID: 8494814576687993245}
  m_Layer: 5
  m_Name: Msi Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!224 &8494814576711570417
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697799409}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 8494814576711572493}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 299.75, y: -68}
  m_SizeDelta: {x: 599.5, y: 134}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8494814576711424153
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697799409}
  m_CullTransparentMesh: 0
--- !u!114 &8494814576687993245
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697799409}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Generate low-resolution visual and resource maps, and biome data.
--- !u!1 &8494814576697881597
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8494814576711679101}
  - component: {fileID: 8494814576711409965}
  - component: {fileID: 8494814576688096261}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &8494814576711679101
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697881597}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 8494814576711589967}
  m_Father: {fileID: 8494814576711625119}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -597.1, y: 690}
  m_SizeDelta: {x: 750.7, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8494814576711409965
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697881597}
  m_CullTransparentMesh: 0
--- !u!114 &8494814576688096261
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8494814576697881597}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Recon Scanners


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_VisualMap.prefab.meta
================================================
fileFormatVersion: 2
guid: c2712f2685023b946a9d692a4af54a5b
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Zoom_Map.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &103146
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22450860}
  - component: {fileID: 22242216}
  - component: {fileID: 11401130}
  m_Layer: 5
  m_Name: Vessel Lock
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22450860
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103146}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 9
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 927, y: 1237}
  m_SizeDelta: {x: 417, y: 102}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22242216
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103146}
  m_CullTransparentMesh: 0
--- !u!114 &11401130
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 103146}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Lock the map to the current vessel location.
--- !u!1 &111356
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22423492}
  - component: {fileID: 22244502}
  - component: {fileID: 11438422}
  m_Layer: 5
  m_Name: Vessel Sync
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22423492
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111356}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 8
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 207, y: 1116}
  m_SizeDelta: {x: 286, y: 196}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22244502
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111356}
  m_CullTransparentMesh: 0
--- !u!114 &11438422
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 111356}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Sync the map to the current vessel location.
--- !u!1 &116386
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22477140}
  - component: {fileID: 22278478}
  - component: {fileID: 11446880}
  m_Layer: 5
  m_Name: MechJeb note
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22477140
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 116386}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22450094}
  m_Father: {fileID: 22476034}
  m_RootOrder: 17
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -551.5, y: -725}
  m_SizeDelta: {x: 125, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22278478
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 116386}
  m_CullTransparentMesh: 0
--- !u!114 &11446880
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 116386}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: '* Note:'
--- !u!1 &121258
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22426944}
  - component: {fileID: 22274344}
  - component: {fileID: 11444384}
  m_Layer: 5
  m_Name: Target Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22426944
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 121258}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1431, y: 371}
  m_SizeDelta: {x: 327, y: 260}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22274344
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 121258}
  m_CullTransparentMesh: 0
--- !u!114 &11444384
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 121258}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Shows contract and custom waypoints. Create new waypoints with the button.
    *
--- !u!1 &129386
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22496866}
  - component: {fileID: 22215970}
  - component: {fileID: 11428348}
  m_Layer: 5
  m_Name: Resize
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22496866
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 129386}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 16
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1438, y: 140}
  m_SizeDelta: {x: 350, y: 107}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22215970
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 129386}
  m_CullTransparentMesh: 0
--- !u!114 &11428348
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 129386}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Drag this handle to resize the map.
--- !u!1 &134900
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22486740}
  - component: {fileID: 22221558}
  - component: {fileID: 11452816}
  m_Layer: 5
  m_Name: Compact caption
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22486740
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 134900}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 18
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 786.5, y: -506}
  m_SizeDelta: {x: 395, y: 105}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22221558
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 134900}
  m_CullTransparentMesh: 0
--- !u!114 &11452816
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 134900}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Compact window states.
--- !u!1 &140184
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22443890}
  - component: {fileID: 22277308}
  - component: {fileID: 11495052}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22443890
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 140184}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22277308
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 140184}
  m_CullTransparentMesh: 0
--- !u!114 &11495052
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 140184}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 43dc70d0000edb44dace4d34fc937f87, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &144526
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22402656}
  - component: {fileID: 22297832}
  - component: {fileID: 11452292}
  m_Layer: 5
  m_Name: Readout
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22402656
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 144526}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 219, y: 132}
  m_SizeDelta: {x: 382, y: 171}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22297832
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 144526}
  m_CullTransparentMesh: 0
--- !u!114 &11452292
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 144526}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Information about the area under the current mouse position.
--- !u!1 &156800
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22445318}
  - component: {fileID: 22216782}
  - component: {fileID: 11468220}
  m_Layer: 5
  m_Name: Anomaly
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22445318
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 156800}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 219, y: 591}
  m_SizeDelta: {x: 336.5, y: 135}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22216782
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 156800}
  m_CullTransparentMesh: 0
--- !u!114 &11468220
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 156800}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 2
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Surface anomalies.
--- !u!1 &157934
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22427784}
  - component: {fileID: 22288926}
  - component: {fileID: 11487948}
  m_Layer: 5
  m_Name: Resource Selection
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22427784
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 157934}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 15
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1401, y: 703}
  m_SizeDelta: {x: 277, y: 167}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22288926
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 157934}
  m_CullTransparentMesh: 0
--- !u!114 &11487948
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 157934}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Select resource for overlay.
--- !u!1 &162354
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22471988}
  - component: {fileID: 22209814}
  - component: {fileID: 11494588}
  m_Layer: 5
  m_Name: Toggles
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22471988
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 162354}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 286, y: 446}
  m_SizeDelta: {x: 281, y: 128}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22209814
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 162354}
  m_CullTransparentMesh: 0
--- !u!114 &11494588
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 162354}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Various map overlay toggles.
--- !u!1 &166298
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22430244}
  - component: {fileID: 22207780}
  - component: {fileID: 11422456}
  m_Layer: 5
  m_Name: Map Selection
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22430244
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166298}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 7
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 207, y: 955}
  m_SizeDelta: {x: 259, y: 125}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22207780
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166298}
  m_CullTransparentMesh: 0
--- !u!114 &11422456
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 166298}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Select different map types.
--- !u!1 &170842
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22411304}
  - component: {fileID: 22265866}
  - component: {fileID: 11409670}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22411304
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170842}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22486942}
  m_Father: {fileID: 22476034}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22265866
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170842}
  m_CullTransparentMesh: 0
--- !u!114 &11409670
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 170842}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: SCANsat Zoom Map
--- !u!1 &175562
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22474346}
  - component: {fileID: 22229162}
  - component: {fileID: 11453996}
  m_Layer: 5
  m_Name: Refresh
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22474346
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 175562}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 11
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 816, y: 1037}
  m_SizeDelta: {x: 245.8, y: 103.8}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22229162
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 175562}
  m_CullTransparentMesh: 0
--- !u!114 &11453996
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 175562}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Redraw the current map.
--- !u!1 &176012
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22476034}
  - component: {fileID: 22221184}
  - component: {fileID: 11404196}
  - component: {fileID: 11454102}
  m_Layer: 5
  m_Name: SCANsat_Zoom_Map
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22476034
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 176012}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22411304}
  - {fileID: 22443890}
  - {fileID: 22426944}
  - {fileID: 22402656}
  - {fileID: 22471988}
  - {fileID: 22445318}
  - {fileID: 22449414}
  - {fileID: 22430244}
  - {fileID: 22423492}
  - {fileID: 22450860}
  - {fileID: 4135010085941164770}
  - {fileID: 22474346}
  - {fileID: 22494870}
  - {fileID: 3482876228630476919}
  - {fileID: 22488360}
  - {fileID: 22427784}
  - {fileID: 22496866}
  - {fileID: 22477140}
  - {fileID: 22486740}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22221184
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 176012}
  m_CullTransparentMesh: 0
--- !u!114 &11404196
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 176012}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11454102
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 176012}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &181552
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22449414}
  - component: {fileID: 22245010}
  - component: {fileID: 11441926}
  m_Layer: 5
  m_Name: Zoom Buttons
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22449414
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181552}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 284, y: 783}
  m_SizeDelta: {x: 252, y: 129}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22245010
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181552}
  m_CullTransparentMesh: 0
--- !u!114 &11441926
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 181552}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Zoom in and out buttons.
--- !u!1 &183534
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22494870}
  - component: {fileID: 22209262}
  - component: {fileID: 11460414}
  m_Layer: 5
  m_Name: Move Buttons
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22494870
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183534}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 12
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1265, y: 1130.8}
  m_SizeDelta: {x: 215.9, y: 110.4}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22209262
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183534}
  m_CullTransparentMesh: 0
--- !u!114 &11460414
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183534}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Shift the map center.
--- !u!1 &183778
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22450094}
  - component: {fileID: 22245136}
  - component: {fileID: 11497108}
  m_Layer: 5
  m_Name: Note Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22450094
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183778}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22477140}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 1, y: 0.5}
  m_AnchorMax: {x: 1, y: 0.5}
  m_AnchoredPosition: {x: 730, y: 0}
  m_SizeDelta: {x: 1460, y: 54}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22245136
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183778}
  m_CullTransparentMesh: 0
--- !u!114 &11497108
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183778}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: When MechJeb is installed the waypoint button can be used to set the landing
    guidance site.
--- !u!1 &183900
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22486942}
  - component: {fileID: 22299206}
  - component: {fileID: 11484902}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22486942
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183900}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22411304}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 829, y: -62}
  m_SizeDelta: {x: 1659, y: 117}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22299206
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183900}
  m_CullTransparentMesh: 0
--- !u!114 &11484902
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 183900}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 40
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The SCANsat zoom map allows for focusing on a specific area, showing greater
    detail. It uses an orthographic (spherical) map projection to minimize distortion
    near its center.
--- !u!1 &185810
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22488360}
  - component: {fileID: 22241224}
  - component: {fileID: 11461592}
  m_Layer: 5
  m_Name: Window State
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22488360
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185810}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 14
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1854.6, y: 1126.9}
  m_SizeDelta: {x: 386.9, y: 118.1}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22241224
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185810}
  m_CullTransparentMesh: 0
--- !u!114 &11461592
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 185810}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Toggle between three different window sizes.
--- !u!1 &4733967146880962077
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 3482876228630476919}
  - component: {fileID: 5096701338684372337}
  - component: {fileID: 3389332707710003701}
  m_Layer: 5
  m_Name: Map Refresh
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &3482876228630476919
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 4733967146880962077}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 13
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 1361.1, y: 1007}
  m_SizeDelta: {x: 244.2, y: 110.4}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5096701338684372337
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 4733967146880962077}
  m_CullTransparentMesh: 0
--- !u!114 &3389332707710003701
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 4733967146880962077}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Auto map refresh toggle.
--- !u!1 &7893666721854972417
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4135010085941164770}
  - component: {fileID: 6996239769311066569}
  - component: {fileID: 612164317925939955}
  m_Layer: 5
  m_Name: Zoom Recall
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &4135010085941164770
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7893666721854972417}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22476034}
  m_RootOrder: 10
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 911, y: 1140}
  m_SizeDelta: {x: 373.6, y: 52.7}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6996239769311066569
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7893666721854972417}
  m_CullTransparentMesh: 0
--- !u!114 &612164317925939955
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7893666721854972417}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 35
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 40
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Save last zoom level.


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Zoom_Map.prefab.meta
================================================
fileFormatVersion: 2
guid: 7f50bb9e319ddc244a94eb858e96f243
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: scansat_core
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/Scanning_Advanced.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &125716
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22490318}
  - component: {fileID: 22233936}
  - component: {fileID: 11472460}
  - component: {fileID: 11461864}
  m_Layer: 5
  m_Name: Scanning_Advanced
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22490318
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 125716}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22404654}
  - {fileID: 22409804}
  - {fileID: 22477986}
  - {fileID: 22470708}
  - {fileID: 22408960}
  - {fileID: 22484824}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22233936
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 125716}
  m_CullTransparentMesh: 0
--- !u!114 &11472460
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 125716}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11461864
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 125716}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &139742
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22404654}
  - component: {fileID: 22204868}
  - component: {fileID: 11449360}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22404654
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 139742}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22490318}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22204868
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 139742}
  m_CullTransparentMesh: 0
--- !u!114 &11449360
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 139742}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16470589, g: 0.49803922, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Advanced Scanning
--- !u!1 &142692
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22470708}
  - component: {fileID: 22261296}
  - component: {fileID: 11403954}
  m_Layer: 5
  m_Name: Bad orbit
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22470708
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142692}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22457838}
  m_Father: {fileID: 22490318}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 679, y: 464.5}
  m_SizeDelta: {x: 516, y: 199}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22261296
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142692}
  m_CullTransparentMesh: 0
--- !u!114 &11403954
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 142692}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
    m_FontSize: 50
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 50
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Bunched up equatorial crossings indicate a poor orbit.
--- !u!1 &144670
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22408960}
  - component: {fileID: 22204886}
  - component: {fileID: 11443448}
  m_Layer: 5
  m_Name: Big Map caption
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22408960
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 144670}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22490318}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 668.5, y: 183.5}
  m_SizeDelta: {x: 1234, y: 191}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22204886
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 144670}
  m_CullTransparentMesh: 0
--- !u!114 &11443448
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 144670}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 50
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 50
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The orbit overlay shows your previous and next orbit; the hash marks along
    the equator show where the vessel will cross the equator over the next 100 orbits.
--- !u!1 &152398
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22457838}
  - component: {fileID: 22270102}
  - component: {fileID: 11408100}
  m_Layer: 5
  m_Name: Bad To Good
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22457838
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152398}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22470708}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: -1023}
  m_SizeDelta: {x: 646, y: 317}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22270102
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152398}
  m_CullTransparentMesh: 0
--- !u!114 &11408100
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152398}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 50
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 50
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Often only a minor burn (<10m/s dV) is required to change a bad orbit into
    a good orbit, with evenly spaced equatorial crossings.
--- !u!1 &157048
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22402068}
  - component: {fileID: 22226044}
  - component: {fileID: 11465224}
  m_Layer: 5
  m_Name: Orbit text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22402068
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 157048}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22477986}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 585, y: -70}
  m_SizeDelta: {x: 1170, y: 139}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22226044
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 157048}
  m_CullTransparentMesh: 0
--- !u!114 &11465224
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 157048}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 50
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 50
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The big map's orbit overlay provides useful data for determining the best
    scanning orbit.
--- !u!1 &176224
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22477986}
  - component: {fileID: 22281670}
  - component: {fileID: 11456916}
  m_Layer: 5
  m_Name: Orbit Overlay Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22477986
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 176224}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22402068}
  m_Father: {fileID: 22490318}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -322.5, y: 445}
  m_SizeDelta: {x: 1300, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22281670
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 176224}
  m_CullTransparentMesh: 0
--- !u!114 &11456916
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 176224}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16470589, g: 0.49803922, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Orbit Overlays and Equatorial Crossings
--- !u!1 &191712
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22409804}
  - component: {fileID: 22277914}
  - component: {fileID: 11428076}
  m_Layer: 5
  m_Name: Header_Question
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22409804
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 191712}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22490318}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 680, y: 1378}
  m_SizeDelta: {x: 1257, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22277914
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 191712}
  m_CullTransparentMesh: 0
--- !u!114 &11428076
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 191712}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 50
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 50
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: How to optimize your orbit for the fastest scan.
--- !u!1 &192844
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22484824}
  - component: {fileID: 22264712}
  - component: {fileID: 11470120}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!224 &22484824
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 192844}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22490318}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22264712
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 192844}
  m_CullTransparentMesh: 0
--- !u!114 &11470120
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 192844}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: d6693ce76da0f744f9a94fedab2a21cf, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/Scanning_Advanced.prefab.meta
================================================
fileFormatVersion: 2
guid: c15dd79a30b30a94e939de4ac1c81aeb
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/Scanning_Basic.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &129208
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22452290}
  - component: {fileID: 22243454}
  - component: {fileID: 11426854}
  m_Layer: 5
  m_Name: Indicators
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22452290
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 129208}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22479480}
  - {fileID: 22473132}
  - {fileID: 22415512}
  - {fileID: 22492436}
  - {fileID: 22495880}
  m_Father: {fileID: 22492092}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -606, y: 466}
  m_SizeDelta: {x: 659, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22243454
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 129208}
  m_CullTransparentMesh: 0
--- !u!114 &11426854
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 129208}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16470589, g: 0.49803922, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Scanning Indicators
--- !u!1 &130116
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22443578}
  - component: {fileID: 22232370}
  - component: {fileID: 11406036}
  m_Layer: 5
  m_Name: Header
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22443578
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130116}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22450670}
  m_Father: {fileID: 22492092}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -590, y: 690}
  m_SizeDelta: {x: 765, y: 90}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22232370
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130116}
  m_CullTransparentMesh: 0
--- !u!114 &11406036
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 130116}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 0.16470589, g: 0.49803922, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 70
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 70
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Basic Scanning
--- !u!1 &131604
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22415512}
  - component: {fileID: 22251684}
  - component: {fileID: 11407358}
  m_Layer: 5
  m_Name: Ground Tracks
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22415512
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 131604}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452290}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 1181, y: -1066}
  m_SizeDelta: {x: 853, y: 244}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22251684
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 131604}
  m_CullTransparentMesh: 0
--- !u!114 &11407358
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 131604}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 45
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 45
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Map view ground track indicators show the area currently being scanned only
    when the scanner is within the acceptable altitude range (dependent on settings).
--- !u!1 &152800
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22495880}
  - component: {fileID: 22276694}
  - component: {fileID: 11413756}
  m_Layer: 5
  m_Name: Maps
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22495880
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152800}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452290}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 476, y: -621}
  m_SizeDelta: {x: 1022, y: 189}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22276694
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152800}
  m_CullTransparentMesh: 0
--- !u!114 &11413756
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 152800}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 45
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 45
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: The flashing lights on the small map (green for ideal altitude, flashing
    orange for below the ideal altitude, solid orange for too high or too low).
--- !u!1 &153278
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22479480}
  - component: {fileID: 22213026}
  - component: {fileID: 11477644}
  m_Layer: 5
  m_Name: Indicator_sub
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22479480
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 153278}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452290}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 558, y: -159}
  m_SizeDelta: {x: 1117, y: 319}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22213026
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 153278}
  m_CullTransparentMesh: 0
--- !u!114 &11477644
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 153278}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}
    m_FontSize: 50
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 50
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'There are numerous indicators available for monitoring scanning activity,
    these include:'
--- !u!1 &180254
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22476790}
  - component: {fileID: 22266604}
  - component: {fileID: 11487088}
  m_Layer: 5
  m_Name: Image
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!224 &22476790
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 180254}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22492092}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22266604
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 180254}
  m_CullTransparentMesh: 0
--- !u!114 &11487088
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 180254}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 81456d13e25953647b838ac8ee493c38, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &180830
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22450670}
  - component: {fileID: 22272606}
  - component: {fileID: 11421290}
  m_Layer: 5
  m_Name: SubHead
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22450670
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 180830}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22443578}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 653, y: -34}
  m_SizeDelta: {x: 1307, y: 70}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22272606
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 180830}
  m_CullTransparentMesh: 0
--- !u!114 &11421290
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 180830}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}
    m_FontSize: 50
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 50
    m_Alignment: 3
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: 'How to start scanning, find the right orbit, and build maps. '
--- !u!1 &188874
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22492436}
  - component: {fileID: 22275644}
  - component: {fileID: 11469328}
  m_Layer: 5
  m_Name: VAB Info
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22492436
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 188874}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452290}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 1152, y: -354}
  m_SizeDelta: {x: 944, y: 180}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22275644
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 188874}
  m_CullTransparentMesh: 0
--- !u!114 &11469328
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 188874}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 45
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 45
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: VAB/SPH extra info panels show the scanning altitude parameters for each
    instrument.
--- !u!1 &191862
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22492092}
  - component: {fileID: 22245406}
  - component: {fileID: 11422510}
  - component: {fileID: 11401840}
  m_Layer: 5
  m_Name: Scanning_Basic
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22492092
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 191862}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22443578}
  - {fileID: 22452290}
  - {fileID: 22476790}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 1}
  m_AnchorMax: {x: 0, y: 1}
  m_AnchoredPosition: {x: 742.5, y: -473.5}
  m_SizeDelta: {x: 2048, y: 1536}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22245406
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 191862}
  m_CullTransparentMesh: 0
--- !u!114 &11422510
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 191862}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &11401840
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 191862}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
--- !u!1 &193862
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 22473132}
  - component: {fileID: 22298994}
  - component: {fileID: 11427006}
  m_Layer: 5
  m_Name: Context
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &22473132
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 193862}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22452290}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -116, y: -1033}
  m_SizeDelta: {x: 551, y: 144}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &22298994
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 193862}
  m_CullTransparentMesh: 0
--- !u!114 &11427006
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 193862}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}
    m_FontSize: 45
    m_FontStyle: 0
    m_BestFit: 0
    m_MinSize: 10
    m_MaxSize: 45
    m_Alignment: 0
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: Right-Click context menus show the current status.


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs/Scanning_Basic.prefab.meta
================================================
fileFormatVersion: 2
guid: 86e45d97058cef94caca64401c5c5d35
timeCreated: 1487971664
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia/Prefabs.meta
================================================
fileFormatVersion: 2
guid: f40a02fed05aa81409aa717e590926e9
folderAsset: yes
timeCreated: 1487971550
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/KSPedia.meta
================================================
fileFormatVersion: 2
guid: 5b588b5c0f65d24438cd35e5518da329
folderAsset: yes
timeCreated: 1487971541
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Lib/PartTools.dll.meta
================================================
fileFormatVersion: 2
guid: 90118262cf80c7549ab37dd61d08c605
PluginImporter:
  serializedVersion: 1
  iconMap: {}
  executionOrder: {}
  isPreloaded: 0
  platformData:
    Any:
      enabled: 1
      settings: {}
    Editor:
      enabled: 0
      settings:
        DefaultValueInitialized: true
    WindowsStoreApps:
      enabled: 0
      settings:
        CPU: AnyCPU
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Lib/PartToolsEditor.dll.meta
================================================
fileFormatVersion: 2
guid: e4331bf5e4a45a4488507f28195caf59
PluginImporter:
  serializedVersion: 1
  iconMap: {}
  executionOrder: {}
  isPreloaded: 0
  platformData:
    Any:
      enabled: 1
      settings: {}
    Editor:
      enabled: 0
      settings:
        DefaultValueInitialized: true
    WindowsStoreApps:
      enabled: 0
      settings:
        CPU: AnyCPU
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Lib.meta
================================================
fileFormatVersion: 2
guid: 6a52d514389e28b438ae8544be1ac27b
folderAsset: yes
timeCreated: 1478034312
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Plugins/KSPAssets/KSPAssetCompiler.dll.meta
================================================
fileFormatVersion: 2
guid: 0890400b9503e704f8990f50af9b31e0
timeCreated: 1454319587
licenseType: Pro
PluginImporter:
  serializedVersion: 1
  iconMap: {}
  executionOrder: {}
  isPreloaded: 0
  platformData:
    Android:
      enabled: 0
      settings:
        CPU: AnyCPU
    Any:
      enabled: 0
      settings: {}
    Editor:
      enabled: 1
      settings:
        CPU: AnyCPU
        DefaultValueInitialized: true
        OS: AnyOS
    Linux:
      enabled: 0
      settings:
        CPU: x86
    Linux64:
      enabled: 0
      settings:
        CPU: x86_64
    OSXIntel:
      enabled: 0
      settings:
        CPU: AnyCPU
    OSXIntel64:
      enabled: 0
      settings:
        CPU: AnyCPU
    SamsungTV:
      enabled: 0
      settings:
        STV_MODEL: STANDARD_13
    WP8:
      enabled: 0
      settings:
        CPU: AnyCPU
        DontProcess: False
        PlaceholderPath: 
    Win:
      enabled: 0
      settings:
        CPU: AnyCPU
    Win64:
      enabled: 0
      settings:
        CPU: AnyCPU
    WindowsStoreApps:
      enabled: 0
      settings:
        CPU: AnyCPU
        DontProcess: False
        PlaceholderPath: 
        SDK: AnySDK
    iOS:
      enabled: 0
      settings:
        CompileFlags: 
        FrameworkDependencies: 
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Plugins/KSPAssets/KSPAssets.dll.meta
================================================
fileFormatVersion: 2
guid: 7f5bed1f9aa762b41942b1832536a846
PluginImporter:
  externalObjects: {}
  serializedVersion: 2
  iconMap: {}
  executionOrder: {}
  defineConstraints: []
  isPreloaded: 0
  isOverridable: 0
  isExplicitlyReferenced: 0
  validateReferences: 1
  platformData:
  - first:
      Any: 
    second:
      enabled: 1
      settings: {}
  - first:
      Editor: Editor
    second:
      enabled: 0
      settings:
        DefaultValueInitialized: true
  - first:
      Windows Store Apps: WindowsStoreApps
    second:
      enabled: 0
      settings:
        CPU: AnyCPU
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Plugins/KSPAssets/ReadMe.txt
================================================
KSPAssets ReadMe v1

================================================
FILE: Unity/SCANsat/Assets/Plugins/KSPAssets/ReadMe.txt.meta
================================================
fileFormatVersion: 2
guid: 3ee644d0f5d6a744f9d2f7ab6e346c0f
timeCreated: 1456140045
licenseType: Pro
TextScriptImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Plugins/KSPAssets.meta
================================================
fileFormatVersion: 2
guid: 7810c03ce9571f74183306825d39e103
folderAsset: yes
timeCreated: 1456139982
licenseType: Pro
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Plugins/SCANsat.Unity.dll.meta
================================================
fileFormatVersion: 2
guid: eb35edfa13e33ef47bd4ac62c244d6d5
PluginImporter:
  externalObjects: {}
  serializedVersion: 2
  iconMap: {}
  executionOrder: {}
  defineConstraints: []
  isPreloaded: 0
  isOverridable: 0
  isExplicitlyReferenced: 0
  validateReferences: 1
  platformData:
  - first:
      Any: 
    second:
      enabled: 1
      settings: {}
  - first:
      Editor: Editor
    second:
      enabled: 0
      settings:
        DefaultValueInitialized: true
  - first:
      Windows Store Apps: WindowsStoreApps
    second:
      enabled: 0
      settings:
        CPU: AnyCPU
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Plugins.meta
================================================
fileFormatVersion: 2
guid: 97b908131649fa24fa74da8a884d37cd
folderAsset: yes
timeCreated: 1478034312
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/MainMap_Vessel.prefab.meta
================================================
fileFormatVersion: 2
guid: 7b5a334b8e9f5e74983a8ebbdd26dca0
timeCreated: 1478039123
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/Overlay_Resource.prefab.meta
================================================
fileFormatVersion: 2
guid: 8a559c6f89fd56a4aa6cd1f9b793994d
timeCreated: 1480456298
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_Background.prefab.meta
================================================
fileFormatVersion: 2
guid: c1e0b0f33597a734facf2ccf665cd029
timeCreated: 1481132956
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_BackgroundElement.prefab.meta
================================================
fileFormatVersion: 2
guid: b7823d424e46c7343a3c973b91ea6ec1
timeCreated: 1481216192
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_BigMap.prefab.meta
================================================
fileFormatVersion: 2
guid: 0ee1415fa9dd40644bd19e2722cec2f4
timeCreated: 1480109258
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_ColorBiome.prefab.meta
================================================
fileFormatVersion: 2
guid: 2b2771cafafa81443bfb763e6e3f892c
timeCreated: 1487008562
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_ColorControl.prefab.meta
================================================
fileFormatVersion: 2
guid: 57c0f1cfae60c6d4ea49a23d168a2bd7
timeCreated: 1487008560
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_ColorResource.prefab.meta
================================================
fileFormatVersion: 2
guid: e60a01b03447ac442b31aad84fefc1fc
timeCreated: 1487010858
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_ColorSlope.prefab.meta
================================================
fileFormatVersion: 2
guid: 306ca8e029802b046b6d11cdb9442fc1
timeCreated: 1487009213
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_ColorTerrain.prefab.meta
================================================
fileFormatVersion: 2
guid: b5232c0231aa66b40af7b2ec4215102e
timeCreated: 1487020613
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_Confirmation.prefab.meta
================================================
fileFormatVersion: 2
guid: 138f3cd0987326445bc959d8c5f61e94
timeCreated: 1487626640
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_Data.prefab.meta
================================================
fileFormatVersion: 2
guid: f5588afc1be070c4293d58a636869e14
timeCreated: 1481132854
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_DropDown.prefab.meta
================================================
fileFormatVersion: 2
guid: 2f8167d90b7a2c542a47d29bbca95c74
timeCreated: 1481158898
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_DropDownElement.prefab.meta
================================================
fileFormatVersion: 2
guid: 750a642a117d6fe46b759abe8655f308
timeCreated: 1481158892
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_General.prefab.meta
================================================
fileFormatVersion: 2
guid: c57b13a325aea5644b37abd70df422d6
timeCreated: 1481132894
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_Ghost_Skin.prefab.meta
================================================
fileFormatVersion: 2
guid: e2f94fdab4722d846b4fcba16621d7d9
timeCreated: 1480700884
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_Instruments.prefab.meta
================================================
fileFormatVersion: 2
guid: ef675a73e5e74654887f9976c5e1a2e8
timeCreated: 1480598396
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_MainMap.prefab.meta
================================================
fileFormatVersion: 2
guid: c30270af487c3794f8e35e6081c40aad
timeCreated: 1478035570
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_MapLabel.prefab.meta
================================================
fileFormatVersion: 2
guid: 9a1e8cdf7bba791419d4be0d177fa1b7
timeCreated: 1484061925
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_Overlay.prefab.meta
================================================
fileFormatVersion: 2
guid: 12cc86819041a614fa622d9c0e801709
timeCreated: 1480455996
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_PaletteButton.prefab.meta
================================================
fileFormatVersion: 2
guid: 430ba490d0232e840b9eed6422ea43ce
timeCreated: 1487176773
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_Resources.prefab.meta
================================================
fileFormatVersion: 2
guid: 9144307c67efb2d4c974f88b0706a9e1
timeCreated: 1481133084
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_Settings.prefab.meta
================================================
fileFormatVersion: 2
guid: 0f01187160db534419d10ea376c85210
timeCreated: 1481132196
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_Settings_Old.prefab.meta
================================================
fileFormatVersion: 2
guid: 317f9c637a63af74590fff4bff7f20ae
timeCreated: 1481132189
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_Toolbar.prefab.meta
================================================
fileFormatVersion: 2
guid: 049313d8a71126f4692ff5785b7d3bad
timeCreated: 1485644222
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_Tooltip.prefab.meta
================================================
fileFormatVersion: 2
guid: b673d5c1be76ca5439cba95e3a3b9018
timeCreated: 1485820117
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs/SCAN_ZoomMap.prefab.meta
================================================
fileFormatVersion: 2
guid: 1d5d436ff2c038645bbf281daf4c7d46
timeCreated: 1486055695
licenseType: Free
NativeFormatImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Prefabs.meta
================================================
fileFormatVersion: 2
guid: 6e531e6240274bd4da922c487b5d3ad4
folderAsset: yes
timeCreated: 1478034312
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SCANpedia.unity.meta
================================================
fileFormatVersion: 2
guid: 5d07b071f5024d5488ba5a9730505c48
timeCreated: 1487972566
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SCANsat.unity.meta
================================================
fileFormatVersion: 2
guid: 6064c829ff878e041ac7d1255563f5e5
timeCreated: 1478035437
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Shaders/EdgeDetectX.shader
================================================
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Hidden/Edge Detect X" {
Properties {
	_MainTex ("Base (RGB)", RECT) = "white" {}
	_Treshold ("Treshold", Float) = 0.2
}

SubShader {
	Pass {
		ZTest Always Cull Off ZWrite Off
		Fog { Mode off }

CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest 
#include "UnityCG.cginc"

uniform sampler2D _MainTex;
uniform float4 _MainTex_TexelSize;
uniform float _Treshold;

struct v2f {
	float4 pos : POSITION;
	float2 uv[3] : TEXCOORD0;
};

v2f vert( appdata_img v )
{
	v2f o;
	o.pos = UnityObjectToClipPos (v.vertex);
	float2 uv = MultiplyUV( UNITY_MATRIX_TEXTURE0, v.texcoord );
	o.uv[0] = uv;
	o.uv[1] = uv + float2(-_MainTex_TexelSize.x, -_MainTex_TexelSize.y);
	o.uv[2] = uv + float2(+_MainTex_TexelSize.x, -_MainTex_TexelSize.y);
	return o;
}


half4 frag (v2f i) : COLOR
{
	half4 original = tex2D(_MainTex, i.uv[0]);

	// a very simple cross gradient filter
	half3 p1 = original.rgb;
	half3 p2 = tex2D( _MainTex, i.uv[1] ).rgb;
	half3 p3 = tex2D( _MainTex, i.uv[2] ).rgb;
	
	half3 diff = p1 * 2 - p2 - p3;
	half len = dot(diff,diff);
	if( len >= _Treshold )
		original.rgb = 0;
		
	return original;
}
ENDCG
	}
}

Fallback off

}

================================================
FILE: Unity/SCANsat/Assets/Shaders/EdgeDetectX.shader.meta
================================================
fileFormatVersion: 2
guid: 1747e5391b7cf154cb7dd4a99033eb5f
timeCreated: 1488558165
licenseType: Free
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: scan_shaders
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Shaders/GrayscaleEffect.shader
================================================
Shader "Hidden/Grayscale Effect" {
Properties {
	_MainTex ("Base (RGB)", 2D) = "white" {}
	_RampTex ("Base (RGB)", 2D) = "grayscaleRamp" {}
}

SubShader {
	Pass {
		ZTest Always Cull Off ZWrite Off
				
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#include "UnityCG.cginc"

uniform sampler2D _MainTex;
uniform sampler2D _RampTex;
uniform half _RampOffset;

fixed4 frag (v2f_img i) : SV_Target
{
	fixed4 original = tex2D(_MainTex, i.uv);
	fixed grayscale = Luminance(original.rgb);
	half2 remap = half2 (grayscale + _RampOffset, .5);
	fixed4 output = tex2D(_RampTex, remap);
	output.a = original.a;
	return output;
}
ENDCG

	}
}

Fallback off

}


================================================
FILE: Unity/SCANsat/Assets/Shaders/GrayscaleEffect.shader.meta
================================================
fileFormatVersion: 2
guid: 91c6bfc4cbec43141898f0b739e30e87
timeCreated: 1488558174
licenseType: Free
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: scan_shaders
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/Shaders.meta
================================================
fileFormatVersion: 2
guid: 95f19472caf6c3f41926acb8935c102b
folderAsset: yes
timeCreated: 1478034312
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds/BackgroundBlack.png.meta
================================================
fileFormatVersion: 2
guid: b1fc6fdc0f80cbf49b77f83ad3db33aa
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 1024
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 1024
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: KSPedia
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds/BackgroundBlue.png.meta
================================================
fileFormatVersion: 2
guid: e8621dd15bfcce340b91d8bbc8d9f084
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 1024
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 1024
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds/BackgroundBlueGrid.png.meta
================================================
fileFormatVersion: 2
guid: 647bbf5cf6c08c04c8d4b753202b0808
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 1024
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 1024
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds/BackgroundKSC.png.meta
================================================
fileFormatVersion: 2
guid: cdbc96a0c719a1d48901892fcf30182f
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 1024
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 1024
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: 
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds/BackgroundWhite.png.meta
================================================
fileFormatVersion: 2
guid: 7fbafb50c77e28d49a117a7810a321bf
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: -1
  maxTextureSize: 1024
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 16
    mipBias: -100
    wrapU: 1
    wrapV: 1
    wrapW: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  applyGammaDecoding: 1
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 1024
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag: KSPedia
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds.meta
================================================
fileFormatVersion: 2
guid: 47990fb03129e824caf678339b9eff94
folderAsset: yes
timeCreated: 1448011267
licenseType: Pro
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/KSPedia.meta
================================================
fileFormatVersion: 2
guid: ea681fdd8e1bcc2449f008a8ac4fdc92
folderAsset: yes
timeCreated: 1448011261
licenseType: Pro
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Alpha.shader
================================================
Shader "KSP/Alpha/Translucent"
{
	Properties 
	{
		_MainTex("MainTex (RGBA)", 2D) = "white" {}

		_RimFalloff("Rim Falloff", Range(0.01,5) ) = 0.1
		_RimColor("Rim Color", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags { "Queue" = "Transparent" }

		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 

		CGPROGRAM

		#pragma surface surf Lambert alpha
		#pragma target 3.0

		sampler2D _MainTex;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float2 uv_BumpMap;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex, (IN.uv_MainTex)) * _BurnColor;

			float3 normal = float3(0,0,1);
			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = 0;
			o.Specular = 0;
			o.Normal = normal;

			o.Alpha = color.a;
		}

		ENDCG
	}
	Fallback "Diffuse"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Alpha.shader.meta
================================================
fileFormatVersion: 2
guid: 6d85e30bba4b9974ab34d7d199c19c39
timeCreated: 1447334820
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/AlphaSpecular.shader
================================================
Shader "KSP/Alpha/Translucent Specular"
{
	Properties 
	{
		_MainTex("MainTex (RGBA)", 2D) = "white" {}
		
		_Gloss ("Gloss", Range (0.01, 1)) = 0.5
		_SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
		_Shininess ("Shininess", Range (0.03, 1)) = 0.078125

		_RimFalloff("Rim Falloff", Range(0.01,5) ) = 0.1
		_RimColor("Rim Color", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags { "Queue" = "Transparent" }

		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 

		CGPROGRAM

		#pragma surface surf BlinnPhong alpha
		#pragma target 3.0
		
		half _Shininess;

		sampler2D _MainTex;

		float _Gloss;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float2 uv_BumpMap;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex, (IN.uv_MainTex)) * _BurnColor;

			float3 normal = float3(0,0,1);
			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = color.a;
			o.Specular = _Shininess;
			o.Normal = normal;

			o.Alpha = color.a;
		}

		ENDCG
	}
	Fallback "Diffuse"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/AlphaSpecular.shader.meta
================================================
fileFormatVersion: 2
guid: 5342206a32fc49a44b5aa0b52a72a8b0
timeCreated: 1447334820
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Bumped.shader
================================================
Shader "KSP/Bumped"
{
	Properties 
	{
		_MainTex("_MainTex (RGB spec(A))", 2D) = "white" {}
		_BumpMap("_BumpMap", 2D) = "bump" {}
		
		_Opacity("_Opacity", Range(0,1) ) = 1
		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags { "RenderType"="Opaque" }
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 

		CGPROGRAM

		#pragma surface surf Lambert
		#pragma target 3.0
		
		half _Shininess;

		sampler2D _MainTex;
		sampler2D _BumpMap;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float2 uv_BumpMap;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;
			float3 normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = 0;
			o.Specular = 0;
			o.Normal = normal;

			o.Emission *= _Opacity;
			o.Alpha = _Opacity;
		}
		ENDCG
	}
	Fallback "Bumped Diffuse"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Bumped.shader.meta
================================================
fileFormatVersion: 2
guid: c9da217290ee74a43907fc1205e4c146
timeCreated: 1447334822
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/BumpedSpecular.shader
================================================
Shader "KSP/Bumped Specular"
{
	Properties 
	{
		_MainTex("_MainTex (RGB spec(A))", 2D) = "white" {}
		_BumpMap("_BumpMap", 2D) = "bump" {}
		_Color ("Main Color", Color) = (1,1,1,1)
		_SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
		_Shininess ("Shininess", Range (0.03, 1)) = 0.078125
		
		_Opacity("_Opacity", Range(0,1) ) = 1
		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags { "RenderType"="Opaque" }
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 

		CGPROGRAM

		#pragma surface surf BlinnPhong
		#pragma target 3.0
		
		half _Shininess;

		sampler2D _MainTex;
		sampler2D _BumpMap;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float2 uv_BumpMap;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;
			float3 normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = color.a;
			o.Specular = _Shininess;
			o.Normal = normal;

			o.Emission *= _Opacity;
			o.Alpha = _Opacity;
		}
		ENDCG
	}
	Fallback "Bumped Specular"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/BumpedSpecular.shader.meta
================================================
fileFormatVersion: 2
guid: ac859b44038643d40b88f24aceac191c
timeCreated: 1447334821
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Cutoff.shader
================================================
Shader "KSP/Alpha/Cutoff"
{
	Properties 
	{		
		_Color ("Main Color", Color) = (1,1,1,1)
		_MainTex("_MainTex (RGB Alpha(A))", 2D) = "white" {}
	    _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5

		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 
		AlphaTest GEqual [_Cutoff]
				
		CGPROGRAM

		#pragma surface surf Lambert alphatest:_Cutoff
		#pragma target 3.0

		sampler2D _MainTex;
		sampler2D _BumpMap;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float2 uv_BumpMap;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex, (IN.uv_MainTex)) * _BurnColor;
			float3 normal = float3(0,0,1);

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = 0;
			o.Specular = 0;
			o.Normal = normal;

			o.Alpha = color.a;
		}
		ENDCG
	}
	Fallback "Transparent/Cutout/VertexLit"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Cutoff.shader.meta
================================================
fileFormatVersion: 2
guid: b3b035681f285f740b32cf2bc12a8de6
timeCreated: 1447334822
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/CutoffBumped.shader
================================================
Shader "KSP/Alpha/Cutoff Bumped"
{
	Properties 
	{
		_MainTex("_MainTex (RGB Alpha(A))", 2D) = "white" {}
		_BumpMap("_BumpMap", 2D) = "bump" {}
	    _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5

		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 
		AlphaTest GEqual [_Cutoff]
		
		CGPROGRAM

		#pragma surface surf Lambert
		#pragma target 3.0

		sampler2D _MainTex;
		sampler2D _BumpMap;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float2 uv_BumpMap;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex, (IN.uv_MainTex)) * _BurnColor;
			float3 normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = 0;
			o.Specular = 0;
			o.Normal = normal;

			o.Alpha = color.a;
		}
		ENDCG
	}
	Fallback "Diffuse"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/CutoffBumped.shader.meta
================================================
fileFormatVersion: 2
guid: bbe7a2e17e83a9a45bc517140d3ca1a6
timeCreated: 1447334822
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Diffuse.shader
================================================
Shader "KSP/Diffuse"
{
	Properties 
	{
		_MainTex("_MainTex (RGB)", 2D) = "white" {}
		_Color ("Main Color", Color) = (1,1,1,1)
		_Opacity("_Opacity", Range(0,1) ) = 1
		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags { "RenderType"="Opaque" }
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 

		CGPROGRAM

		#pragma surface surf Lambert
		#pragma target 3.0

		sampler2D _MainTex;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;
			float3 normal = float3(0,0,1);

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = 0;
			o.Specular = 0;
			o.Normal = normal;

			o.Emission *= _Opacity;
			o.Alpha = _Opacity;
		}
		ENDCG
	}
	Fallback "Diffuse"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Diffuse.shader.meta
================================================
fileFormatVersion: 2
guid: 4eb23d6a8a22cd2408ed28ac1ce15ed3
timeCreated: 1447334819
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Emissive.shader
================================================
Shader "KSP/Emissive/Diffuse"
{
	Properties 
	{
		_MainTex("_MainTex (RGB)", 2D) = "white" {}

		_EmissiveColor("_EmissiveColor", Color) = (0,0,0,1)
		_Emissive("_Emissive", 2D) = "white" {}
		
		_Opacity("_Opacity", Range(0,1) ) = 1
		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 

		CGPROGRAM

		#pragma surface surf Lambert
		#pragma target 3.0

		sampler2D _MainTex;

		float4 _EmissiveColor;
		sampler2D _Emissive;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;
			float3 normal = float3(0,0,1);

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;
			emission += (tex2D(_Emissive, IN.uv_Emissive).rgb * _EmissiveColor.rgb) * _EmissiveColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = 0;
			o.Specular = 0;
			o.Normal = normal;

			o.Emission *= _Opacity;
			o.Alpha = _Opacity;
		}
		ENDCG
	}
	Fallback "Diffuse"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Emissive.shader.meta
================================================
fileFormatVersion: 2
guid: 59fa1cb2eebf7564ebb45f1250bba1d0
timeCreated: 1447334820
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/EmissiveBumpedSpecular.shader
================================================
Shader "KSP/Emissive/Bumped Specular"
{
	Properties 
	{
		_MainTex("_MainTex (RGB spec(A))", 2D) = "white" {}
		_BumpMap("_BumpMap", 2D) = "bump" {}
		_Color ("Main Color", Color) = (1,1,1,1)
		_SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
		_Shininess ("Shininess", Range (0.03, 1)) = 0.078125

		_EmissiveColor("_EmissiveColor", Color) = (0,0,0,1)
		_Emissive("_Emissive", 2D) = "white" {}
		
		_Opacity("_Opacity", Range(0,1) ) = 1
		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags { "RenderType"="Opaque" }
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 

		CGPROGRAM

		#pragma surface surf BlinnPhong
		#pragma target 3.0
		
		half _Shininess;

		sampler2D _MainTex;
		sampler2D _BumpMap;

		float4 _EmissiveColor;
		sampler2D _Emissive;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;

		struct Input
		{
			float2 uv_MainTex;
			float2 uv_BumpMap;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;
			float3 normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;
			emission += (tex2D(_Emissive, IN.uv_Emissive).rgb * _EmissiveColor.rgb) * _EmissiveColor.a;
			
			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = color.a;
			o.Specular = _Shininess;
			o.Normal = normal;

			o.Emission *= _Opacity;
			o.Alpha = _Opacity;
		}
		ENDCG
	}
	Fallback "Self-Illumin/Bumped Specular"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/EmissiveBumpedSpecular.shader.meta
================================================
fileFormatVersion: 2
guid: 8deb5d99e5582cb4fa66782c19ee43ad
timeCreated: 1447334821
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/EmissiveSpecular.shader
================================================
Shader "KSP/Emissive/Specular"
{
	Properties 
	{
		_MainTex("_MainTex (RGB spec(A))", 2D) = "white" {}
		_Color ("Main Color", Color) = (1,1,1,1)
		_SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
		_Shininess ("Shininess", Range (0.03, 1)) = 0.078125

		_EmissiveColor("_EmissiveColor", Color) = (0,0,0,1)
		_Emissive("_Emissive", 2D) = "white" {}
		
		_Opacity("_Opacity", Range(0,1) ) = 1
		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags { "RenderType"="Opaque" }
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 

		CGPROGRAM

		#pragma surface surf BlinnPhong
		#pragma target 3.0
		
		half _Shininess;

		sampler2D _MainTex;

		float4 _EmissiveColor;
		sampler2D _Emissive;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;
			float3 normal = float3(0,0,1);

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;
			emission += (tex2D(_Emissive, IN.uv_Emissive).rgb * _EmissiveColor.rgb) * _EmissiveColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = color.a;
			o.Specular = _Shininess;
			o.Normal = normal;

			o.Emission *= _Opacity;
			o.Alpha = _Opacity;
		}
		ENDCG
	}
	Fallback "Self-Illumin/Specular"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/EmissiveSpecular.shader.meta
================================================
fileFormatVersion: 2
guid: 0785b2a0f9690d44dbdf4e24de04ca3e
timeCreated: 1447334818
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/KSPParticle AddSmooth.shader
================================================
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "KSP/Particles/Additive (Soft)" {
Properties {
	_MainTex ("Particle Texture", 2D) = "white" {}
	_InvFade ("Soft Particles Factor", Range(0.01,3.0)) = 1.0
	_TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5)
}

Category {
	Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
	Blend One OneMinusSrcColor
	ColorMask RGB
	Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) }

	SubShader {
		Pass {
		
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			#pragma multi_compile_particles

			#include "UnityCG.cginc"

			sampler2D _MainTex;
			fixed4 _TintColor;
			
			struct appdata_t {
				float4 vertex : POSITION;
				fixed4 color : COLOR;
				float2 texcoord : TEXCOORD0;
			};

			struct v2f {
				float4 vertex : POSITION;
				fixed4 color : COLOR;
				float2 texcoord : TEXCOORD0;
				#ifdef SOFTPARTICLES_ON
				float4 projPos : TEXCOORD1;
				#endif
			};

			float4 _MainTex_ST;
			
			v2f vert (appdata_t v)
			{
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				#ifdef SOFTPARTICLES_ON
				o.projPos = ComputeScreenPos (o.vertex);
				COMPUTE_EYEDEPTH(o.projPos.z);
				#endif
				o.color = v.color;
				o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
				return o;
			}

			sampler2D _CameraDepthTexture;
			float _InvFade;
			
			fixed4 frag (v2f i) : COLOR
			{
				#ifdef SOFTPARTICLES_ON
				float sceneZ = LinearEyeDepth (UNITY_SAMPLE_DEPTH(tex2Dproj(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos))));
				float partZ = i.projPos.z;
				float fade = saturate (_InvFade * (sceneZ-partZ));
				i.color.a *= fade;
				#endif
				
				half4 prev = i.color * tex2D(_MainTex, i.texcoord);
				prev.rgb *= prev.a;
				return prev * _TintColor;
			}
			ENDCG 
		}
	} 
}
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/KSPParticle AddSmooth.shader.meta
================================================
fileFormatVersion: 2
guid: 57cb714d3a5ee604bb1098b92cdce428
timeCreated: 1447334820
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/ParticleAdd.shader
================================================
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "KSP/Particles/Additive"
{
	Properties
	{
		_TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5)
		_MainTex ("Particle Texture", 2D) = "white" {}
		_InvFade ("Soft Particles Factor", Range(0.01,3.0)) = 1.0
	}

	Category
	{
		Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
		Blend SrcAlpha One
		AlphaTest Greater .01
		ColorMask RGB
		Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) }
		BindChannels {
			Bind "Color", color
			Bind "Vertex", vertex
			Bind "TexCoord", texcoord
	}
	
		// ---- Fragment program cards
		SubShader
		{
			Pass
			{
		
				CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag
				#pragma fragmentoption ARB_precision_hint_fastest
				#pragma multi_compile_particles

				#include "UnityCG.cginc"

				sampler2D _MainTex;
				fixed4 _TintColor;
			
				struct appdata_t
				{
					float4 vertex : POSITION;
					fixed4 color : COLOR;
					float2 texcoord : TEXCOORD0;
				};

				struct v2f
				{
					float4 vertex : POSITION;
					fixed4 color : COLOR;
					float2 texcoord : TEXCOORD0;
					#ifdef SOFTPARTICLES_ON
					float4 projPos : TEXCOORD1;
					#endif
				};
			
				float4 _MainTex_ST;

				v2f vert (appdata_t v)
				{
					v2f o;
					o.vertex = UnityObjectToClipPos(v.vertex);
					#ifdef SOFTPARTICLES_ON
					o.projPos = ComputeScreenPos (o.vertex);
					COMPUTE_EYEDEPTH(o.projPos.z);
					#endif
					o.color = v.color;
					o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
					return o;
				}

				sampler2D _CameraDepthTexture;
				float _InvFade;
			
				fixed4 frag (v2f i) : COLOR
				{
					#ifdef SOFTPARTICLES_ON
					float sceneZ = LinearEyeDepth (UNITY_SAMPLE_DEPTH(tex2Dproj(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos))));
					float partZ = i.projPos.z;
					float fade = saturate (_InvFade * (sceneZ-partZ));
					i.color.a *= fade;
					#endif
				
					return 2.0f * i.color * _TintColor * tex2D(_MainTex, i.texcoord);
				}
				ENDCG 
			}
		} 	
	
		// ---- Dual texture cards
		SubShader {
			Pass {
				SetTexture [_MainTex] {
					constantColor [_TintColor]
					combine constant * primary
				}
				SetTexture [_MainTex] {
					combine texture * previous DOUBLE
				}
			}
		}
	
		// ---- Single texture cards (does not do color tint)
		SubShader
		{
			Pass
			{
				SetTexture [_MainTex] { 
					combine texture * primary 
				}
			}
		}
	}
}


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/ParticleAdd.shader.meta
================================================
fileFormatVersion: 2
guid: db1d6aee2b6c25c4fbf0e07e9076c6b5
timeCreated: 1447334822
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/ParticleAlpha.shader
================================================
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "KSP/Particles/Alpha Blended"
{
	Properties
	{
		_TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5)
		_MainTex ("Particle Texture", 2D) = "white" {}
		_InvFade ("Soft Particles Factor", Range(0.01,3.0)) = 1.0
	}

	Category
	{
		Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
		Blend SrcAlpha OneMinusSrcAlpha
		AlphaTest Greater .01
		ColorMask RGB
		Cull Off Lighting Off ZWrite Off
		BindChannels {
			Bind "Color", color
			Bind "Vertex", vertex
			Bind "TexCoord", texcoord
	}
	
		// ---- Fragment program cards
		SubShader
		{
			Pass
			{
		
				CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag
				#pragma fragmentoption ARB_precision_hint_fastest
				#pragma multi_compile_particles
			
				#include "UnityCG.cginc"

				sampler2D _MainTex;
				fixed4 _TintColor;
			
				struct appdata_t {
					float4 vertex : POSITION;
					fixed4 color : COLOR;
					float2 texcoord : TEXCOORD0;
				};

				struct v2f {
					float4 vertex : POSITION;
					fixed4 color : COLOR;
					float2 texcoord : TEXCOORD0;
					#ifdef SOFTPARTICLES_ON
					float4 projPos : TEXCOORD1;
					#endif
				};
			
				float4 _MainTex_ST;

				v2f vert (appdata_t v)
				{
					v2f o;
					o.vertex = UnityObjectToClipPos(v.vertex);
					#ifdef SOFTPARTICLES_ON
					o.projPos = ComputeScreenPos (o.vertex);
					COMPUTE_EYEDEPTH(o.projPos.z);
					#endif
					o.color = v.color;
					o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
					return o;
				}

				sampler2D _CameraDepthTexture;
				float _InvFade;
			
				fixed4 frag (v2f i) : COLOR
				{
					#ifdef SOFTPARTICLES_ON
					float sceneZ = LinearEyeDepth (UNITY_SAMPLE_DEPTH(tex2Dproj(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos))));
					float partZ = i.projPos.z;
					float fade = saturate (_InvFade * (sceneZ-partZ));
					i.color.a *= fade;
					#endif
				
					return 2.0f * i.color * _TintColor * tex2D(_MainTex, i.texcoord);
				}
				ENDCG 
			}
		} 	
	
		// ---- Dual texture cards
		SubShader
		{
			Pass
			{
				SetTexture [_MainTex]
				{
					constantColor [_TintColor]
					combine constant * primary
				}
				SetTexture [_MainTex]
				{
					combine texture * previous DOUBLE
				}
			}
		}
	
		// ---- Single texture cards (does not do color tint)
		SubShader
		{
			Pass
			{
				SetTexture [_MainTex]
				{
					combine texture * primary
				}
			}
		}
	}
}


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/ParticleAlpha.shader.meta
================================================
fileFormatVersion: 2
guid: a785e1a01d15b0345ac27359a32c9857
timeCreated: 1447334821
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/SolidColorAlpha.shader
================================================
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Solid Color (Alpha)" {
	Properties 
	{
		_Color ("Color", Color) = (0.5, 0.5, 0.5, 0.5)
	}
	SubShader
	{
		
		ZWrite On
        GrabPass { }
		Pass
		{
			Fog { Mode Off }
			Blend SrcAlpha OneMinusSrcAlpha

			CGPROGRAM

			#pragma vertex vert
			#pragma fragment frag
	
			fixed4 _Color;
			sampler2D _GrabTexture;

			struct appdata
			{
				float4 vertex : POSITION;
			};
			struct v2f
			{
				float4 pos : SV_POSITION;
				float4 uv : TEXCOORD0;
			};
			v2f vert (appdata v)
			{
				v2f o;
				o.pos = UnityObjectToClipPos(v.vertex);
				o.uv = o.pos;
				return o;
			}
			half4 frag(v2f i) : COLOR
			{
				float2 coord = 0.5 + 0.5 * i.uv.xy / i.uv.w;
				fixed4 tex = tex2D(_GrabTexture, float2(coord.x, 1 - coord.y));
				return fixed4(lerp(tex.rgb, _Color.rgb, _Color.a), 1);
			}
			ENDCG
		}
	}
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/SolidColorAlpha.shader.meta
================================================
fileFormatVersion: 2
guid: 28d4a56e9512d05479c0952c7b2fa008
timeCreated: 1447334818
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Specular.shader
================================================
Shader "KSP/Specular"
{
	Properties 
	{
		_MainTex("_MainTex (RGB spec(A))", 2D) = "white" {}
		_Color ("Main Color", Color) = (1,1,1,1)
		_SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
		_Shininess ("Shininess", Range (0.03, 1)) = 0.078125
		
		_Opacity("_Opacity", Range(0,1) ) = 1
		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags { "RenderType"="Opaque" }
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 

		CGPROGRAM

		#pragma surface surf BlinnPhong
		#pragma target 3.0
		
		half _Shininess;

		sampler2D _MainTex;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;
			float3 normal = float3(0,0,1);

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = color.a;
			o.Specular = _Shininess;
			o.Normal = normal;

			o.Emission *= _Opacity;
			o.Alpha = _Opacity;
		}
		ENDCG
	}
	Fallback "Specular"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Specular.shader.meta
================================================
fileFormatVersion: 2
guid: 440ec76b6cd2107448cec7a61105b099
timeCreated: 1447334819
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/SpecularBumpTransparent.shader
================================================
Shader "KSP/Bumped Specular (Transparent)"
{
	Properties 
	{
		_MainTex("_MainTex (RGB spec(A))", 2D) = "white" {}
		_BumpMap("_BumpMap", 2D) = "bump" {}
		
		_MainColor ("Main Color", Color) = (1,1,1,1)
		
		_Shininess ("Shininess", Range (0.03, 1)) = 0.078125
		
		_Opacity("_Opacity", Range(0,1) ) = 1
		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
		
		Pass 
		{
			ZWrite On
			ColorMask 0
		}
		
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 

		CGPROGRAM

		#pragma surface surf BlinnPhong
		#pragma target 2.0
		
		half _Shininess;

		sampler2D _MainTex;
		sampler2D _BumpMap;
		
		float4 _MainColor;
		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float2 uv_BumpMap;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _MainColor * _BurnColor;
			float3 normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
			
			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = color.a;
			o.Specular = _Shininess;
			o.Normal = normal;
			o.Emission *= _Opacity;
			o.Alpha = _Opacity;
		}
		ENDCG
	}
	Fallback "Bumped Specular"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/SpecularBumpTransparent.shader.meta
================================================
fileFormatVersion: 2
guid: ab0281620a104dd4ca96a6bf906f8011
timeCreated: 1447334821
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/SpecularTransparent.shader
================================================
Shader "KSP/Specular (Transparent)"
{
	Properties 
	{
		_MainTex("_MainTex (RGB spec(A))", 2D) = "white" {}
		_MainColor ("Main Color", Color) = (1,1,1,1)
		
		_Shininess ("Shininess", Range (0.03, 1)) = 0.078125
		
		_Opacity("_Opacity", Range(0,1) ) = 1
		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
		
		Pass 
		{
			ZWrite On
			ColorMask 0
		}
		
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 
		
		CGPROGRAM

		#pragma surface surf BlinnPhong
		#pragma target 2.0
		
		half _Shininess;

		sampler2D _MainTex;
		
		float4 _MainColor;
		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		struct Input
		{
			float2 uv_MainTex;
			float3 viewDir;
			float3 worldNormal;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _MainColor * _BurnColor;

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), IN.worldNormal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = color.rgb;
			o.Emission = emission;
			o.Gloss = color.a;
			o.Specular = _Shininess;

			o.Emission *= _Opacity * rim;
			o.Alpha = _Opacity;
		}
		ENDCG
		
	}
	Fallback "Specular"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/SpecularTransparent.shader.meta
================================================
fileFormatVersion: 2
guid: 4270ab78ac4263e4dba328c5b4c6eafb
timeCreated: 1447334819
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Unlit.shader
================================================
Shader "KSP/Unlit"
{
	Properties 
	{
		_MainTex("_MainTex (RGB)", 2D) = "white" {}
		_Color("Color", Color) = (1,1,1,1)
		
		_Opacity("_Opacity", Range(0,1) ) = 1
		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		Tags { "RenderType"="Opaque" }
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 

		CGPROGRAM

		#pragma surface surf Unlit
		#pragma target 3.0

		sampler2D _MainTex;
		float4 _Color;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		inline half4 LightingUnlit (SurfaceOutput s, half3 lightDir, half atten)
		{
            half diff = max (0, dot (s.Normal, lightDir));

            half4 c;
            c.rgb = s.Albedo;
            c.a = s.Alpha;
            return c;
        }

        inline half4 LightingUnlit_PrePass (SurfaceOutput s, half4 light)
		{
            half4 c;
            c.rgb = s.Albedo;
            c.a = s.Alpha;
            return c;
        }

		struct Input
		{
			float2 uv_MainTex;
			float2 uv_Emissive;
			float3 viewDir;
		};

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;
			float3 normal = float3(0,0,1);

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = _Color.rgb * color.rgb;
			o.Emission = emission;
			o.Gloss = 0;
			o.Specular = 0;
			o.Normal = normal;

			o.Emission *= _Opacity;
			o.Alpha = _Opacity;
		}
		ENDCG
	}
	Fallback "Unlit/Texture"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/Unlit.shader.meta
================================================
fileFormatVersion: 2
guid: ea11f8443dca92f4f816a6cddd06b775
timeCreated: 1447334823
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/UnlitTransparent.shader
================================================
Shader "KSP/Alpha/Unlit Transparent"
{
	Properties 
	{
		_MainTex("MainTex (RGB Alpha(A))", 2D) = "white" {}
		_Color("Color", Color) = (1,1,1,1)
		
		_Opacity("_Opacity", Range(0,1) ) = 1
		_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
		_RimColor("_RimColor", Color) = (0,0,0,0)

		_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
		_BurnColor ("Burn Color", Color) = (1,1,1,1)
	}
	
	SubShader 
	{
		ZWrite On
		ZTest LEqual
		Blend SrcAlpha OneMinusSrcAlpha 
		Cull Off 

		CGPROGRAM

		#pragma surface surf Unlit alpha
		#pragma target 3.0

		sampler2D _MainTex;
		float4 _Color;

		float _Opacity;
		float _RimFalloff;
		float4 _RimColor;
		float4 _TemperatureColor;
		float4 _BurnColor;
		
		inline half4 LightingUnlit (SurfaceOutput s, half3 lightDir, half atten)
		{
            half diff = max (0, dot (s.Normal, lightDir));

            half4 c;
            c.rgb = s.Albedo;
            c.a = s.Alpha;
            return c;
        }

        inline half4 LightingUnlit_PrePass (SurfaceOutput s, half4 light)
		{
            half4 c;
            c.rgb = s.Albedo;
            c.a = s.Alpha;
            return c;
        }

        struct Input
		{
            float2 uv_MainTex;
			float3 viewDir;
        };

		void surf (Input IN, inout SurfaceOutput o)
		{
			float4 color = tex2D(_MainTex, (IN.uv_MainTex)) * _BurnColor;
			float alpha = _Color.a * color.a;
			float3 normal = float3(0,0,1);

			half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));

			float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
			emission += _TemperatureColor.rgb * _TemperatureColor.a;

			o.Albedo = _Color.rgb * color.rgb;
			o.Emission = emission * _Opacity;
			o.Alpha = _Color.a * color.a*_Opacity;
		}
		ENDCG
	}
	Fallback "Diffuse"
}

================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders/UnlitTransparent.shader.meta
================================================
fileFormatVersion: 2
guid: e4d5952eef9f9814c8dddd4e0da8347a
timeCreated: 1447334823
licenseType: Pro
ShaderImporter:
  defaultTextures: []
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore/Shaders.meta
================================================
fileFormatVersion: 2
guid: bfea133dc2cd936468fd26de9985455d
folderAsset: yes
timeCreated: 1447334764
licenseType: Pro
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/SquadCore.meta
================================================
fileFormatVersion: 2
guid: b82d597bbb1249f41a7ee011ea17c9e1
folderAsset: yes
timeCreated: 1478034312
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/XML/scan_ghost_bundle.xml
================================================


  
  
  
    
  
  
    unity_ghost
  


================================================
FILE: Unity/SCANsat/Assets/XML/scan_ghost_bundle.xml.meta
================================================
fileFormatVersion: 2
guid: bc1ceb5307f483d4c9c418e5277cd78d
timeCreated: 1482253168
licenseType: Free
TextScriptImporter:
  userData: 
  assetBundleName: scan_ghost
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/XML/scan_icons_bundle.xml
================================================


  
  
  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  
  


================================================
FILE: Unity/SCANsat/Assets/XML/scan_icons_bundle.xml.meta
================================================
fileFormatVersion: 2
guid: 1eafadcaef8908f47b21a552eea3ba0a
timeCreated: 1488557872
licenseType: Free
TextScriptImporter:
  userData: 
  assetBundleName: scan_icons
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/XML/scan_images_bundle.xml
================================================


  
  
  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  
  


================================================
FILE: Unity/SCANsat/Assets/XML/scan_images_bundle.xml.meta
================================================
fileFormatVersion: 2
guid: 8352fe9d461613147aeb2950364ed355
timeCreated: 1482356297
licenseType: Free
TextScriptImporter:
  userData: 
  assetBundleName: scan_images
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/XML/scan_prefabs_bundle.xml
================================================


  
  
  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  
  


================================================
FILE: Unity/SCANsat/Assets/XML/scan_prefabs_bundle.xml.meta
================================================
fileFormatVersion: 2
guid: f83e3baaed4ab8049a98bd8348e747af
timeCreated: 1488557874
licenseType: Free
TextScriptImporter:
  userData: 
  assetBundleName: scan_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/XML/scan_shaders_bundle.xml
================================================


  
  
  
    
    
  
  


================================================
FILE: Unity/SCANsat/Assets/XML/scan_shaders_bundle.xml.meta
================================================
fileFormatVersion: 2
guid: 5fae3d6c79b2ded45afef783fb188a38
timeCreated: 1488228420
licenseType: Free
TextScriptImporter:
  userData: 
  assetBundleName: scan_shaders
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/XML/scan_unity_skin_bundle.xml
================================================


  
  
  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  
  


================================================
FILE: Unity/SCANsat/Assets/XML/scan_unity_skin_bundle.xml.meta
================================================
fileFormatVersion: 2
guid: 0bd9c8e55199da2428b5f8ff155b05b4
timeCreated: 1488557875
licenseType: Free
TextScriptImporter:
  userData: 
  assetBundleName: scan_unity_skin
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/XML/scansat_prefabs_bundle.xml
================================================


  
  
  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  
  
    scan_images
    scan_shaders
  


================================================
FILE: Unity/SCANsat/Assets/XML/scansat_prefabs_bundle.xml.meta
================================================
fileFormatVersion: 2
guid: bb8f470fa9a094644a08f781e391e085
timeCreated: 1482253169
licenseType: Free
TextScriptImporter:
  userData: 
  assetBundleName: scansat_prefabs
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/XML/unity_ghost_bundle.xml
================================================


  
  
  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  
  


================================================
FILE: Unity/SCANsat/Assets/XML/unity_ghost_bundle.xml.meta
================================================
fileFormatVersion: 2
guid: ea47f33e5f86ab044bbc265933a54375
timeCreated: 1480699546
licenseType: Free
TextScriptImporter:
  userData: 
  assetBundleName: unity_ghost
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Assets/XML.meta
================================================
fileFormatVersion: 2
guid: 87454d73504bed9439b4ffa240a9d330
folderAsset: yes
timeCreated: 1480699546
licenseType: Free
DefaultImporter:
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Unity/SCANsat/Packages/manifest.json
================================================
{
  "dependencies": {
    "com.unity.collab-proxy": "1.2.16",
    "com.unity.ide.rider": "1.1.4",
    "com.unity.ide.vscode": "1.2.3",
    "com.unity.test-framework": "1.1.20",
    "com.unity.textmeshpro": "2.1.1",
    "com.unity.timeline": "1.2.17",
    "com.unity.ugui": "1.0.0",
    "com.unity.modules.ai": "1.0.0",
    "com.unity.modules.androidjni": "1.0.0",
    "com.unity.modules.animation": "1.0.0",
    "com.unity.modules.assetbundle": "1.0.0",
    "com.unity.modules.audio": "1.0.0",
    "com.unity.modules.cloth": "1.0.0",
    "com.unity.modules.director": "1.0.0",
    "com.unity.modules.imageconversion": "1.0.0",
    "com.unity.modules.imgui": "1.0.0",
    "com.unity.modules.jsonserialize": "1.0.0",
    "com.unity.modules.particlesystem": "1.0.0",
    "com.unity.modules.physics": "1.0.0",
    "com.unity.modules.physics2d": "1.0.0",
    "com.unity.modules.screencapture": "1.0.0",
    "com.unity.modules.terrain": "1.0.0",
    "com.unity.modules.terrainphysics": "1.0.0",
    "com.unity.modules.tilemap": "1.0.0",
    "com.unity.modules.ui": "1.0.0",
    "com.unity.modules.uielements": "1.0.0",
    "com.unity.modules.umbra": "1.0.0",
    "com.unity.modules.unityanalytics": "1.0.0",
    "com.unity.modules.unitywebrequest": "1.0.0",
    "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
    "com.unity.modules.unitywebrequestaudio": "1.0.0",
    "com.unity.modules.unitywebrequesttexture": "1.0.0",
    "com.unity.modules.unitywebrequestwww": "1.0.0",
    "com.unity.modules.vehicles": "1.0.0",
    "com.unity.modules.video": "1.0.0",
    "com.unity.modules.vr": "1.0.0",
    "com.unity.modules.wind": "1.0.0",
    "com.unity.modules.xr": "1.0.0"
  }
}


================================================
FILE: Unity/SCANsat/Packages/packages-lock.json
================================================
{
  "dependencies": {
    "com.unity.collab-proxy": {
      "version": "1.2.16",
      "depth": 0,
      "source": "registry",
      "dependencies": {},
      "url": "https://packages.unity.com"
    },
    "com.unity.ext.nunit": {
      "version": "1.0.6",
      "depth": 1,
      "source": "registry",
      "dependencies": {},
      "url": "https://packages.unity.com"
    },
    "com.unity.ide.rider": {
      "version": "1.1.4",
      "depth": 0,
      "source": "registry",
      "dependencies": {
        "com.unity.test-framework": "1.1.1"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.ide.vscode": {
      "version": "1.2.3",
      "depth": 0,
      "source": "registry",
      "dependencies": {},
      "url": "https://packages.unity.com"
    },
    "com.unity.test-framework": {
      "version": "1.1.20",
      "depth": 0,
      "source": "registry",
      "dependencies": {
        "com.unity.ext.nunit": "1.0.6",
        "com.unity.modules.imgui": "1.0.0",
        "com.unity.modules.jsonserialize": "1.0.0"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.textmeshpro": {
      "version": "2.1.1",
      "depth": 0,
      "source": "registry",
      "dependencies": {
        "com.unity.ugui": "1.0.0"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.timeline": {
      "version": "1.2.17",
      "depth": 0,
      "source": "registry",
      "dependencies": {},
      "url": "https://packages.unity.com"
    },
    "com.unity.ugui": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.ui": "1.0.0",
        "com.unity.modules.imgui": "1.0.0"
      }
    },
    "com.unity.modules.ai": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.androidjni": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.animation": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.assetbundle": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.audio": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.cloth": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.physics": "1.0.0"
      }
    },
    "com.unity.modules.director": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.audio": "1.0.0",
        "com.unity.modules.animation": "1.0.0"
      }
    },
    "com.unity.modules.imageconversion": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.imgui": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.jsonserialize": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.particlesystem": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.physics": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.physics2d": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.screencapture": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.imageconversion": "1.0.0"
      }
    },
    "com.unity.modules.subsystems": {
      "version": "1.0.0",
      "depth": 1,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.jsonserialize": "1.0.0"
      }
    },
    "com.unity.modules.terrain": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.terrainphysics": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.physics": "1.0.0",
        "com.unity.modules.terrain": "1.0.0"
      }
    },
    "com.unity.modules.tilemap": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.physics2d": "1.0.0"
      }
    },
    "com.unity.modules.ui": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.uielements": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.imgui": "1.0.0",
        "com.unity.modules.jsonserialize": "1.0.0"
      }
    },
    "com.unity.modules.umbra": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.unityanalytics": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.unitywebrequest": "1.0.0",
        "com.unity.modules.jsonserialize": "1.0.0"
      }
    },
    "com.unity.modules.unitywebrequest": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.unitywebrequestassetbundle": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.assetbundle": "1.0.0",
        "com.unity.modules.unitywebrequest": "1.0.0"
      }
    },
    "com.unity.modules.unitywebrequestaudio": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.unitywebrequest": "1.0.0",
        "com.unity.modules.audio": "1.0.0"
      }
    },
    "com.unity.modules.unitywebrequesttexture": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.unitywebrequest": "1.0.0",
        "com.unity.modules.imageconversion": "1.0.0"
      }
    },
    "com.unity.modules.unitywebrequestwww": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.unitywebrequest": "1.0.0",
        "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
        "com.unity.modules.unitywebrequestaudio": "1.0.0",
        "com.unity.modules.audio": "1.0.0",
        "com.unity.modules.assetbundle": "1.0.0",
        "com.unity.modules.imageconversion": "1.0.0"
      }
    },
    "com.unity.modules.vehicles": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.physics": "1.0.0"
      }
    },
    "com.unity.modules.video": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.audio": "1.0.0",
        "com.unity.modules.ui": "1.0.0",
        "com.unity.modules.unitywebrequest": "1.0.0"
      }
    },
    "com.unity.modules.vr": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.jsonserialize": "1.0.0",
        "com.unity.modules.physics": "1.0.0",
        "com.unity.modules.xr": "1.0.0"
      }
    },
    "com.unity.modules.wind": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.xr": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.physics": "1.0.0",
        "com.unity.modules.jsonserialize": "1.0.0",
        "com.unity.modules.subsystems": "1.0.0"
      }
    }
  }
}


================================================
FILE: Unity/SCANsat/ProjectSettings/PackageManagerSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
  m_ObjectHideFlags: 61
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
  m_Name: 
  m_EditorClassIdentifier: 
  m_ScopedRegistriesSettingsExpanded: 1
  oneTimeWarningShown: 0
  m_Registries:
  - m_Id: main
    m_Name: 
    m_Url: https://packages.unity.com
    m_Scopes: []
    m_IsDefault: 1
  m_UserSelectedRegistryName: 
  m_UserAddingNewScopedRegistry: 0
  m_RegistryInfoDraft:
    m_ErrorMessage: 
    m_Original:
      m_Id: 
      m_Name: 
      m_Url: 
      m_Scopes: []
      m_IsDefault: 0
    m_Modified: 0
    m_Name: 
    m_Url: 
    m_Scopes:
    - 
    m_SelectedScopeIndex: 0


================================================
FILE: Unity/SCANsat/ProjectSettings/ProjectVersion.txt
================================================
m_EditorVersion: 2019.4.18f1
m_EditorVersionWithRevision: 2019.4.18f1 (3310a4d4f880)


================================================
FILE: Unity/SCANsat/ProjectSettings/XRSettings.asset
================================================
{
    "m_SettingKeys": [
        "VR Device Disabled",
        "VR Device User Alert"
    ],
    "m_SettingValues": [
        "False",
        "False"
    ]
}