├── .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 |
--------------------------------------------------------------------------------