├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ └── bug_report.md └── workflows │ ├── build.yml │ ├── create-release.yml │ └── publish-to-spacedock.yml ├── .gitignore ├── .gitmodules ├── CHANGELOG.md ├── FormatterTests ├── FormatterTests.cs ├── FormatterTests.csproj └── Properties │ └── AssemblyInfo.cs ├── GameData └── JSI │ ├── Agencies │ ├── Agents.cfg │ ├── JSI.png │ └── JSI_scaled.truecolor │ ├── RPMPodPatches │ ├── BasicMFD │ │ ├── MFD40x20.cfg │ │ ├── PlaneHUD.cfg │ │ ├── graphset.cfg │ │ ├── p0_home40x20.txt │ │ ├── p0_test.txt │ │ ├── p1_landing40x20.txt │ │ ├── p2_orbit40x20.txt │ │ ├── p2_orbit_graphical.txt │ │ ├── p3_target40x20.txt │ │ ├── p4_shipinfo40x20.txt │ │ ├── p5_crew40x20.txt │ │ ├── p6_resources40x20.txt │ │ ├── pa_HUDPFD.txt │ │ ├── pa_PFD.txt │ │ └── pb_graphs.txt │ ├── PatchesMod │ │ ├── DE_mk1pod_IVA.cfg │ │ ├── kp0110-pod-patch.cfg │ │ ├── kp0110-remade-internal.cfg │ │ ├── orbital-orb-patch.cfg │ │ └── orbital-orb-remade-internal.cfg │ └── PatchesStock │ │ ├── crew-cabin-patch.cfg │ │ ├── cupola-patch.cfg │ │ ├── cupola-remade-internal.cfg │ │ ├── mk1-inline-patch.nocfg │ │ ├── mk1-inline-remade-internal.nocfg │ │ ├── mk1-patch.cfg │ │ ├── mk1-remade-internal.cfg │ │ ├── mk12pod-patch.cfg │ │ ├── mk12pod-remade-internal.cfg │ │ ├── mk1cockpit-patch.cfg │ │ ├── mk1cockpit-remade-internal.cfg │ │ ├── mk1lander-remade-internal.cfg │ │ ├── mk1landercan-patch.cfg │ │ ├── mk2-spp-cockpits.cfg │ │ ├── mk2landercan-patch.cfg │ │ ├── mk2landercan-remade-internal.cfg │ │ └── mk3cockpit-patch.cfg │ └── RasterPropMonitor │ ├── Compatibility │ ├── AviationCockpits.cfg │ ├── B9Aerospace.cfg │ ├── DSEV.cfg │ ├── DeepFreeze.cfg │ ├── Endurance.cfg │ ├── Heisenberg.cfg │ ├── Hullcam.cfg │ ├── NMB.cfg │ ├── OPT.cfg │ ├── SSPX.cfg │ ├── ThrustReversers.cfg │ └── modules.cfg │ ├── Library │ ├── Components │ │ ├── HUD │ │ │ ├── heading.dds │ │ │ ├── hud-overlay.dds │ │ │ ├── ladder.dds │ │ │ ├── leftscale.dds │ │ │ ├── model.mu │ │ │ ├── planeHUDdiffuse.png │ │ │ ├── rightscale.dds │ │ │ └── screen.png │ │ ├── MFD40x20v2 │ │ │ ├── MFD40x15v2-Diffuse.dds │ │ │ ├── MFD40x15v2-Emissive.dds │ │ │ ├── model.mu │ │ │ ├── screen-emissive.png │ │ │ └── screen.png │ │ └── NavBall │ │ │ ├── HDG.png │ │ │ ├── NavBall.mu │ │ │ ├── NavBall000.dds │ │ │ └── StaticMask.dds │ ├── Fonts │ │ ├── baseFont.truecolor │ │ ├── extraFont1.truecolor │ │ ├── fontDefinition.txt │ │ └── hudfont.truecolor │ ├── Parts │ │ └── ExternalCameraPart │ │ │ ├── ExternalCameraDiffuse.png │ │ │ ├── external-camera-v2.cfg │ │ │ ├── external-camera.cfg │ │ │ └── external-camera.restockwhitelist │ ├── Props │ │ ├── ASET │ │ │ └── JSIMainCompUnit.cfg │ │ ├── CockpitHandle │ │ │ ├── OpenHandle.mu │ │ │ ├── OpenHandleDiffuse.dds │ │ │ └── eva-hatch.cfg │ │ ├── IndicatorPanelReplacement │ │ │ ├── model000.dds │ │ │ ├── model001.dds │ │ │ └── prop.cfg │ │ ├── InternalAirlock │ │ │ ├── InternalAirLock.mu │ │ │ ├── InternalAirLockDiffuse.dds │ │ │ └── eva-hatch-with-model.cfg │ │ ├── InternalFlagPlate │ │ │ ├── FlagPlate.mu │ │ │ ├── FlagPlate000.png │ │ │ └── prop.cfg │ │ ├── InternalHatch │ │ │ ├── CubeCollider.mu │ │ │ └── eva-hatch.cfg │ │ ├── SimpleProps │ │ │ ├── ActionGroupLabelledButtons.cfg │ │ │ ├── AxisIndicator.cfg │ │ │ ├── Blinkenlichten.cfg │ │ │ ├── JSISwitchable.cfg │ │ │ ├── SASModeButtons.cfg │ │ │ ├── SquareButtons.cfg │ │ │ └── TrimmerKnobs.cfg │ │ └── SwitchWCover │ │ │ ├── SwitchIcons.tga │ │ │ ├── SwitchWCover.mu │ │ │ ├── Switch_w_cover_Diff.dds │ │ │ └── mechSwitch.cfg │ ├── Sounds │ │ └── buttonbeep.ogg │ └── Textures │ │ ├── bg01.png │ │ ├── graphgrid.png │ │ ├── noscansat.png │ │ ├── nosignal.png │ │ ├── scaleLabels.png │ │ └── scalebar.png │ ├── Patches │ └── squad-pitch-bounds.cfg │ ├── Plugins │ ├── 3rdPartyLicenses │ │ ├── digital-7-readme.txt │ │ └── repetition-scrolling-ReadMe.txt │ ├── reduce-iva-cpu-usage.cfg │ └── rpm-config.cfg │ ├── PropBatching.cfg │ ├── RasterPropMonitor.version │ ├── RasterPropMonitor.version.versiontemplate │ ├── rasterpropmonitor-font.assetbundle │ └── rasterpropmonitor-shaders.assetbundle ├── LICENSE.md ├── MechJebRPM ├── MechJebRPM.cs ├── MechJebRPM.csproj ├── MechJebRPMButtons.cs └── Properties │ └── AssemblyInfo.cs ├── README.md ├── RasterPropMonitor.sln ├── RasterPropMonitor ├── .editorconfig ├── Auxiliary modules │ ├── InternalCameraTargetHelper.cs │ ├── JSIActionGroupSwitch.cs │ ├── JSICallbackAnimator.cs │ ├── JSIExternalCameraSelector.cs │ ├── JSIFlashModule.cs │ ├── JSIInternalBackgroundNoise.cs │ ├── JSIInternalEVAHatch.cs │ ├── JSIInternalFlagDecal.cs │ ├── JSILabel.cs │ ├── JSINavBall.cs │ ├── JSINumericInput.cs │ ├── JSIPropIDFinder.cs │ ├── JSIPropTextureShift.cs │ ├── JSIRadar.cs │ ├── JSISelectivelyVisibleProp.cs │ ├── JSISetInternalCameraFOV.cs │ ├── JSISwitchableVariableLabel.cs │ ├── JSIThrustReverser.cs │ ├── JSIVariableAnimator.cs │ ├── JSIVariableLabel.cs │ └── PropBatcher.cs ├── Core │ ├── AeroExtensions.cs │ ├── ButtonHandler.cs │ ├── CelestialBodyExtensions.cs │ ├── ConfigNodeHolder.cs │ ├── CustomVariable.cs │ ├── DefaultableDictionary.cs │ ├── DynamicMethodDelegateFactory.cs │ ├── FlyingCamera.cs │ ├── IJSIModule.cs │ ├── JSITextMesh.cs │ ├── JSIVesselRecovery.cs │ ├── MappedVariable.cs │ ├── MathExtensions.cs │ ├── MathVariable.cs │ ├── MonitorPage.cs │ ├── OrbitExtensions.cs │ ├── PersistentVariableCollection.cs │ ├── Protractor.cs │ ├── RPMCEvaluators.cs │ ├── RPMCPersistence.cs │ ├── RPMCTriggeredEvent.cs │ ├── RPMGlobals.cs │ ├── RPMShaderLoader.cs │ ├── RPMVCEvaluators.cs │ ├── RPMVCPerModule.cs │ ├── RPMVCVariableToObject.cs │ ├── RPMVesselComputer.cs │ ├── RasterPropMonitor.cs │ ├── RasterPropMonitorComputer.cs │ ├── ResourceDataStorage.cs │ ├── SIFormatter.cs │ ├── SelectVariable.cs │ ├── StringProcessor.cs │ ├── TextMenu.cs │ ├── TextRenderer.cs │ ├── UtilityFunctions.cs │ ├── VariableCollection.cs │ ├── VariableHandler.cs │ ├── VariableOrNumber.cs │ └── VisibilityEnabler.cs ├── Handlers │ ├── JSIChatterer.cs │ ├── JSIEngine.cs │ ├── JSIFAR.cs │ ├── JSIFlightLog.cs │ ├── JSIGraphingBackground.cs │ ├── JSIHeadsUpDisplay.cs │ ├── JSIInternalRPMButtons.cs │ ├── JSIKAC.cs │ ├── JSIMechJeb.cs │ ├── JSIOdometer.cs │ ├── JSIOrbitDisplay.cs │ ├── JSIParachute.cs │ ├── JSIPilotAssistant.cs │ ├── JSIPrimaryFlightDisplay.cs │ ├── JSISASMenu.cs │ ├── JSIScienceDisplay.cs │ ├── JSISteerableCamera.cs │ ├── JSITargetMenu.cs │ ├── JSIVariableGraph.cs │ ├── JSIVariablePageTextSwitcher.cs │ ├── KACWrapper.cs │ ├── MechJebRPM.cs │ └── SCANsat.cs ├── Properties │ └── AssemblyInfo.cs ├── RasterPropMonitor.csproj └── packages.config ├── SCANsatRPM ├── JSISCANsatRPM.cs ├── Properties │ └── AssemblyInfo.cs ├── README.md └── SCANsatRPM.csproj ├── Shaders ├── .gitignore ├── Assets │ ├── Editor │ │ └── AssetBundleCompiler.cs │ └── Shaders │ │ ├── RPM-CroppedDisplayShader.shader │ │ ├── RPM-DisplayShader.shader │ │ ├── RPM-FontShader.shader │ │ ├── RPM-JSILabel.shader │ │ ├── RPM-blur.shader │ │ ├── RPM-grayscale.shader │ │ ├── RPM-greenscale.shader │ │ └── RPM-noise.shader ├── Packages │ ├── manifest.json │ └── packages-lock.json └── ProjectSettings │ ├── AudioManager.asset │ ├── ClusterInputManager.asset │ ├── DynamicsManager.asset │ ├── EditorBuildSettings.asset │ ├── EditorSettings.asset │ ├── GraphicsSettings.asset │ ├── InputManager.asset │ ├── NavMeshAreas.asset │ ├── PackageManagerSettings.asset │ ├── Physics2DSettings.asset │ ├── PresetManager.asset │ ├── ProjectSettings.asset │ ├── ProjectVersion.txt │ ├── QualitySettings.asset │ ├── TagManager.asset │ ├── TimeManager.asset │ ├── UnityConnectSettings.asset │ ├── VFXManager.asset │ └── XRSettings.asset ├── SharedAssemblyInfo.cs └── SharedAssemblyInfo.cs.versiontemplate /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Report something that isn't working correctly 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **KSP.log file** 14 | ALL BUG REPORTS MUST INCLUDE A KSP.LOG FILE 15 | 16 | **To Reproduce** 17 | Steps to reproduce the behavior: 18 | 1. Go to '...' 19 | 2. Click on '....' 20 | 3. Scroll down to '....' 21 | 4. See error 22 | 23 | **Expected behavior** 24 | A clear and concise description of what you expected to happen. 25 | 26 | **Screenshots** 27 | If applicable, add screenshots to help explain your problem. 28 | 29 | **Desktop (please complete the following information):** 30 | - OS: [e.g. Windows, Linux, Mac] 31 | 32 | **Additional context** 33 | Add any other context about the problem here. 34 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | paths: 7 | - '**/*.cs' 8 | pull_request: 9 | paths: 10 | - '**/*.cs' 11 | workflow_dispatch: 12 | workflow_call: 13 | 14 | jobs: 15 | build: 16 | uses: KSPModdingLibs/KSPBuildTools/.github/workflows/build.yml@main 17 | -------------------------------------------------------------------------------- /.github/workflows/create-release.yml: -------------------------------------------------------------------------------- 1 | name: create-release 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | version-string: 7 | type: string 8 | required: true 9 | 10 | jobs: 11 | create-release: 12 | uses: KSPModdingLibs/KSPBuildTools/.github/workflows/create-release.yml@main 13 | with: 14 | version-string: ${{ inputs.version-string }} -------------------------------------------------------------------------------- /.github/workflows/publish-to-spacedock.yml: -------------------------------------------------------------------------------- 1 | name: publish-to-spacedock 2 | 3 | on: 4 | release: 5 | types: [released] 6 | 7 | jobs: 8 | publish-to-spacedock: 9 | uses: KSPModdingLibs/KSPBuildTools/.github/workflows/publish-to-spacedock.yml@main 10 | with: 11 | spacedock-username: ${{ vars.SPACEDOCK_USERNAME }} 12 | mod-id: ${{ vars.SPACEDOCK_MOD_ID }} 13 | secrets: 14 | spacedock-password: ${{ secrets.SPACEDOCK_PASSWORD }} 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Why isn't this ignored anyway?.. 2 | *.userprefs 3 | 4 | ################# 5 | ## Eclipse 6 | ################# 7 | 8 | *.pydevproject 9 | .project 10 | .metadata 11 | bin/ 12 | tmp/ 13 | *.tmp 14 | *.bak 15 | *.swp 16 | *~.nib 17 | local.properties 18 | .classpath 19 | .settings/ 20 | .loadpath 21 | 22 | # External tool builders 23 | .externalToolBuilders/ 24 | 25 | # Locally stored "Eclipse launch configurations" 26 | *.launch 27 | 28 | # CDT-specific 29 | .cproject 30 | 31 | # PDT-specific 32 | .buildpath 33 | 34 | 35 | ################# 36 | ## Visual Studio 37 | ################# 38 | 39 | ## Ignore Visual Studio temporary files, build results, and 40 | ## files generated by popular Visual Studio add-ons. 41 | 42 | # User-specific files 43 | *.suo 44 | *.user 45 | *.sln.docstates 46 | 47 | # Build results 48 | 49 | [Dd]ebug/ 50 | [Rr]elease/ 51 | x64/ 52 | build/ 53 | [Bb]in/ 54 | [Oo]bj/ 55 | 56 | # MSTest test Results 57 | [Tt]est[Rr]esult*/ 58 | [Bb]uild[Ll]og.* 59 | 60 | *_i.c 61 | *_p.c 62 | *.ilk 63 | *.meta 64 | *.obj 65 | *.pch 66 | *.pdb 67 | *.pgc 68 | *.pgd 69 | *.rsp 70 | *.sbr 71 | *.tlb 72 | *.tli 73 | *.tlh 74 | *.tmp 75 | *.tmp_proj 76 | *.log 77 | *.vspscc 78 | *.vssscc 79 | .builds 80 | *.pidb 81 | *.log 82 | *.scc 83 | 84 | # Visual C++ cache files 85 | ipch/ 86 | *.aps 87 | *.ncb 88 | *.opensdf 89 | *.sdf 90 | *.cachefile 91 | 92 | # Visual Studio profiler 93 | *.psess 94 | *.vsp 95 | *.vspx 96 | 97 | # Guidance Automation Toolkit 98 | *.gpState 99 | 100 | # ReSharper is a .NET coding add-in 101 | _ReSharper*/ 102 | *.[Rr]e[Ss]harper 103 | 104 | # TeamCity is a build add-in 105 | _TeamCity* 106 | 107 | # DotCover is a Code Coverage Tool 108 | *.dotCover 109 | 110 | # NCrunch 111 | *.ncrunch* 112 | .*crunch*.local.xml 113 | 114 | # Installshield output folder 115 | [Ee]xpress/ 116 | 117 | # DocProject is a documentation generator add-in 118 | DocProject/buildhelp/ 119 | DocProject/Help/*.HxT 120 | DocProject/Help/*.HxC 121 | DocProject/Help/*.hhc 122 | DocProject/Help/*.hhk 123 | DocProject/Help/*.hhp 124 | DocProject/Help/Html2 125 | DocProject/Help/html 126 | 127 | # Click-Once directory 128 | publish/ 129 | 130 | # Publish Web Output 131 | *.Publish.xml 132 | *.pubxml 133 | 134 | # NuGet Packages Directory 135 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 136 | #packages/ 137 | 138 | # Windows Azure Build Output 139 | csx 140 | *.build.csdef 141 | 142 | # Windows Store app package directory 143 | AppPackages/ 144 | 145 | # Others 146 | sql/ 147 | *.Cache 148 | ClientBin/ 149 | [Ss]tyle[Cc]op.* 150 | ~$* 151 | *~ 152 | *.dbmdl 153 | *.[Pp]ublish.xml 154 | *.pfx 155 | *.publishsettings 156 | 157 | # RIA/Silverlight projects 158 | Generated_Code/ 159 | 160 | # Backup & report files from converting an old project file to a newer 161 | # Visual Studio version. Backup files are not needed, because we have git ;-) 162 | _UpgradeReport_Files/ 163 | Backup*/ 164 | UpgradeLog*.XML 165 | UpgradeLog*.htm 166 | 167 | # SQL Server files 168 | App_Data/*.mdf 169 | App_Data/*.ldf 170 | 171 | ############# 172 | ## Windows detritus 173 | ############# 174 | 175 | # Windows image file caches 176 | Thumbs.db 177 | ehthumbs.db 178 | 179 | # Folder config file 180 | Desktop.ini 181 | 182 | # Recycle Bin used on file shares 183 | $RECYCLE.BIN/ 184 | 185 | # Mac crap 186 | .DS_Store 187 | 188 | 189 | ############# 190 | ## Python 191 | ############# 192 | 193 | *.py[co] 194 | 195 | # Packages 196 | *.egg 197 | *.egg-info 198 | dist/ 199 | build/ 200 | eggs/ 201 | parts/ 202 | # Mihara: Well damn. GameData contains Parts... 203 | !GameData/**/* 204 | var/ 205 | sdist/ 206 | develop-eggs/ 207 | .installed.cfg 208 | 209 | # Installer logs 210 | pip-log.txt 211 | 212 | # Unit test / coverage reports 213 | .coverage 214 | .tox 215 | 216 | #Translations 217 | *.mo 218 | 219 | #Mr Developer 220 | .mr.developer.cfg 221 | GameData/JSI/RasterPropMonitor/Plugins/RasterPropMonitor.dll 222 | GameData/JSI/RasterPropMonitor/Plugins/MechJebRPM.dll 223 | dev_README.txt 224 | GameData/ModuleManager.*.dll 225 | GameData/JSI/JSIAdvTransparentPods/Plugins/JSIAdvTransparentPods.dll 226 | .vs 227 | /ksp 228 | /GameData/JSI/PartUtilities/Plugins 229 | /GameData/JSI/RPMBundles 230 | /GameData/JSI/README.md 231 | /GameData/JSI/MiniAVC.xml 232 | /GameData/JSI/MiniAVC.dll 233 | /GameData/JSI/LICENSE.md 234 | /GameData/JSI/JSIPartUtilities.version 235 | /GameData/JSI/RasterPropMonitor/Library/Parts/@thumbs 236 | /GameData/JSI/RasterPropMonitor/Plugins/RasterPropMonitor.pdb 237 | /packages/ 238 | /Releases -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "KSPBuildTools"] 2 | path = KSPBuildTools 3 | url = https://github.com/KSPModdingLibs/KSPBuildTools.git 4 | -------------------------------------------------------------------------------- /FormatterTests/FormatterTests.cs: -------------------------------------------------------------------------------- 1 | /* This is a crude imitation of a formal testing methodology, 2 | * but it might suffice. 3 | */ 4 | using System; 5 | using JSI; 6 | 7 | namespace FormatterTests 8 | { 9 | class MainClass 10 | { 11 | private static readonly SIFormatProvider fp = new SIFormatProvider(); 12 | 13 | // Analysis disable once UnusedParameter 14 | public static void Main(string[] args) 15 | { 16 | 17 | double[] bars = { 18 | 1d, 19 | -0.0123, 20 | 4923, 21 | 58794.2435, 22 | 0, 23 | 99999.9999999999, 24 | double.NaN, 25 | double.PositiveInfinity, 26 | double.NegativeInfinity, 27 | 100019.9999, 28 | 0.2, 29 | }; 30 | 31 | foreach (double value in bars) { 32 | Console.WriteLine(string.Format(fp, "BAR,10,100,10000 :>{0:BAR,10,100,10000}<| {0}", value)); 33 | Console.WriteLine(string.Format(fp, "BAR,-10,100,10000 :>{0:BAR,-10,100,10000}<| {0}", value)); 34 | Console.WriteLine(string.Format(fp, "BAR= |,10,100,10000 :>{0:BAR= |,10,100,10000}<| {0}", value)); 35 | Console.WriteLine(string.Format(fp, "BAR= |,-10,100,10000:>{0:BAR= |,-10,100,10000}<| {0}", value)); 36 | Console.WriteLine(string.Format(fp, "BAR~,10,100,10000 :>{0:BAR~,10,100,10000}<| {0}", value)); 37 | Console.WriteLine(string.Format(fp, "BAR ~,10,100,10000 :>{0:BAR ~,10,100,10000}<| {0}", value)); 38 | Console.WriteLine(string.Format(fp, "BAR= ,10,0,1 :>{0:BAR= ,10,0,1}<| {0}", value)); 39 | Console.WriteLine(string.Format(fp, "BAR= ,10 :>{0:BAR= ,10}<| {0}", value)); 40 | Console.WriteLine(string.Format(fp, "BAR,10 :>{0:BAR,10}<| {0}", value)); 41 | } 42 | Console.WriteLine("BAR tests done, press any key to start SIP tests"); 43 | Console.ReadKey(); 44 | Console.WriteLine(); 45 | 46 | 47 | double[] values = { 48 | 1d, 49 | 1000000d, 50 | 0.1234567, 51 | 123456.7, 52 | 1234567890.3, 53 | 11234567890.2, 54 | 90148.3, 55 | -123.45, 56 | -123456.7, 57 | -0.0001234, 58 | 0.0123, 59 | -0.0123, 60 | 0, 61 | double.NaN, 62 | double.PositiveInfinity, 63 | double.NegativeInfinity, 64 | 100019.9999, 65 | }; 66 | 67 | foreach (double value in values) { 68 | // If the formatter is working correctly, all of the '|' 69 | // characters will line up under the 'v'. 70 | Console.WriteLine("\nUnformatted: {0}\nAlignment Mark v", value); 71 | Console.WriteLine(string.Format(fp, "SIP_6 :>{0:SIP_6}< |", value)); 72 | Console.WriteLine(string.Format(fp, "SIP_6;\"Q\" :>{0:SIP_6;\"Q\"}< |", value)); 73 | Console.WriteLine(string.Format(fp, "SIP_6;\"Q\";0:>{0:SIP_6;\"Q\";0}< |", value)); 74 | Console.WriteLine(string.Format(fp, "SIP_06 :>{0:SIP_06}< |", value)); 75 | Console.WriteLine(string.Format(fp, "SIP_6.3 :>{0:SIP_6.3}< |", value)); 76 | Console.WriteLine(string.Format(fp, "SIP_6.2 :>{0:SIP_6.2}< |", value)); 77 | Console.WriteLine(string.Format(fp, "SIP6 :>{0:SIP6}< |", value)); 78 | Console.WriteLine(string.Format(fp, "SIP6.3 :>{0:SIP6.3}< |", value)); 79 | Console.WriteLine(string.Format(fp, "SIP_9 :>{0:SIP_9}<|", value)); 80 | Console.WriteLine(string.Format(fp, "SIP_9.3 :>{0:SIP_9.3}<|", value)); 81 | Console.WriteLine(string.Format(fp, "SIP9.3 :>{0:SIP9.3}<|", value)); 82 | Console.WriteLine(string.Format(fp, "SIP09.3 :>{0:SIP09.3}<|", value)); 83 | Console.WriteLine(string.Format(fp, "SIP_10 :>{0:SIP_10}|", value)); 84 | } 85 | Console.WriteLine("SIP tests done, press any key to start DMS tests"); 86 | Console.ReadKey(); 87 | Console.WriteLine(); 88 | 89 | double[] degrees = { 90 | 123.45, 91 | -123.45, 92 | 1.234, 93 | 0.1234, 94 | 0, 95 | double.NaN, 96 | double.PositiveInfinity, 97 | double.NegativeInfinity, 98 | }; 99 | 100 | 101 | foreach (double value in degrees) { 102 | Console.WriteLine(string.Format(fp,"DMSd°m's\": {0:DMSd°m's\"} ({0})",value)); 103 | Console.WriteLine(string.Format(fp,"DMSdd+m+s+E: {0:DMSdd+m+s+E} ({0})",value)); 104 | Console.WriteLine(string.Format(fp,"DMSdd+mm+ss+E: {0:DMSdd+mm+ss+E} ({0})",value)); 105 | Console.WriteLine(string.Format(fp,"DMSddNm+s+: {0:DMSddNm+s+} ({0})",value)); 106 | // The string as it was previously returned is... 107 | Console.WriteLine(string.Format(fp,"DMSd+ mm+ ss+ N: {0:DMSd+ mm+ ss+ N} ({0})",value)); 108 | } 109 | Console.WriteLine("DMS tests done, press any key to start KDT tests"); 110 | Console.ReadKey(); 111 | Console.WriteLine(); 112 | 113 | double[] seconds = { 114 | 0, 115 | 12, 116 | -12, 117 | 1234, 118 | -1234, 119 | 123456, 120 | -123456, 121 | 12345.6789, 122 | -12345.6789, 123 | 12345.95, 124 | -12345.95, 125 | double.NaN, 126 | double.PositiveInfinity, 127 | double.NegativeInfinity, 128 | }; 129 | 130 | foreach (double value in seconds) { 131 | // The full time format is... 132 | Console.WriteLine(string.Format(fp,"KDT+y:ddd:hh:mm:ss >{0:KDT+y:ddd:hh:mm:ss} ({0})",value)); 133 | Console.WriteLine(string.Format(fp,"KDT-y:ddd:hh:mm:ss >{0:KDT-y:ddd:hh:mm:ss} ({0})",value)); 134 | Console.WriteLine(string.Format(fp,"KDTy:d:h:m:s >{0:KDTy:d:h:m:s} ({0})",value)); 135 | Console.WriteLine(string.Format(fp,"KDTS.f >{0:KDTS.f} ({0})",value)); 136 | Console.WriteLine(string.Format(fp,"KDTS.fff >{0:KDTS.fff} ({0})",value)); 137 | } 138 | 139 | 140 | } 141 | } 142 | } 143 | -------------------------------------------------------------------------------- /FormatterTests/FormatterTests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | AnyCPU 6 | 8.0.30703 7 | 2.0 8 | {7FF5F186-3C9C-4E75-B71A-B0C248365D75} 9 | Exe 10 | FormatterTests 11 | FormatterTests 12 | 0.19.4 13 | True 14 | 65001 15 | v3.5 16 | 17 | 18 | true 19 | full 20 | false 21 | ..\bin\Debug 22 | DEBUG; 23 | prompt 24 | 4 25 | true 26 | 4 27 | 28 | 29 | true 30 | ..\bin\Release 31 | prompt 32 | 4 33 | true 34 | 4 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | Properties\SharedAssemblyInfo.cs 44 | 45 | 46 | 47 | 48 | 49 | {F19C7AB4-50C2-4378-9673-CC039CA12E10} 50 | RasterPropMonitor 51 | 52 | 53 | -------------------------------------------------------------------------------- /FormatterTests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | // Information about this assembly is defined by the following attributes. 5 | // Change them to the values specific to your project. 6 | [assembly: AssemblyTitle("FormatterTests")] 7 | [assembly: AssemblyDescription("")] -------------------------------------------------------------------------------- /GameData/JSI/Agencies/Agents.cfg: -------------------------------------------------------------------------------- 1 | AGENT 2 | { 3 | name = Junk Systems Inc. 4 | title = Junk Systems Inc. 5 | 6 | description = Junk Systems Inc. is a purveyor of advanced flight instruments, used by many other companies to outfit their equipment. Rumours that these have mostly been assembled from components found in the trash are vehemently denied these days, even though the word "junk" remains within the corporation's very name. 7 | 8 | mentality = EasyGoing 0.25 9 | mentality = Pioneer 10 | mentality = Scientific 11 | 12 | logoURL = JSI/Agencies/JSI 13 | logoScaledURL = JSI/Agencies/JSI_scaled 14 | } 15 | -------------------------------------------------------------------------------- /GameData/JSI/Agencies/JSI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/Agencies/JSI.png -------------------------------------------------------------------------------- /GameData/JSI/Agencies/JSI_scaled.truecolor: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/Agencies/JSI_scaled.truecolor -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/PlaneHUD.cfg: -------------------------------------------------------------------------------- 1 | 2 | PROP 3 | { 4 | name = RasterPropMonitorBasicHUD 5 | 6 | MODEL 7 | { 8 | model = JSI/RasterPropMonitor/Library/Components/HUD/model 9 | texture = planeHUDdiffuse,JSI/RasterPropMonitor/Library/Components/HUD/planeHUDdiffuse 10 | texture = screen,JSI/RasterPropMonitor/Library/Components/HUD/screen 11 | } 12 | 13 | MODULE 14 | { 15 | name = RasterPropMonitor 16 | screenTransform = HUDScreenObj 17 | fontTransform = JSI/RasterPropMonitor/Library/Fonts/hudfont 18 | textureLayerID = _MainTex // Name of texture layer to work with on the screen surface. 19 | screenWidth = 40 // Screen width in letters. 20 | screenHeight = 20 // Screen height in lines. 21 | screenPixelWidth = 640 // Width of the generated screen texture in pixels. 22 | screenPixelHeight = 640 // Height of the generated screen texture in pixels. 23 | fontLetterWidth = 16 // Width of a font character. 24 | fontLetterHeight = 32 // Height of a font character. 25 | cameraAspect = 1.0 26 | fontDefinition = JSI/RasterPropMonitor/Library/Fonts/fontDefinition.txt 27 | 28 | extraFont = JSI/RasterPropMonitor/Library/Fonts/hudfont 29 | 30 | refreshDrawRate = 2 31 | refreshTextRate = 5 32 | refreshDataRate = 20 33 | 34 | buttonClickSound = Squad/Sounds/sound_click_latch 35 | buttonClickVolume = 0.6 36 | 37 | noSignalTextureURL = JSI/RasterPropMonitor/Library/textures/nosignal 38 | 39 | PAGE 40 | { 41 | name = aviapfd 42 | default = yes 43 | text = JSI/RPMPodPatches/BasicMFD/pa_HUDPFD.txt 44 | defaultFontTint = 0,255,0,255 45 | button = HUDScreenObj 46 | BACKGROUNDHANDLER 47 | { 48 | name = JSIHeadsUpDisplay 49 | method = RenderHUD 50 | backgroundColor = 0,255,0,20 51 | 52 | horizonTexture = JSI/RasterPropMonitor/Library/Components/HUD/ladder 53 | use360horizon = true 54 | horizonSize = 320,320 55 | horizonTextureSize = 480,480 56 | 57 | headingBar = JSI/RasterPropMonitor/Library/Components/HUD/heading 58 | headingBarPosition = 160,122,320,38 59 | headingBarWidth = 320 60 | 61 | verticalBar = RadarAltOceanBar;VSIBar 62 | 63 | staticOverlay = JSI/RasterPropMonitor/Library/Components/HUD/hud-overlay 64 | } 65 | } 66 | 67 | PAGE 68 | { 69 | name = blank 70 | button = HUDScreenObj 71 | } 72 | } 73 | } 74 | 75 | JSIHUD_VERTICAL_BAR 76 | { 77 | name = RadarAltOceanBar 78 | texture = JSI/RasterPropMonitor/Library/Components/HUD/rightscale 79 | useLog10 = true 80 | variableName = RADARALTOCEAN 81 | position = 480,160,64,320 82 | scale = 0, 10000 83 | textureLimit = 855,170 84 | textureSize = 640 85 | } 86 | 87 | JSIHUD_VERTICAL_BAR 88 | { 89 | name = VSIBar 90 | texture = JSI/RasterPropMonitor/Library/Components/HUD/leftscale 91 | useLog10 = true 92 | variableName = VERTSPEED 93 | position = 96,160,64,320 94 | scale = -10000, 10000 95 | textureLimit = 1845, 208 96 | textureSize = 640 97 | } 98 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/graphset.cfg: -------------------------------------------------------------------------------- 1 | JSIGRAPHSET 2 | { 3 | name = ExperimentalGraphSet 4 | GRAPH 5 | { 6 | variableName = ALTITUDE 7 | color = 255,0,0,255 8 | } 9 | GRAPH 10 | { 11 | variableName = RADARALTOCEAN 12 | color = 0,255,0,255 13 | } 14 | } -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/p0_home40x20.txt: -------------------------------------------------------------------------------- 1 | [hw] ATT | GRAPH | TRGT | AUTO | VESSEL | IGNITOR | DPAI 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Junk Systems Inc. 10 | Advanced flight instruments 11 | for every conceivable occasion 12 | 13 | 14 | 15 | 16 | 17 | 18 | -[hw] HOME[/hw] RPM v{0} $&$ RPMVERSION 19 | 20 | [hw] NAV | ORB | DOCK | DATA | CREW | RSRC | EXT 21 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/p0_test.txt: -------------------------------------------------------------------------------- 1 |  2 | [@x38][@y20]This page intentionally left blank 3 | 4 | 5 | Testing character generation system... 6 | µ is mu. €Δ is delta. ☊ is DN, ☋ is AN 7 | 8 | ☊¡¢£¤¥¦§¨©ª«¬☋®¯ 9 | °±²³´µ¶·¸¹º»¼½¾¿ 10 | 11 | The system is also capable of[sup]superscript[/sup] 12 | as well as[sub]subscript[/sub]. 13 | Also [hw]halfwidth[/hw] [dw]and double.[/dw] 14 | and [hw][sup]both sub/superscript and width at once[/hw][/sup] 15 | 16 | And [font1]multiple different fonts at once.[font0] 17 | 18 | Remember: All pages are user-editable! 19 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/p1_landing40x20.txt: -------------------------------------------------------------------------------- 1 | Asc/Des Mode Body: {0} $&$ ORBITBODY 2 | R.Alt [#00ffffff]{0:SIP_6.3}m [#ffffffff]Roll: [#00ffffff]{1,7:0.00}° $&$RADARALTOCEAN ROLL 3 | V.Spd [#00ffffff]{0:SIP_6.3}m/s [#ffffffff]Pitch:[#00ffffff]{1,7:0.00}° $&$VERTSPEED PITCH 4 | H.Spd [#00ffffff]{0:SIP_6.3}m/s [#ffffffff]Hdg: [#00ffffff]{1,7:0.00}° $&$HORZVELOCITY HEADING 5 | TWR:[#00ffffff]{0,4:0.00}[#ffffffff]/[#0099ffff]{1,4:0.0} [#ffffffff]Thr:[#00ffffff]{2,6:0.00}[#ffffffff]/[#0099ffff]{3,6:0.0}kN $&$TWR TWRMAX THRUST THRUSTMAX 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | {0:" Slope: "0.0°; } $&$ SLOPEANGLE 17 | [#ffffff70]Lat:[#ffffffff]{0:DMSdd+mm+ss+N} [#ffffff70]Lon:[#ffffffff]{1:DMSdd+mm+ss+E}$&$LATITUDE LONGITUDE 18 | {2:;" ";""}[#ffffff70]T.Lat:[#ffffffff]{0:DMSdd+mm+ss+N} [#ffffff70]T.Lon:[#ffffffff]{1:DMSdd+mm+ss+E}$&$LATITUDETGT LONGITUDETGT TARGETEXISTS 19 | {1:"Ascent ";"[#ff9999ff]!Descent![#ffffffff] ";""} {0:; }Est. {0:METMM:ss.f}s $&$TIMETOIMPACTSECS VERTSPEEDROUNDED 20 | SAS:{0,-3:"[#00ff00ff]On [#ffffffff]";0;Off}| RCS:{1,-3:"[#00ff00ff]On [#ffffffff]";0;Off}/{2:####.##;;"[#ff0000ff]!Empty![#ffffffff]"}| LF:{3:#####.##;;"[#ff0000ff]!Empty!"}$&$ SAS RCS SYSR_MONOPROPELLANT SYSR_LIQUIDFUEL 21 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/p2_orbit40x20.txt: -------------------------------------------------------------------------------- 1 | ----Orbit: {1,-15} Stage {0:00}---- $&$STAGE ORBITBODY 2 | Vel: {0:SIP_10.1}m/s Alt: {1:SIP_8.3}m $&$ORBTSPEED ALTITUDE 3 | ------Node in T-----------ΔV:---THROTTLE--------------------------- 4 | {0,17:MET+yy:ddd:hh:mm:ss.f} |{1,9:0.00} | {2,5:P0} $&$ MNODETIMESECS MNODEDV THROTTLE 5 | ---------------------------------------------- 6 | ApA: {0:SIP_6.1}m INC: {1,7:0.000}° $&$APOAPSIS INCLINATION 7 | PeA: {0:SIP_6.1}m ECC: {1,7:0.000} $&$PERIAPSIS ECCENTRICITY 8 | ApT: {0:METyy:ddd:hh:mm:ss.f} $&$TIMETOAPSECS 9 | PeT:{0:MET-yy:ddd:hh:mm:ss.f} $&$TIMETOPESECS 10 | OP: {0:METyy:ddd:hh:mm:ss.f}$&$ORBPERIODSECS 11 | 12 | {1:"Target: ";"";""}{0}{1:;" ";""} $&$ TARGETNAME TARGETEXISTS 13 | {1:;" ";""}Relative inclination: {0:0.000}° $&$RELATIVEINCLINATION TARGETEXISTS 14 | {1:;" ";""}To ☋: {0:MET-yy:ddd:hh:mm:ss.f} $&$ TIMETOANWITHTARGETSECS TARGETEXISTS 15 | {1:;" ";""}To ☊: {0:MET-yy:ddd:hh:mm:ss.f} $&$ TIMETODNWITHTARGETSECS TARGETEXISTS 16 | {1:;" ";""}T. OP: {0:METyy:ddd:hh:mm:ss.f} $&$ TARGETORBPERIODSECS TARGETEXISTS 17 | {1:;" ";""}Time to AP: {0:METyy:ddd:hh:mm:ss.f} $&$ TARGETTIMETOAPSECS TARGETEXISTS 18 | {1:;" ";""}Time to PE: {0:MET-yy:ddd:hh:mm:ss.f} $&$ TARGETTIMETOPESECS TARGETEXISTS 19 | {0:;" ";""}Target AP: {1:SIP_8}m PE: {2:SIP_8}m$&$ TARGETEXISTS TARGETAPOAPSIS TARGETPERIAPSIS 20 | {0:;" ";""} ECC: {1:0.000} Vel: {2:SIP_8}m/s$&$ TARGETEXISTS TARGETECCENTRICITY TARGETORBITALVEL -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/p2_orbit_graphical.txt: -------------------------------------------------------------------------------- 1 | ----Orbit: {1,-15} Stage {0:00}---- $&$STAGE ORBITBODY 2 | Vel: {0:SIP_10.1}m/s Alt: {1:SIP_8.3}m $&$ORBTSPEED ALTITUDE 3 | ApA: {0:SIP_6.1}m INC: {1,7:0.000}° $&$APOAPSIS INCLINATION 4 | PeA: {0:SIP_6.1}m ECC: {1,7:0.000} $&$PERIAPSIS ECCENTRICITY 5 | ApT: {0:METyy:ddd:hh:mm:ss.f} $&$TIMETOAPSECS 6 | PeT:{0:MET-yy:ddd:hh:mm:ss.f} $&$TIMETOPESECS 7 | OP: {0:METyy:ddd:hh:mm:ss.f}$&$ORBPERIODSECS -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/p3_target40x20.txt: -------------------------------------------------------------------------------- 1 | {1:"Target: ";"";""}{0}{1:;"Target: [#ffffff30]NO TARGET";""} $&$ TARGETNAME TARGETEXISTS 2 | {2:;" ";""}Dist: {0:SIP_6.3}m Vel: {1:SIP_6.3}m/s $&$ TARGETDISTANCE APPROACHSPEED TARGETEXISTS 3 | {3:;" ";""}R.Ang X: {0,6:0.00}° Y:{1,6:0.00}° Z: {2,6:0.00}° $&$TARGETANGLEX TARGETANGLEY TARGETANGLEZ TARGETEXISTS 4 | {0:;;" Please select a reference part "} $&$ ISREMOTEREFERENCE 5 | {0:;;" in target management menu. "} $&$ ISREMOTEREFERENCE 6 | 7 | 8 | 9 | {0:;" ";""} [#ffffff77][@x-{1:0.0}][@y-{1:0.0}]¢ [@x{1:0.0}][@y-{1:0.0}]¡ $&$ TARGETEXISTS TARGETANGLEDEV 10 | 11 | 12 | {0:;" ";""} [#ffffff77][@x-{1:0.0}][@y{1:0.0}]¤ [@x{1:0.0}][@y{1:0.0}]£ $&$ TARGETEXISTS TARGETANGLEDEV 13 | 14 | 15 | {0:;" ";""} R.Velocity R.Distance $&$ TARGETEXISTS 16 | {2:;" ";""} X:{0:SIP_8.3}m/s X:{1:SIP_6.3}m $&$TGTRELX TARGETDISTANCEX TARGETEXISTS 17 | {2:;" ";""} Y:{0:SIP_8.3}m/s Y:{1:SIP_6.3}m $&$TGTRELY TARGETDISTANCEY TARGETEXISTS 18 | {2:;" ";""} Z:{0:SIP_8.3}m/s Z:{1:SIP_6.3}m $&$TGTRELZ TARGETDISTANCEZ TARGETEXISTS 19 | ________________________________________ 20 | SAS:{0,-6:"[#00ff00ff]Active[#ffffffff]";0;Off}| RCS:{1,-6:"[#00ff00ff]Active[#ffffffff]";0;Off}| {2:####.##;;"[#ff0000ff]!Empty!"}$&$ SAS RCS SYSR_MONOPROPELLANT 21 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/p4_shipinfo40x20.txt: -------------------------------------------------------------------------------- 1 | ------"{0}" INFO--------------$&$ NAME 2 | Body: {0} Status: {1} $&$ORBITBODY SITUATION 3 | 4 | Commander: {0}$&$CREW_0_FULL 5 | 6 | UT : {0:KDTyy:ddd:hh:mm:ss.f} $&$ UTSECS 7 | MET: {0:METyy:ddd:hh:mm:ss.f} $&$ METSECS 8 | 9 | Lat: {0:000.00000"°N";000.00000"°S"} Lon:{1:000.00000"°E";000.00000"°W"}$&$LATITUDE LONGITUDE 10 | Mass(W): {1,5:0.00}t Mass(D): {0,4:0.00}t $&$MASSDRY MASSWET 11 | G: {0,4:0.00} ACCL: {1,4:0.00}/{2,4:0.00} $&$GFORCE ACCEL MAXACCEL 12 | Stage ΔV: {1:0.0} Isp: {0:0.0}s $&$ REALISP DELTAVSTAGE 13 | 14 | Stage: {0}. Temperature: {1:0.0}°C $&$ STAGE PODTEMPERATURE 15 | {0:Atmosphere depth: 00.0%;;} $&$ ATMOSPHEREDEPTH 16 | Biome: 17 | {0} $&$ BIOMENAME 18 | Science: {0:0.0} Mits $&$SCIENCEDATA 19 | 20 | SAS:{0,-6:"[#00ff00ff]Active[#ffffffff]";0;Off} LIGHT:{1,-3:"[#00ff00ff]On [#ffffffff]";0;Off} L.LEG:{2,-8:"[#00ff00ff]Deployed";0;Retracted} $&$SAS LIGHTS GEAR -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/p5_crew40x20.txt: -------------------------------------------------------------------------------- 1 | "{0}" Crew roster: $&$ NAME 2 | {2}{1:":"; ; } {0}$&$CREW_0_FULL CREW_0_PRESENT CREW_0_TITLE 3 | {2}{1:":"; ; } {0}$&$CREW_1_FULL CREW_1_PRESENT CREW_1_TITLE 4 | {2}{1:":"; ; } {0}$&$CREW_2_FULL CREW_2_PRESENT CREW_2_TITLE 5 | {2}{1:":"; ; } {0}$&$CREW_3_FULL CREW_3_PRESENT CREW_3_TITLE 6 | {2}{1:":"; ; } {0}$&$CREW_4_FULL CREW_4_PRESENT CREW_4_TITLE 7 | {2}{1:":"; ; } {0}$&$CREW_5_FULL CREW_5_PRESENT CREW_5_TITLE 8 | {2}{1:":"; ; } {0}$&$CREW_6_FULL CREW_6_PRESENT CREW_6_TITLE 9 | {2}{1:":"; ; } {0}$&$CREW_7_FULL CREW_7_PRESENT CREW_7_TITLE 10 | {2}{1:":"; ; } {0}$&$CREW_8_FULL CREW_8_PRESENT CREW_8_TITLE 11 | {2}{1:":"; ; } {0}$&$CREW_9_FULL CREW_9_PRESENT CREW_9_TITLE 12 | {2}{1:":"; ; } {0}$&$CREW_10_FULL CREW_10_PRESENT CREW_10_TITLE 13 | {2}{1:":"; ; } {0}$&$CREW_11_FULL CREW_11_PRESENT CREW_11_TITLE 14 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/p6_resources40x20.txt: -------------------------------------------------------------------------------- 1 | Resources: 2 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_0_NAME LISTR_0_VAL LISTR_0_MAX LISTR_0_PERCENT 3 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_1_NAME LISTR_1_VAL LISTR_1_MAX LISTR_1_PERCENT 4 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_2_NAME LISTR_2_VAL LISTR_2_MAX LISTR_2_PERCENT 5 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_3_NAME LISTR_3_VAL LISTR_3_MAX LISTR_3_PERCENT 6 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_4_NAME LISTR_4_VAL LISTR_4_MAX LISTR_4_PERCENT 7 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_5_NAME LISTR_5_VAL LISTR_5_MAX LISTR_5_PERCENT 8 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_6_NAME LISTR_6_VAL LISTR_6_MAX LISTR_6_PERCENT 9 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_7_NAME LISTR_7_VAL LISTR_7_MAX LISTR_7_PERCENT 10 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_8_NAME LISTR_8_VAL LISTR_8_MAX LISTR_8_PERCENT 11 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_9_NAME LISTR_9_VAL LISTR_9_MAX LISTR_9_PERCENT 12 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_10_NAME LISTR_10_VAL LISTR_10_MAX LISTR_10_PERCENT 13 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_11_NAME LISTR_11_VAL LISTR_11_MAX LISTR_11_PERCENT 14 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_12_NAME LISTR_12_VAL LISTR_12_MAX LISTR_12_PERCENT 15 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_13_NAME LISTR_13_VAL LISTR_13_MAX LISTR_13_PERCENT 16 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_14_NAME LISTR_14_VAL LISTR_14_MAX LISTR_14_PERCENT 17 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_15_NAME LISTR_15_VAL LISTR_15_MAX LISTR_15_PERCENT 18 | {0,14}{2:\:;;""}{1,8:0.0/;;""}{2,-8:0.00;;""}{2:;; }{3,8:"("00.0%")"}$&$LISTR_16_NAME LISTR_16_VAL LISTR_16_MAX LISTR_16_PERCENT 19 | 20 | Total mass:{0,9:0.000} t. $&$MASSRESOURCES -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/pa_HUDPFD.txt: -------------------------------------------------------------------------------- 1 | 2 | PRS: {1,7:0.000}kPa ASL: {0:SIP6}m $&$ ALTITUDE DYNAMICPRESSURE 3 | ATM: {0,5:00.0%} TER: {1:SIP6}m $&$ ATMOSPHEREDEPTH TERRAINHEIGHT 4 | [@y-3][@x2]{0,6:000.0}° $&$ HEADING 5 | [@y4] [hw]{0:SIP6}m/s[/hw] [hw]{1:SIP6}m[/hw] $&$ VERTSPEED RADARALTOCEAN 6 | {0,6:"SAS";;} {1:"HEAT!";;}$&$ SAS ENGINEOVERHEATALARM 7 | {0,6:"GEAR";;} {1:"GEAR!";;}$&$ GEAR GROUNDPROXIMITYALARM 8 | {0,6:"BRAKE";;} {1:"SLOPE!";;} $&$ BRAKES SLOPEALARM 9 | {0,6:"LIGHT";;} $&$ LIGHTS 10 | 11 | 12 | 13 | 14 | 15 | 16 | [@y3] [hw]P: {0,6:000.0}° R: {1,6:000.0}°$&$ PITCH ROLL 17 | SPD: {0:SIP6}m/s TRIM $&$ SURFSPEED 18 | EAS: {0:SIP6}m/s P:{1,6:00.0%} $&$ EASPEED STICKPITCHTRIM 19 | HRZ: {0:SIP6}m/s R:{1,6:00.0%} $&$ HORZVELOCITY STICKROLLTRIM 20 | THR: {0,6:00.0%} ({1,6:00.0%}) Y:{2,6:00.0%} $&$ THROTTLE EFFECTIVETHROTTLE STICKYAWTRIM 21 | 22 | ALTITUDE DYNAMICPRESSURE ATMDENSITY ATMOSPHEREDEPTH 23 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/pa_PFD.txt: -------------------------------------------------------------------------------- 1 | [@y5] {0:SIP_6.1}m {1:SIP4}m/s $&$ ALTITUDE SURFSPEED 2 | 3 | [@x2]{0,6:000.0}° $&$ HEADING 4 | {0:SIP_6.1}m {1:SIP4}m/s $&$ ORBTSPEED ACCEL 5 | 6 | {0:ORB;TGT;SRF} $&$ SPEEDDISPLAYMODE 7 | 8 | [@x-3]{0,6:000.0}° [@x2]{1,6:000.0}° $&$ ROLL PITCH 9 | [@y8] SAS: [hw] Gear:[/hw] 10 | {0,-3:"[#00ff00ff]On [#ffffffff]";0;Off} [@x8]{1,-4:"[#00ff00ff]Down [#ffffffff]";0;Up} $&$ SAS GEAR 11 | [@y8] RCS: [hw] Brakes:[/hw] 12 | {0,-3:"[#00ff00ff]On [#ffffffff]";0;Off} [@x8]{1,-3:"[#00ff00ff]On [#ffffffff]";0;Off} $&$ RCS BRAKES 13 | [@y8] [hw]Throttle: [/hw] [hw] Lights: [/hw] 14 | {0,5:P0} [@x8]{1,-3:"[#00ff00ff]On [#ffffffff]";0;Off} $&$ THROTTLE LIGHTS 15 | {0:;" ";""} Burn T:$&$ MNODEEXISTS 16 | {0:;" ";""} {1:METS.f}s $&$ MNODEEXISTS MNODEBURNTIMESECS 17 | {0:;" ";""} Node in T ΔV $&$ MNODEEXISTS 18 | {2:;" ";}{0,17:MET+yy:ddd:hh:mm:ss.f} {1:SIP_6.3}m/s $&$ MNODETIMESECS MNODEDV MNODEEXISTS 19 | 20 | {0:SIP_6.3}m {1:SIP_6.3}m/s {2:SIP_6.3}m/s $&$RADARALTOCEAN HORZVELOCITY VERTSPEED -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/BasicMFD/pb_graphs.txt: -------------------------------------------------------------------------------- 1 |  [#00ff00]Radar altitude 2 | [hw][sub]70km[/sub][/hw] [#ff0000]ASL altitude 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | [hw][sub]0[/sub] 19 | [hw][sup]T-700 seconds T-0[/sup] 20 | MET: {0:METyy:ddd:hh:mm:ss.f} $&$ METSECS -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesMod/DE_mk1pod_IVA.cfg: -------------------------------------------------------------------------------- 1 | @INTERNAL[DE_mk1pod_IVA]:HAS[!PROP[pb_Warp_Inc]]:NEEDS[DE_IVAExtension] 2 | { 3 | PROP 4 | { 5 | name = pb_Warp_Inc 6 | position = 0.0475,0.3475,-0.1375 7 | rotation = 0.8191521,-1.989705E-10,-2.124006E-10,0.5735765 8 | scale = 0.35,0.35,0.35 9 | } 10 | 11 | PROP 12 | { 13 | name = pb_Warp_Next 14 | position = 0.0625, 0.3475,-0.1375 15 | rotation = 0.8191521,-1.989705E-10,-2.124006E-10,0.5735765 16 | scale = 0.35,0.35,0.35 17 | } 18 | 19 | PROP 20 | { 21 | name = pb_Warp_Kill 22 | position = 0.0775, 0.3475,-0.1375 23 | rotation = 0.8191521,-1.989705E-10,-2.124006E-10,0.5735765 24 | scale = 0.35,0.35,0.35 25 | } 26 | 27 | PROP 28 | { 29 | name = pb_Warp_Dec 30 | position = 0.0925,0.3475,-0.1375 31 | rotation = 0.8191521,-1.989705E-10,-2.124006E-10,0.5735765 32 | scale = 0.35,0.35,0.35 33 | } 34 | 35 | @PROP[OnWARP] 36 | { 37 | @position = 0.07, 0.39, -0.125 38 | } 39 | 40 | @PROP[DigitalIndicator_CURRENT_WARP] 41 | { 42 | @position = 0.07, 0.365, -0.13 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesMod/kp0110-pod-patch.cfg: -------------------------------------------------------------------------------- 1 | // This adds an RPM-based instrument layout into the K-P0110 2 | // by Ledenko. 3 | 4 | @PART[*]:HAS[@INTERNAL[KP0110internal]]:NEEDS[KerbonTech] 5 | { 6 | MODULE 7 | { 8 | name = RasterPropMonitorComputer 9 | } 10 | @INTERNAL 11 | { 12 | @name = KP0110internalRPM 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesMod/orbital-orb-patch.cfg: -------------------------------------------------------------------------------- 1 | // This adds an RPM-based instrument layout into the Orbital Orb 2 | // from the Habitat Pack: http://forum.kerbalspaceprogram.com/threads/64442 3 | 4 | @PART[*]:HAS[@INTERNAL[orbitalOrbInternals]]:NEEDS[HabitatPack] 5 | { 6 | MODULE 7 | { 8 | name = RasterPropMonitorComputer 9 | } 10 | @INTERNAL 11 | { 12 | @name = orbitalOrbInternalsRPM 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesMod/orbital-orb-remade-internal.cfg: -------------------------------------------------------------------------------- 1 | INTERNAL:NEEDS[HabitatPack] 2 | { 3 | name = orbitalOrbInternalsRPM 4 | MODEL 5 | { 6 | model = HabitatPack/Spaces/orbitalOrbInternals/model 7 | } 8 | MODULE 9 | { 10 | name = InternalCameraTargetHelper 11 | } 12 | MODULE 13 | { 14 | name = InternalSeat 15 | seatTransformName = Seat1 16 | portraitCameraName = pilot_camera 17 | allowCrewHelmet = false 18 | } 19 | MODULE 20 | { 21 | name = InternalSeat 22 | seatTransformName = Seat2 23 | allowCrewHelmet = false 24 | } 25 | MODULE 26 | { 27 | name = InternalCameraSwitch 28 | colliderTransformName = Cam1 29 | cameraTransformName = Cam1 30 | } 31 | MODULE 32 | { 33 | name = InternalCameraSwitch 34 | colliderTransformName = Cam2 35 | cameraTransformName = Cam2 36 | } 37 | PROP 38 | { 39 | name = IndicatorPanelRPM 40 | position = 0.1526378,-0.5076971,0.2497 41 | rotation = 0.353027,0,-2.294823E-07,0.9356132 42 | scale = 1,0.9999998,0.9999998 43 | } 44 | PROP 45 | { 46 | name = JSIEvaHatch 47 | position = 0,0.922047,0.6258945 48 | rotation = 0,0,0,1 49 | scale = 0.2218108,0.05002288,0.07007596 50 | } 51 | PROP 52 | { 53 | name = JSIStockSquareBlinkenlichten 54 | position = 0.3637466,-0.6322324,0.3760676 55 | rotation = 0.353027,0,-2.294823E-07,0.9356132 56 | scale = 1,1,1 57 | } 58 | PROP 59 | { 60 | name = JSIStockSquareBlinkenlichten 61 | position = 0.363747,-0.6482133,0.3942289 62 | rotation = 0.353027,0,0,0.9356132 63 | scale = 1,1,0.9999998 64 | } 65 | PROP 66 | { 67 | name = JSIStockSquareBlinkenlichten 68 | position = 0.363747,-0.6641689,0.4123617 69 | rotation = 0.353027,0,0,0.9356132 70 | scale = 1,1,0.9999998 71 | } 72 | PROP 73 | { 74 | name = JSIStockSquareBlinkenlichten 75 | position = 0.332494,-0.6641687,0.4123614 76 | rotation = 0.353027,0,0,0.9356132 77 | scale = 1,1,0.9999998 78 | } 79 | PROP 80 | { 81 | name = JSIStockSquareBlinkenlichten 82 | position = 0.332494,-0.6482136,0.3942284 83 | rotation = 0.353027,0,0,0.9356132 84 | scale = 1,1,0.9999998 85 | } 86 | PROP 87 | { 88 | name = JSIStockSquareBlinkenlichten 89 | position = 0.332494,-0.6322326,0.3760674 90 | rotation = 0.353027,0,0,0.9356132 91 | scale = 1,1,0.9999998 92 | } 93 | PROP 94 | { 95 | name = JSIStockSquareBlinkenlichten 96 | position = 0.2711269,-0.6322326,0.3760674 97 | rotation = 0.353027,0,0,0.9356132 98 | scale = 1,1,0.9999998 99 | } 100 | PROP 101 | { 102 | name = JSIStockSquareBlinkenlichten 103 | position = 0.2711269,-0.6482136,0.3942284 104 | rotation = 0.353027,0,0,0.9356132 105 | scale = 1,1,0.9999998 106 | } 107 | PROP 108 | { 109 | name = JSIStockSquareBlinkenlichten 110 | position = 0.2711269,-0.6641687,0.4123614 111 | rotation = 0.353027,0,0,0.9356132 112 | scale = 1,1,0.9999998 113 | } 114 | PROP 115 | { 116 | name = JSIStockSquareBlinkenlichten 117 | position = 0.3023799,-0.6641687,0.4123614 118 | rotation = 0.353027,0,0,0.9356132 119 | scale = 1,1,0.9999998 120 | } 121 | PROP 122 | { 123 | name = JSIStockSquareBlinkenlichten 124 | position = 0.3023799,-0.6482136,0.3942284 125 | rotation = 0.353027,0,0,0.9356132 126 | scale = 1,1,0.9999998 127 | } 128 | PROP 129 | { 130 | name = JSIStockSquareBlinkenlichten 131 | position = 0.3023799,-0.6322326,0.3760674 132 | rotation = 0.353027,0,0,0.9356132 133 | scale = 1,1,0.9999998 134 | } 135 | PROP 136 | { 137 | name = JSIStockSquareBlinkenlichten 138 | position = 0.2400035,-0.6322326,0.3760674 139 | rotation = 0.353027,0,0,0.9356132 140 | scale = 1,1,0.9999998 141 | } 142 | PROP 143 | { 144 | name = JSIStockSquareBlinkenlichten 145 | position = 0.2400035,-0.6482136,0.3942284 146 | rotation = 0.353027,0,0,0.9356132 147 | scale = 1,1,0.9999998 148 | } 149 | PROP 150 | { 151 | name = JSIStockSquareBlinkenlichten 152 | position = 0.2400035,-0.6641687,0.4123614 153 | rotation = 0.353027,0,0,0.9356132 154 | scale = 1,1,0.9999998 155 | } 156 | PROP 157 | { 158 | name = JSIStockSquareButtonGear 159 | position = 0.1388332,-0.5893143,0.327293 160 | rotation = 0.353027,0,-2.294823E-07,0.9356132 161 | scale = 1,1,1 162 | } 163 | PROP 164 | { 165 | name = JSIStockSquareButtonLight 166 | position = 0.1686486,-0.5738091,0.3096717 167 | rotation = 0.353027,0,-2.294823E-07,0.9356132 168 | scale = 1,1,1 169 | } 170 | PROP 171 | { 172 | name = JSIStockSquareButtonRCS 173 | position = 0.1686486,-0.5890815,0.3270284 174 | rotation = 0.353027,0,-2.294823E-07,0.9356132 175 | scale = 1,1,1 176 | } 177 | PROP 178 | { 179 | name = JSIStockSquareButtonSAS 180 | position = 0.1388068,-0.5738091,0.3096717 181 | rotation = 0.353027,0,-2.294823E-07,0.9356132 182 | scale = 1,1,1 183 | } 184 | PROP 185 | { 186 | name = RasterPropMonitorBasicMFD 187 | position = 0.2998753,-0.5115483,0.3089512 188 | rotation = -0.295497,-0.00144417,0.001334668,0.9553416 189 | scale = 0.7,0.7,0.7 190 | } 191 | PROP 192 | { 193 | name = RasterPropMonitorBasicMFD 194 | position = 0.1540478,-0.6446412,0.3992446 195 | rotation = -0.399588,1.600588E-07,-1.644485E-07,0.9166949 196 | scale = 0.3,0.3,0.3 197 | } 198 | PROP 199 | { 200 | name = RasterPropMonitorBasicMFD 201 | position = 0.4916345,-0.6190413,0.3716917 202 | rotation = -0.3995879,0,0,0.9166949 203 | scale = 0.5,0.5,0.5 204 | } 205 | PROP 206 | { 207 | name = RasterPropMonitorBasicMFD 208 | position = 0.491635,-0.5181342,0.263085 209 | rotation = -0.3995879,0,0,0.9166949 210 | scale = 0.5,0.5,0.5 211 | } 212 | } 213 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesStock/crew-cabin-patch.cfg: -------------------------------------------------------------------------------- 1 | // The stock crew cabin, of course, needs no monitors nor contains any. 2 | // However, it can benefit from a doubleclick-hatch-to-EVA feature, which is what this patch adds. 3 | 4 | @INTERNAL[crewCabinInternals] 5 | { 6 | PROP 7 | { 8 | name = JSIEvaHatch 9 | position = 0,1.078847,-0.01337123 10 | rotation = 0,0,0,1 11 | scale = 0.1025633,0.01758143,0.1160343 12 | } 13 | } -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesStock/cupola-patch.cfg: -------------------------------------------------------------------------------- 1 | @PART[*]:HAS[@INTERNAL[cupolaInternal]]{ 2 | MODULE 3 | { 4 | name = RasterPropMonitorComputer 5 | } 6 | 7 | @INTERNAL { 8 | @name = cupolaInternalRPM 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesStock/mk1-inline-patch.nocfg: -------------------------------------------------------------------------------- 1 | //Patches / cockpit by Enceos 2 | 3 | @PART[*]:HAS[@INTERNAL[MK1_Inline_Int]] 4 | { 5 | MODULE 6 | { 7 | name = RasterPropMonitorComputer 8 | } 9 | 10 | @INTERNAL 11 | { 12 | @name = MK1_Inline_Int_RPM 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesStock/mk1-patch.cfg: -------------------------------------------------------------------------------- 1 | @PART[*]:HAS[@INTERNAL[mk1PodCockpit],!MODULE[LifeBoat]] 2 | { 3 | MODULE 4 | { 5 | name = RasterPropMonitorComputer 6 | } 7 | 8 | @INTERNAL { 9 | @name = mk1PodCockpitRPM 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesStock/mk12pod-patch.cfg: -------------------------------------------------------------------------------- 1 | @PART[*]:HAS[@INTERNAL[PodCockpit]] 2 | { 3 | MODULE 4 | { 5 | name = RasterPropMonitorComputer 6 | } 7 | @INTERNAL { 8 | @name = PodCockpitRPM 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesStock/mk1cockpit-patch.cfg: -------------------------------------------------------------------------------- 1 | @PART[*]:HAS[@INTERNAL[mk1CockpitInternal]] 2 | { 3 | MODULE 4 | { 5 | name = RasterPropMonitorComputer 6 | } 7 | 8 | @INTERNAL { 9 | @name = mk1CockpitInternalRPM 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesStock/mk1landercan-patch.cfg: -------------------------------------------------------------------------------- 1 | @PART[*]:HAS[@INTERNAL[landerCabinSmallInternal]] 2 | { 3 | MODULE 4 | { 5 | name = RasterPropMonitorComputer 6 | } 7 | @INTERNAL { 8 | @name = landerCabinSmallInternalRPM 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesStock/mk2landercan-patch.cfg: -------------------------------------------------------------------------------- 1 | @PART[*]:HAS[@INTERNAL[landerCabinInternals]] 2 | { 3 | MODULE 4 | { 5 | name = RasterPropMonitorComputer 6 | } 7 | @INTERNAL 8 | { 9 | @name = landerCabinInternalsRPM 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /GameData/JSI/RPMPodPatches/PatchesStock/mk3cockpit-patch.cfg: -------------------------------------------------------------------------------- 1 | //Patches / cockpit by Enceos 2 | @PART[mk3Cockpit_Shuttle]:NEEDS[RasterPropMonitor] 3 | { 4 | MODULE 5 | { 6 | name = RasterPropMonitorComputer 7 | } 8 | } 9 | 10 | 11 | @INTERNAL[MK3_Cockpit_Int]:NEEDS[RasterPropMonitor] 12 | { 13 | 14 | PROP 15 | { 16 | name = RasterPropMonitorBasicMFD 17 | position = 0.141196,0.7468129,-0.7244574 18 | rotation = -0.2079117,0,0,0.9781476 19 | scale = 0.42,0.385,0.3999999 20 | } 21 | PROP 22 | { 23 | name = RasterPropMonitorBasicMFD 24 | position = 0.141196,0.6299283,-0.6712881 25 | rotation = -0.2079119,0,0,0.9781476 26 | scale = 0.42,0.385,0.4 27 | } 28 | PROP 29 | { 30 | name = RasterPropMonitorBasicMFD 31 | position = -0.1415714,0.6299283,-0.6712881 32 | rotation = -0.2079119,0,0,0.9781476 33 | scale = 0.42,0.385,0.4 34 | } 35 | PROP 36 | { 37 | name = RasterPropMonitorBasicMFD 38 | position = -0.2937711,0.688472,-0.6960356 39 | rotation = -0.2079119,0,0,0.9781476 40 | scale = 0.4829898,0.4699768,0.4 41 | } 42 | PROP 43 | { 44 | name = RasterPropMonitorBasicMFD 45 | position = 0.2931954,0.688472,-0.696036 46 | rotation = -0.2079119,0,0,0.9781476 47 | scale = 0.48299,0.469977,0.4 48 | } 49 | PROP 50 | { 51 | name = RasterPropMonitorBasicMFD 52 | position = -0.1416073,0.7468129,-0.7244574 53 | rotation = -0.2079119,0,0,0.9781476 54 | scale = 0.42,0.385,0.4 55 | } 56 | PROP 57 | { 58 | name = RasterPropMonitorBasicMFD 59 | position = 0.6538006,0.7342677,-0.6513167 60 | rotation = -0.1344974,-0.08531353,-0.02405801,0.9869414 61 | scale = 0.42,0.385,0.4000001 62 | } 63 | PROP 64 | { 65 | name = RasterPropMonitorBasicMFD 66 | position = 0.6445985,0.6120232,-0.6163632 67 | rotation = -0.137479,-0.07833308,-0.02524862,0.9870796 68 | scale = 0.42,0.3849999,0.3999999 69 | } 70 | PROP 71 | { 72 | name = RasterPropMonitorBasicMFD 73 | position = -0.6399357,0.6118765,-0.6165132 74 | rotation = -0.1479711,0.09920985,0.0144046,0.9838976 75 | scale = 0.42,0.385,0.3999999 76 | } 77 | PROP 78 | { 79 | name = RasterPropMonitorBasicMFD 80 | position = -0.646588,0.7353145,-0.6527447 81 | rotation = -0.1491914,0.09926638,0.01494914,0.9836995 82 | scale = 0.42,0.3850001,0.4 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/AviationCockpits.cfg: -------------------------------------------------------------------------------- 1 | @PART[F8f?Bearcat?Cockpit|Focke-Wulf?Bearcat?Cockpit|Interceptor?Cockpit|Mk1?Mirage?Cockpit|Mk1?S39?Cockpit|Mk1?Su30?Cockpit|Trainer?Cockpit|Typhoon?Cockpit|F-104?Cockpit]:HAS[!MODULE[RasterPropMonitorComputer]]:LAST[RasterPropMonitor] 2 | { 3 | MODULE 4 | { 5 | name = RasterPropMonitorComputer 6 | } 7 | } -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/B9Aerospace.cfg: -------------------------------------------------------------------------------- 1 | @PART[B9_Cockpit_S3]:HAS[!MODULE[RasterPropMonitorComputer]]:FOR[RasterPropMonitor] 2 | { 3 | MODULE 4 | { 5 | name = RasterPropMonitorComputer 6 | } 7 | } -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/DSEV.cfg: -------------------------------------------------------------------------------- 1 | @PART[wbiNautilusBridge|wbiMiniCupola|wbiEstonian|WBI_Clydesdale|WBI_DanubeDelta|WBI_HomesteadMk3]:HAS[!MODULE[RasterPropMonitorComputer]]:LAST[RasterPropMonitor] 2 | { 3 | MODULE 4 | { 5 | name = RasterPropMonitorComputer 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/DeepFreeze.cfg: -------------------------------------------------------------------------------- 1 | @PART[CRY-0300Freezer|CRY-0300RFreezer|CRY-1300Freezer|CRY-2300Freezer|CRY-5000Freezer]:HAS[!MODULE[RasterPropMonitorComputer]]:FOR[RasterPropMonitor] 2 | { 3 | MODULE 4 | { 5 | name = RasterPropMonitorComputer 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/Endurance.cfg: -------------------------------------------------------------------------------- 1 | // internals with RPM stuff: 2 | // enduranceCommandIVA 3 | // deployableLabIVA 4 | // EnduranceLander 5 | // miniRangerIVA 6 | // rangerInternal 7 | 8 | @PART[ENcommandEndurance|ENdeployableLab|ENlanderBody|ENminiRanger|ENrangerBody]:HAS[!MODULE[RasterPropMonitorComputer]]:LAST[RasterPropMonitor] 9 | { 10 | MODULE 11 | { 12 | name = RasterPropMonitorComputer 13 | } 14 | } -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/Heisenberg.cfg: -------------------------------------------------------------------------------- 1 | @PART[WBI_BisonAirlock|WBI_BisonCab|WBI_HL10CommandCab]:HAS[!MODULE[RasterPropMonitorComputer]]:NEEDS[ASET]:FOR[RasterPropMonitor] 2 | { 3 | MODULE 4 | { 5 | name = RasterPropMonitorComputer 6 | } 7 | } -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/Hullcam.cfg: -------------------------------------------------------------------------------- 1 | @PART:HAS[@MODULE[MuMechModuleHullCamera*],@MODULE[JSIExternalCameraSelector]]:NEEDS[HullCameraVDS]:FOR[zzz_RasterPropMonitor] 2 | { 3 | @MODULE[JSIExternalCameraSelector]:HAS[~cameraFoVMax,~cameraFoVMin] 4 | { 5 | cameraFoVMax = #$../MODULE[MuMechModuleHullCamera*]/cameraFoVMax$ 6 | cameraFoVMin = #$../MODULE[MuMechModuleHullCamera*]/cameraFoVMin$ 7 | } 8 | } -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/NMB.cfg: -------------------------------------------------------------------------------- 1 | // add RasterPropMonitorComputer to parts that need it 2 | @PART:HAS[#manufacturer[Kerbal?Battle?Field],@INTERNAL,!MODULE[RasterPropMonitorComputer]]:NEEDS[NMB] 3 | { 4 | MODULE 5 | { 6 | name = RasterPropMonitorComputer 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/OPT.cfg: -------------------------------------------------------------------------------- 1 | 2 | //OPT_Legacy includes two cockpits that have RPM-enabled cockpits included in the mod, but they're not referenced in the config files 3 | @PART:HAS[@INTERNAL[BCockpit]]:NEEDS[OPT_Legacy] 4 | { 5 | @INTERNAL 6 | { 7 | @name = BCockpit_rpm 8 | } 9 | } 10 | 11 | @PART:HAS[@INTERNAL[ILSCockpit]]:NEEDS[OPT_Legacy] 12 | { 13 | @INTERNAL 14 | { 15 | @name = ilsCockpit_rpm 16 | } 17 | } 18 | 19 | // None of the OPT (original nor legacy) command pods include the RPMComputer. Some parts of the IVA is functional without this but some aren't 20 | @PART:HAS[#manufacturer[OPT?Aero*Division],@INTERNAL,!MODULE[RasterPropMonitorComputer]]:NEEDS[OPT|OPT_Legacy] 21 | { 22 | MODULE 23 | { 24 | name = RasterPropMonitorComputer 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/SSPX.cfg: -------------------------------------------------------------------------------- 1 | @PART[sspx-airlock-125-1|sspx-habitation-125-1|sspx-inflatable-centrifuge-125-1|sspx-inflatable-hab-125-2|sspx-inflatable-hab-125-3|sspx-utility-125-1]:HAS[!MODULE[RasterPropMonitorComputer]]:LAST[RasterPropMonitor] 2 | { 3 | MODULE 4 | { 5 | name = RasterPropMonitorComputer 6 | } 7 | } -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/ThrustReversers.cfg: -------------------------------------------------------------------------------- 1 | // because thrust reversing is just a specific use case of ModuleAnimateGeneric, we need this PartModule to identify engines that can have their thrust reversed 2 | // These are the only two in stock, but other mods should add this module to their own engines if they support reversing thrust 3 | @PART[turboFanSize2|JetEngine] 4 | { 5 | %MODULE[JSIThrustReverser] {} 6 | } 7 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Compatibility/modules.cfg: -------------------------------------------------------------------------------- 1 | // delete all RasterPropMonitorComputer modules inside INTERNAL definitions - this isn't an InternalModule 2 | @INTERNAL:HAS[@MODULE[RasterPropMonitorComputer]]:FINAL 3 | { 4 | !MODULE[RasterPropMonitorComputer],* {} 5 | } 6 | 7 | @PROP:HAS[@MODULE[RasterPropMonitorComputer]]:FINAL 8 | { 9 | !MODULE[RasterPropMonitorComputer],* {} 10 | } 11 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/HUD/heading.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/HUD/heading.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/HUD/hud-overlay.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/HUD/hud-overlay.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/HUD/ladder.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/HUD/ladder.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/HUD/leftscale.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/HUD/leftscale.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/HUD/model.mu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/HUD/model.mu -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/HUD/planeHUDdiffuse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/HUD/planeHUDdiffuse.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/HUD/rightscale.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/HUD/rightscale.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/HUD/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/HUD/screen.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/MFD40x20v2/MFD40x15v2-Diffuse.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/MFD40x20v2/MFD40x15v2-Diffuse.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/MFD40x20v2/MFD40x15v2-Emissive.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/MFD40x20v2/MFD40x15v2-Emissive.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/MFD40x20v2/model.mu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/MFD40x20v2/model.mu -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/MFD40x20v2/screen-emissive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/MFD40x20v2/screen-emissive.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/MFD40x20v2/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/MFD40x20v2/screen.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/NavBall/HDG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/NavBall/HDG.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/NavBall/NavBall.mu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/NavBall/NavBall.mu -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/NavBall/NavBall000.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/NavBall/NavBall000.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Components/NavBall/StaticMask.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Components/NavBall/StaticMask.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Fonts/baseFont.truecolor: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Fonts/baseFont.truecolor -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Fonts/extraFont1.truecolor: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Fonts/extraFont1.truecolor -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Fonts/fontDefinition.txt: -------------------------------------------------------------------------------- 1 |  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Δ☊¡¢£¤¥¦§¨©ª«¬☋®¯°±²³´µ¶·¸¹º»¼½¾¿ -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Fonts/hudfont.truecolor: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Fonts/hudfont.truecolor -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Parts/ExternalCameraPart/ExternalCameraDiffuse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Parts/ExternalCameraPart/ExternalCameraDiffuse.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Parts/ExternalCameraPart/external-camera-v2.cfg: -------------------------------------------------------------------------------- 1 | PART 2 | { 3 | // --- general parameters --- 4 | name = JSIPrimitiveExternalCamera_v2 5 | module = Part 6 | author = C. Jenkins / Mihara 7 | 8 | // --- asset parameters --- 9 | MODEL 10 | { 11 | model = Squad/Parts/Engine/liquidEngineLV-1_v2/Assets/Spider 12 | texture = Ant_and_Spider_diffuse, JSI/RasterPropMonitor/Library/Parts/ExternalCameraPart/ExternalCameraDiffuse 13 | rotation = 0,0,180 14 | scale = 0.6,0.5,0.6 15 | } 16 | 17 | // --- node definitions --- 18 | // definition format is Position X, Position Y, Position Z, Up X, Up Y, Up Z 19 | node_attach = 0.0, 0.0, 0.00, 0.0, 0.0, -1.0, 0 20 | 21 | // --- editor parameters --- 22 | TechRequired = basicScience 23 | entryCost = 4200 24 | cost = 400 25 | category = Utility 26 | subcategory = 0 27 | title = JSI External Radial-mount Camera 28 | manufacturer = Junk Systems Inc. 29 | description = Customers who like multi-function displays with JSI software keep looking around for simple external camera options. This is a most primitive camera, but it works fine when you don't have a better one. No, it's not just a Spider engine with white paint, we have standards here! 30 | 31 | // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision 32 | attachRules = 0,1,0,1,0 33 | 34 | // --- standard part parameters --- 35 | mass = 0.004 36 | maximum_drag = 0.05 37 | minimum_drag = 0.05 38 | angularDrag = 1 39 | crashTolerance = 8 40 | maxTemp = 1200 41 | 42 | DRAG_CUBE // totally not copied from Squad linearRCS asset default DRAG_CUBE in PartDatabase.cfg 43 | { 44 | cube = Default, 0.04104,0.9156,0.199, 0.04104,0.9156,0.199, 0.04533,0.6917,0.2805, 0.04533,0.839,0.181, 0.03739,0.9036,0.2126, 0.03739,0.9053,0.2126, 3.679E-07,0.04616,-5.502E-09, 0.1996,0.2614,0.2269 45 | } 46 | 47 | MODULE 48 | { 49 | name = JSIExternalCameraSelector 50 | cameraContainer = thrustTransform 51 | rotateCamera = 0,0,180 52 | cameraIDPrefix = ExtCam 53 | cameraFoVMax = 60 54 | cameraFoVMin = 5 55 | } 56 | 57 | MODULE 58 | { 59 | name = ModulePartVariants 60 | baseVariant = Shroud 61 | VARIANT 62 | { 63 | name = Shroud 64 | displayName = #autoLOC_8007114 65 | primaryColor = #ffffff 66 | secondaryColor = #999999 67 | GAMEOBJECTS 68 | { 69 | Shroud = true 70 | Case = false 71 | Mount= false 72 | } 73 | } 74 | } 75 | 76 | } 77 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Parts/ExternalCameraPart/external-camera.cfg: -------------------------------------------------------------------------------- 1 | PART 2 | { 3 | // --- general parameters --- 4 | name = JSIPrimitiveExternalCamera 5 | module = Part 6 | author = C. Jenkins / Mihara 7 | 8 | // --- asset parameters --- 9 | MODEL 10 | { 11 | model = Squad/Parts/Utility/linearVernorRCS/Assets/linearRCS 12 | scale = 0.4,0.8,0.4 13 | } 14 | 15 | // --- node definitions --- 16 | // definition format is Position X, Position Y, Position Z, Up X, Up Y, Up Z 17 | node_attach = 0.0, -0.06, 0.0, 0.0, -1, 0.0 18 | 19 | // --- editor parameters --- 20 | TechRequired = basicScience 21 | entryCost = 4200 22 | cost = 400 23 | category = none 24 | TechHidden = True 25 | subcategory = 0 26 | title = JSI External Radial-mount Camera 27 | manufacturer = Junk Systems Inc. 28 | description = Customers who like multi-function displays with JSI software keep looking around for simple external camera options. This is a most primitive camera, but it works fine when you don't have a better one. No, it's not just an RCS thruster with lens painted on, we have standards here! 29 | 30 | // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision 31 | attachRules = 0,1,0,0,0 32 | 33 | // --- standard part parameters --- 34 | mass = 0.004 35 | maximum_drag = 0.05 36 | minimum_drag = 0.05 37 | angularDrag = 1 38 | crashTolerance = 8 39 | maxTemp = 1200 40 | 41 | DRAG_CUBE // totally not copied from Squad linearRCS asset default DRAG_CUBE in PartDatabase.cfg 42 | { 43 | cube = Default, 0.04104,0.9156,0.199, 0.04104,0.9156,0.199, 0.04533,0.6917,0.2805, 0.04533,0.839,0.181, 0.03739,0.9036,0.2126, 0.03739,0.9053,0.2126, 3.679E-07,0.04616,-5.502E-09, 0.1996,0.2614,0.2269 44 | } 45 | 46 | MODULE 47 | { 48 | name = JSIExternalCameraSelector 49 | cameraContainer = RCSthruster 50 | rotateCamera = -90,0,0 51 | cameraIDPrefix = ExtCam 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Parts/ExternalCameraPart/external-camera.restockwhitelist: -------------------------------------------------------------------------------- 1 | Squad/Parts/Utility/linearVernorRCS/Assets/ 2 | Squad/Parts/Engine/liquidEngineLV-1_v2/Assets/ 3 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/ASET/JSIMainCompUnit.cfg: -------------------------------------------------------------------------------- 1 | 2 | // the ALCOR pod has props placed on the JSIMainCompUnit - remove them 3 | @INTERNAL[ALCORInternals3]:NEEDS[!ASET_RPM_ALCOR_Killswitch] 4 | { 5 | !PROP[pb_FAKE03-F02],1 {} 6 | !PROP[pb_FAKE06-F02],0 {} 7 | !PROP[pb_FAKE07-F02],0 {} 8 | } 9 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/CockpitHandle/OpenHandle.mu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/CockpitHandle/OpenHandle.mu -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/CockpitHandle/OpenHandleDiffuse.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/CockpitHandle/OpenHandleDiffuse.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/CockpitHandle/eva-hatch.cfg: -------------------------------------------------------------------------------- 1 | PROP 2 | { 3 | name = JSIEvaCockpitHandle 4 | MODULE 5 | { 6 | name = JSIInternalEVAHatch 7 | hatchTransform = HandleCollider 8 | } 9 | } -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/IndicatorPanelReplacement/model000.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/IndicatorPanelReplacement/model000.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/IndicatorPanelReplacement/model001.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/IndicatorPanelReplacement/model001.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/IndicatorPanelReplacement/prop.cfg: -------------------------------------------------------------------------------- 1 | PROP 2 | { 3 | 4 | name = IndicatorPanelRPM 5 | 6 | MODEL 7 | { 8 | model = Squad/Props/IndicatorPanel/model 9 | texture = model000,JSI/RasterPropMonitor/Library/Props/IndicatorPanelReplacement/model000 10 | texture = model001,JSI/RasterPropMonitor/Library/Props/IndicatorPanelReplacement/model001 11 | } 12 | 13 | MODULE 14 | { 15 | name = JSIVariableAnimator 16 | refreshRate = 10 17 | // RCS 18 | VARIABLESET 19 | { 20 | coloredObject = indicator01 21 | passiveColor = 0,0,0,255 22 | activeColor = 0,255,58,255 23 | variableName = RCS 24 | scale = 0,1 25 | threshold = 0.5,1.1 26 | } 27 | // SAS 28 | VARIABLESET 29 | { 30 | coloredObject = indicator02 31 | passiveColor = 0,0,0,255 32 | activeColor = 0,255,58,255 33 | variableName = SAS 34 | scale = 0,1 35 | threshold = 0.5,1.1 36 | } 37 | // Gear 38 | VARIABLESET 39 | { 40 | coloredObject = indicator03 41 | passiveColor = 0,0,0,255 42 | activeColor = 0,255,58,255 43 | variableName = GEAR 44 | scale = 0,1 45 | threshold = 0.5,1.1 46 | } 47 | // Light 48 | VARIABLESET 49 | { 50 | coloredObject = indicator04 51 | passiveColor = 0,0,0,255 52 | activeColor = 0,255,58,255 53 | variableName = LIGHTS 54 | scale = 0,1 55 | threshold = 0.5,1.1 56 | } 57 | // Contact 58 | VARIABLESET 59 | { 60 | coloredObject = indicator05 61 | passiveColor = 0,0,0,255 62 | activeColor = 0,255,150,255 63 | variableName = ALTITUDEBOTTOM 64 | scale = 0,10 65 | // Apollo probes were 1676mm long. 66 | // Which is actually quite long! 67 | threshold = -1,0.1676 68 | } 69 | // MECO 70 | VARIABLESET 71 | { 72 | coloredObject = indicator06 73 | passiveColor = 0,0,0,255 74 | activeColor = 0,255,58,255 75 | variableName = THRUST 76 | scale = 0,1 77 | threshold = -1,0.01 78 | } 79 | // Stage 80 | VARIABLESET 81 | { 82 | coloredObject = indicator07 83 | passiveColor = 0,0,0,255 84 | activeColor = 0,255,58,255 85 | variableName = STAGEREADY 86 | scale = 0,1 87 | threshold = 0.5,1.1 88 | } 89 | // TWR 90 | VARIABLESET 91 | { 92 | coloredObject = indicator08 93 | passiveColor = 0,0,0,255 94 | activeColor = 255,140,0,255 95 | reverse = true 96 | variableName = TWR 97 | scale = 0.8,1 98 | } 99 | // Ascent/Descent 100 | VARIABLESET 101 | { 102 | coloredObject = indicator09 103 | passiveColor = 0,255,0,255 104 | activeColor = 255,0,0,255 105 | variableName = VERTSPEED 106 | scale = 5,-5 107 | } 108 | // Heat 109 | VARIABLESET 110 | { 111 | coloredObject = indicator10 112 | passiveColor = 0,0,0,255 113 | activeColor = 255,0,0,255 114 | variableName = PODTEMPERATURE 115 | scale = 0,1700 116 | threshold = 0.85,1.1 117 | flashingDelay = 0.3 118 | } 119 | // Fuel 120 | VARIABLESET 121 | { 122 | coloredObject = indicator11 123 | passiveColor = 0,0,0,255 124 | activeColor = 255,0,0,255 125 | variableName = SYSR_LIQUIDFUELPERCENT 126 | scale = 0,1 127 | threshold = -1,0.05 128 | } 129 | // High G 130 | VARIABLESET 131 | { 132 | coloredObject = indicator12 133 | passiveColor = 0,0,0,255 134 | activeColor = 255,0,0,255 135 | variableName = GFORCE 136 | scale = 0,10 137 | flashingDelay = 0.3 138 | threshold = 0.5,1.1 139 | } 140 | } 141 | } 142 | 143 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/InternalAirlock/InternalAirLock.mu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/InternalAirlock/InternalAirLock.mu -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/InternalAirlock/InternalAirLockDiffuse.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/InternalAirlock/InternalAirLockDiffuse.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/InternalAirlock/eva-hatch-with-model.cfg: -------------------------------------------------------------------------------- 1 | PROP 2 | { 3 | name = JSIEvaHatchFull 4 | MODULE 5 | { 6 | name = JSIInternalEVAHatch 7 | hatchTransform = AirLockCollider 8 | internalAnimation = InternalAirLockOpenAnim 9 | } 10 | } -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/InternalFlagPlate/FlagPlate.mu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/InternalFlagPlate/FlagPlate.mu -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/InternalFlagPlate/FlagPlate000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/InternalFlagPlate/FlagPlate000.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/InternalFlagPlate/prop.cfg: -------------------------------------------------------------------------------- 1 | PROP 2 | { 3 | name = JSIInternalFlagPlate 4 | 5 | MODULE 6 | { 7 | name = JSIInternalFlagDecal 8 | transformName = FlagPlateObj 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/InternalHatch/CubeCollider.mu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/InternalHatch/CubeCollider.mu -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/InternalHatch/eva-hatch.cfg: -------------------------------------------------------------------------------- 1 | PROP 2 | { 3 | name = JSIEvaHatch 4 | MODULE 5 | { 6 | name = JSIInternalEVAHatch 7 | hatchTransform = generalPurposeCollider 8 | } 9 | } -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/SimpleProps/AxisIndicator.cfg: -------------------------------------------------------------------------------- 1 | // Props using the axis indicator as a linear analog gauge 2 | 3 | PROP 4 | { 5 | // Throttle position indicator 6 | name = JSIAA_Throttle 7 | MODEL 8 | { 9 | model = Squad/Props/AxisIndicator/model 10 | } 11 | MODULE 12 | { 13 | name = JSIVariableAnimator 14 | refreshRate = 5 15 | VARIABLESET 16 | { 17 | variableName = THROTTLE 18 | scale = 0.0,1.0 19 | controlledTransform = BarIndicator 20 | localTranslationStart = 0, 0.001, 0.066 21 | localTranslationEnd = 0, 0.001, 0.000 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/SimpleProps/Blinkenlichten.cfg: -------------------------------------------------------------------------------- 1 | PROP 2 | { 3 | name = JSIStockSquareBlinkenlichten 4 | MODEL 5 | { 6 | model = Squad/Props/squareButton/model 7 | } 8 | MODULE 9 | { 10 | name = JSIVariableAnimator 11 | refreshRate = 1200 12 | coloredObject = button 13 | passiveColor = 0,0,0,255 14 | activeColor = 255,238,147,255 15 | variableName = RANDOM 16 | scale = 0,1 17 | } 18 | } -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/SimpleProps/JSISwitchable.cfg: -------------------------------------------------------------------------------- 1 | PROP 2 | { 3 | // Altimeter. Switches between ALTITUDE and RADARALTOCEAN. The button 4 | // button switches color to indicate mode. 5 | name = JSIStockAltimeter 6 | MODEL 7 | { 8 | model = Squad/Props/ledPanelSpeed/model 9 | } 10 | MODULE 11 | { 12 | name = JSISwitchableVariableLabel 13 | 14 | labelTransform = textLabel 15 | fontSize = 0.009 16 | refreshRate = 12 17 | 18 | switchSound = Squad/Sounds/sound_click_tock 19 | switchTransform = toggleButton 20 | coloredObject = toggleButton 21 | 22 | VARIABLESET 23 | { 24 | labelText = ASL: <=0:SIP7.1=>m $&$ ALTITUDE 25 | color = 0,0,255,255 26 | } 27 | VARIABLESET 28 | { 29 | labelText = AGL: <=0:SIP7.1=>m $&$ RADARALTOCEAN 30 | color = 0,255,128,255 31 | } 32 | } 33 | } 34 | 35 | PROP 36 | { 37 | // Fuel display. Toggles between FUEL and FUELPERCENT. Button 38 | // color shifts depending on fuel level. 39 | name = JSIStockFuelPanel 40 | MODEL 41 | { 42 | model = Squad/Props/ledPanelSpeed/model 43 | } 44 | MODULE 45 | { 46 | name = JSIVariableAnimator 47 | refreshRate = 12 48 | coloredObject = toggleButton 49 | passiveColor = 255,0,0,255 50 | activeColor = 0,255,58,255 51 | variableName = FUELPERCENT 52 | scale = 0.1,0.45 53 | } 54 | 55 | MODULE 56 | { 57 | name = JSISwitchableVariableLabel 58 | 59 | labelTransform = textLabel 60 | fontSize = 0.009 61 | refreshRate = 12 62 | 63 | switchSound = Squad/Sounds/sound_click_tock 64 | switchTransform = toggleButton 65 | 66 | VARIABLESET 67 | { 68 | labelText = FUEL: <=0,6:f0=> $&$ SYSR_LIQUIDFUEL 69 | } 70 | VARIABLESET 71 | { 72 | labelText = FUEL: <=0,4:0%=> $&$ SYSR_LIQUIDFUELPERCENT 73 | } 74 | } 75 | } 76 | 77 | PROP 78 | { 79 | // Same as JSIStockFuel, but for monoprop 80 | name = JSIStockMono 81 | MODEL 82 | { 83 | model = Squad/Props/ledPanelSpeed/model 84 | } 85 | MODULE 86 | { 87 | name = JSIVariableAnimator 88 | refreshRate = 12 89 | coloredObject = toggleButton 90 | passiveColor = 255,0,0,255 91 | activeColor = 0,255,58,255 92 | variableName = SYSR_MONOPROPELLANTPERCENT 93 | scale = 0.1,0.45 94 | } 95 | 96 | MODULE 97 | { 98 | name = JSISwitchableVariableLabel 99 | 100 | labelTransform = textLabel 101 | fontSize = 0.009 102 | refreshRate = 12 103 | 104 | switchSound = Squad/Sounds/sound_click_tock 105 | switchTransform = toggleButton 106 | 107 | VARIABLESET 108 | { 109 | labelText = MONO: <=0,6:f0=> $&$ SYSR_MONOPROPELLANT 110 | } 111 | VARIABLESET 112 | { 113 | labelText = MONO: <=0,4:0%=> $&$ SYSR_MONOPROPELLANTPERCENT 114 | } 115 | } 116 | } 117 | 118 | PROP 119 | { 120 | // Same as JSIStockFuel, but for electric 121 | name = JSIStockPower 122 | MODEL 123 | { 124 | model = Squad/Props/ledPanelSpeed/model 125 | } 126 | MODULE 127 | { 128 | name = JSIVariableAnimator 129 | refreshRate = 12 130 | coloredObject = toggleButton 131 | passiveColor = 255,0,0,255 132 | activeColor = 0,255,58,255 133 | variableName = SYSR_ELECTRICCHARGEPERCENT 134 | scale = 0.1,0.45 135 | } 136 | 137 | MODULE 138 | { 139 | name = JSISwitchableVariableLabel 140 | 141 | labelTransform = textLabel 142 | fontSize = 0.009 143 | refreshRate = 12 144 | 145 | switchSound = Squad/Sounds/sound_click_tock 146 | switchTransform = toggleButton 147 | 148 | VARIABLESET 149 | { 150 | labelText = ELEC: <=0,6:f0=> $&$ SYSR_ELECTRICCHARGE 151 | } 152 | VARIABLESET 153 | { 154 | labelText = ELEC: <=0,4:0%=> $&$ SYSR_ELECTRICCHARGEPERCENT 155 | } 156 | } 157 | } 158 | 159 | PROP 160 | { 161 | // A gratuitous button that color changes when pressed, but does 162 | // nothing else 163 | name = JSIMulticolorButton 164 | MODEL 165 | { 166 | model = Squad/Props/squareButton/model 167 | } 168 | MODULE 169 | { 170 | name = JSISwitchableVariableLabel 171 | 172 | refreshRate = 120 173 | 174 | switchTransform = button 175 | coloredObject = button 176 | 177 | VARIABLESET 178 | { 179 | color = 0,255,0,255 180 | } 181 | VARIABLESET 182 | { 183 | color = 0,0,255,255 184 | } 185 | VARIABLESET 186 | { 187 | color = 255,0,255,255 188 | } 189 | VARIABLESET 190 | { 191 | color = 255,255,0,255 192 | } 193 | VARIABLESET 194 | { 195 | color = 255,255,255,255 196 | } 197 | VARIABLESET 198 | { 199 | color = 0,0,0,255 200 | } 201 | } 202 | } 203 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/SimpleProps/SquareButtons.cfg: -------------------------------------------------------------------------------- 1 | PROP 2 | { 3 | name = JSIStockSquareButtonLight 4 | MODEL 5 | { 6 | model = Squad/Props/squareButton/model 7 | } 8 | 9 | MODULE 10 | { 11 | name = JSIActionGroupSwitch 12 | actionName = lights 13 | switchSound = Squad/Sounds/sound_click_latch 14 | switchTransform = button 15 | coloredObject = button 16 | disabledColor = 0,0,0,255 17 | enabledColor = 250,250,12,255 18 | } 19 | } 20 | 21 | PROP 22 | { 23 | name = JSIStockSquareButtonGear 24 | MODEL 25 | { 26 | model = Squad/Props/squareButton/model 27 | } 28 | 29 | MODULE 30 | { 31 | name = JSIActionGroupSwitch 32 | actionName = gear 33 | switchSound = Squad/Sounds/sound_click_latch 34 | switchTransform = button 35 | coloredObject = button 36 | disabledColor = 0,0,0,255 37 | enabledColor = 54,9,235,255 38 | } 39 | } 40 | 41 | PROP 42 | { 43 | name = JSIStockSquareButtonRCS 44 | MODEL 45 | { 46 | model = Squad/Props/squareButton/model 47 | } 48 | 49 | MODULE 50 | { 51 | name = JSIActionGroupSwitch 52 | actionName = rcs 53 | switchSound = Squad/Sounds/sound_click_latch 54 | switchTransform = button 55 | coloredObject = button 56 | disabledColor = 0,0,0,255 57 | enabledColor = 255,145,0,255 58 | } 59 | } 60 | 61 | PROP 62 | { 63 | name = JSIStockSquareButtonSAS 64 | MODEL 65 | { 66 | model = Squad/Props/squareButton/model 67 | } 68 | 69 | MODULE 70 | { 71 | name = JSIActionGroupSwitch 72 | actionName = sas 73 | switchSound = Squad/Sounds/sound_click_latch 74 | switchTransform = button 75 | coloredObject = button 76 | disabledColor = 0,0,0,255 77 | enabledColor = 19,236,240,255 78 | } 79 | } 80 | 81 | PROP 82 | { 83 | name = JSIStockSquareButtonBRAKES 84 | MODEL 85 | { 86 | model = Squad/Props/squareButton/model 87 | } 88 | 89 | MODULE 90 | { 91 | name = JSIActionGroupSwitch 92 | actionName = brakes 93 | switchSound = Squad/Sounds/sound_click_latch 94 | switchTransform = button 95 | coloredObject = button 96 | disabledColor = 0,0,0,255 97 | enabledColor = 255,0,0,255 98 | } 99 | } 100 | 101 | PROP 102 | { 103 | // Staging button 104 | name = JSIStockSquareButtonStage 105 | MODEL 106 | { 107 | model = Squad/Props/squareButton/model 108 | } 109 | MODULE 110 | { 111 | name = JSIVariableAnimator 112 | refreshRate = 15 113 | coloredObject = button 114 | passiveColor = 64,0,0,255 115 | activeColor = 255,0,0,255 116 | variableName = STAGEREADY 117 | scale = 0.8,1.0 118 | } 119 | MODULE 120 | { 121 | name = JSIActionGroupSwitch 122 | switchTransform = button 123 | actionName = stage 124 | switchSound = Squad/Sounds/sound_click_latch 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/SimpleProps/TrimmerKnobs.cfg: -------------------------------------------------------------------------------- 1 | PROP 2 | { 3 | name = JSITrimKnobPitch 4 | 5 | MODEL 6 | { 7 | model = Squad/Props/directionalKnob/model 8 | } 9 | 10 | MODULE 11 | { 12 | name = JSIVariableAnimator 13 | refreshRate = 3 14 | VARIABLESET 15 | { 16 | controlledTransform = Knob 17 | localRotationStart = 0,0,157 18 | localRotationEnd = 0,0,-157 19 | longPath = yes 20 | variableName = STICKPITCHTRIM 21 | scale = -1,1 22 | } 23 | } 24 | } 25 | 26 | PROP 27 | { 28 | name = JSITrimKnobYaw 29 | 30 | MODEL 31 | { 32 | model = Squad/Props/directionalKnob/model 33 | } 34 | 35 | MODULE 36 | { 37 | name = JSIVariableAnimator 38 | refreshRate = 3 39 | VARIABLESET 40 | { 41 | controlledTransform = Knob 42 | localRotationStart = 0,0,157 43 | localRotationEnd = 0,0,-157 44 | longPath = yes 45 | variableName = STICKYAWTRIM 46 | scale = -1,1 47 | } 48 | } 49 | } 50 | 51 | PROP 52 | { 53 | name = JSITrimKnobRoll 54 | 55 | MODEL 56 | { 57 | model = Squad/Props/directionalKnob/model 58 | } 59 | 60 | MODULE 61 | { 62 | name = JSIVariableAnimator 63 | refreshRate = 3 64 | VARIABLESET 65 | { 66 | controlledTransform = Knob 67 | localRotationStart = 0,0,157 68 | localRotationEnd = 0,0,-157 69 | longPath = yes 70 | variableName = STICKROLLTRIM 71 | scale = -1,1 72 | } 73 | } 74 | } 75 | 76 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/SwitchWCover/SwitchIcons.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/SwitchWCover/SwitchIcons.tga -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/SwitchWCover/SwitchWCover.mu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/SwitchWCover/SwitchWCover.mu -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/SwitchWCover/Switch_w_cover_Diff.dds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Props/SwitchWCover/Switch_w_cover_Diff.dds -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Props/SwitchWCover/mechSwitch.cfg: -------------------------------------------------------------------------------- 1 | PROP 2 | { 3 | name = JSIswitch_GEAR 4 | 5 | MODULE 6 | { 7 | name = JSIActionGroupSwitch 8 | animationName = SwitchWCoverAnim 9 | switchTransform = SwitchColider 10 | actionName = gear 11 | } 12 | 13 | MODULE 14 | { 15 | name = JSIPropTextureShift 16 | transformToShift = SwitchNamePlate 17 | layerToShift = _MainTex _Emissive 18 | x = 0.00 19 | y = 0.75 20 | } 21 | 22 | } 23 | 24 | PROP 25 | { 26 | name = JSIswitch_LIGHTS 27 | 28 | MODULE 29 | { 30 | name = JSIActionGroupSwitch 31 | animationName = SwitchWCoverAnim 32 | switchTransform = SwitchColider 33 | actionName = lights 34 | } 35 | 36 | MODULE 37 | { 38 | name = JSIPropTextureShift 39 | transformToShift = SwitchNamePlate 40 | layerToShift = _MainTex _Emissive 41 | x = 0.00 42 | y = 0.5 43 | } 44 | 45 | } 46 | 47 | PROP 48 | { 49 | name = JSIswitch_RCS 50 | 51 | MODULE 52 | { 53 | name = JSIActionGroupSwitch 54 | animationName = SwitchWCoverAnim 55 | switchTransform = SwitchColider 56 | actionName = rcs 57 | } 58 | 59 | MODULE 60 | { 61 | name = JSIPropTextureShift 62 | transformToShift = SwitchNamePlate 63 | layerToShift = _MainTex _Emissive 64 | x = 0.00 65 | y = 0.25 66 | } 67 | 68 | } 69 | 70 | PROP 71 | { 72 | name = JSIswitch_SAS 73 | 74 | MODULE 75 | { 76 | name = JSIActionGroupSwitch 77 | animationName = SwitchWCoverAnim 78 | switchTransform = SwitchColider 79 | actionName = sas 80 | } 81 | 82 | MODULE 83 | { 84 | name = JSIPropTextureShift 85 | transformToShift = SwitchNamePlate 86 | layerToShift = _MainTex _Emissive 87 | x = 0.00 88 | y = 0.00 89 | } 90 | 91 | } 92 | 93 | 94 | PROP 95 | { 96 | name = JSIswitch_BRAKE 97 | 98 | MODULE 99 | { 100 | name = JSIActionGroupSwitch 101 | animationName = SwitchWCoverAnim 102 | switchTransform = SwitchColider 103 | actionName = brakes 104 | } 105 | 106 | MODULE 107 | { 108 | name = JSIPropTextureShift 109 | transformToShift = SwitchNamePlate 110 | layerToShift = _MainTex _Emissive 111 | x = 0.25 112 | y = 0.00 113 | } 114 | 115 | } 116 | 117 | PROP 118 | { 119 | name = JSIswitch_StageLock 120 | 121 | MODULE 122 | { 123 | name = JSIActionGroupSwitch 124 | animationName = SwitchWCoverAnim 125 | switchTransform = SwitchColider 126 | actionName = plugin 127 | switchSound = Squad/Sounds/sound_click_latch 128 | PLUGINACTION 129 | { 130 | name = JSIInternalRPMButtons 131 | actionMethod = ButtonStageLock 132 | stateMethod = ButtonStageLockState 133 | } 134 | } 135 | 136 | MODULE 137 | { 138 | name = JSIPropTextureShift 139 | transformToShift = SwitchNamePlate 140 | layerToShift = _MainTex _Emissive 141 | x = 0.25 142 | y = 0.25 143 | } 144 | 145 | } 146 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Sounds/buttonbeep.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Sounds/buttonbeep.ogg -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Textures/bg01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Textures/bg01.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Textures/graphgrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Textures/graphgrid.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Textures/noscansat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Textures/noscansat.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Textures/nosignal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Textures/nosignal.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Textures/scaleLabels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Textures/scaleLabels.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Library/Textures/scalebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/Library/Textures/scalebar.png -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Patches/squad-pitch-bounds.cfg: -------------------------------------------------------------------------------- 1 | @INTERNAL:HAS[@MODEL:HAS[#model[Squad*]]&!MODULE[JSISetInternalCameraFOV]]:LAST[RasterPropMonitor] 2 | { 3 | MODULE 4 | { 5 | name = JSISetInternalCameraFOV 6 | } 7 | } -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Plugins/3rdPartyLicenses/digital-7-readme.txt: -------------------------------------------------------------------------------- 1 | True Type Fonts: DIGITAL-7 version 1.02 2 | 3 | 4 | EULA 5 | -==- 6 | The fonts Digital-7 is freeware for home using. 7 | 8 | 9 | DESCRIPTION 10 | -=========- 11 | 12 | This font created specially for program Calculator-7 (download shareware version: http://www.styleseven.com/ and use 7 days fo free). 13 | 14 | The program Calculator-7 offers you the following possibilities: 15 | * calculate using seven operator: addition, subtraction, multiply, divide, percent, square root, 1 divide to X; 16 | * set decimal position (0, 2, 3, float) and round type (up, mathematical, down); 17 | * customize an appearance of work window: scale, fonts for digital panel and buttons, background color; 18 | * customize an appearance of number in digital panel: leading zero for decimal, thousand separator, decimal separator, digit grouping; 19 | * calculate total from clipboard (copy data to clipboard from table or text and press one button). 20 | 21 | 22 | Files in digital-7_font.zip: 23 | readme.txt this file; 24 | digital-7.ttf digital-7 regular font; 25 | digital-7 (italic).ttf digital-7 italic font; 26 | digital-7 (mono).ttf digital-7 mono font; 27 | digital-7 (mono italic).ttf digital-7 mono font. 28 | 29 | Please visit http://www.styleseven.com/ for download our other products as freeware as shareware. 30 | We will welcome any useful suggestions and comments; please send them to ms-7@styleseven.com 31 | 32 | 33 | FREEWARE USE (NOTES) 34 | -=================- 35 | Also you may: 36 | * Use the font in freeware software (credit needed); 37 | * Use the font for your education process. 38 | 39 | 40 | COMMERCIAL OR BUSINESS USE 41 | -========================- 42 | 43 | You can buy font for commercial use here ($24.95): http://store.esellerate.net/s.aspx?s=STR0331655240 44 | You may: 45 | * Include the font to your installation; 46 | * Use one license up to 100 computers in your office. 47 | Please contact us for any questions. 48 | 49 | 50 | WHAT IS NEW? 51 | -==========- 52 | 53 | Version 1.01 April 05 2009 54 | -------------------------- 55 | * Change Typeface name for fonts "Digital-7 (mono)" and "Digital-7 (italic)" (now available all fonts for select in application, for example Word Pad). 56 | * Corrected symbol ':'. 57 | 58 | Version 1.01 April 07 2011 59 | -------------------------- 60 | * Embedding is allowed. 61 | 62 | Version 1.1 June 07 2013 63 | -------------------------- 64 | * Mono Italic font is added. 65 | 66 | 67 | AUTHOR 68 | -====- 69 | 70 | Sizenko Alexander 71 | Style-7 72 | http://www.styleseven.com 73 | Created: October 7 2008 -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Plugins/3rdPartyLicenses/repetition-scrolling-ReadMe.txt: -------------------------------------------------------------------------------- 1 | T E P I D M O N K E Y F O N T S 2 | freeware fonts for a freeware world 3 | 4 | Site: http://www.fontframe.com/tepidmonkey 5 | E-mail: tepidmonkey@yahoo.com 6 | 7 | Thanks for your interest in my fonts! 8 | 9 | For help on how to unzip, unstuff or install one of my 10 | fonts, please visit my site at 11 | http://www.fontframe.com/tepidmonkey and go to the Help section. 12 | If you have any comments or questions, you can e-mail 13 | me at tepidmonkey@yahoo.com and I'll try to reply as 14 | soon as possible. 15 | 16 | Every week, I present a brand new original font for 17 | your downloading pleasure, so be sure to visit my web 18 | site every Sunday. 19 | 20 | You may use this font(s) for non-commercial and 21 | commercial purposes. You are not allowed to sell this 22 | font for any fee at all. You are allowed to 23 | redistribute it as long as you don't charge ANYTHING 24 | for it (at all) and if you include this unaltered 25 | Read Me file. You may not change any aspect of the font 26 | file or this file. 27 | For the full set of terms of use (which override what 28 | is listed here), go to http://www.fontframe.com/tepidmonkey 29 | and visit the Terms Of Use section. -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Plugins/reduce-iva-cpu-usage.cfg: -------------------------------------------------------------------------------- 1 | // To the best of my knowledge, the InternalButtonLight module does not actually work, 2 | // and becomes a useless resource drain. It definitely isn't actually being used anywhere. 3 | // The internalGeneric module is likewise unnecessary for normal IVA function and explicitly doesn't do anything 4 | // -- yet Unity wastes resources enumerating it, not much, but why do it at all? 5 | 6 | // This patch cuts both of them out of all the stock props to reduce component count. 7 | 8 | @PROP[*]:HAS[@MODULE[InternalButtonLight]]:FINAL 9 | { 10 | !MODULE[InternalButtonLight] {} 11 | } 12 | 13 | @PROP[*]:HAS[@MODULE[internalGeneric]]:FINAL 14 | { 15 | !MODULE[internalGeneric] {} 16 | } 17 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/Plugins/rpm-config.cfg: -------------------------------------------------------------------------------- 1 | RasterPropMonitorSettings 2 | { 3 | DebugLogging = False 4 | ShowCallCount = False 5 | DefaultRefreshRate = 5 6 | MinimumRefreshRate = 1 7 | } 8 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/RasterPropMonitor.version: -------------------------------------------------------------------------------- 1 | { 2 | "NAME": "RasterPropMonitor", 3 | "URL": "https://github.com/FirstPersonKSP/RasterPropMonitor/releases/latest/download/RasterPropMonitor.version", 4 | "DOWNLOAD": "https://github.com/FirstPersonKSP/RasterPropMonitor/releases", 5 | "VERSION": 6 | { 7 | "MAJOR": 1, 8 | "MINOR": 0, 9 | "PATCH": 2 10 | }, 11 | "KSP_VERSION": 12 | { 13 | "MAJOR": 1, 14 | "MINOR": 12, 15 | "PATCH": 3 16 | }, 17 | "KSP_VERSION_MIN": 18 | { 19 | "MAJOR": 1, 20 | "MINOR": 12, 21 | "PATCH": 0 22 | }, 23 | "KSP_VERSION_MAX": 24 | { 25 | "MAJOR": 1, 26 | "MINOR": 12, 27 | "PATCH": 99 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/RasterPropMonitor.version.versiontemplate: -------------------------------------------------------------------------------- 1 | { 2 | "NAME": "RasterPropMonitor", 3 | "URL": "https://github.com/FirstPersonKSP/RasterPropMonitor/releases/latest/download/RasterPropMonitor.version", 4 | "DOWNLOAD": "https://github.com/FirstPersonKSP/RasterPropMonitor/releases", 5 | "VERSION": 6 | { 7 | "MAJOR": @VERSION_MAJOR@, 8 | "MINOR": @VERSION_MINOR@, 9 | "PATCH": @VERSION_PATCH@ 10 | }, 11 | "KSP_VERSION": 12 | { 13 | "MAJOR": 1, 14 | "MINOR": 12, 15 | "PATCH": 3 16 | }, 17 | "KSP_VERSION_MIN": 18 | { 19 | "MAJOR": 1, 20 | "MINOR": 12, 21 | "PATCH": 0 22 | }, 23 | "KSP_VERSION_MAX": 24 | { 25 | "MAJOR": 1, 26 | "MINOR": 12, 27 | "PATCH": 99 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/rasterpropmonitor-font.assetbundle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/rasterpropmonitor-font.assetbundle -------------------------------------------------------------------------------- /GameData/JSI/RasterPropMonitor/rasterpropmonitor-shaders.assetbundle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirstPersonKSP/RasterPropMonitor/6a40b2076de68c24475ec5c6f62c44408dbdc6e0/GameData/JSI/RasterPropMonitor/rasterpropmonitor-shaders.assetbundle -------------------------------------------------------------------------------- /MechJebRPM/MechJebRPM.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 8.0.30703 7 | 2.0 8 | {272BB11D-C8A8-4CA8-8C18-58324670C68C} 9 | Library 10 | MechJebRPM 11 | MechJebRPM 12 | 0.20.0 13 | 65001 14 | v3.5 15 | 16 | 17 | true 18 | full 19 | false 20 | ..\bin\Debug 21 | DEBUG; 22 | prompt 23 | 4 24 | false 25 | 4 26 | 27 | 28 | true 29 | ..\bin\Release 30 | prompt 31 | 4 32 | false 33 | 4 34 | 35 | 36 | 37 | 38 | ..\..\..\..\..\Games\Steam\steamapps\common\Kerbal Space Program\KSP_Data\Managed\Assembly-CSharp.dll 39 | False 40 | 41 | 42 | ..\..\..\..\..\Games\Steam\steamapps\common\Kerbal Space Program\KSP_Data\Managed\UnityEngine.dll 43 | False 44 | 45 | 46 | ..\..\..\..\..\Games\Steam\steamapps\common\Kerbal Space Program\GameData\MechJeb2\Plugins\MechJeb2.dll 47 | False 48 | 49 | 50 | 51 | 52 | 53 | 54 | Properties\SharedAssemblyInfo.cs 55 | 56 | 57 | 58 | 59 | 60 | 61 | {F19C7AB4-50C2-4378-9673-CC039CA12E10} 62 | RasterPropMonitor 63 | False 64 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /MechJebRPM/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | // Information about this assembly is defined by the following attributes. 5 | // Change them to the values specific to your project. 6 | [assembly: AssemblyTitle("MechJebRPM")] 7 | [assembly: AssemblyDescription("RasterPropMonitor / MechJeb2 interface plugin for Kerbal Space Program")] 8 | 9 | // For KSP purposes we are MechJebRPM version 0.18, because 10 | // 0.17 depended on KSPAssembly version 2.2. 11 | [assembly: KSPAssembly("MechJebRPM", 0, 18)] 12 | // Depends on RPM 0.17 and MechJeb 2.3. 13 | // Supposedly these help avoid the problems of plugin loading order. 14 | [assembly: KSPAssemblyDependency("RasterPropMonitor", 0, 17)] 15 | [assembly: KSPAssemblyDependency("MechJeb2", 2, 3)] -------------------------------------------------------------------------------- /RasterPropMonitor/Auxiliary modules/InternalCameraTargetHelper.cs: -------------------------------------------------------------------------------- 1 | namespace JSI 2 | { 3 | public class InternalCameraTargetHelper: InternalModule 4 | { 5 | private ITargetable target; 6 | private bool needsRestoring; 7 | private static Part referencePart; 8 | private bool wasOutsideOnPreviousFrame = true; 9 | 10 | public override void OnUpdate() 11 | { 12 | if (!JUtil.VesselIsInIVA(vessel)) { 13 | wasOutsideOnPreviousFrame = true; 14 | return; 15 | } 16 | 17 | // Restoring target. 18 | if (needsRestoring && target != null && FlightGlobals.fetch.VesselTarget == null) { 19 | FlightGlobals.fetch.SetVesselTarget(target); 20 | } else { 21 | target = FlightGlobals.fetch.VesselTarget; 22 | } 23 | needsRestoring = false; 24 | 25 | // Restoring reference. 26 | if (wasOutsideOnPreviousFrame && referencePart != null && referencePart.vessel == vessel && vessel.GetReferenceTransformPart() == part) { 27 | referencePart.MakeReferencePart(); 28 | } 29 | if (!GameSettings.CAMERA_NEXT.GetKey()) { 30 | referencePart = vessel.GetReferenceTransformPart(); 31 | wasOutsideOnPreviousFrame = false; 32 | } else { 33 | wasOutsideOnPreviousFrame = true; 34 | } 35 | 36 | } 37 | 38 | public void LateUpdate() 39 | { 40 | if (!JUtil.VesselIsInIVA(vessel)) 41 | return; 42 | 43 | needsRestoring |= Mouse.Left.GetDoubleClick(); 44 | } 45 | } 46 | } 47 | 48 | -------------------------------------------------------------------------------- /RasterPropMonitor/Auxiliary modules/JSIFlashModule.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | using System; 22 | using System.Collections; 23 | using UnityEngine; 24 | 25 | namespace JSI 26 | { 27 | /// 28 | /// JSIFlashModule is a very basic class for managing flashing behavior in 29 | /// multiple props without everyone needing their own counters. It uses the 30 | /// Unity coroutine functionality to approximate the requested flashRate, 31 | /// accounting for timewarp (although if the warp is high enough or the rate 32 | /// is low enough, it'll use the FixedUpdate interval instead). 33 | /// 34 | /// TODO: Is FixedUpdate the right interval, or should I use something like 35 | /// render update? 36 | /// 37 | public class JSIFlashModule : PartModule 38 | { 39 | /// 40 | /// Flash toggle rate in Hz (1/2 of the duty cycle) 41 | /// 42 | [KSPField] 43 | public float flashRate = 0.0f; 44 | 45 | /// 46 | /// Current state 47 | /// 48 | private bool flashToggle; 49 | 50 | /// 51 | /// Who cares about this? 52 | /// 53 | public event Action flashSubscribers; 54 | 55 | /// 56 | /// Start the coroutine 57 | /// 58 | public void Start() 59 | { 60 | if (!HighLogic.LoadedSceneIsEditor && flashRate > 0.0f) 61 | { 62 | StartCoroutine(FlashCoroutine()); 63 | } 64 | } 65 | 66 | /// 67 | /// Clear out flashRate (probably not needed) 68 | /// 69 | public void OnDestroy() 70 | { 71 | flashRate = 0.0f; 72 | } 73 | 74 | /// 75 | /// Coroutine for toggling the flash boolean. 76 | /// 77 | /// 78 | private IEnumerator FlashCoroutine() 79 | { 80 | while (flashRate > 0.0f) 81 | { 82 | float delay = 0.0f; 83 | try 84 | { 85 | flashToggle = !flashToggle; 86 | 87 | flashSubscribers(flashToggle); 88 | 89 | delay = flashRate / TimeWarp.CurrentRate; 90 | } 91 | catch 92 | { 93 | } 94 | if (delay == 0.0f) 95 | { 96 | yield return null; 97 | } 98 | else if (delay < TimeWarp.fixedDeltaTime) 99 | { 100 | yield return new WaitForFixedUpdate(); 101 | } 102 | else 103 | { 104 | yield return new WaitForSeconds(delay); 105 | } 106 | 107 | } 108 | 109 | yield return null; 110 | 111 | } 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /RasterPropMonitor/Auxiliary modules/JSIInternalBackgroundNoise.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace JSI 4 | { 5 | public class JSIInternalBackgroundNoise : InternalModule 6 | { 7 | [KSPField] 8 | public string soundURL; 9 | [KSPField] 10 | public float soundVolume = 0.1f; 11 | [KSPField] 12 | public bool needsElectricCharge = true; 13 | [KSPField] 14 | public string resourceName = "SYSR_ELECTRICCHARGE"; 15 | private VariableOrNumber resourceVariable; 16 | private FXGroup audioOutput; 17 | private bool isPlaying; 18 | private const int soundCheckRate = 60; 19 | private int soundCheckCountdown; 20 | private RasterPropMonitorComputer rpmComp; 21 | 22 | public void Start() 23 | { 24 | if (HighLogic.LoadedSceneIsEditor) 25 | { 26 | return; 27 | } 28 | 29 | rpmComp = RasterPropMonitorComputer.FindFromProp(internalProp); 30 | if (string.IsNullOrEmpty(soundURL)) 31 | { 32 | JUtil.LogMessage(this, "JSIInternalBackgroundNoise called with no soundURL"); 33 | Destroy(this); 34 | return; 35 | } 36 | 37 | if (needsElectricCharge) 38 | { 39 | rpmComp.UpdateDataRefreshRate(soundCheckRate); 40 | resourceVariable = rpmComp.InstantiateVariableOrNumber(resourceName); 41 | } 42 | audioOutput = new FXGroup("RPM" + internalModel.internalName + vessel.id); 43 | audioOutput.audio = internalModel.gameObject.AddComponent(); 44 | audioOutput.audio.clip = GameDatabase.Instance.GetAudioClip(soundURL.EnforceSlashes()); 45 | audioOutput.audio.Stop(); 46 | audioOutput.audio.volume = GameSettings.SHIP_VOLUME * soundVolume; 47 | audioOutput.audio.rolloffMode = AudioRolloffMode.Logarithmic; 48 | audioOutput.audio.maxDistance = 10f; 49 | audioOutput.audio.minDistance = 8f; 50 | audioOutput.audio.dopplerLevel = 0f; 51 | audioOutput.audio.panStereo = 0f; 52 | audioOutput.audio.playOnAwake = false; 53 | audioOutput.audio.priority = 255; 54 | audioOutput.audio.loop = true; 55 | audioOutput.audio.pitch = 1f; 56 | } 57 | 58 | private void StopPlaying() 59 | { 60 | if (isPlaying) 61 | { 62 | audioOutput.audio.Stop(); 63 | isPlaying = false; 64 | } 65 | } 66 | 67 | private void StartPlaying() 68 | { 69 | if (!isPlaying && (!needsElectricCharge || resourceVariable.AsDouble() > 0.01)) 70 | { 71 | audioOutput.audio.Play(); 72 | isPlaying = true; 73 | } 74 | } 75 | 76 | public override void OnUpdate() 77 | { 78 | if (!JUtil.UserIsInPod(part)) 79 | { 80 | StopPlaying(); 81 | return; 82 | } 83 | 84 | if (needsElectricCharge) 85 | { 86 | soundCheckCountdown--; 87 | if (soundCheckCountdown <= 0) 88 | { 89 | soundCheckCountdown = soundCheckRate; 90 | 91 | if (resourceVariable.AsDouble() < 0.01) 92 | { 93 | StopPlaying(); 94 | return; 95 | } 96 | } 97 | } 98 | 99 | StartPlaying(); 100 | } 101 | } 102 | } 103 | 104 | -------------------------------------------------------------------------------- /RasterPropMonitor/Auxiliary modules/JSIInternalFlagDecal.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace JSI 4 | { 5 | public class JSIInternalFlagDecal: InternalModule 6 | { 7 | [KSPField] 8 | public string transformName = string.Empty; 9 | [KSPField] 10 | public string textureLayer = "_MainTex"; 11 | 12 | public void Start() 13 | { 14 | Transform quad; 15 | quad = internalProp != null ? internalProp.FindModelTransform(transformName) : internalModel.FindModelTransform(transformName); 16 | Renderer mat = quad.GetComponent(); 17 | mat.material.SetTexture(textureLayer, GameDatabase.Instance.GetTexture(part.flagURL, false)); 18 | Destroy(this); 19 | } 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /RasterPropMonitor/Auxiliary modules/JSINavBall.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | using System; 22 | using UnityEngine; 23 | 24 | namespace JSI 25 | { 26 | class JSINavBall : InternalNavBall 27 | { 28 | /// 29 | /// Name of the enabling variable. Required. 30 | /// 31 | [KSPField] 32 | public string variableName = string.Empty; 33 | 34 | /// 35 | /// vec2 containing the 'enabled' range. May be numeric or varibles. Required. 36 | /// 37 | [KSPField] 38 | public string range = string.Empty; 39 | 40 | /// 41 | /// Maximum angle that the navball can change per second, in degrees. Defaults to 180. 42 | /// 43 | [KSPField] 44 | public float maxAngleChange = 180.0f; 45 | 46 | private VariableOrNumberRange enablingVariable; 47 | private RasterPropMonitorComputer rpmComp; 48 | 49 | private Quaternion lastOrientation; 50 | 51 | public void Start() 52 | { 53 | if (HighLogic.LoadedSceneIsEditor) 54 | { 55 | return; 56 | } 57 | 58 | rpmComp = RasterPropMonitorComputer.FindFromProp(internalProp); 59 | 60 | lastOrientation = navBall.rotation; 61 | 62 | if (string.IsNullOrEmpty(variableName) || string.IsNullOrEmpty(range)) 63 | { 64 | JUtil.LogErrorMessage(this, "variableName or range was null!"); 65 | return; 66 | } 67 | string[] tokens = range.Split(','); 68 | if (tokens.Length != 2) 69 | { 70 | JUtil.LogErrorMessage(this, "range '{0}' did not have exactly two values!", range); 71 | return; 72 | } 73 | 74 | enablingVariable = new VariableOrNumberRange(rpmComp, variableName, tokens[0], tokens[1]); 75 | } 76 | 77 | public override void OnUpdate() 78 | { 79 | if (enablingVariable == null) 80 | { 81 | return; 82 | } 83 | 84 | if (enablingVariable.IsInRange()) 85 | { 86 | base.OnUpdate(); 87 | Quaternion post = navBall.rotation; 88 | float deltaAngle = Quaternion.Angle(lastOrientation, post); 89 | float maxAngle = maxAngleChange * Time.deltaTime; 90 | 91 | // If the rotation angle exceeds what we can do, slow it down 92 | if (deltaAngle > maxAngle) 93 | { 94 | Quaternion newRotation = Quaternion.Slerp(lastOrientation, post, maxAngle / deltaAngle); 95 | lastOrientation = newRotation; 96 | navBall.rotation = newRotation; 97 | } 98 | else 99 | { 100 | lastOrientation = post; 101 | } 102 | } 103 | } 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /RasterPropMonitor/Auxiliary modules/JSIPropIDFinder.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace JSI 3 | { 4 | public class JSIPropIDFinder: InternalModule 5 | { 6 | public void Start() 7 | { 8 | JUtil.LogMessage(this, "I am in prop named {0} and it has prop ID {1}", internalProp.name, internalProp.propID); 9 | // And just in case the user forgets. 10 | Destroy(this); 11 | } 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /RasterPropMonitor/Auxiliary modules/JSIPropTextureShift.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace JSI 5 | { 6 | public class JSIPropTextureShift : InternalModule 7 | { 8 | [KSPField] 9 | public string transformToShift = ""; 10 | [KSPField] 11 | public string layerToShift = "_MainTex"; 12 | [KSPField] 13 | public float x; 14 | [KSPField] 15 | public float y; 16 | 17 | public void Start() 18 | { 19 | var shiftval = new Vector2(x, y); 20 | 21 | try 22 | { 23 | Transform xform = JUtil.FindPropTransform(internalProp, transformToShift); 24 | // MOARdV TODO: Accessing and changing .material causes it to 25 | // become a copy, according to Unity. Must destroy it. Which 26 | // means this method can't self-destruct; it must use OnDestroy. 27 | Material shifted = xform.GetComponent().material; 28 | foreach (string layer in layerToShift.Split()) 29 | { 30 | shifted.SetTextureOffset(layer.Trim(), shiftval + shifted.GetTextureOffset(layer.Trim())); 31 | } 32 | } 33 | catch (Exception) 34 | { 35 | JUtil.LogErrorMessage(this, "Exception configuring prop {1} (#{2}) with transform {0}. Check its configuration.", transformToShift, internalProp.propName, internalProp.propID); 36 | } 37 | Destroy(this); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /RasterPropMonitor/Auxiliary modules/JSISelectivelyVisibleProp.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace JSI 4 | { 5 | public class JSISelectivelyVisibleProp: InternalModule 6 | { 7 | [KSPField] 8 | public string visibleFromSeats = string.Empty; 9 | 10 | private readonly List seatNumbers = new List(); 11 | 12 | public void Start() 13 | { 14 | foreach (string seatNumberString in visibleFromSeats.Split(',')) { 15 | int result; 16 | if (int.TryParse(seatNumberString.Trim(), out result) && result >= 0) { 17 | JUtil.LogMessage(this, "Running in prop '{2}' with ID {1}, will be visible from seat {0}", result, internalProp.propID, internalProp.name); 18 | seatNumbers.Add(result); 19 | } 20 | JUtil.HideShowProp(internalProp, false); 21 | } 22 | } 23 | 24 | public override void OnUpdate() 25 | { 26 | if (JUtil.UserIsInPod(part)) { 27 | JUtil.HideShowProp(internalProp,seatNumbers.Contains(part.CurrentActiveSeat())); 28 | } 29 | } 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /RasterPropMonitor/Auxiliary modules/JSIThrustReverser.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | using System; 22 | using UnityEngine; 23 | 24 | namespace JSI 25 | { 26 | /// 27 | /// The JSIThrustReverser is intended to be added to an engine that contains 28 | /// a thrust reverser animation in its ModuleAnimateGeneric. It is based 29 | /// on the assumption that only a single ModuleAnimateGeneric is found on 30 | /// the part. It does *not* look for an engine, as well, so it could be 31 | /// attached to other animated parts such that those parts trigger with the 32 | /// RPM thrust reverser trigger. 33 | /// 34 | public class JSIThrustReverser : PartModule 35 | { 36 | internal ModuleAnimateGeneric thrustReverser; 37 | 38 | /// 39 | /// Startup - look for the first ModuleAnimateGeneric. Keep a 40 | /// reference to it. 41 | /// 42 | public void Start() 43 | { 44 | if (HighLogic.LoadedSceneIsFlight) 45 | { 46 | foreach (var module in part.Modules) 47 | { 48 | if (module is ModuleAnimateGeneric) 49 | { 50 | thrustReverser = module as ModuleAnimateGeneric; 51 | JUtil.LogMessage(this, "Found my thrust reverser"); 52 | break; 53 | } 54 | } 55 | 56 | if (thrustReverser == null) 57 | { 58 | isEnabled = false; 59 | } 60 | } 61 | } 62 | 63 | /// 64 | /// Tear down - null our reference to thrustReverser. 65 | /// 66 | public void OnDestroy() 67 | { 68 | thrustReverser = null; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/AeroExtensions.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | /* 22 | Ferram Aerospace Research v0.15.3.1 "Garabedian" 23 | ========================= 24 | Aerodynamics model for Kerbal Space Program 25 | 26 | Copyright 2015, Michael Ferrara, aka Ferram4 27 | 28 | This file is part of Ferram Aerospace Research. 29 | 30 | Ferram Aerospace Research is free software: you can redistribute it and/or modify 31 | it under the terms of the GNU General Public License as published by 32 | the Free Software Foundation, either version 3 of the License, or 33 | (at your option) any later version. 34 | 35 | Ferram Aerospace Research is distributed in the hope that it will be useful, 36 | but WITHOUT ANY WARRANTY; without even the implied warranty of 37 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 38 | GNU General Public License for more details. 39 | 40 | You should have received a copy of the GNU General Public License 41 | along with Ferram Aerospace Research. If not, see . 42 | 43 | Serious thanks: a.g., for tons of bugfixes and code-refactorings 44 | stupid_chris, for the RealChuteLite implementation 45 | Taverius, for correcting a ton of incorrect values 46 | Tetryds, for finding lots of bugs and issues and not letting me get away with them, and work on example crafts 47 | sarbian, for refactoring code for working with MechJeb, and the Module Manager updates 48 | ialdabaoth (who is awesome), who originally created Module Manager 49 | Regex, for adding RPM support 50 | DaMichel, for some ferramGraph updates and some control surface-related features 51 | Duxwing, for copy editing the readme 52 | 53 | CompatibilityChecker by Majiir, BSD 2-clause http://opensource.org/licenses/BSD-2-Clause 54 | 55 | Part.cfg changes powered by sarbian & ialdabaoth's ModuleManager plugin; used with permission 56 | http://forum.kerbalspaceprogram.com/threads/55219 57 | 58 | ModularFLightIntegrator by Sarbian, Starwaster and Ferram4, MIT: http://opensource.org/licenses/MIT 59 | http://forum.kerbalspaceprogram.com/threads/118088 60 | 61 | Toolbar integration powered by blizzy78's Toolbar plugin; used with permission 62 | http://forum.kerbalspaceprogram.com/threads/60863 63 | */ 64 | 65 | using System; 66 | 67 | namespace JSI 68 | { 69 | // Imported from FerramAerospaceResearch FARAeroUtil.cs versions 0.15.3.1 and later 70 | public static class AeroExtensions 71 | { 72 | //Based on ratio of density of water to density of air at SL 73 | //private const double UNDERWATER_DENSITY_FACTOR_MINUS_ONE = 814.51020408163265306122448979592; 74 | 75 | // Updated method from FAR v0.15.5.4 76 | public static double GetCurrentDensity(Vessel v) 77 | { 78 | double density = 0.0d; 79 | int counter = 0; 80 | for (int i = 0; i < v.parts.Count; i++) 81 | { 82 | if (v.parts[i].physicalSignificance != Part.PhysicalSignificance.NONE) 83 | { 84 | density += v.parts[i].dynamicPressurekPa * (1.0 - v.parts[i].submergedPortion); 85 | density += v.parts[i].submergedDynamicPressurekPa * v.parts[i].submergedPortion; 86 | ++counter; 87 | } 88 | } 89 | 90 | if (counter > 0) 91 | { 92 | density /= (double)counter; 93 | } 94 | density *= 2000.0; //need answers in Pa, not kPa 95 | density /= (v.srfSpeed * v.srfSpeed); 96 | 97 | return density; 98 | } 99 | 100 | public static double StagnationPressureCalc(CelestialBody body, double M) 101 | { 102 | double gamma = body.atmosphereAdiabaticIndex; 103 | 104 | double ratio; 105 | ratio = M * M; 106 | ratio *= (gamma - 1.0); 107 | ratio *= 0.5; 108 | ratio++; 109 | 110 | ratio = Math.Pow(ratio, gamma / (gamma - 1.0)); 111 | return ratio; 112 | } 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/CelestialBodyExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace JSI 5 | { 6 | // This class was imported wholesale from MechJeb. 7 | public static class CelestialBodyExtensions 8 | { 9 | public static double TerrainAltitude(this CelestialBody body, Vector3d worldPosition) 10 | { 11 | return body.TerrainAltitude(body.GetLatitude(worldPosition), body.GetLongitude(worldPosition)); 12 | } 13 | 14 | 15 | //CelestialBody.maxAtmosphereAltitude doesn't actually give the upper edge of 16 | //the atmosphere. Use this function instead. 17 | public static double RealMaxAtmosphereAltitude(this CelestialBody body) 18 | { 19 | //#warning check if atmosphereDepth = 0 when !body.atmosphere and remove the whole ext 20 | if (!body.atmosphere) 21 | return 0; 22 | return body.atmosphereDepth; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/ConfigNodeHolder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityEngine; 7 | 8 | namespace JSI 9 | { 10 | // since you can't serialize ConfigNodes, and most of RPM initializes itself in Start in the flight scene, 11 | // this class allows a module to store its ConfigNode in OnLoad and then consume it in Start 12 | public class ConfigNodeHolder : ScriptableObject 13 | { 14 | public ConfigNode Node; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/DefaultableDictionary.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | using System.Collections.Generic; 22 | 23 | namespace JSI 24 | { 25 | // This handy class is also from MechJeb. 26 | //A simple wrapper around a Dictionary, with the only change being that 27 | //accessing the value of a nonexistent key returns a default value instead of an error. 28 | class DefaultableDictionary : IDictionary 29 | { 30 | readonly Dictionary d = new Dictionary(); 31 | readonly TValue defaultValue; 32 | 33 | public DefaultableDictionary(TValue defaultValue) 34 | { 35 | this.defaultValue = defaultValue; 36 | } 37 | 38 | public TValue this[TKey key] 39 | { 40 | get 41 | { 42 | return d.ContainsKey(key) ? d[key] : defaultValue; 43 | } 44 | set 45 | { 46 | if (d.ContainsKey(key)) 47 | d[key] = value; 48 | else 49 | d.Add(key, value); 50 | } 51 | } 52 | 53 | public void Add(TKey key, TValue value) 54 | { 55 | d.Add(key, value); 56 | } 57 | 58 | public bool ContainsKey(TKey key) 59 | { 60 | return d.ContainsKey(key); 61 | } 62 | 63 | public ICollection Keys { get { return d.Keys; } } 64 | 65 | public bool Remove(TKey key) 66 | { 67 | return d.Remove(key); 68 | } 69 | 70 | public bool TryGetValue(TKey key, out TValue value) 71 | { 72 | return d.TryGetValue(key, out value); 73 | } 74 | 75 | public ICollection Values { get { return d.Values; } } 76 | 77 | public void Add(KeyValuePair item) 78 | { 79 | ((IDictionary)d).Add(item); 80 | } 81 | 82 | public void Clear() 83 | { 84 | d.Clear(); 85 | } 86 | 87 | public bool Contains(KeyValuePair item) 88 | { 89 | return ((IDictionary)d).Contains(item); 90 | } 91 | 92 | public void CopyTo(KeyValuePair[] array, int arrayIndex) 93 | { 94 | ((IDictionary)d).CopyTo(array, arrayIndex); 95 | } 96 | 97 | public int Count { get { return d.Count; } } 98 | 99 | public bool IsReadOnly { get { return ((IDictionary)d).IsReadOnly; } } 100 | 101 | public bool Remove(KeyValuePair item) 102 | { 103 | return ((IDictionary)d).Remove(item); 104 | } 105 | 106 | public IEnumerator> GetEnumerator() 107 | { 108 | return d.GetEnumerator(); 109 | } 110 | 111 | System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() 112 | { 113 | return ((System.Collections.IEnumerable)d).GetEnumerator(); 114 | } 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/IJSIModule.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | using System; 22 | 23 | namespace JSI 24 | { 25 | /// 26 | /// This class exists to provide a base class that RasterPropMonitorComputer 27 | /// manages for tracking various built-in plugin action handlers. 28 | /// 29 | public class IJSIModule 30 | { 31 | public Vessel vessel; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/JSIVesselRecovery.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityEngine; 7 | 8 | namespace JSI.Core 9 | { 10 | // To avoid some weird bugs, OnVesselRecoveryRequested must be called from LateUpdate, not Update where most props are executed. 11 | // To avoid constantly checking whether we need to recover every LateUpdate, we just create this simple behavior class which 12 | // updates once and deletes itself. 13 | // to reproduce the original bug: activate an IVA, then ProbeControlRoom, then go back to the IVA (i.e. hit C 4 times) and then click a recovery prop 14 | // the debug log will be spammed with NREs, the game will become unsaveable which then locks you out from many buildings and even returning to the main menu. 15 | class JSIVesselRecovery : MonoBehaviour 16 | { 17 | public void LateUpdate() 18 | { 19 | 20 | JUtil.LogMessage(this, "Attempting vessel recovery"); 21 | GameEvents.OnVesselRecoveryRequested.Fire(VesselToRecover); 22 | GameObject.Destroy(this.gameObject); 23 | } 24 | 25 | public global::Vessel VesselToRecover; 26 | 27 | public static void Recover(global::Vessel vessel) 28 | { 29 | var gameObject = GameObject.Instantiate(new GameObject("JSIVesselRecovery", typeof(JSIVesselRecovery))); 30 | gameObject.GetComponent().VesselToRecover = vessel; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/MappedVariable.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | using System; 22 | using UnityEngine; 23 | 24 | namespace JSI 25 | { 26 | class MappedVariable : IComplexVariable 27 | { 28 | private readonly VariableOrNumberRange sourceVariable; 29 | public readonly string mappedVariable; 30 | private readonly VariableOrNumber mappedExtent1, mappedExtent2; 31 | 32 | public MappedVariable(ConfigNode node, RasterPropMonitorComputer rpmComp) 33 | { 34 | if (!node.HasValue("mappedVariable") || !node.HasValue("mappedRange") || !node.HasValue("sourceVariable") || !node.HasValue("sourceRange")) 35 | { 36 | throw new ArgumentException("MappedVariable missing required values"); 37 | } 38 | 39 | string sourceVariableStr = node.GetValue("sourceVariable"); 40 | string sourceRange = node.GetValue("sourceRange"); 41 | string[] sources = sourceRange.Split(','); 42 | if (sources.Length != 2) 43 | { 44 | throw new ArgumentException("MappedVariable sourceRange does not have exactly two values"); 45 | } 46 | 47 | sourceVariable = new VariableOrNumberRange(rpmComp, sourceVariableStr, sources[0], sources[1]); 48 | 49 | mappedVariable = node.GetValue("mappedVariable"); 50 | string[] destinations = node.GetValue("mappedRange").Split(','); 51 | if (destinations.Length != 2) 52 | { 53 | throw new ArgumentException("MappedVariable mappedRange does not have exactly two values"); 54 | } 55 | mappedExtent1 = rpmComp.InstantiateVariableOrNumber(destinations[0]); 56 | mappedExtent2 = rpmComp.InstantiateVariableOrNumber(destinations[1]); 57 | } 58 | 59 | public double Evaluate() 60 | { 61 | float lerp = sourceVariable.InverseLerp(); 62 | float extent1 = mappedExtent1.AsFloat(); 63 | float extent2 = mappedExtent2.AsFloat(); 64 | 65 | return Mathf.Lerp(extent1, extent2, lerp); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/MathExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace JSI 5 | { 6 | // This entire class is imported wholesale from MechJeb. 7 | public static class MathExtensions 8 | { 9 | public static Vector3d Sign(this Vector3d vector) 10 | { 11 | return new Vector3d(Math.Sign(vector.x), Math.Sign(vector.y), Math.Sign(vector.z)); 12 | } 13 | 14 | /*public static Vector3d Reorder(this Vector3d vector, int order) 15 | { 16 | switch (order) { 17 | case 123: 18 | return new Vector3d(vector.x, vector.y, vector.z); 19 | case 132: 20 | return new Vector3d(vector.x, vector.z, vector.y); 21 | case 213: 22 | return new Vector3d(vector.y, vector.x, vector.z); 23 | case 231: 24 | return new Vector3d(vector.y, vector.z, vector.x); 25 | case 312: 26 | return new Vector3d(vector.z, vector.x, vector.y); 27 | case 321: 28 | return new Vector3d(vector.z, vector.y, vector.x); 29 | } 30 | throw new ArgumentException("Invalid order", "order"); 31 | }*/ 32 | 33 | public static Vector3d Invert(this Vector3d vector) 34 | { 35 | return new Vector3d(1 / vector.x, 1 / vector.y, 1 / vector.z); 36 | } 37 | 38 | public static Vector3 ProjectIntoPlane(this Vector3 vector, Vector3 planeNormal) 39 | { 40 | return vector - Vector3.Project(vector, planeNormal); 41 | } 42 | 43 | public static float AngleInPlane(this Vector3 vector, Vector3 planeNormal, Vector3 other) 44 | { 45 | Vector3 v1 = vector.ProjectIntoPlane(planeNormal); 46 | Vector3 v2 = other.ProjectIntoPlane(planeNormal); 47 | 48 | 49 | // Analysis disable CompareOfFloatsByEqualityOperator 50 | if ((v1.magnitude == 0) || (v2.magnitude == 0)) 51 | { // Analysis restore CompareOfFloatsByEqualityOperator 52 | return float.NaN; 53 | } 54 | 55 | v1.Normalize(); 56 | v2.Normalize(); 57 | 58 | Quaternion rot = Quaternion.FromToRotation(planeNormal, new Vector3(0, 0, 1)); 59 | 60 | Vector3 r1 = rot * v1; 61 | Vector3 r2 = rot * v2; 62 | 63 | return (float)((Math.Atan2(r1.y, r1.x) - Math.Atan2(r2.y, r2.x)) * 180.0 / Math.PI); 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/PersistentVariableCollection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace JSI.Core 8 | { 9 | internal class PersistentVariableCollection 10 | { 11 | Dictionary persistentVars = new Dictionary(); 12 | 13 | public double GetPersistentVariable(string name, double defaultValue) 14 | { 15 | if (persistentVars.TryGetValue(name, out double val)) 16 | { 17 | return val; 18 | } 19 | return defaultValue; 20 | } 21 | 22 | public bool GetPersistentVariable(string name, bool defaultValue) 23 | { 24 | double val = GetPersistentVariable(name, defaultValue ? 1 : 0); 25 | 26 | return val != 0; 27 | } 28 | 29 | public bool HasPersistentVariable(string name) 30 | { 31 | return persistentVars.ContainsKey(name); 32 | } 33 | 34 | // returns whether the value changed 35 | public bool SetPersistentVariable(string name, double value) 36 | { 37 | if (name.Trim().Length == 0) 38 | { 39 | JUtil.LogErrorMessage(this, "Trying to set an empty variable name!"); 40 | return false; 41 | } 42 | 43 | bool valueChanged = true; 44 | 45 | if (persistentVars.TryGetValue(name, out double oldValue)) 46 | { 47 | valueChanged = JUtil.ValueChanged(oldValue, value); 48 | } 49 | 50 | persistentVars[name] = value; 51 | return valueChanged; 52 | } 53 | 54 | // returns whether the value changed 55 | public bool SetPersistentVariable(string name, bool value) 56 | { 57 | return SetPersistentVariable(name, value ? 1 : 0); 58 | } 59 | 60 | public void Load(ConfigNode baseNode) 61 | { 62 | var varNode = baseNode.GetNode("PERSISTENT_VARS"); 63 | if (varNode != null) 64 | { 65 | foreach (var value in varNode.values.values) 66 | { 67 | if (double.TryParse(value.value, out double dblValue)) 68 | { 69 | persistentVars.Add(value.name, dblValue); 70 | } 71 | else 72 | { 73 | JUtil.LogErrorMessage(null, "Failed to parse {0} = {1} as a double when loading persistent variables", value.name, value.value); 74 | } 75 | } 76 | } 77 | } 78 | 79 | public void Save(ConfigNode baseNode) 80 | { 81 | var varNode = baseNode.AddNode("PERSISTENT_VARS"); 82 | 83 | foreach (var variable in persistentVars) 84 | { 85 | varNode.AddValue(variable.Key, variable.Value); 86 | } 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/RPMCPersistence.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | using System; 22 | using System.Collections.Generic; 23 | using JSI.Core; 24 | using UnityEngine; 25 | 26 | namespace JSI 27 | { 28 | public partial class RasterPropMonitorComputer : PartModule 29 | { 30 | internal readonly PersistentVariableCollection m_persistentVariables = new PersistentVariableCollection(); 31 | 32 | PersistentVariableCollection GetVariableCollection(bool global) 33 | { 34 | return global ? RPMVesselComputer.Instance(vessel).PersistentVariables : m_persistentVariables; 35 | } 36 | 37 | internal double GetPersistentVariable(string name, double defaultValue, bool global) 38 | { 39 | return GetVariableCollection(global).GetPersistentVariable(name, defaultValue); 40 | } 41 | 42 | internal bool GetPersistentVariable(string name, bool defaultValue, bool global) 43 | { 44 | return GetVariableCollection(global).GetPersistentVariable(name, defaultValue); 45 | } 46 | 47 | internal bool HasPersistentVariable(string name, bool global) 48 | { 49 | return GetVariableCollection(global).HasPersistentVariable(name); 50 | } 51 | 52 | internal void SetPersistentVariable(string name, double value, bool global) 53 | { 54 | bool valueChanged = GetVariableCollection(global).SetPersistentVariable(name, value); 55 | 56 | if (!valueChanged) return; 57 | 58 | // we need to go update the variableCollections.... 59 | 60 | RPMVesselComputer vesselComp = RPMVesselComputer.Instance(vessel); 61 | string varName = "PERSISTENT_" + name; 62 | 63 | if (global) 64 | { 65 | // TODO: might want to cache this list in the vesselmodule? 66 | foreach (var part in vessel.parts) 67 | { 68 | var rpmc = part.FindModuleImplementing(); 69 | if (rpmc != null) 70 | { 71 | var vc = rpmc.variableCollection.GetVariable(varName); 72 | if (vc != null) 73 | { 74 | vc.Update(vesselComp); 75 | } 76 | } 77 | } 78 | } 79 | else 80 | { 81 | var vc = variableCollection.GetVariable(varName); 82 | if (vc != null) 83 | { 84 | vc.Update(vesselComp); 85 | } 86 | } 87 | } 88 | 89 | internal void SetPersistentVariable(string name, bool value, bool global) 90 | { 91 | SetPersistentVariable(name, value ? 1 : 0, global); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/RPMGlobals.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | using System; 22 | using System.Collections.Generic; 23 | 24 | namespace JSI 25 | { 26 | /// 27 | /// The RPMGlobals class contains various statically-defined global values. 28 | /// These are generally loaded in by the RPMShaderLoader class in the main 29 | /// menu. 30 | /// 31 | internal static class RPMGlobals 32 | { 33 | internal const float KelvinToCelsius = -273.15f; 34 | internal const float MetersToFeet = 3.2808399f; 35 | internal const float MetersPerSecondToKnots = 1.94384449f; 36 | internal const float MetersPerSecondToFeetPerMinute = 196.850394f; 37 | internal const float gee = 9.81f; 38 | internal static readonly double upperAtmosphereLimit = Math.Log(100000.0); 39 | 40 | /// 41 | /// Should JUtil.LogMessage write to the log? 42 | /// 43 | internal static bool debugLoggingEnabled = false; 44 | 45 | /// 46 | /// Should we show the variable call count profiling info? 47 | /// 48 | internal static bool debugShowVariableCallCount = false; 49 | 50 | internal static bool useNewVariableAnimator = true; 51 | 52 | /// 53 | /// What is the minimum setting we want to allow for our variable 54 | /// refresh? 55 | /// 56 | internal static int minimumRefreshRate = 1; 57 | 58 | /// 59 | /// What should the initial refresh rate be? 60 | /// 61 | internal static int defaultRefreshRate = 10; 62 | 63 | internal static List debugShowOnly = new List(); 64 | 65 | internal static Dictionary customVariables = new Dictionary(); 66 | internal static List knownLoadedAssemblies = new List(); 67 | internal static SortedDictionary systemNamedResources = new SortedDictionary(); 68 | internal static List triggeredEvents = new List(); 69 | 70 | /// List of parts where all PartModule should be ignored. 71 | internal static List ignoreAllPartModules = new List(); 72 | /// List of parts where some PartModules should be ignored. Part names are the Key, list of module names is the Value. 73 | internal static Dictionary> ignorePartModules = new Dictionary>(); 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/SelectVariable.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace JSI 26 | { 27 | // A SelectVariable defines a user-defined variable that consists of one or 28 | // more RPM variables. Separate variables and ranges determine which result 29 | // is returned when the Select variable is chosen. 30 | class SelectVariable : IComplexVariable 31 | { 32 | public readonly string name; 33 | 34 | private List sourceVariables = new List(); 35 | private List reverse = new List(); 36 | private List result = new List(); 37 | 38 | internal SelectVariable(ConfigNode node, RasterPropMonitorComputer rpmComp) 39 | { 40 | name = node.GetValue("name"); 41 | 42 | foreach (ConfigNode sourceVarNode in node.GetNodes("VARIABLE_DEFINITION")) 43 | { 44 | bool reverseVal; 45 | VariableOrNumberRange vonr = ProcessSourceNode(sourceVarNode, rpmComp, out reverseVal); 46 | 47 | sourceVariables.Add(vonr); 48 | reverse.Add(reverseVal); 49 | 50 | VariableOrNumber val = rpmComp.InstantiateVariableOrNumber(sourceVarNode.GetValue("value")); 51 | result.Add(val); 52 | } 53 | 54 | if (node.HasValue("defaultValue")) 55 | { 56 | VariableOrNumber val = rpmComp.InstantiateVariableOrNumber(node.GetValue("defaultValue")); 57 | result.Add(val); 58 | } 59 | else 60 | { 61 | throw new Exception(string.Format("Select variable {0} is missing its defaultValue", name)); 62 | } 63 | 64 | if (sourceVariables.Count == 0) 65 | { 66 | throw new ArgumentException("Did not find any VARIABLE_DEFINITION nodes in RPM_SELECT_VARIABLE", name); 67 | } 68 | 69 | } 70 | 71 | public double Evaluate() 72 | { 73 | int i = 0; 74 | for (; i < sourceVariables.Count; ++i) 75 | { 76 | if (sourceVariables[i].IsInRange() ^ reverse[i]) 77 | { 78 | break; 79 | } 80 | } 81 | 82 | return result[i].AsDouble(); 83 | } 84 | 85 | private static VariableOrNumberRange ProcessSourceNode(ConfigNode node, RasterPropMonitorComputer rpmComp, out bool reverse) 86 | { 87 | VariableOrNumberRange range; 88 | if (node.HasValue("range")) 89 | { 90 | string[] tokens = { }; 91 | tokens = node.GetValue("range").Split(','); 92 | if (tokens.Length != 2) 93 | { 94 | throw new ArgumentException("Found an unparseable value reading custom SOURCE_VARIABLE range"); 95 | } 96 | range = new VariableOrNumberRange(rpmComp, node.GetValue("name").Trim(), tokens[0].Trim(), tokens[1].Trim()); 97 | } 98 | else 99 | { 100 | range = new VariableOrNumberRange(rpmComp, node.GetValue("name").Trim(), float.MinValue.ToString(), float.MaxValue.ToString()); 101 | } 102 | 103 | if (node.HasValue("reverse")) 104 | { 105 | if (!bool.TryParse(node.GetValue("reverse"), out reverse)) 106 | { 107 | throw new ArgumentException("So is 'reverse' true or false?"); 108 | } 109 | } 110 | else 111 | { 112 | reverse = false; 113 | } 114 | 115 | return range; 116 | } 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/VariableCollection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityEngine.Profiling; 7 | 8 | namespace JSI 9 | { 10 | internal class VariableCollection 11 | { 12 | private readonly Dictionary variableCache = new Dictionary(); 13 | private readonly List updatableVariables = new List(); 14 | 15 | public VariableOrNumber GetVariable(string variableName) 16 | { 17 | if (variableCache.TryGetValue(variableName, out var variable)) return variable; 18 | return null; 19 | } 20 | 21 | public void AddVariable(VariableOrNumber variable) 22 | { 23 | variableCache.Add(variable.variableName, variable); 24 | if (variable.updateType <= VariableUpdateType.PerFrame) 25 | { 26 | updatableVariables.Add(variable); 27 | } 28 | } 29 | 30 | public void Update(RPMVesselComputer comp) 31 | { 32 | foreach (var vc in updatableVariables) 33 | { 34 | Profiler.BeginSample(vc.variableName); 35 | vc.Update(comp); 36 | Profiler.EndSample(); 37 | } 38 | } 39 | 40 | public void Clear() 41 | { 42 | variableCache.Clear(); 43 | updatableVariables.Clear(); 44 | } 45 | 46 | public int Count => variableCache.Count; 47 | public int UpdatableCount => updatableVariables.Count; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /RasterPropMonitor/Core/VisibilityEnabler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityEngine; 7 | 8 | namespace JSI 9 | { 10 | class VisibilityEnabler : MonoBehaviour 11 | { 12 | [SerializeField] private Behaviour m_behaviour; 13 | 14 | public void Initialize(Behaviour behaviour) 15 | { 16 | m_behaviour = behaviour; 17 | } 18 | 19 | void OnBecameVisible() 20 | { 21 | m_behaviour.enabled = true; 22 | } 23 | 24 | void OnBecameInvisible() 25 | { 26 | m_behaviour.enabled = false; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /RasterPropMonitor/Handlers/JSIEngine.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Linq; 24 | using System.Text; 25 | #if ENABLE_ENGINE_MONITOR 26 | namespace JSI 27 | { 28 | public class JSIEngine:IJSIModule 29 | { 30 | public JSIEngine() 31 | { 32 | 33 | } 34 | 35 | public bool GetRunningPrimary() 36 | { 37 | // TODO: select which engine 38 | bool runningPrimary = true; 39 | foreach (JSIEngineMonitor mon in FindEngineMonitorIn(vessel)) 40 | { 41 | if(!mon.GetRunningPrimary()) 42 | { 43 | runningPrimary = false; 44 | break; 45 | } 46 | } 47 | 48 | return runningPrimary; 49 | } 50 | 51 | public void SetRunningPrimary(bool state) 52 | { 53 | foreach(JSIEngineMonitor mon in FindEngineMonitorIn(vessel)) 54 | { 55 | mon.SetRunningPrimary(state); 56 | } 57 | } 58 | 59 | private static IEnumerable FindEngineMonitorIn(Vessel vessel) 60 | { 61 | for (int i = 0; i < vessel.Parts.Count; ++i ) 62 | { 63 | for (int j = 0; j < vessel.Parts[i].Modules.Count; ++j ) 64 | { 65 | if (vessel.Parts[i].Modules[j] is JSIEngineMonitor) 66 | { 67 | yield return vessel.Parts[i].Modules[j] as JSIEngineMonitor; 68 | } 69 | } 70 | } 71 | } 72 | } 73 | } 74 | #endif 75 | -------------------------------------------------------------------------------- /RasterPropMonitor/Handlers/JSIFlightLog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | // This is the recommended method to drive a PropMonitor from a foreign plugin, 4 | // because I'm using it myself and now I have to make sure it works. :) 5 | // This module is both a nice gimmick and an example. 6 | // 7 | // This method has the advantage of letting you make use of the variable processing and you don't 8 | // need to copy a page of boilerplate either -- instead, you just need an InternalModule 9 | // with a method that returns a string. That's it. 10 | // 11 | // RasterPropMonitor module can, beyond the usual types of page read from a text file, 12 | // and defined directly in the config file, request a page text from an InternalModule 13 | // living in the same prop as it does. To do this, configure the page like this: 14 | // 15 | // PAGE 16 | // { 17 | // PAGEHANDLER 18 | // { 19 | // name = Name of your module 20 | // method = Method name to be called in your module. 21 | // } 22 | // 23 | // Method name must exist in your module and must be a function that takes two int parameters 24 | // and returns a string. Any other parameters you include in the PAGEHANDLER block 25 | // will be passed to your InternalModule as KSPFields. 26 | // 27 | // RasterPropMonitor will load your module, attach it to the prop it lives in and 28 | // poll this function every time it decides the page needs to be refreshed. You need 29 | // to return a string, that will then be processed just like a page definition text file. 30 | // You will obviously want your own namespace. 31 | namespace JSI 32 | { 33 | // It needs to be an InternalModule. 34 | public class JSIFlightLog: InternalModule 35 | { 36 | // These KSPFields will actually be loaded from the PAGEHANDLER block 37 | [KSPField] 38 | public string pageTitle; 39 | // We can keep our response buffered and only return it upon request. 40 | private string response; 41 | // We only update the response when the number of lines in the flight log changes. 42 | private int lastCount = -1; 43 | // This method will be found by RasterPropMonitorGenerator and called to provide a page. 44 | // You must return a string. Environment.Newline is the carriage return, nothing fancy. 45 | public string ShowLog(int screenWidth, int screenHeight) 46 | { 47 | if (FlightLogger.eventLog.Count != lastCount) { 48 | LogToBuffer(screenWidth, screenHeight); 49 | } 50 | return response; 51 | 52 | } 53 | // I honestly have no clue why InternalModules need to be initialised 54 | // like this, and not with a proper constructor or an OnAwake, but that one always works. 55 | // Even a very simple OnAwake can sometimes get the entire IVA to choke. 56 | public void Start() 57 | { 58 | if (!string.IsNullOrEmpty(pageTitle)) 59 | // Notice that UnMangleConfigText is an extension method defined in JUtil class. 60 | // To your module, it won't be available without hardlinking to RPM, which is what you want to avoid. 61 | // It's nothing you couldn't replace with .Replace("<=", "{").Replace("=>", "}").Replace("$$$", Environment.NewLine); though 62 | pageTitle = pageTitle.UnMangleConfigText(); 63 | } 64 | // You can have an OnUpdate in this module, this particular one doesn't need it. 65 | private void LogToBuffer(int screenWidth, int screenHeight) 66 | { 67 | // I think I coded this one backwards somehow, but eh, it's a gimmick. 68 | int activeScreenHeight = screenHeight; 69 | if (!string.IsNullOrEmpty(pageTitle)) { 70 | activeScreenHeight--; 71 | } 72 | lastCount = FlightLogger.eventLog.Count; 73 | if (lastCount > 0) { 74 | string fullLog = JUtil.WordWrap(string.Join(Environment.NewLine, FlightLogger.eventLog.ToArray()), screenWidth); 75 | var tempBuffer = fullLog.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); 76 | var screenBuffer = new string[activeScreenHeight]; 77 | if (tempBuffer.Length <= activeScreenHeight) { 78 | screenBuffer = tempBuffer; 79 | } else { 80 | for (int i = 0; i < screenBuffer.Length; i++) { 81 | screenBuffer[i] = tempBuffer[tempBuffer.Length - activeScreenHeight + i]; 82 | 83 | } 84 | } 85 | response = string.Join(Environment.NewLine, screenBuffer); 86 | } else 87 | response = "No records in log."; 88 | if (!string.IsNullOrEmpty(pageTitle)) { 89 | response = pageTitle + Environment.NewLine + response; 90 | } 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /RasterPropMonitor/Handlers/JSIKAC.cs: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | * RasterPropMonitor 3 | * ================= 4 | * Plugin for Kerbal Space Program 5 | * 6 | * by Mihara (Eugene Medvedev), MOARdV, and other contributors 7 | * 8 | * RasterPropMonitor is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, revision 11 | * date 29 June 2007, or (at your option) any later version. 12 | * 13 | * RasterPropMonitor is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 | * for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with RasterPropMonitor. If not, see . 20 | ****************************************************************************/ 21 | using System; 22 | using System.Collections.Generic; 23 | 24 | namespace JSI 25 | { 26 | class JSIKAC : IJSIModule 27 | { 28 | public static readonly bool kacFound; 29 | 30 | static JSIKAC() 31 | { 32 | kacFound = KACWrapper.InitKACWrapper(); 33 | } 34 | 35 | public JSIKAC(Vessel myVessel) 36 | { 37 | vessel = myVessel; 38 | JUtil.LogMessage(this, "A supported version of Kerbal Alarm Clock is {0}", (kacFound) ? "present" : "not available"); 39 | } 40 | 41 | public double ActiveVesselAlarms() 42 | { 43 | double count = 0.0; 44 | 45 | if (kacFound) 46 | { 47 | var alarms = KACWrapper.KAC.Alarms; 48 | 49 | string id = vessel.id.ToString(); 50 | int vesselAlarmCount = 0; 51 | for (int i = 0; i < alarms.Count; ++i) 52 | { 53 | if (alarms[i].VesselID == id) 54 | { 55 | ++vesselAlarmCount; 56 | } 57 | } 58 | 59 | count = (double)vesselAlarmCount; 60 | } 61 | return count; 62 | } 63 | 64 | public double NextAlarmTime() 65 | { 66 | double time = double.MaxValue; 67 | 68 | if (kacFound) 69 | { 70 | var alarms = KACWrapper.KAC.Alarms; 71 | string id = vessel.id.ToString(); 72 | for (int i = 0; i < alarms.Count; ++i) 73 | { 74 | if (alarms[i].VesselID == id && alarms[i].AlarmTime > Planetarium.fetch.time && alarms[i].AlarmTime < time) 75 | { 76 | time = alarms[i].AlarmTime; 77 | } 78 | } 79 | } 80 | 81 | return (time < double.MaxValue) ? (time - Planetarium.fetch.time) : 0.0; 82 | } 83 | 84 | public string NextAlarmType() 85 | { 86 | double time = double.MaxValue; 87 | string type = string.Empty; 88 | 89 | if (kacFound) 90 | { 91 | var alarms = KACWrapper.KAC.Alarms; 92 | string id = vessel.id.ToString(); 93 | for (int i = 0; i < alarms.Count; ++i) 94 | { 95 | if (alarms[i].VesselID == id && alarms[i].AlarmTime > Planetarium.fetch.time && alarms[i].AlarmTime < time) 96 | { 97 | time = alarms[i].AlarmTime; 98 | type = alarms[i].AlarmType.ToString(); 99 | } 100 | } 101 | } 102 | 103 | return type; 104 | } 105 | 106 | public string NextAlarmName() 107 | { 108 | double time = double.MaxValue; 109 | string name = string.Empty; 110 | 111 | if (kacFound) 112 | { 113 | var alarms = KACWrapper.KAC.Alarms; 114 | string id = vessel.id.ToString(); 115 | for (int i = 0; i < alarms.Count; ++i) 116 | { 117 | if (alarms[i].VesselID == id && alarms[i].AlarmTime > Planetarium.fetch.time && alarms[i].AlarmTime < time) 118 | { 119 | time = alarms[i].AlarmTime; 120 | name = alarms[i].Name; 121 | } 122 | } 123 | } 124 | 125 | return name; 126 | } 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /RasterPropMonitor/Handlers/SCANsat.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityEngine; 7 | using System.Reflection; 8 | 9 | namespace JSI 10 | { 11 | static class SCANsat 12 | { 13 | static bool ranPatch = false; 14 | 15 | public static void PatchMaterial() 16 | { 17 | if (ranPatch) return; 18 | ranPatch = true; 19 | 20 | try 21 | { 22 | var scansatAssembly = AssemblyLoader.loadedAssemblies.FirstOrDefault(assembly => assembly.name == "SCANsat"); 23 | 24 | // no scansat, nothing to do 25 | if (scansatAssembly == null) return; 26 | 27 | var jutil_t = scansatAssembly.assembly.GetExportedTypes().SingleOrDefault(t => t.FullName == "SCANsat.JUtil"); 28 | 29 | // can't find the type? weird... 30 | if (jutil_t == null) 31 | { 32 | JUtil.LogErrorMessage("scansat", "no jutil type found"); 33 | return; 34 | } 35 | 36 | var lineMatFieldInfo = jutil_t.GetField("LineMat"); 37 | 38 | if (lineMatFieldInfo == null) 39 | { 40 | JUtil.LogErrorMessage("scansat", "unable to find LineMat field info; valid fields are {0}", 41 | string.Join(", ", jutil_t.GetFields().Select(field => field.Name))); 42 | return; 43 | } 44 | 45 | var lineMaterial = new Material(Shader.Find("KSP/Particles/Alpha Blended")); 46 | lineMaterial.hideFlags = HideFlags.HideAndDontSave; 47 | lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave; 48 | 49 | lineMatFieldInfo.SetValue(null, lineMaterial); 50 | JUtil.LogMessage("scansat", "patched linematerial"); 51 | } 52 | catch(Exception e) 53 | { 54 | JUtil.LogErrorMessage("scansat", e.Message); 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /RasterPropMonitor/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | // Information about this assembly is defined by the following attributes. 5 | // Change them to the values specific to your project. 6 | [assembly: AssemblyTitle ("RasterPropMonitor")] 7 | [assembly: AssemblyDescription ("RasterPropMonitor plugin for Kerbal Space Program")] 8 | 9 | // This supposedly helps avoid plugin depencency problems. 10 | [assembly: KSPAssembly("RasterPropMonitor", 0, 18)] -------------------------------------------------------------------------------- /RasterPropMonitor/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /SCANsatRPM/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | // Information about this assembly is defined by the following attributes. 5 | // Change them to the values specific to your project. 6 | [assembly: AssemblyTitle("SCANsatRPM")] 7 | [assembly: AssemblyDescription ("RasterPropMonitor / SCANsat interface plugin for Kerbal Space Program")] 8 | 9 | // For KSP purposes we are SCANsatRPM version 0.17... 10 | [assembly: KSPAssembly("SCANsatRPM", 0, 17)] 11 | 12 | // This depends on RPM 0.17... 13 | [assembly: KSPAssemblyDependency("RasterPropMonitor", 0, 17)] 14 | // And it depends on SCANsat, but the current version does not have a KSPAssembly statement... 15 | -------------------------------------------------------------------------------- /SCANsatRPM/README.md: -------------------------------------------------------------------------------- 1 | ### SCANsatRPM 2 | 3 | This subproject is historical and only kept here for posterity. 4 | 5 | SCANsatRPM has been integrated into SCANsat and I suppose a few versions later I'll delete the files as well. 6 | -------------------------------------------------------------------------------- /SCANsatRPM/SCANsatRPM.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | AnyCPU 6 | 8.0.30703 7 | 2.0 8 | {E7E75333-EE44-4F51-A14D-CFB075525D7D} 9 | Library 10 | SCANsatRPM 11 | SCANsatRPM 12 | 0.18 13 | 65001 14 | v3.5 15 | 16 | 17 | true 18 | full 19 | false 20 | ..\bin\Debug 21 | DEBUG; 22 | prompt 23 | 4 24 | false 25 | 4 26 | 27 | 28 | true 29 | ..\bin\Release 30 | prompt 31 | 4 32 | false 33 | 4 34 | 35 | 36 | 37 | 38 | ..\..\..\..\..\..\Steam\SteamApps\common\Kerbal Space Program\KSP_Data\Managed\Assembly-CSharp.dll 39 | False 40 | 41 | 42 | ..\..\..\..\..\..\Steam\SteamApps\common\Kerbal Space Program\KSP_Data\Managed\UnityEngine.dll 43 | False 44 | 45 | 46 | ..\..\..\..\..\..\KSP\Testing\0.23.5\GameData\SCANsat\SCANsat.dll 47 | False 48 | 49 | 50 | 51 | 52 | 53 | 54 | Properties\SharedAssemblyInfo.cs 55 | 56 | 57 | 58 | 59 | 60 | {F19C7AB4-50C2-4378-9673-CC039CA12E10} 61 | RasterPropMonitor 62 | 63 | 64 | -------------------------------------------------------------------------------- /Shaders/.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Uu]ser[Ss]ettings/ 12 | 13 | # MemoryCaptures can get excessive in size. 14 | # They also could contain extremely sensitive data 15 | /[Mm]emoryCaptures/ 16 | 17 | # Recordings can get excessive in size 18 | /[Rr]ecordings/ 19 | 20 | # Uncomment this line if you wish to ignore the asset store tools plugin 21 | # /[Aa]ssets/AssetStoreTools* 22 | 23 | # Autogenerated Jetbrains Rider plugin 24 | /[Aa]ssets/Plugins/Editor/JetBrains* 25 | 26 | # Visual Studio cache directory 27 | .vs/ 28 | 29 | # Gradle cache directory 30 | .gradle/ 31 | 32 | # Autogenerated VS/MD/Consulo solution and project files 33 | ExportedObj/ 34 | .consulo/ 35 | *.csproj 36 | *.unityproj 37 | *.sln 38 | *.suo 39 | *.tmp 40 | *.user 41 | *.userprefs 42 | *.pidb 43 | *.booproj 44 | *.svd 45 | *.pdb 46 | *.mdb 47 | *.opendb 48 | *.VC.db 49 | 50 | # Unity3D generated meta files 51 | *.pidb.meta 52 | *.pdb.meta 53 | *.mdb.meta 54 | 55 | # Unity3D generated file on crash reports 56 | sysinfo.txt 57 | 58 | # Builds 59 | *.apk 60 | *.aab 61 | *.unitypackage 62 | *.app 63 | 64 | # Crashlytics generated file 65 | crashlytics-build.properties 66 | 67 | # Packed Addressables 68 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* 69 | 70 | # Temporary auto-generated Android Assets 71 | /[Aa]ssets/[Ss]treamingAssets/aa.meta 72 | /[Aa]ssets/[Ss]treamingAssets/aa/* 73 | -------------------------------------------------------------------------------- /Shaders/Assets/Editor/AssetBundleCompiler.cs: -------------------------------------------------------------------------------- 1 | // This file copied from TUFX and used under GPL v3 license 2 | // Copyright (C) 2020 Shadowmage (John Cummens) 3 | 4 | using UnityEngine; 5 | using UnityEditor; 6 | using System.Collections; 7 | 8 | public class AssetBundleCompiler 9 | { 10 | [MenuItem("Assets/Build Selected AssetBundle Win64")] 11 | static void BuildAssetBundleWin64() 12 | { 13 | exportAssetBundle(BuildTarget.StandaloneWindows64); 14 | } 15 | 16 | [MenuItem("Assets/Build Selected AssetBundle OSX")] 17 | static void BuildAssetBundleOSX() 18 | { 19 | exportAssetBundle(BuildTarget.StandaloneOSX); 20 | } 21 | 22 | [MenuItem("Assets/Build Selected AssetBundle Linux")] 23 | static void BuildAssetBundleLinux() 24 | { 25 | exportAssetBundle(BuildTarget.StandaloneLinux); 26 | } 27 | 28 | private static void exportAssetBundle(BuildTarget target) 29 | { 30 | string path = EditorUtility.SaveFilePanel("Build Asset Bundle", "Assets", "NewAssetBundle", "assetbundle"); 31 | string directory = path.Substring(0, path.LastIndexOf('/')); 32 | string name = path.Substring(path.LastIndexOf('/') + 1); 33 | Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets); 34 | AssetBundleBuild build = new AssetBundleBuild(); 35 | build.assetBundleName = name; 36 | build.assetNames = new string[selection.Length]; 37 | int len = selection.Length; 38 | for (int i = 0; i < len; i++) 39 | { 40 | build.assetNames[i] = AssetDatabase.GetAssetPath((UnityEngine.Object)selection[i]); 41 | MonoBehaviour.print("Building asset: " + build.assetNames[i]); 42 | } 43 | BuildPipeline.BuildAssetBundles(directory, new AssetBundleBuild[] { build }, BuildAssetBundleOptions.ForceRebuildAssetBundle, target); 44 | MonoBehaviour.print("Renaming from: " + path + " to: " + path.Replace(".assetbundle", "")); 45 | System.IO.File.Move(path, path.Replace(".assetbundle", "")); 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /Shaders/Assets/Shaders/RPM-CroppedDisplayShader.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | 4 | Shader "RPM/CroppedDisplayShader" 5 | { 6 | Properties 7 | { 8 | _MainTex ("Texture", 2D) = "white" {} 9 | _Opacity("_Opacity", Range(0,1) ) = 1 10 | _Color ("_Color", Color) = (1,1,1,1) 11 | _CropBound ("_CropBound", Vector) = (-1,-1,1,1) 12 | } 13 | 14 | SubShader { 15 | 16 | Tags { "RenderType"="Overlay" "Queue" = "Transparent" } 17 | 18 | // Premultiplied Alpha shader for rendering/coloring textures. 19 | // Includes cropping values in normalized device coordinates 20 | 21 | Lighting Off 22 | Blend One OneMinusSrcAlpha 23 | Cull Back 24 | Fog { Mode Off } 25 | ZWrite Off 26 | ZTest Always 27 | 28 | Pass { 29 | CGPROGRAM 30 | #pragma vertex vert 31 | #pragma fragment frag 32 | #pragma target 3.0 33 | 34 | #include "UnityCG.cginc" 35 | 36 | struct appdata_t { 37 | float4 vertex : POSITION; 38 | float2 texcoord : TEXCOORD0; 39 | }; 40 | 41 | struct v2f_cropped { 42 | float4 vertex : SV_POSITION; 43 | float2 texcoord : TEXCOORD0; 44 | float2 pixelPos : TEXCOORD1; 45 | }; 46 | 47 | UNITY_DECLARE_TEX2D(_MainTex); 48 | 49 | uniform float4 _MainTex_ST; 50 | // Color modulation 51 | uniform float4 _Color; 52 | // Cropping window in device normalized coordinates 53 | uniform float4 _CropBound; 54 | // Overall opacity scalar 55 | uniform float _Opacity; 56 | 57 | v2f_cropped vert (appdata_t v) 58 | { 59 | v2f_cropped o; 60 | o.vertex = UnityObjectToClipPos(v.vertex); 61 | o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex); 62 | o.pixelPos = float2(o.vertex.xy / o.vertex.w); 63 | return o; 64 | } 65 | 66 | float4 frag (v2f_cropped i) : COLOR 67 | { 68 | if(i.pixelPos.x < _CropBound.x || i.pixelPos.y < _CropBound.y || i.pixelPos.x > _CropBound.z || i.pixelPos.y > _CropBound.w) 69 | { 70 | discard; 71 | return float4(0,0,0,0); 72 | } 73 | else 74 | { 75 | float4 diffuse = UNITY_SAMPLE_TEX2D(_MainTex, i.texcoord); 76 | diffuse.a *= _Color.a * _Opacity; 77 | diffuse.rgb = (diffuse.rgb * _Color.rgb) * diffuse.a; 78 | return diffuse; 79 | } 80 | } 81 | ENDCG 82 | } 83 | } 84 | 85 | Fallback off 86 | } 87 | -------------------------------------------------------------------------------- /Shaders/Assets/Shaders/RPM-DisplayShader.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | 4 | Shader "RPM/DisplayShader" 5 | { 6 | Properties 7 | { 8 | _MainTex ("Texture", 2D) = "white" {} 9 | _Opacity("_Opacity", Range(0,1) ) = 1 10 | _Color ("_Color", Color) = (1,1,1,1) 11 | } 12 | 13 | SubShader { 14 | 15 | Tags { "RenderType"="Overlay" "Queue" = "Transparent" } 16 | 17 | // Premultiplied Alpha shader for rendering/coloring textures. 18 | 19 | Lighting Off 20 | Blend One OneMinusSrcAlpha 21 | Cull Back 22 | Fog { Mode Off } 23 | ZWrite Off 24 | ZTest Always 25 | 26 | Pass { 27 | CGPROGRAM 28 | #pragma vertex vert 29 | #pragma fragment frag 30 | #pragma target 3.0 31 | 32 | #include "UnityCG.cginc" 33 | 34 | struct appdata_t { 35 | float4 vertex : POSITION; 36 | float2 texcoord : TEXCOORD0; 37 | }; 38 | 39 | struct v2f_displayshader { 40 | float4 vertex : SV_POSITION; 41 | float2 texcoord : TEXCOORD0; 42 | }; 43 | 44 | UNITY_DECLARE_TEX2D(_MainTex); 45 | 46 | uniform float4 _MainTex_ST; 47 | uniform float4 _Color; 48 | uniform float _Opacity; 49 | 50 | v2f_displayshader vert (appdata_t v) 51 | { 52 | v2f_displayshader o; 53 | o.vertex = UnityObjectToClipPos(v.vertex); 54 | o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex); 55 | return o; 56 | } 57 | 58 | float4 frag (v2f_displayshader i) : COLOR 59 | { 60 | float4 diffuse = UNITY_SAMPLE_TEX2D(_MainTex, i.texcoord); 61 | diffuse.a *= _Color.a * _Opacity; 62 | diffuse.rgb = (diffuse.rgb * _Color.rgb) * diffuse.a; 63 | return diffuse; 64 | } 65 | ENDCG 66 | } 67 | } 68 | 69 | Fallback off 70 | } 71 | -------------------------------------------------------------------------------- /Shaders/Assets/Shaders/RPM-FontShader.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | Shader "RPM/FontShader" 4 | { 5 | Properties 6 | { 7 | _MainTex ("Texture", 2D) = "white" {} 8 | } 9 | 10 | SubShader 11 | { 12 | 13 | Tags { "RenderType"="Overlay" "Queue" = "Transparent" } 14 | 15 | //Lighting Off 16 | Blend One OneMinusSrcAlpha 17 | //Cull Off 18 | //Fog { Mode Off } 19 | ZWrite Off 20 | ZTest Always 21 | 22 | // Premultiplied Alpha shader for rendering text on displays. 23 | Pass 24 | { 25 | CGPROGRAM 26 | #pragma vertex vert 27 | #pragma fragment frag 28 | #pragma target 3.0 29 | 30 | struct appdata_t 31 | { 32 | float4 vertex : POSITION; 33 | fixed4 color : COLOR; 34 | float2 texcoord : TEXCOORD0; 35 | }; 36 | 37 | struct v2f_fontshader 38 | { 39 | float4 vertex : SV_POSITION; 40 | fixed4 color : COLOR; 41 | float2 texcoord : TEXCOORD0; 42 | }; 43 | 44 | UNITY_DECLARE_TEX2D(_MainTex); 45 | 46 | v2f_fontshader vert (appdata_t v) 47 | { 48 | v2f_fontshader dataOut; 49 | 50 | // Unfortunately, the original font implementation used a 51 | // Unity shader that used 0.5 as full brightness, which skews 52 | // everything. Doubling alpha appears to fix the problem for 53 | // both DX and OGL paths. 54 | dataOut.color = fixed4(v.color.rgb, v.color.a * 2.0); 55 | 56 | dataOut.vertex = UnityObjectToClipPos(v.vertex); 57 | dataOut.texcoord = v.texcoord; 58 | 59 | return dataOut; 60 | } 61 | 62 | fixed4 frag (v2f_fontshader dataIn) : SV_Target 63 | { 64 | fixed4 diffuse = UNITY_SAMPLE_TEX2D(_MainTex, dataIn.texcoord); 65 | diffuse.a *= dataIn.color.a; 66 | diffuse.rgb = (diffuse.rgb * dataIn.color.rgb) * diffuse.a; 67 | return diffuse; 68 | } 69 | 70 | ENDCG 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Shaders/Assets/Shaders/RPM-JSILabel.shader: -------------------------------------------------------------------------------- 1 | Shader "RPM/JSILabel" 2 | { 3 | // Derived from KSP Alpha / Transparent 4 | Properties 5 | { 6 | [Header(Texture Maps)] 7 | _MainTex("MainTex (RGBA)", 2D) = "white" {} 8 | _Color("_Color", Color) = (1,1,1,1) 9 | [Header(Specularity)] 10 | _SpecColor ("_SpecColor", Color) = (0.5, 0.5, 0.5, 1) 11 | _Shininess ("_Shininess", Range (0.03, 1)) = 0.078125 12 | [Header(Transparency)] 13 | _Opacity("_Opacity", Range(0,1)) = 1 14 | _Fresnel("_Fresnel", Range(0,10)) = 0 15 | [Header(Effects)] 16 | _RimFalloff("Rim Falloff", Range(0.01,5) ) = 0.1 17 | _RimColor("Rim Color", Color) = (0,0,0,0) 18 | _TemperatureColor("_TemperatureColor", Color) = (0,0,0,0) 19 | _BurnColor ("Burn Color", Color) = (1,1,1,1) 20 | _UnderwaterFogFactor("Underwater Fog Factor", Range(0,1)) = 0 21 | [Header(RPM)] 22 | _EmissiveFactor ("_EmissiveFactor", Range(0,1)) = 1 23 | _Cutoff ("Alpha cutoff", Range(0,1)) = 0.35 24 | } 25 | 26 | SubShader 27 | { 28 | Tags {"Queue"="AlphaTest"} 29 | 30 | Pass 31 | { 32 | ZWrite On 33 | ColorMask 0 34 | } 35 | 36 | ZWrite Off 37 | ZTest LEqual 38 | Blend SrcAlpha OneMinusSrcAlpha 39 | Cull Back 40 | 41 | CGPROGRAM 42 | 43 | #pragma surface surf Lambert alpha 44 | #pragma target 3.0 45 | 46 | half _Shininess; 47 | 48 | UNITY_DECLARE_TEX2D(_MainTex); 49 | 50 | float _Opacity; 51 | float _Fresnel; 52 | float _RimFalloff; 53 | float4 _RimColor; 54 | float4 _TemperatureColor; 55 | float4 _BurnColor; 56 | float _EmissiveFactor; 57 | 58 | 59 | struct Input 60 | { 61 | float2 uv_MainTex; 62 | float2 uv_BumpMap; 63 | float2 uv_Emissive; 64 | float3 viewDir; 65 | float3 worldPos; 66 | 67 | fixed4 color : COLOR; 68 | }; 69 | 70 | void surf (Input IN, inout SurfaceOutput o) 71 | { 72 | float4 color = IN.color * _BurnColor; 73 | 74 | float alpha = UNITY_SAMPLE_TEX2D(_MainTex, (IN.uv_MainTex)).a * IN.color.a; 75 | 76 | float3 normal = float3(0.0,0.0,1.0); 77 | half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal)); 78 | 79 | float3 fresnel = pow(1 - rim, _Fresnel); 80 | 81 | float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a; 82 | emission += _TemperatureColor.rgb * _TemperatureColor.a; 83 | 84 | o.Albedo = color.rgb; 85 | o.Emission = emission * (1.0 - _EmissiveFactor) + (_EmissiveFactor * color.rgb) * alpha; 86 | o.Normal = normal; 87 | o.Emission *= _Opacity;// * fog.a; 88 | o.Alpha = alpha; 89 | } 90 | 91 | ENDCG 92 | } 93 | Fallback Off 94 | } 95 | -------------------------------------------------------------------------------- /Shaders/Assets/Shaders/RPM-blur.shader: -------------------------------------------------------------------------------- 1 | // 5x5 gaussian blur shader for rentex 2 | Shader "RPM/Blur" 3 | { 4 | Properties 5 | { 6 | _MainTex ("Render Input", 2D) = "white" {} 7 | _Gain ("_Gain", float) = 1.0 8 | _ImageDims ("_ImageDims", Vector) = (512,512,0.001953125,0.001953125) 9 | } 10 | SubShader { 11 | ZTest Always Cull Off ZWrite Off Fog { Mode Off } 12 | Pass 13 | { 14 | CGPROGRAM 15 | #pragma vertex vert_img 16 | #pragma fragment frag 17 | #pragma target 3.0 18 | 19 | #include "UnityCG.cginc" 20 | 21 | UNITY_DECLARE_TEX2D(_MainTex); 22 | uniform float _Gain; 23 | uniform float4 _ImageDims; 24 | 25 | float4 frag(v2f_img IN) : COLOR 26 | { 27 | // 5x5 gaussian filter written longhand.... 28 | // and assuming a 512x512 ish texture size 29 | float4 color; 30 | 31 | // (-2, -2) wt 1/273 32 | float2 uv = saturate(IN.uv + float2(-2.0 * _ImageDims.z, -2.0 * _ImageDims.w)); 33 | color = UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.003663003; 34 | // (-1, -2) wt 4/273 35 | uv = saturate(IN.uv + float2(-1.0 * _ImageDims.z, -2.0 * _ImageDims.w)); 36 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.014652014; 37 | // (+0, -2) wt 7/273 38 | uv = saturate(IN.uv + float2(+0.0 * _ImageDims.z, -2.0 * _ImageDims.w)); 39 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.025641025; 40 | // (+1, -2) wt 4/273 41 | uv = saturate(IN.uv + float2(+1.0 * _ImageDims.z, -2.0 * _ImageDims.w)); 42 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.014652014; 43 | // (+2, -2) wt 1/273 44 | uv = saturate(IN.uv + float2(+2.0 * _ImageDims.z, -2.0 * _ImageDims.w)); 45 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.003663003; 46 | 47 | // (-2, -1) wt 4/273 48 | uv = saturate(IN.uv + float2(-2.0 * _ImageDims.z, -1.0 * _ImageDims.w)); 49 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.014652014; 50 | // (-1, -1) wt 16/273 51 | uv = saturate(IN.uv + float2(-1.0 * _ImageDims.z, -1.0 * _ImageDims.w)); 52 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.058608058; 53 | // (+0, -1) wt 24/273 54 | uv = saturate(IN.uv + float2(+0.0 * _ImageDims.z, -1.0 * _ImageDims.w)); 55 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.087912087; 56 | // (+1, -1) wt 16/273 57 | uv = saturate(IN.uv + float2(+1.0 * _ImageDims.z, -1.0 * _ImageDims.w)); 58 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.058608058; 59 | // (+2, -1) wt 4/273 60 | uv = saturate(IN.uv + float2(+2.0 * _ImageDims.z, -1.0 * _ImageDims.w)); 61 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.014652014; 62 | 63 | // (-2, 0) wt 6/273 64 | uv = saturate(IN.uv + float2(-2.0 * _ImageDims.z, +0.0 * _ImageDims.w)); 65 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.021978021; 66 | // (-1, -1) wt 24/273 67 | uv = saturate(IN.uv + float2(-1.0 * _ImageDims.z, +0.0 * _ImageDims.w)); 68 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.087912087; 69 | // (+0, 0) wt 41/273 70 | uv = saturate(IN.uv + float2(+0.0 * _ImageDims.z, +0.0 * _ImageDims.w)); 71 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.15018315; 72 | // (+1, 0) wt 2473 73 | uv = saturate(IN.uv + float2(+1.0 * _ImageDims.z, +0.0 * _ImageDims.w)); 74 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.087912087; 75 | // (+2, 0) wt 6/273 76 | uv = saturate(IN.uv + float2(+2.0 * _ImageDims.z, +0.0 * _ImageDims.w)); 77 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.021978021; 78 | 79 | // (-2, +1) wt 4/273 80 | uv = saturate(IN.uv + float2(-2.0 * _ImageDims.z, +1.0 * _ImageDims.w)); 81 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.014652014; 82 | // (-1, +1) wt 16/273 83 | uv = saturate(IN.uv + float2(-1.0 * _ImageDims.z, +1.0 * _ImageDims.w)); 84 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.058608058; 85 | // (+0, +1) wt 24/273 86 | uv = saturate(IN.uv + float2(+0.0 * _ImageDims.z, +1.0 * _ImageDims.w)); 87 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.087912087; 88 | // (+1, +1) wt 16/273 89 | uv = saturate(IN.uv + float2(+1.0 * _ImageDims.z, +1.0 * _ImageDims.w)); 90 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.058608058; 91 | // (+2, +1) wt 4/273 92 | uv = saturate(IN.uv + float2(+2.0 * _ImageDims.z, +1.0 * _ImageDims.w)); 93 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.014652014; 94 | 95 | // (-2, +2) wt 1/273 96 | uv = saturate(IN.uv + float2(-2.0 * _ImageDims.z, +2.0 * _ImageDims.w)); 97 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.003663003; 98 | // (-1, +2) wt 4/273 99 | uv = saturate(IN.uv + float2(-1.0 * _ImageDims.z, +2.0 * _ImageDims.w)); 100 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.014652014; 101 | // (+0, +2) wt 7/273 102 | uv = saturate(IN.uv + float2(+0.0 * _ImageDims.z, +2.0 * _ImageDims.w)); 103 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.025641025; 104 | // (+1, +2) wt 4/273 105 | uv = saturate(IN.uv + float2(+1.0 * _ImageDims.z, +2.0 * _ImageDims.w)); 106 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.014652014; 107 | // (+2, +2) wt 1/273 108 | uv = saturate(IN.uv + float2(+2.0 * _ImageDims.z, +2.0 * _ImageDims.w)); 109 | color += UNITY_SAMPLE_TEX2D(_MainTex, uv) * 0.003663003; 110 | 111 | float gainBoost = max(0.0, _Gain - 1.0) * 0.15; 112 | color.r = saturate((color.r * _Gain) + gainBoost); 113 | color.g = saturate((color.g * _Gain) + gainBoost); 114 | color.b = saturate((color.b * _Gain) + gainBoost); 115 | 116 | return color; 117 | } 118 | ENDCG 119 | } 120 | } 121 | } 122 | -------------------------------------------------------------------------------- /Shaders/Assets/Shaders/RPM-grayscale.shader: -------------------------------------------------------------------------------- 1 | // Grayscale shader for rentex 2 | Shader "RPM/Grayscale" 3 | { 4 | Properties 5 | { 6 | _MainTex ("Render Input", 2D) = "white" {} 7 | _Gain ("_Gain", float) = 1.0 8 | _Opacity ("_Opacity", float) = 1.0 9 | } 10 | SubShader 11 | { 12 | ZTest Always Cull Off ZWrite Off Fog { Mode Off } 13 | Blend SrcAlpha OneMinusSrcAlpha 14 | Pass 15 | { 16 | CGPROGRAM 17 | #pragma vertex vert_img 18 | #pragma fragment frag 19 | #pragma target 3.0 20 | #include "UnityCG.cginc" 21 | 22 | UNITY_DECLARE_TEX2D(_MainTex); 23 | uniform float _Gain; 24 | uniform float _Opacity; 25 | 26 | float4 frag(v2f_img IN) : COLOR 27 | { 28 | float4 c = UNITY_SAMPLE_TEX2D (_MainTex, IN.uv); 29 | 30 | // CIE 1931 conversion of linear color to luminance 31 | float Y = c.r * 0.2126 + c.g * 0.7152 + c.b * 0.0722; 32 | // Apply gain 33 | float gainBoost = max(0.0, _Gain - 1.0) * 0.15; 34 | Y = saturate(Y * _Gain + gainBoost); 35 | return half4(Y, Y, Y, saturate(_Opacity)); 36 | } 37 | ENDCG 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Shaders/Assets/Shaders/RPM-greenscale.shader: -------------------------------------------------------------------------------- 1 | // Greenscale shader for rentex 2 | Shader "RPM/Greenscale" 3 | { 4 | Properties 5 | { 6 | _MainTex ("Render Input", 2D) = "white" {} 7 | _Gain ("_Gain", float) = 1.0 8 | _Opacity ("_Opacity", float) = 1.0 9 | } 10 | SubShader 11 | { 12 | ZTest Always Cull Off ZWrite Off Fog { Mode Off } 13 | Blend SrcAlpha OneMinusSrcAlpha 14 | Pass 15 | { 16 | CGPROGRAM 17 | #pragma vertex vert_img 18 | #pragma fragment frag 19 | #pragma target 3.0 20 | #include "UnityCG.cginc" 21 | 22 | UNITY_DECLARE_TEX2D(_MainTex); 23 | uniform float _Gain; 24 | uniform float _Opacity; 25 | 26 | fixed4 frag(v2f_img IN) : SV_TARGET 27 | { 28 | float4 c = UNITY_SAMPLE_TEX2D (_MainTex, IN.uv); 29 | 30 | // CIE 1931 conversion of linear color to luminance 31 | float Y = c.r * 0.2126 + c.g * 0.7152 + c.b * 0.0722; 32 | // Apply gain 33 | float gainBoost = max(0.0, _Gain - 1.0) * 0.15; 34 | Y = saturate(Y * _Gain + gainBoost); 35 | return fixed4(0.0, Y, 0.0, saturate(_Opacity)); 36 | } 37 | ENDCG 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Shaders/Assets/Shaders/RPM-noise.shader: -------------------------------------------------------------------------------- 1 | // Textured noise shader for rentex 2 | Shader "RPM/Noise" 3 | { 4 | Properties 5 | { 6 | _MainTex ("Render Input", 2D) = "white" {} 7 | _Noise ("_Noise", 2D) = "white" {} 8 | _Gain ("_Gain", float) = 1.0 9 | _Blend ("_Blend", float) = 1.0 10 | _NoiseOffset ("_NoiseOffset", float) = 0.0 11 | } 12 | SubShader 13 | { 14 | ZTest Always Cull Off ZWrite Off Fog { Mode Off } 15 | Pass 16 | { 17 | CGPROGRAM 18 | #pragma vertex vert_img 19 | #pragma fragment frag 20 | #pragma target 3.0 21 | 22 | #include "UnityCG.cginc" 23 | 24 | UNITY_DECLARE_TEX2D(_MainTex); 25 | UNITY_DECLARE_TEX2D(_Noise); 26 | uniform float _Gain; 27 | uniform float _Blend; 28 | uniform float _NoiseOffset; 29 | 30 | fixed4 frag(v2f_img IN) : SV_TARGET 31 | { 32 | // Fetch color 33 | float2 uv = IN.uv; 34 | float4 color = UNITY_SAMPLE_TEX2D(_MainTex, uv); 35 | 36 | // Apply gain 37 | float gainBoost = max(0.0, _Gain - 1.0) * 0.15; 38 | color.r = saturate((color.r * _Gain) + gainBoost); 39 | color.g = saturate((color.g * _Gain) + gainBoost); 40 | color.b = saturate((color.b * _Gain) + gainBoost); 41 | 42 | // Fetch noise, including offset 43 | uv.y = frac(uv.y + _NoiseOffset); 44 | float4 noise = UNITY_SAMPLE_TEX2D(_Noise, uv); 45 | 46 | // Blend RGB 47 | color.r = lerp(noise.r, color.r, _Blend); 48 | color.g = lerp(noise.g, color.g, _Blend); 49 | color.b = lerp(noise.b, color.b, _Blend); 50 | 51 | return color; 52 | } 53 | ENDCG 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Shaders/Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.collab-proxy": "1.2.16", 4 | "com.unity.ide.rider": "1.1.4", 5 | "com.unity.ide.vscode": "1.2.3", 6 | "com.unity.test-framework": "1.1.20", 7 | "com.unity.textmeshpro": "2.1.1", 8 | "com.unity.timeline": "1.2.17", 9 | "com.unity.ugui": "1.0.0", 10 | "com.unity.modules.ai": "1.0.0", 11 | "com.unity.modules.androidjni": "1.0.0", 12 | "com.unity.modules.animation": "1.0.0", 13 | "com.unity.modules.assetbundle": "1.0.0", 14 | "com.unity.modules.audio": "1.0.0", 15 | "com.unity.modules.cloth": "1.0.0", 16 | "com.unity.modules.director": "1.0.0", 17 | "com.unity.modules.imageconversion": "1.0.0", 18 | "com.unity.modules.imgui": "1.0.0", 19 | "com.unity.modules.jsonserialize": "1.0.0", 20 | "com.unity.modules.particlesystem": "1.0.0", 21 | "com.unity.modules.physics": "1.0.0", 22 | "com.unity.modules.physics2d": "1.0.0", 23 | "com.unity.modules.screencapture": "1.0.0", 24 | "com.unity.modules.terrain": "1.0.0", 25 | "com.unity.modules.terrainphysics": "1.0.0", 26 | "com.unity.modules.tilemap": "1.0.0", 27 | "com.unity.modules.ui": "1.0.0", 28 | "com.unity.modules.uielements": "1.0.0", 29 | "com.unity.modules.umbra": "1.0.0", 30 | "com.unity.modules.unityanalytics": "1.0.0", 31 | "com.unity.modules.unitywebrequest": "1.0.0", 32 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 33 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 34 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 35 | "com.unity.modules.unitywebrequestwww": "1.0.0", 36 | "com.unity.modules.vehicles": "1.0.0", 37 | "com.unity.modules.video": "1.0.0", 38 | "com.unity.modules.vr": "1.0.0", 39 | "com.unity.modules.wind": "1.0.0", 40 | "com.unity.modules.xr": "1.0.0" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 0 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} 40 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 41 | m_PreloadedShaders: [] 42 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 43 | type: 0} 44 | m_CustomRenderPipeline: {fileID: 0} 45 | m_TransparencySortMode: 0 46 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 47 | m_DefaultRenderingPath: 1 48 | m_DefaultMobileRenderingPath: 1 49 | m_TierSettings: [] 50 | m_LightmapStripping: 0 51 | m_FogStripping: 0 52 | m_InstancingStripping: 0 53 | m_LightmapKeepPlain: 1 54 | m_LightmapKeepDirCombined: 1 55 | m_LightmapKeepDynamicPlain: 1 56 | m_LightmapKeepDynamicDirCombined: 1 57 | m_LightmapKeepShadowMask: 1 58 | m_LightmapKeepSubtractive: 1 59 | m_FogKeepLinear: 1 60 | m_FogKeepExp: 1 61 | m_FogKeepExp2: 1 62 | m_AlbedoSwatchInfos: [] 63 | m_LightsUseLinearIntensity: 0 64 | m_LightsUseColorTemperature: 0 65 | m_LogWhenShaderIsCompiled: 0 66 | m_AllowEnlightenSupportForUpgradedProject: 0 67 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_ScopedRegistriesSettingsExpanded: 1 16 | oneTimeWarningShown: 0 17 | m_Registries: 18 | - m_Id: main 19 | m_Name: 20 | m_Url: https://packages.unity.com 21 | m_Scopes: [] 22 | m_IsDefault: 1 23 | m_UserSelectedRegistryName: 24 | m_UserAddingNewScopedRegistry: 0 25 | m_RegistryInfoDraft: 26 | m_ErrorMessage: 27 | m_Original: 28 | m_Id: 29 | m_Name: 30 | m_Url: 31 | m_Scopes: [] 32 | m_IsDefault: 0 33 | m_Modified: 0 34 | m_Name: 35 | m_Url: 36 | m_Scopes: 37 | - 38 | m_SelectedScopeIndex: 0 39 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.4.18f1 2 | m_EditorVersionWithRevision: 2019.4.18f1 (3310a4d4f880) 3 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /Shaders/ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /SharedAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | [assembly: AssemblyConfiguration("")] 5 | [assembly: AssemblyCompany("")] 6 | [assembly: AssemblyProduct ("RasterPropMonitor")] 7 | [assembly: AssemblyCopyright ("Copyright ©2013-2018 by Mihara, MOARdV, and other contributors, released under the terms of GNU GPLv3")] 8 | [assembly: AssemblyTrademark("")] 9 | [assembly: AssemblyCulture("")] 10 | 11 | [assembly: AssemblyVersion("1.0.2")] 12 | 13 | // The following attributes are used to specify the signing key for the assembly, 14 | // if desired. See the Mono documentation for more information about signing. 15 | //[assembly: AssemblyDelaySign(false)] 16 | //[assembly: AssemblyKeyFile("")] 17 | -------------------------------------------------------------------------------- /SharedAssemblyInfo.cs.versiontemplate: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | [assembly: AssemblyConfiguration("")] 5 | [assembly: AssemblyCompany("")] 6 | [assembly: AssemblyProduct ("RasterPropMonitor")] 7 | [assembly: AssemblyCopyright ("Copyright ©2013-2018 by Mihara, MOARdV, and other contributors, released under the terms of GNU GPLv3")] 8 | [assembly: AssemblyTrademark("")] 9 | [assembly: AssemblyCulture("")] 10 | 11 | [assembly: AssemblyVersion("@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@")] 12 | 13 | // The following attributes are used to specify the signing key for the assembly, 14 | // if desired. See the Mono documentation for more information about signing. 15 | //[assembly: AssemblyDelaySign(false)] 16 | //[assembly: AssemblyKeyFile("")] 17 | --------------------------------------------------------------------------------