-
Notifications
You must be signed in to change notification settings - Fork 98
Refactored garbage generators #813
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Pull request #570 at 14abf7a: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 1edb2e5: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #767 at 4cb5c77: Refine sunrise and sunset - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #809 at f67822a: Some on-screen messages not suppressed, Bug #2008012 - Pull request #813 at a8e9d9b: Refactored garbage generators
|
Cédric @Sharpe49, also would it be possible that you tried to rework the IIRFilter class, with not using the ArrayList class? This is one of the biggest garbage creators, because while you store floats in the ArrayList, it internally stores them boxed into objects, thus generating garbage. The ArrayList class together with LINQ advanced features like Select(), Where(), etc. must be banned from the hot path of the game. These must be replaced with something not generating garbage. openrails/Source/ORTS.Common/Filter.cs Lines 76 to 89 in c9abcd2
|
|
In Explorer mode the most garbage comes now from the TrackCircuitSection.Reserve() function. I'm not sure from exactly where, because I have never checked or modified this part of the program. One of my suspicions is the removeFromQueue() method: openrails/Source/Orts.Simulation/Simulation/Signalling/TrackCircuitSection.cs Lines 1313 to 1316 in c9abcd2
I wonder why a new List and a new Queue is created here. Can't the existing thisQueue just be cleared and reused? And if a helper List is needed, then it should be created in advance in the constructor or as a static property, and the same single object reused every time. According to the git blame it is also your code @Sharpe49 Cédric, but maybe Rob @Roeterdink has also some thoughts about this one. |
- Pull request #570 at 14abf7a: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 1edb2e5: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #767 at 82c5f1c: Refine sunrise and sunset - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #809 at f67822a: Some on-screen messages not suppressed, Bug #2008012 - Pull request #813 at a8e9d9b: Refactored garbage generators
|
Most of it is not my code. I just did a refactoring. |
- Pull request #570 at 14abf7a: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 1edb2e5: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #767 at 82c5f1c: Refine sunrise and sunset - Pull request #799 at eb92d81: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #809 at f67822a: Some on-screen messages not suppressed, Bug #2008012 - Pull request #813 at a8e9d9b: Refactored garbage generators
…to OR_NewYear_MG_NoWD
- Pull request #570 at 5faac7c: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 1edb2e5: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #767 at 82c5f1c: Refine sunrise and sunset - Pull request #799 at eb92d81: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #809 at f67822a: Some on-screen messages not suppressed, Bug #2008012 - Pull request #813 at a8e9d9b: Refactored garbage generators
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 1edb2e5: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #767 at 82c5f1c: Refine sunrise and sunset - Pull request #799 at eb92d81: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #809 at f67822a: Some on-screen messages not suppressed, Bug #2008012 - Pull request #813 at a8e9d9b: Refactored garbage generators
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 1edb2e5: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #767 at 82c5f1c: Refine sunrise and sunset - Pull request #799 at eb92d81: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #809 at f67822a: Some on-screen messages not suppressed, Bug #2008012 - Pull request #813 at b3649c3: Refactored garbage generators
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 1edb2e5: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #767 at 82c5f1c: Refine sunrise and sunset - Pull request #799 at eb92d81: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #809 at f67822a: Some on-screen messages not suppressed, Bug #2008012 - Pull request #813 at 153f923: Refactored garbage generators
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 1edb2e5: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #767 at 82c5f1c: Refine sunrise and sunset - Pull request #799 at eb92d81: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #809 at f67822a: Some on-screen messages not suppressed, Bug #2008012 - Pull request #813 at 80789c6: Refactored garbage generators
Okay, I see. @Sharpe49, eventually I've refactored the IIRFilter class to use a regular List instead of the ArrayList. Would it be possible that you checked if I didn't ruin the funcionality? You might also want to merge these changes to your private fork, because the ArrayList really generated a LOT of garbage. |
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 79e9c38: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #767 at 82c5f1c: Refine sunrise and sunset - Pull request #799 at eb92d81: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #809 at f67822a: Some on-screen messages not suppressed, Bug #2008012 - Pull request #813 at 80789c6: Refactored garbage generators
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 79e9c38: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #767 at 82c5f1c: Refine sunrise and sunset - Pull request #799 at eb92d81: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #809 at f67822a: Some on-screen messages not suppressed, Bug #2008012 - Pull request #813 at 80789c6: Refactored garbage generators - Pull request #814 at b102c1c: Bug fix for https://bugs.launchpad.net/or/+bug/2013969 Crash after uncoupling player loco of a train with EOT
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 79e9c38: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #767 at 82c5f1c: Refine sunrise and sunset - Pull request #799 at eb92d81: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #809 at f67822a: Some on-screen messages not suppressed, Bug #2008012 - Pull request #813 at 80789c6: Refactored garbage generators - Pull request #814 at b102c1c: Bug fix for https://bugs.launchpad.net/or/+bug/2013969 Crash after uncoupling player loco of a train with EOT - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 79e9c38: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #799 at eb92d81: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at a23bd5c: Refactored garbage generators - Pull request #814 at b102c1c: Bug fix for https://bugs.launchpad.net/or/+bug/2013969 Crash after uncoupling player loco of a train with EOT - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 79e9c38: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #799 at eb92d81: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at a23bd5c: Refactored garbage generators - Pull request #814 at b102c1c: Bug fix for https://bugs.launchpad.net/or/+bug/2013969 Crash after uncoupling player loco of a train with EOT - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #816 at eae646d: Bug fix for https://bugs.launchpad.net/or/+bug/2014992 EOT can't be dismounted after train reversal
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 79e9c38: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at a23bd5c: Refactored garbage generators - Pull request #814 at b102c1c: Bug fix for https://bugs.launchpad.net/or/+bug/2013969 Crash after uncoupling player loco of a train with EOT - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #816 at eae646d: Bug fix for https://bugs.launchpad.net/or/+bug/2014992 EOT can't be dismounted after train reversal
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 22f66dc: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at a23bd5c: Refactored garbage generators - Pull request #814 at b102c1c: Bug fix for https://bugs.launchpad.net/or/+bug/2013969 Crash after uncoupling player loco of a train with EOT - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #816 at eae646d: Bug fix for https://bugs.launchpad.net/or/+bug/2014992 EOT can't be dismounted after train reversal
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 22f66dc: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at a23bd5c: Refactored garbage generators - Pull request #814 at b102c1c: Bug fix for https://bugs.launchpad.net/or/+bug/2013969 Crash after uncoupling player loco of a train with EOT - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #816 at eae646d: Bug fix for https://bugs.launchpad.net/or/+bug/2014992 EOT can't be dismounted after train reversal - Pull request #817 at 9c17435: weblink updated
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 22f66dc: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 0bb067a: Refactored garbage generators - Pull request #814 at b102c1c: Bug fix for https://bugs.launchpad.net/or/+bug/2013969 Crash after uncoupling player loco of a train with EOT - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #816 at eae646d: Bug fix for https://bugs.launchpad.net/or/+bug/2014992 EOT can't be dismounted after train reversal - Pull request #817 at 9c17435: weblink updated
|
Hi Peter, openrails/Source/Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs Line 396 in 5db5c78
Wouldn't be better to just make GetEnumerator a wrapper to DEList.GetEnumerator()? I need to create a similar class but for Axles, and I'm worried about the GC. |
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 22f66dc: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 0bb067a: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #816 at eae646d: Bug fix for https://bugs.launchpad.net/or/+bug/2014992 EOT can't be dismounted after train reversal - Pull request #818 at 18fd051: Allow independent drive axles for locomotives
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #732 at 22f66dc: Improvements for air brakes - Pull request #751 at 00981a2: Web interface to control cab controls with external hardware - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 244875d: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #816 at eae646d: Bug fix for https://bugs.launchpad.net/or/+bug/2014992 EOT can't be dismounted after train reversal - Pull request #818 at 18fd051: Allow independent drive axles for locomotives
|
Hi @cesarBLG, that line actually causes 2 allocations: one DieselEnum, and via the ToList() a new List. Actually I don't understand this whole code part. Why is it need to be so complicated? In my latest commit 6728bd5 I just replaced the foreach loop that tries to allocate this custom Enumerator with a for loop, which doesn't allocate anything. That is the place where the majority of the allocations are done because of this GetEnumerator(). If all the other places this used were also modified to use for loop, this whole thing could be just deleted... As I learned, there is no problem using a foreach loop in case it is used over a type that already has a built-in enumerator, like a List, Dictionary.Keys, Array, etc. But there is a problem with interfaces, like IEnumerable, IDictionary and friends, and also with the custom types, where the GetEnumerator() method is poorly implemented, like here. |
|
This is what I did for the Axles enumeration: It allows doing "foreach(var axle in Axles)" but, unless I'm missing something, it shouldn't allocate anything. If it's OK then we can do the same for Diesel Engines |
|
First I wanted to blindly answer to you that, of course it doesn't allocate, because it just forwards the List's built-in enumerator. But then I had a second thought, and run the profiler on your patch. And it turns out, it still allocates! Just look at the results: Then as a counter-test, I changed one of the functions in MSTSLocomotive as follows: protected virtual void UpdateAxleDriveForce()
{
//foreach (var axle in LocomotiveAxles)
for (var i = 0; i < LocomotiveAxles.Count; i++)
{
var axle = LocomotiveAxles[i];
if (axle.DriveType == AxleDriveType.ForceDriven)
{
axle.DriveForceN = TractiveForceN / LocomotiveAxles.Count;
if (SlipControlSystem == SlipControlType.Full)
{
// Simple slip control
// Motive force is reduced to the maximum adhesive force
// In wheelslip situations, motive force is set to zero
axle.DriveForceN = Math.Sign(axle.DriveForceN) * Math.Min(axle.AdhesionLimit * axle.AxleWeightN, Math.Abs(axle.DriveForceN));
if (axle.IsWheelSlip) axle.DriveForceN = 0;
}
}
}
}And that function disappeared from the allocators: |
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #833 at 01aaca7: Implement brake relay valve - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #833 at 01aaca7: Implement brake relay valve - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at 70a32d8: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #833 at 01aaca7: Implement brake relay valve - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at a479616: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #833 at 01aaca7: Implement brake relay valve - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at 32bb911: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #833 at 01aaca7: Implement brake relay valve - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at 57dfe63: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #833 at 01aaca7: Implement brake relay valve - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at 4447c8d: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters
- Pull request #570 at e6f969f: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #833 at 01aaca7: Implement brake relay valve - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at 4447c8d: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters
- Pull request #570 at e6f969f: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at 4447c8d: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at 4447c8d: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at 1168d61: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at c3d05c4: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at c3d05c4: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at 756716b: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #831 at c8927a4: preliminary version switchpanel on tablet - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at 1b6ca35: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #823 at 5e1c03b: Select track sound volume percent retained in .eng and .wag files - Pull request #824 at f16ebed: Update Readme.md - Pull request #825 at 29ed427: 2D Cabview controls for side viewpoints https://blueprints.launchpad.net/or/+spec/2dcabview-controls-for-side-views - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ceeaba7: Electric locomotive hot start - Pull request #834 at 7a98eca: Replaces email service with FormSpark - Pull request #835 at 1b6ca35: Correct Brake Shoe Force Calculation - Pull request #836 at 62e6d02: Adds policy on crashes and derailments - Pull request #837 at 0497316: copies website policies to repo - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at 45a411f: Electric locomotive hot start - Pull request #835 at 1b6ca35: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at 45a411f: Electric locomotive hot start - Pull request #835 at fa510b0: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at 45a411f: Electric locomotive hot start - Pull request #835 at 037dbdf: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at 45a411f: Electric locomotive hot start - Pull request #835 at 4c9375e: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #818 at 23f3488: Allow independent drive axles for locomotives - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ce2726a: Electric locomotive hot start - Pull request #835 at 4c9375e: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #803 at 7157e08: Various adjustments to steam adhesion - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ce2726a: Electric locomotive hot start - Pull request #835 at 4c9375e: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ce2726a: Electric locomotive hot start - Pull request #835 at 4c9375e: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ce2726a: Electric locomotive hot start - Pull request #835 at 4c9375e: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working - Pull request #841 at 65eeaa7: https://blueprints.launchpad.net/or/+spec/animating-trainset-windows
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ce2726a: Electric locomotive hot start - Pull request #835 at 4c9375e: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working - Pull request #841 at 65eeaa7: https://blueprints.launchpad.net/or/+spec/animating-trainset-windows - Pull request #842 at a4a5592: Set up ability for steam locomotives to have multiple engines
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at ce2726a: Electric locomotive hot start - Pull request #835 at 4c9375e: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working - Pull request #842 at a4a5592: Set up ability for steam locomotives to have multiple engines
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at 19ee760: Electric locomotive hot start - Pull request #835 at 4c9375e: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working - Pull request #842 at a4a5592: Set up ability for steam locomotives to have multiple engines
- Pull request #570 at 7269d24: Experimental glTF 2.0 support with PBR lighting - Pull request #757 at d9d75f4: Unify RailDriver code implementations - Pull request #799 at dc03850: Consolidated wind simulation - Pull request #813 at 7fdad38: Refactored garbage generators - Pull request #821 at e0fa5a8: Adds suppression of safety valves - Pull request #829 at 434af02: Improvements for air brakes #3 - Emergency valves - Pull request #830 at 19ee760: Electric locomotive hot start - Pull request #835 at e632edb: Correct Brake Shoe Force Calculation - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #840 at daca020: Bug fix for sanding max speed not working - Pull request #842 at a4a5592: Set up ability for steam locomotives to have multiple engines
…OR_NewYear_MG_NoWD


I've run the VS built-in profiler to see which classes generate the most garbage. This garbage causes micro-stuttering when they are collected by the garbage collector.
@Sharpe49 Cédric, could you please review these changes, because it seems many of them is your code originally. It would be good if you validated that my changes do exactly the same that you intended with the original.