├── .gitignore
├── Binaries
├── AForge.Imaging.dll
├── AForge.Imaging.xml
├── AForge.Math.dll
├── AForge.Math.xml
├── AForge.dll
├── AForge.xml
├── FSharp.Core.dll
├── FSharp.Core.xml
├── MathNet.Numerics.FSharp.dll
├── MathNet.Numerics.FSharp.xml
├── MathNet.Numerics.dll
├── MathNet.Numerics.xml
├── vJoyInterface.dll
└── vJoyInterfaceWrap.dll
├── ETS2 engine revving speed vs power.xlsx
├── Icons
├── Active Blue
│ ├── Antistall_active.png
│ ├── CameraHorizon_active.png
│ ├── Cruisecontrol_active.png
│ ├── DrivetrainCalibrator_active.png
│ ├── LaneAssistance_active.png
│ ├── LaunchControl_active.png
│ ├── Powerlimiter_active.png
│ ├── Speedlimiter_active.png
│ ├── TractionControl_active.png
│ ├── Transmission_active.png
│ └── profileswitcher_active.png
├── Antistall.png
├── Antistall_active.png
├── CameraHorizon.png
├── CameraHorizon_active.png
├── Cruisecontrol.png
├── Cruisecontrol_active.png
├── DrivetrainCalibrator.png
├── DrivetrainCalibrator_active.png
├── LaneAssistance.png
├── LaneAssistance_active.png
├── LaunchControl.png
├── LaunchControl_active.png
├── Powerlimiter.png
├── Powerlimiter_active.png
├── Speedlimiter.png
├── Speedlimiter_active.png
├── TractionControl.png
├── TractionControl_active.png
├── Transmission.png
├── Transmission_active.png
├── profileswitcher.png
├── profileswitcher_active.png
└── raw
│ ├── 120px-Rocket_symbol.svg.png
│ ├── 9LKA-icon.jpg
│ ├── abs.png
│ ├── battery.png
│ ├── cameras-s.jpg
│ ├── clutch.gif
│ ├── cog.png
│ ├── cruisecontrol.png
│ ├── engine.png
│ ├── esp.png
│ ├── fuel.png
│ ├── gearbox.jpg
│ ├── highbeam.png
│ ├── oilwarning.png
│ ├── overdrive.png
│ ├── powertrain.png
│ ├── profile.png
│ ├── tractioncontrol.png
│ ├── turn.png
│ ├── warning.png
│ └── watertemp.png
├── LICENSE
├── README.md
├── Resources
├── AForge
│ ├── AForge.Controls.dll
│ ├── AForge.Controls.xml
│ ├── AForge.DebuggerVisualizers (2010).dll
│ ├── AForge.Fuzzy.dll
│ ├── AForge.Fuzzy.xml
│ ├── AForge.Genetic.dll
│ ├── AForge.Genetic.xml
│ ├── AForge.Imaging.Formats.dll
│ ├── AForge.Imaging.Formats.xml
│ ├── AForge.Imaging.IPPrototyper.dll
│ ├── AForge.Imaging.dll
│ ├── AForge.Imaging.xml
│ ├── AForge.MachineLearning.dll
│ ├── AForge.MachineLearning.xml
│ ├── AForge.Math.dll
│ ├── AForge.Math.xml
│ ├── AForge.Neuro.dll
│ ├── AForge.Neuro.xml
│ ├── AForge.Robotics.Lego.dll
│ ├── AForge.Robotics.Lego.xml
│ ├── AForge.Robotics.Surveyor.dll
│ ├── AForge.Robotics.Surveyor.xml
│ ├── AForge.Robotics.TeRK.dll
│ ├── AForge.Robotics.TeRK.xml
│ ├── AForge.Video.DirectShow.dll
│ ├── AForge.Video.DirectShow.xml
│ ├── AForge.Video.FFMPEG.dll
│ ├── AForge.Video.FFMPEG.xml
│ ├── AForge.Video.Kinect.dll
│ ├── AForge.Video.Kinect.xml
│ ├── AForge.Video.VFW.dll
│ ├── AForge.Video.VFW.xml
│ ├── AForge.Video.Ximea.dll
│ ├── AForge.Video.Ximea.xml
│ ├── AForge.Video.dll
│ ├── AForge.Video.xml
│ ├── AForge.Vision.dll
│ ├── AForge.Vision.xml
│ ├── AForge.dll
│ ├── AForge.xml
│ └── IPPrototyper.exe
├── AdaptiveCruiseControl.pdn
├── AdaptiveCruiseControl.png
├── AdaptiveCruiseControlOff.pdn
├── AdaptiveCruiseControlOff.png
├── AdaptiveCruiseControlOn.pdn
├── AdaptiveCruiseControlOn.png
├── Alert.wav
├── CruiseControlIcon.pdn
├── CruiseControlIcon.png
├── CruiseOff.pdn
├── CruiseOff.png
├── CruiseOn.pdn
├── CruiseOn.png
├── CuteCar.pdn
├── LUT1.19-cities.csv
├── LUT1.19-companies.csv
├── LUT1.19-prefab.csv
├── LUT1.19-prefab.sii
├── LUT1.19-roadlook.sii
├── LUT1.19-roads.csv
├── LaneAssist Data
│ ├── 0.png
│ ├── 1.png
│ ├── 10.png
│ ├── 11.png
│ ├── 12.png
│ ├── 13.png
│ ├── 14.png
│ ├── 15.png
│ ├── 16.png
│ ├── 17.png
│ ├── 18.png
│ ├── 19.png
│ ├── 2.png
│ ├── 20.png
│ ├── 21.png
│ ├── 22.png
│ ├── 23.png
│ ├── 3.png
│ ├── 4.png
│ ├── 5.png
│ ├── 6.png
│ ├── 7.png
│ ├── 8.png
│ ├── 9.png
│ ├── fel.png
│ ├── geel.png
│ └── lamp_donker.png
├── Mem
│ ├── TDU2 Camera.CT
│ └── TDU2.CT
├── Needle.png
├── Needle_150px.png
├── TeslaDash
│ ├── Background.png
│ ├── Background2.pdn
│ ├── Background2.png
│ ├── Background2a.png
│ ├── Background3.png
│ ├── Efficiency.png
│ ├── Empty.png
│ ├── Energy.png
│ ├── Lade-Balken.png
│ ├── Media.png
│ ├── Music.png
│ ├── Navi.png
│ ├── Numbers.png
│ ├── Range.png
│ ├── Street.png
│ ├── Tacho.png
│ ├── Tacho_Mitte.png
│ ├── Tile.png
│ ├── Trips.png
│ ├── bg.png
│ └── call.png
├── prefabs tmp.csv
└── tractioncontrol.wav
├── SimShift
├── SimShift.Map
│ ├── ByteSearchMethods.cs
│ ├── Ets2Company.cs
│ ├── Ets2CurveHelper.cs
│ ├── Ets2Item.cs
│ ├── Ets2ItemSearchRequest.cs
│ ├── Ets2ItemType.cs
│ ├── Ets2Mapper.cs
│ ├── Ets2NavigationRoute.cs
│ ├── Ets2NavigationSegment.cs
│ ├── Ets2NavigationSegmentType.cs
│ ├── Ets2Node.cs
│ ├── Ets2Point.cs
│ ├── Ets2Prefab.cs
│ ├── Ets2PrefabCurve.cs
│ ├── Ets2PrefabNode.cs
│ ├── Ets2PrefabRoute.cs
│ ├── Ets2RoadLook.cs
│ ├── Ets2Sector.cs
│ ├── IndicatorSignal.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── SimShift.MapTool.csproj
│ └── Splines
│ │ ├── ArrayUtil.cs
│ │ ├── CubicSpline.cs
│ │ └── TriDiagonalMatrix.cs
├── SimShift.sln
└── SimShift
│ ├── Controllers
│ ├── JoystickInput.cs
│ ├── JoystickInputDevice.cs
│ ├── JoystickMethods.cs
│ └── JoystickOutput.cs
│ ├── Data
│ ├── Common
│ │ ├── GenericDataDefinition.cs
│ │ ├── IDataDefinition.cs
│ │ ├── IDataMiner.cs
│ │ ├── MemoryReader.cs
│ │ ├── MemoryWriter.cs
│ │ ├── ProcessMemoryReaderApi.cs
│ │ └── SharedMemory.cs
│ ├── DataArbiter.cs
│ ├── Ets2DataAuxilliary.cs
│ ├── Ets2DataDebug.Designer.cs
│ ├── Ets2DataDebug.cs
│ ├── Ets2DataDebug.resx
│ ├── Ets2DataMiner.cs
│ ├── Memory
│ │ ├── IDataField.cs
│ │ ├── IDataNode.cs
│ │ ├── IDataProvider.cs
│ │ ├── IMemoryObject.cs
│ │ ├── MemoryAddress.cs
│ │ ├── MemoryDataConverter.cs
│ │ ├── MemoryDataConverterProvider.cs
│ │ ├── MemoryField.cs
│ │ ├── MemoryFieldConstant.cs
│ │ ├── MemoryFieldFunc.cs
│ │ ├── MemoryFieldLazy.cs
│ │ ├── MemoryFieldSignature.cs
│ │ ├── MemoryFieldSignaturePointer.cs
│ │ ├── MemoryPool.cs
│ │ ├── MemoryProvider.cs
│ │ ├── MemoryReader.cs
│ │ ├── MemoryReaderApi.cs
│ │ ├── MemoryRegionType.cs
│ │ └── MemorySignatureScanner.cs
│ ├── Tdu2DataMiner.cs
│ ├── TelemetryChannel.cs
│ └── WorldMapper.cs
│ ├── Dialogs
│ ├── Tesla
│ │ ├── ColorBlender.cs
│ │ ├── dlTeslaDashboard.Designer.cs
│ │ ├── dlTeslaDashboard.cs
│ │ ├── dlTeslaDashboard.resx
│ │ ├── ucTeslaTacho.Designer.cs
│ │ ├── ucTeslaTacho.cs
│ │ └── ucTeslaTacho.resx
│ ├── dlDebugInfo.Designer.cs
│ ├── dlDebugInfo.cs
│ ├── dlDebugInfo.resx
│ ├── dlGearboxShifterTable.Designer.cs
│ ├── dlGearboxShifterTable.cs
│ ├── dlGearboxShifterTable.resx
│ ├── dlJoysticks.Designer.cs
│ ├── dlJoysticks.cs
│ ├── dlJoysticks.resx
│ ├── dlMap.Designer.cs
│ ├── dlMap.cs
│ ├── dlMap.resx
│ ├── dlPlotter.Designer.cs
│ ├── dlPlotter.cs
│ ├── dlPlotter.resx
│ ├── dlTwitchDashboard.Designer.cs
│ ├── dlTwitchDashboard.cs
│ ├── dlTwitchDashboard.resx
│ ├── ucDashboard.Designer.cs
│ ├── ucDashboard.cs
│ ├── ucDashboard.resx
│ ├── ucGearboxShifterGraph.Designer.cs
│ ├── ucGearboxShifterGraph.cs
│ ├── ucGearboxShifterGraph.resx
│ ├── ucJoystickChannel.Designer.cs
│ ├── ucJoystickChannel.cs
│ ├── ucJoystickChannel.resx
│ ├── ucPlotter.Designer.cs
│ ├── ucPlotter.cs
│ └── ucPlotter.resx
│ ├── Entities
│ ├── ConfigurableShiftPattern.cs
│ ├── IConfigurable.cs
│ ├── IControlChainObj.cs
│ ├── JoyControls.cs
│ ├── MmTimer.cs
│ ├── Profile.cs
│ ├── Profiles.cs
│ ├── ShiftPattern.cs
│ ├── ShiftPatternFrame.cs
│ ├── ShifterTableConfiguration.cs
│ ├── ShifterTableConfigurationDefault.cs
│ └── ShifterTableLookupResult.cs
│ ├── FrmMain.Designer.cs
│ ├── FrmMain.cs
│ ├── FrmMain.resx
│ ├── Models
│ ├── Ets2Aero.cs
│ ├── Ets2Drivetrain.cs
│ ├── GenericDrivetrain.cs
│ └── IDrivetrain.cs
│ ├── Program.cs
│ ├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
│ ├── Services
│ ├── ACC.cs
│ ├── Antistall.cs
│ ├── CameraHorizon.cs
│ ├── ControlChain.cs
│ ├── CruiseControl.cs
│ ├── Dashboard.cs
│ ├── DrivetrainCalibrator.cs
│ ├── EarlyClutch.cs
│ ├── Ets2PowerMeter.cs
│ ├── LaneAssistance.cs
│ ├── LaunchControl.cs
│ ├── Main.cs
│ ├── ProfileSwitcher.cs
│ ├── Speedlimiter.cs
│ ├── ThrottleMapping.cs
│ ├── TractionControl.cs
│ ├── Transmission.cs
│ ├── TransmissionCalibrator.cs
│ ├── VariableSpeedTransmission.cs
│ └── WheelTorqueLimiter.cs
│ ├── SimShift.csproj
│ ├── Simulation
│ └── SimulationEnvironment.cs
│ └── Utils
│ ├── IniReader.cs
│ ├── IniValueObject.cs
│ ├── NativeMethods.cs
│ └── Rect.cs
└── TestData
├── Air Resistance Test Scania R 730hp - gear 4.xlsx
├── Air Resistance Test Scania R 730hp.csv
├── Air Resistance Test Scania R 730hp.xlsx
├── Fuel Efficiency Tests.xlsx
├── Negative torque measured with 0rpm-per-s test - Scania R 730hp.xlsx
├── Power Scania R 730hp - Air compensated.csv
├── PowerCoastScaniaR-420hp.xlsx
├── PowerCoastScaniaR-730hp.xlsx
├── RPM vs LiterPerHour - Fixed Throttle.xlsx
└── Throttle vs LiterPerHour - Fixed RPM.xlsx
/.gitignore:
--------------------------------------------------------------------------------
1 | # Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
2 | [Bb]in/
3 | [Oo]bj/
4 |
5 | # mstest test results
6 | TestResults
7 |
8 | ## Ignore Visual Studio temporary files, build results, and
9 | ## files generated by popular Visual Studio add-ons.
10 |
11 | # User-specific files
12 | *.suo
13 | *.user
14 | *.sln.docstates
15 |
16 | # Build results
17 | [Dd]ebug/
18 | [Rr]elease/
19 | x64/
20 | *_i.c
21 | *_p.c
22 | *.ilk
23 | *.meta
24 | *.obj
25 | *.pch
26 | *.pdb
27 | *.pgc
28 | *.pgd
29 | *.rsp
30 | *.sbr
31 | *.tlb
32 | *.tli
33 | *.tlh
34 | *.tmp
35 | *.log
36 | *.vspscc
37 | *.vssscc
38 | .builds
39 |
40 | # Visual C++ cache files
41 | ipch/
42 | *.aps
43 | *.ncb
44 | *.opensdf
45 | *.sdf
46 |
47 | # Visual Studio profiler
48 | *.psess
49 | *.vsp
50 | *.vspx
51 |
52 | # Guidance Automation Toolkit
53 | *.gpState
54 |
55 | # ReSharper is a .NET coding add-in
56 | _ReSharper*
57 |
58 | # NCrunch
59 | *.ncrunch*
60 | .*crunch*.local.xml
61 |
62 | # Installshield output folder
63 | [Ee]xpress
64 |
65 | # DocProject is a documentation generator add-in
66 | DocProject/buildhelp/
67 | DocProject/Help/*.HxT
68 | DocProject/Help/*.HxC
69 | DocProject/Help/*.hhc
70 | DocProject/Help/*.hhk
71 | DocProject/Help/*.hhp
72 | DocProject/Help/Html2
73 | DocProject/Help/html
74 |
75 | # Click-Once directory
76 | publish
77 |
78 | # Publish Web Output
79 | *.Publish.xml
80 |
81 | # NuGet Packages Directory
82 | packages
83 |
84 | # Windows Azure Build Output
85 | csx
86 | *.build.csdef
87 |
88 | # Windows Store app package directory
89 | AppPackages/
90 |
91 | # Others
92 | [Bb]in
93 | [Oo]bj
94 | sql
95 | TestResults
96 | [Tt]est[Rr]esult*
97 | *.Cache
98 | ClientBin
99 | [Ss]tyle[Cc]op.*
100 | ~$*
101 | *.dbmdl
102 | Generated_Code #added for RIA/Silverlight projects
103 |
104 | # Backup & report files from converting an old project file to a newer
105 | # Visual Studio version. Backup files are not needed, because we have git ;-)
106 | _UpgradeReport_Files/
107 | Backup*/
108 | UpgradeLog*.XML
109 |
--------------------------------------------------------------------------------
/Binaries/AForge.Imaging.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Binaries/AForge.Imaging.dll
--------------------------------------------------------------------------------
/Binaries/AForge.Math.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Binaries/AForge.Math.dll
--------------------------------------------------------------------------------
/Binaries/AForge.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Binaries/AForge.dll
--------------------------------------------------------------------------------
/Binaries/FSharp.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Binaries/FSharp.Core.dll
--------------------------------------------------------------------------------
/Binaries/MathNet.Numerics.FSharp.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Binaries/MathNet.Numerics.FSharp.dll
--------------------------------------------------------------------------------
/Binaries/MathNet.Numerics.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Binaries/MathNet.Numerics.dll
--------------------------------------------------------------------------------
/Binaries/vJoyInterface.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Binaries/vJoyInterface.dll
--------------------------------------------------------------------------------
/Binaries/vJoyInterfaceWrap.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Binaries/vJoyInterfaceWrap.dll
--------------------------------------------------------------------------------
/ETS2 engine revving speed vs power.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/ETS2 engine revving speed vs power.xlsx
--------------------------------------------------------------------------------
/Icons/Active Blue/Antistall_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Active Blue/Antistall_active.png
--------------------------------------------------------------------------------
/Icons/Active Blue/CameraHorizon_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Active Blue/CameraHorizon_active.png
--------------------------------------------------------------------------------
/Icons/Active Blue/Cruisecontrol_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Active Blue/Cruisecontrol_active.png
--------------------------------------------------------------------------------
/Icons/Active Blue/DrivetrainCalibrator_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Active Blue/DrivetrainCalibrator_active.png
--------------------------------------------------------------------------------
/Icons/Active Blue/LaneAssistance_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Active Blue/LaneAssistance_active.png
--------------------------------------------------------------------------------
/Icons/Active Blue/LaunchControl_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Active Blue/LaunchControl_active.png
--------------------------------------------------------------------------------
/Icons/Active Blue/Powerlimiter_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Active Blue/Powerlimiter_active.png
--------------------------------------------------------------------------------
/Icons/Active Blue/Speedlimiter_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Active Blue/Speedlimiter_active.png
--------------------------------------------------------------------------------
/Icons/Active Blue/TractionControl_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Active Blue/TractionControl_active.png
--------------------------------------------------------------------------------
/Icons/Active Blue/Transmission_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Active Blue/Transmission_active.png
--------------------------------------------------------------------------------
/Icons/Active Blue/profileswitcher_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Active Blue/profileswitcher_active.png
--------------------------------------------------------------------------------
/Icons/Antistall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Antistall.png
--------------------------------------------------------------------------------
/Icons/Antistall_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Antistall_active.png
--------------------------------------------------------------------------------
/Icons/CameraHorizon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/CameraHorizon.png
--------------------------------------------------------------------------------
/Icons/CameraHorizon_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/CameraHorizon_active.png
--------------------------------------------------------------------------------
/Icons/Cruisecontrol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Cruisecontrol.png
--------------------------------------------------------------------------------
/Icons/Cruisecontrol_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Cruisecontrol_active.png
--------------------------------------------------------------------------------
/Icons/DrivetrainCalibrator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/DrivetrainCalibrator.png
--------------------------------------------------------------------------------
/Icons/DrivetrainCalibrator_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/DrivetrainCalibrator_active.png
--------------------------------------------------------------------------------
/Icons/LaneAssistance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/LaneAssistance.png
--------------------------------------------------------------------------------
/Icons/LaneAssistance_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/LaneAssistance_active.png
--------------------------------------------------------------------------------
/Icons/LaunchControl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/LaunchControl.png
--------------------------------------------------------------------------------
/Icons/LaunchControl_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/LaunchControl_active.png
--------------------------------------------------------------------------------
/Icons/Powerlimiter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Powerlimiter.png
--------------------------------------------------------------------------------
/Icons/Powerlimiter_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Powerlimiter_active.png
--------------------------------------------------------------------------------
/Icons/Speedlimiter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Speedlimiter.png
--------------------------------------------------------------------------------
/Icons/Speedlimiter_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Speedlimiter_active.png
--------------------------------------------------------------------------------
/Icons/TractionControl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/TractionControl.png
--------------------------------------------------------------------------------
/Icons/TractionControl_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/TractionControl_active.png
--------------------------------------------------------------------------------
/Icons/Transmission.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Transmission.png
--------------------------------------------------------------------------------
/Icons/Transmission_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/Transmission_active.png
--------------------------------------------------------------------------------
/Icons/profileswitcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/profileswitcher.png
--------------------------------------------------------------------------------
/Icons/profileswitcher_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/profileswitcher_active.png
--------------------------------------------------------------------------------
/Icons/raw/120px-Rocket_symbol.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/120px-Rocket_symbol.svg.png
--------------------------------------------------------------------------------
/Icons/raw/9LKA-icon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/9LKA-icon.jpg
--------------------------------------------------------------------------------
/Icons/raw/abs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/abs.png
--------------------------------------------------------------------------------
/Icons/raw/battery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/battery.png
--------------------------------------------------------------------------------
/Icons/raw/cameras-s.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/cameras-s.jpg
--------------------------------------------------------------------------------
/Icons/raw/clutch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/clutch.gif
--------------------------------------------------------------------------------
/Icons/raw/cog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/cog.png
--------------------------------------------------------------------------------
/Icons/raw/cruisecontrol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/cruisecontrol.png
--------------------------------------------------------------------------------
/Icons/raw/engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/engine.png
--------------------------------------------------------------------------------
/Icons/raw/esp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/esp.png
--------------------------------------------------------------------------------
/Icons/raw/fuel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/fuel.png
--------------------------------------------------------------------------------
/Icons/raw/gearbox.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/gearbox.jpg
--------------------------------------------------------------------------------
/Icons/raw/highbeam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/highbeam.png
--------------------------------------------------------------------------------
/Icons/raw/oilwarning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/oilwarning.png
--------------------------------------------------------------------------------
/Icons/raw/overdrive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/overdrive.png
--------------------------------------------------------------------------------
/Icons/raw/powertrain.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/powertrain.png
--------------------------------------------------------------------------------
/Icons/raw/profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/profile.png
--------------------------------------------------------------------------------
/Icons/raw/tractioncontrol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/tractioncontrol.png
--------------------------------------------------------------------------------
/Icons/raw/turn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/turn.png
--------------------------------------------------------------------------------
/Icons/raw/warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/warning.png
--------------------------------------------------------------------------------
/Icons/raw/watertemp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Icons/raw/watertemp.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Hans
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | SimShift
2 | ========
3 |
4 | [](https://scan.coverity.com/projects/nlhans-simshift)
5 |
6 | Driver utilities for various open roaming simulators, like ETS2.
7 |
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Controls.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Controls.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.DebuggerVisualizers (2010).dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.DebuggerVisualizers (2010).dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Fuzzy.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Fuzzy.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Genetic.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Genetic.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Imaging.Formats.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Imaging.Formats.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Imaging.IPPrototyper.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Imaging.IPPrototyper.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Imaging.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Imaging.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.MachineLearning.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.MachineLearning.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Math.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Math.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Neuro.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Neuro.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Robotics.Lego.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Robotics.Lego.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Robotics.Surveyor.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Robotics.Surveyor.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Robotics.TeRK.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Robotics.TeRK.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Video.DirectShow.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Video.DirectShow.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Video.FFMPEG.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Video.FFMPEG.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Video.Kinect.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Video.Kinect.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Video.VFW.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Video.VFW.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Video.Ximea.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Video.Ximea.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Video.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Video.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.Vision.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.Vision.dll
--------------------------------------------------------------------------------
/Resources/AForge/AForge.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/AForge.dll
--------------------------------------------------------------------------------
/Resources/AForge/IPPrototyper.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AForge/IPPrototyper.exe
--------------------------------------------------------------------------------
/Resources/AdaptiveCruiseControl.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AdaptiveCruiseControl.pdn
--------------------------------------------------------------------------------
/Resources/AdaptiveCruiseControl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AdaptiveCruiseControl.png
--------------------------------------------------------------------------------
/Resources/AdaptiveCruiseControlOff.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AdaptiveCruiseControlOff.pdn
--------------------------------------------------------------------------------
/Resources/AdaptiveCruiseControlOff.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AdaptiveCruiseControlOff.png
--------------------------------------------------------------------------------
/Resources/AdaptiveCruiseControlOn.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AdaptiveCruiseControlOn.pdn
--------------------------------------------------------------------------------
/Resources/AdaptiveCruiseControlOn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/AdaptiveCruiseControlOn.png
--------------------------------------------------------------------------------
/Resources/Alert.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/Alert.wav
--------------------------------------------------------------------------------
/Resources/CruiseControlIcon.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/CruiseControlIcon.pdn
--------------------------------------------------------------------------------
/Resources/CruiseControlIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/CruiseControlIcon.png
--------------------------------------------------------------------------------
/Resources/CruiseOff.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/CruiseOff.pdn
--------------------------------------------------------------------------------
/Resources/CruiseOff.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/CruiseOff.png
--------------------------------------------------------------------------------
/Resources/CruiseOn.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/CruiseOn.pdn
--------------------------------------------------------------------------------
/Resources/CruiseOn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/CruiseOn.png
--------------------------------------------------------------------------------
/Resources/CuteCar.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/CuteCar.pdn
--------------------------------------------------------------------------------
/Resources/LUT1.19-cities.csv:
--------------------------------------------------------------------------------
1 | 0000028A215FDC9F,IJmuiden
2 | 00000000001893A0,Pecs
3 | 000001D913F65717,Salzburg
4 | 000A6C7D46175459,Strasbourg
5 | 00BB06C733A2004A,Gdansk
6 | 0000000000149823,Koln
7 | 0006F4A3A90ED7A0,Bratislava
8 | 0000547ADA08D70F,Osnabruck
9 | 00000333CD9F84E6,Budapest
10 | 0000000069DCE573,Kassel
11 | 000000111C4D7549,Munchen
12 | 000001D8C85BE9C2,Nurnberg
13 | 0000000001F02A80,Lille
14 | 000002F505E877A4,Hannover
15 | 0000547ADA17E87B,Innsbruck
16 | 00004638F3EE339D,Magdeburg
17 | 000000000012C313,Kiel
18 | 0000000C730CED40,Hamburg
19 | 0000000003AB3704,Paris
20 | 000000081461CB02,Venezia
21 | 0000000072CBABD0,Poznan
22 | 0000000037048482,Verona
23 | 000079A0EB7A2894,Frankfurt am Main
24 | 0000000091442C1F,Erfurt
25 | 00000272501CF759,Mannheim
26 | 00007992EC0624BD,Stuttgart
27 | 0000000C49365A0C,Leipzig
28 | 000000008B5C2A9F,Calais
29 | 0000000073C858F6,Berlin
30 | 0000000EF962B866,Rostock
31 | 000001991279EF77,Katowice
32 | 000000004AC04CB6,Praha
33 | 00095320032125EA,Felixstowe
34 | 000000000388252C,Dover
35 | 000000007480778C,London
36 | 000000000012EC54,Hull
37 | 000000000310FBC8,Dijon
38 | 0000000003AE5E3A,Reims
39 | 00005C22415CF2C9,Amsterdam
40 | 0000000001EBD34C,Liege
41 | 0000608324C0CB6D,Groningen
42 | 000000004ADEB873,Geneve
43 | 0000000FB6CA80F8,Brussel
44 | 0000000056B0BFC6,Zurich
45 | 0000000CDE40928C,Harwich
46 | 000000084EB6D3AF,Ostrava
47 | 00000000001EAEA8,Linz
48 | 0000000000157A2C,Brno
49 | 00003D1F89C4786B,Cambridge
50 | 00120DE301336CAD,Klagenfurt am Worthersee
51 | 00000018C5A8475D,Grimsby
52 | 0000000079171FA9,Milano
53 | 000000009F075671,Krakow
54 | 000000007349A3A8,Bremen
55 | 0000000066DCB721,Gdansk
56 | 0000000001F21FC1,Gdynia
57 | 000001865C58BF14,Dortmund
58 | 000000111BDB634A,Dresden
59 | 000000175919CD85,Wroclaw
60 | 0000028CEA0882B9,Szczecin
61 | 000000179AA64309,Glasgow
62 | 00000000001E66A5,Graz
63 | 00003DB020D710FE,Newcastle-upon-Tyne
64 | 0000028A25771E4F,Aberdeen
65 | 0000000000146FCF,Wien
66 | 00000000440A4B19,Szeged
67 | 0000012E831211C2,Banska Bystrica
68 | 000039B121A629C5,Sheffield
69 | 00000000001E7724,Lodz
70 | 0000013C639854CB,Warszawa
71 | 000DAD78B597BA26,Birmingham
72 | 000000117C534651,Olsztyn
73 | 000055B9DA96368A,Bialystok
74 | 0010ADE2AE7AF591,Manchester
75 | 000000000014B876,Bern
76 | 0000019F8F25763F,Carlisle
77 | 0000028A1C24CE28,Debrecen
78 | 00000000791DF52C,Torino
79 | 0000000073C80120,Lublin
80 | 000000004885AB57,Kosice
81 | 0000490676D48C6F,Edinburgh
82 | 000059AA96CDE9D0,Liverpool
83 | 00000000001ECFE9,Metz
84 | 000000000014AA8C,Lyon
85 | 000001F5202B1762,Plymouth
86 | 0000000B856D469F,Cardiff
87 | 0000000800A6347F,Swansea
88 | 000A6C7D455BE950,Luxembourg
89 | 0009D59288494D64,Dusseldorf
90 | 000001D913F06CAC,Duisburg
91 | 0000799CE1D04A71,Europoort
92 | 00005C22415CF8CA,Rotterdam
--------------------------------------------------------------------------------
/Resources/LUT1.19-companies.csv:
--------------------------------------------------------------------------------
1 | prefab.41,-50,65,55,-76
2 | prefab.200,-52,65,54,-76
3 | prefab.67,-60,0,89,-150
4 | prefab.249,-10,0,160,-165
5 | prefab.68,-32,23,42,-48
6 | prefab.261,-42,62,57,-57
7 | prefab.262,-42,62,57,-57
8 | prefab.282,-35,39,84,-50
9 | prefab.283,-35,50,35,-50
10 | prefab.44,-85,62,82,-72
11 | prefab.252,-24,42,27,-23
12 | prefab.330,-23,42,27,-23
13 | prefab.251,-29,9,59,-123
14 | prefab.13,-400,112,146,-475
15 | prefab.203,-85,0,100,-100
16 | prefab.254,-53,42,32,-16
17 | prefab.31,-101,23,31,-60
18 | prefab.34,-113,67,27,-90
19 | prefab.36,-102,67,30,-90
20 | prefab.32,-54,40,31,-16
21 | prefab.33,-17,96,39,-8
22 |
--------------------------------------------------------------------------------
/Resources/LUT1.19-roads.csv:
--------------------------------------------------------------------------------
1 | 0031F718,road.look0
2 | 0051C828,road.look1
3 | 00719938,road.look2
4 | 00916A48,road.look3
5 | 00B13B58,road.look4
6 | 00D10C68,road.look5
7 | 00F0DD78,road.look6
8 | 0110AE88,road.look7
9 | 01307F98,road.look8
10 | 015050A8,road.look9
11 | 050AD088,road.look10
12 | 09C3D8E8,road.look11
13 | 0E7CE148,road.look12
14 | 1335E9A8,road.look13
15 | 17EEF208,road.look14
16 | 1CA7FA68,road.look15
17 | 216102C8,road.look16
18 | 261A0B28,road.look17
19 | 2AD31388,road.look18
20 | 2F8C1BE8,road.look19
21 | 09E3A9F8,road.look21
22 | 0E9CB258,road.look22
23 | 1355BAB8,road.look23
24 | 180EC318,road.look24
25 | 1CC7CB78,road.look25
26 | 2180D3D8,road.look26
27 | 2639DC38,road.look27
28 | 2AF2E498,road.look28
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/0.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/1.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/10.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/11.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/12.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/13.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/14.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/15.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/16.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/17.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/18.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/19.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/2.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/20.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/21.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/22.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/23.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/3.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/4.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/5.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/6.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/7.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/8.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/9.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/fel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/fel.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/geel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/geel.png
--------------------------------------------------------------------------------
/Resources/LaneAssist Data/lamp_donker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/LaneAssist Data/lamp_donker.png
--------------------------------------------------------------------------------
/Resources/Mem/TDU2 Camera.CT:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 0
6 | "No description"
7 | 80000008
8 | 4 Bytes
9 | 17553910
10 |
11 |
12 | 1
13 | "CurrentView"
14 | 1
15 | 80000008
16 | 4 Bytes
17 | TestDrive2.exe+D95BF0
18 |
19 |
20 | 2
21 | "CurrentView"
22 | 1
23 | 80000008
24 | 4 Bytes
25 | TestDrive2.exe+E2C9E8
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/Resources/Mem/TDU2.CT:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 0
6 | "Car ID"
7 | 80000008
8 | 4 Bytes
9 | TestDrive2.exe+B907C4
10 |
11 |
12 | 1
13 | "Car ID"
14 | 80000008
15 | 4 Bytes
16 | TestDrive2.exe+C35224
17 |
18 |
19 | 2
20 | "Car ID"
21 | 80000008
22 | 4 Bytes
23 | TestDrive2.exe+D95864
24 |
25 |
26 | 3
27 | "Gear"
28 | 80000008
29 | 4 Bytes
30 | TestDrive2.exe+C2DAD0
31 |
32 |
33 | 4
34 | "Spd"
35 | 80000008
36 | Float
37 | TestDrive2.exe+C2DB24
38 |
39 |
40 | 5
41 | "RPM"
42 | 80000008
43 | Float
44 | TestDrive2.exe+C2DB18
45 |
46 |
47 | 6
48 | "Throttle"
49 | 80000008
50 | Float
51 | TestDrive2.exe+C2DB00
52 |
53 |
54 | 7
55 | "POWER"
56 | 80000008
57 | Float
58 | 0102DB1C
59 |
60 |
61 | 8
62 | "FF60FF VV Upgrade VW"
63 | 1
64 | 80000008
65 | Array of byte
66 | 3
67 | 1DB81558
68 |
69 |
70 | 9
71 | "Leetz Upgrades"
72 | 1
73 | 80000008
74 | Array of byte
75 | 3
76 | 1DB81558
77 |
78 |
79 | 10
80 | "No description"
81 | 1
82 | 80000008
83 | 4 Bytes
84 | 1DB8111C
85 |
86 |
87 | 11
88 | "No description"
89 | 80000008
90 | Float
91 | 1DB81554
92 |
93 |
94 | 12
95 | "Gear Count"
96 | 80000008
97 | 4 Bytes
98 | TestDrive2.exe+C98840
99 |
100 |
101 | 14
102 | "Car model"
103 | 80000008
104 | String
105 | 32
106 | 0
107 | 1
108 | TestDrive2.exe+C2DC30
109 |
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/Resources/Needle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/Needle.png
--------------------------------------------------------------------------------
/Resources/Needle_150px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/Needle_150px.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Background.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Background2.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Background2.pdn
--------------------------------------------------------------------------------
/Resources/TeslaDash/Background2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Background2.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Background2a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Background2a.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Background3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Background3.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Efficiency.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Efficiency.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Empty.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Energy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Energy.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Lade-Balken.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Lade-Balken.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Media.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Media.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Music.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Navi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Navi.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Numbers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Numbers.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Range.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Range.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Street.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Street.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Tacho.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Tacho.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Tacho_Mitte.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Tacho_Mitte.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Tile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Tile.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/Trips.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/Trips.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/bg.png
--------------------------------------------------------------------------------
/Resources/TeslaDash/call.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/TeslaDash/call.png
--------------------------------------------------------------------------------
/Resources/tractioncontrol.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlhans/SimShift/b3493e72e89836ed9987cbabd9cddac78f3fef3a/Resources/tractioncontrol.wav
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/ByteSearchMethods.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace SimShift.MapTool
4 | {
5 | public static class ByteSearchMethods
6 | {
7 | public static unsafe List IndexesOf(this byte[] Haystack, byte[] Needle)
8 | {
9 | List Indexes = new List();
10 | fixed (byte* H = Haystack)
11 | fixed (byte* N = Needle)
12 | {
13 | int i = 0;
14 | for (byte* hNext = H, hEnd = H + Haystack.Length; hNext < hEnd; i++, hNext++)
15 | {
16 | bool Found = true;
17 | for (byte* hInc = hNext, nInc = N, nEnd = N + Needle.LongLength;
18 | Found && nInc < nEnd;
19 | Found = *nInc == *hInc, nInc++, hInc++) ;
20 | if (Found) Indexes.Add(i);
21 | }
22 | return Indexes;
23 | }
24 | }
25 |
26 | public static unsafe List IndexesOfUlong(this byte[] Haystack, byte[] Needle)
27 | {
28 | List Indexes = new List();
29 | fixed (byte* H = Haystack)
30 | fixed (byte* N = Needle)
31 | {
32 | int i = 0;
33 | for (byte* hNext = H, hEnd = H + Haystack.Length; hNext < hEnd; i++, hNext++)
34 | {
35 | if (*((ulong*) hNext) == *((ulong*) N)) Indexes.Add(i);
36 | }
37 | return Indexes;
38 | }
39 | }
40 | }
41 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Ets2Company.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 |
3 | namespace SimShift.MapTool
4 | {
5 | public class Ets2Company
6 | {
7 | public Ets2Mapper Mapper { get; private set; }
8 |
9 | public Ets2Prefab Prefab;
10 | public string PrefabID { get; private set; }
11 |
12 | public int MinX;
13 | public int MinY;
14 | public int MaxX;
15 | public int MaxY;
16 |
17 | public Ets2Company(string line, Ets2Mapper mapper)
18 | {
19 | Mapper = mapper;
20 |
21 | var d = line.Split(",".ToCharArray());
22 |
23 | PrefabID = d[0];
24 | int.TryParse(d[1], out MinX);
25 | int.TryParse(d[2], out MinY);
26 | int.TryParse(d[3], out MaxX);
27 | int.TryParse(d[4], out MaxY);
28 |
29 | // find prefab obj
30 | Prefab = mapper.PrefabsLookup.FirstOrDefault(x => x.IDSII == PrefabID);
31 |
32 | if (Prefab!=null)
33 | Prefab.Company = this;
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Ets2CurveHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SimShift.MapTool
4 | {
5 | public class Ets2CurveHelper
6 | {
7 | public static double Hermite(float s, float P1, float P2, float T1, float T2)
8 | {
9 | double h1 = 2 * Math.Pow(s, 3) - 3 * Math.Pow(s, 2) + 1; // calculate basis function 1
10 | double h2 = -2 * Math.Pow(s, 3) + 3 * Math.Pow(s, 2); // calculate basis function 2
11 | double h3 = Math.Pow(s, 3) - 2 * Math.Pow(s, 2) + s; // calculate basis function 3
12 | double h4 = Math.Pow(s, 3) - Math.Pow(s, 2); // calculate basis function 4
13 |
14 |
15 | return h1 * P1 + // multiply and sum all funtions
16 | h2 * P2 + // together to build the interpolated
17 | h3 * T1 + // point along the curve.
18 | h4 * T2;
19 |
20 | }
21 |
22 | public static double HermiteTangent(float s, float P1, float P2, float T1, float T2)
23 | {
24 | double h1 = 6 * Math.Pow(s, 2) - 6*s; // calculate basis function 1
25 | double h2 = -6 * Math.Pow(s, 2) + 6*s; // calculate basis function 2
26 | double h3 = 3*Math.Pow(s, 2) - 4*s + 1; // calculate basis function 3
27 | double h4 = 3*Math.Pow(s, 2) - 2*s; // calculate basis function 4
28 |
29 |
30 | return h1 * P1 + // multiply and sum all funtions
31 | h2 * P2 + // together to build the interpolated
32 | h3 * T1 + // point along the curve.
33 | h4 * T2;
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Ets2ItemSearchRequest.cs:
--------------------------------------------------------------------------------
1 | namespace SimShift.MapTool
2 | {
3 | public class Ets2ItemSearchRequest
4 | {
5 | public Ets2Node Node;
6 | public ulong ItemUID;
7 | public bool IsForward;
8 | public bool IsBackward;
9 | }
10 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Ets2ItemType.cs:
--------------------------------------------------------------------------------
1 | namespace SimShift.MapTool
2 | {
3 | public enum Ets2ItemType
4 | {
5 | Building = 0x01,
6 | Road = 0x02,
7 | Prefab = 0x03,
8 | Model = 0x04,
9 | Company = 0x05,
10 | Service = 0x06,
11 | CutPlane = 0x07,
12 | Dunno = 0x08,
13 | City = 0x0B,
14 | MapOverlay = 0x11,
15 | Ferry = 0x12,
16 | Garage = 0x15,
17 | Trigger = 0x21,
18 | FuelPump = 0x22,
19 | Sign = 0x23,
20 | BusStop = 0x24,
21 | TrafficRule = 0x25,
22 | }
23 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Ets2NavigationSegmentType.cs:
--------------------------------------------------------------------------------
1 | namespace SimShift.MapTool
2 | {
3 | public enum Ets2NavigationSegmentType
4 | {
5 | Prefab,
6 | Road
7 | }
8 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Ets2Node.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using System.Threading;
5 | using System.Threading.Tasks;
6 |
7 | namespace SimShift.MapTool
8 | {
9 | public class Ets2Node
10 | {
11 | public ulong NodeUID { get; private set; }
12 |
13 | public Ets2Item ForwardItem { get; set; }
14 | public ulong ForwardItemUID { get; private set; }
15 | public Ets2Item BackwardItem { get; set; }
16 | public ulong BackwardItemUID { get; private set; }
17 |
18 | public float X;
19 | public float Y;
20 | public float Z;
21 |
22 | public float Yaw { get; private set; }
23 | public float Pitch { get; private set; }
24 | public float Roll { get; private set; }
25 |
26 | public Ets2Point Point
27 | {
28 | get { return new Ets2Point(X, Y, Z, Yaw); }
29 | }
30 |
31 | public Ets2Node(byte[] stream, int position)
32 | {
33 | NodeUID = BitConverter.ToUInt64(stream, position);
34 | ForwardItemUID = BitConverter.ToUInt64(stream, position + 44);
35 | BackwardItemUID = BitConverter.ToUInt64(stream, position + 44 - 8);
36 |
37 | X = BitConverter.ToInt32(stream, position + 8) / 256.0f;
38 | Y = BitConverter.ToInt32(stream, position + 12) / 256.0f;
39 | Z = BitConverter.ToInt32(stream, position + 16) / 256.0f;
40 |
41 | var rX = BitConverter.ToSingle(stream, position + 20);
42 | var rY = BitConverter.ToSingle(stream, position + 24);
43 | var rZ = BitConverter.ToSingle(stream, position + 28);
44 |
45 | Yaw = (float) Math.PI-(float)Math.Atan2(rZ, rX);
46 | Yaw = Yaw%(float)Math.PI*2;
47 | // X,Y,Z is position of NodeUID
48 | // ForwardItemUID = Forward item
49 | // BackwardItemUID = Backward item
50 |
51 | //Console.WriteLine(position.ToString("X4") + " | " + NodeUID.ToString("X16") + " " + ForwardItemUID.ToString("X16") + " " + BackwardItemUID.ToString("X16") + " @ " + string.Format("{0} {1} {2} {3} {4} {5} {6} {7}de", X, Y, Z, rX,rY,rZ,Yaw,Yaw/Math.PI*180));
52 |
53 | Yaw = (float)Math.PI*0.5f - Yaw;
54 | }
55 |
56 | public override string ToString()
57 | {
58 | return "Node #" + NodeUID.ToString("X16") + " ("+X+","+Y+","+Z+")";
59 | }
60 |
61 | public IEnumerable GetItems()
62 | {
63 | if (ForwardItem != null)
64 | yield return ForwardItem;
65 | if (BackwardItem != null)
66 | yield return BackwardItem;
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Ets2Point.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 |
4 | namespace SimShift.MapTool
5 | {
6 | public class Ets2Point
7 | {
8 | public float X;
9 | public float Y;
10 | public float Z;
11 | public float Heading;
12 |
13 | public Ets2Point(float x, float y, float z, float heading)
14 | {
15 | X = x;
16 | Y = y;
17 | Z = z;
18 | Heading = heading;
19 | }
20 |
21 | public Ets2Point(PointF fr)
22 | {
23 | X = fr.X;
24 | Y = 0;
25 | Z = fr.Y;
26 | Heading = 0;
27 | }
28 |
29 | public PointF ToPoint()
30 | {
31 | return new PointF(X, Z);
32 | }
33 |
34 | public override string ToString()
35 | {
36 | return "P " + Math.Round(X, 2) + "," + Math.Round(Z, 2) + " / " + Math.Round(Heading/Math.PI*180,1) + "deg (" +
37 | Math.Round(Heading, 3) + ")";
38 | }
39 |
40 | public bool CloseTo(Ets2Point pt)
41 | {
42 | return DistanceTo(pt) <= 2f;
43 | }
44 |
45 | public float DistanceTo(Ets2Point pt)
46 | {
47 | if (pt == null) return float.MaxValue;
48 | var dx = pt.X - X;
49 | var dy = pt.Z - Z;
50 |
51 | var dst = (float) Math.Sqrt(dx * dx + dy * dy);
52 |
53 | return dst;
54 | }
55 | }
56 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Ets2PrefabCurve.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace SimShift.MapTool
4 | {
5 | public class Ets2PrefabCurve
6 | {
7 | public float StartX;
8 | public float StartY;
9 | public float StartZ;
10 |
11 | public float StartRotationX;
12 | public float StartRotationY;
13 | public float StartRotationZ;
14 |
15 | public float EndX;
16 | public float EndY;
17 | public float EndZ;
18 |
19 | public float EndRotationX;
20 | public float EndRotationY;
21 | public float EndRotationZ;
22 |
23 | public int[] Next;
24 | public int[] Prev;
25 |
26 | public float Length;
27 |
28 | public double StartYaw { get; set; }
29 | public double EndYaw { get; set; }
30 |
31 | public List NextCurve { get; set; }
32 | public List PrevCurve { get; set; }
33 | public int Index { get; set; }
34 | }
35 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Ets2PrefabNode.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace SimShift.MapTool
4 | {
5 | public class Ets2PrefabNode
6 | {
7 | public float X;
8 | public float Y;
9 | public float Z;
10 |
11 | public float RotationX;
12 | public float RotationY;
13 | public float RotationZ;
14 |
15 | public List InputCurve;
16 | public List OutputCurve;
17 |
18 | public double Yaw { get; set; }
19 | public int Node { get; set; }
20 | }
21 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Ets2PrefabRoute.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 |
4 | namespace SimShift.MapTool
5 | {
6 | public class Ets2PrefabRoute
7 | {
8 | public IndicatorSignal Indicator;
9 |
10 | public List Route { get; private set; }
11 |
12 | public int Start { get { return Route.FirstOrDefault().Index; } }
13 | public int End { get { return Route.LastOrDefault().Index; } }
14 |
15 | public Ets2PrefabNode Entry { get; private set; }
16 | public Ets2PrefabNode Exit { get; private set; }
17 |
18 | public Ets2PrefabRoute(List route, Ets2PrefabNode entry, Ets2PrefabNode exit)
19 | {
20 | Route = route;
21 |
22 | Entry = entry;
23 | Exit = exit;
24 |
25 | // TODO: Interpret indicator signal
26 |
27 | }
28 |
29 | public override string ToString()
30 | {
31 | return "Prefab route " + Start + " to " + End;
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Ets2RoadLook.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 |
4 | namespace SimShift.MapTool
5 | {
6 | public class Ets2RoadLook
7 | {
8 | public bool IsHighway { get; private set; }
9 | public bool IsLocal { get; private set; }
10 | public bool IsExpress { get; private set; }
11 | public string LookID { get; private set; }
12 | private Ets2Mapper Mapper;
13 |
14 | public float Offset;
15 | public float SizeLeft;
16 | public float SizeRight;
17 | public float ShoulderLeft;
18 | public float ShoulderRight;
19 |
20 | public int LanesLeft;
21 | public int LanesRight;
22 |
23 | public Ets2RoadLook(string look, Ets2Mapper mapper)
24 | {
25 | LookID = look;
26 | Mapper = mapper;
27 |
28 | var roadLookData = mapper.LUTFolder + "-roadlook.sii";
29 | var fileData = File.ReadAllLines(roadLookData);
30 |
31 | var found = false;
32 | foreach (var k in fileData)
33 | {
34 | if (!found)
35 | {
36 | if (k.StartsWith("road_look") && k.Contains(LookID))
37 | {
38 | found = true;
39 | }
40 | }
41 | else
42 | {
43 | //value:
44 | if (k.Contains(":"))
45 | {
46 | var key = k;
47 | var data = key.Substring(key.IndexOf(":")+1).Trim();
48 | key = key.Substring(0, key.IndexOf(":")).Trim();
49 |
50 | switch (key)
51 | {
52 | case "road_size_left":
53 | float.TryParse(data, out SizeLeft);
54 | break;
55 |
56 | case "road_size_right":
57 | float.TryParse(data, out SizeRight);
58 | break;
59 |
60 | case "shoulder_size_right":
61 | float.TryParse(data, out ShoulderLeft);
62 | break;
63 |
64 | case "shoulder_size_left":
65 | float.TryParse(data, out ShoulderRight);
66 | break;
67 |
68 | case "road_offset":
69 | float.TryParse(data, out Offset);
70 | break;
71 | case "lanes_left[]":
72 | LanesLeft++;
73 | IsLocal = (data == "traffic_lane.road.local");
74 | IsExpress = (data == "traffic_lane.road.expressway");
75 | IsHighway = (data == "traffic_lane.road.motorway");
76 |
77 | break;
78 |
79 | case "lanes_right[]":
80 | LanesRight++;
81 | break;
82 | }
83 | }
84 | if (k.Trim() == "}")
85 | break;
86 | }
87 | }
88 | }
89 | }
90 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/IndicatorSignal.cs:
--------------------------------------------------------------------------------
1 | namespace SimShift.MapTool
2 | {
3 | public enum IndicatorSignal
4 | {
5 | None,
6 | Left,
7 | Right
8 | }
9 | }
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("SimShift.Map")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Microsoft")]
12 | [assembly: AssemblyProduct("SimShift.Map")]
13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("3be4a8d8-c6cd-4f7b-9d70-a2ea2cd18b4d")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/SimShift.MapTool.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {BFC2FB74-143A-4278-B7F3-943F60803345}
8 | Library
9 | Properties
10 | SimShift.Map
11 | SimShift.Map
12 | v4.0
13 | 512
14 | Client
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 | true
25 |
26 |
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 | true
34 |
35 |
36 |
37 | Z:\Software\SimShift\Binaries\MathNet.Numerics.dll
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
81 |
--------------------------------------------------------------------------------
/SimShift/SimShift.Map/Splines/ArrayUtil.cs:
--------------------------------------------------------------------------------
1 | using System.Text;
2 |
3 | namespace SimShift.Map.Splines
4 | {
5 | ///
6 | /// Utility methods for arrays.
7 | ///
8 | public static class ArrayUtil
9 | {
10 | ///
11 | /// Create a string to display the array values.
12 | ///
13 | /// The array
14 | /// Optional. A string to use to format each value. Must contain the colon, so something like ':0.000'
15 | public static string ToString(T[] array, string format = "")
16 | {
17 | var s = new StringBuilder();
18 | string formatString = "{0" + format + "}";
19 |
20 | for (int i = 0; i < array.Length; i++)
21 | {
22 | if (i < array.Length - 1)
23 | {
24 | s.AppendFormat(formatString + ", ", array[i]);
25 | }
26 | else
27 | {
28 | s.AppendFormat(formatString, array[i]);
29 | }
30 | }
31 |
32 | return s.ToString();
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/SimShift/SimShift.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2012
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimShift", "SimShift\SimShift.csproj", "{4B79AB62-2794-43A8-9710-32731CDAFA72}"
5 | EndProject
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimShift.MapTool", "SimShift.Map\SimShift.MapTool.csproj", "{BFC2FB74-143A-4278-B7F3-943F60803345}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Debug|Mixed Platforms = Debug|Mixed Platforms
12 | Debug|x86 = Debug|x86
13 | Release|Any CPU = Release|Any CPU
14 | Release|Mixed Platforms = Release|Mixed Platforms
15 | Release|x86 = Release|x86
16 | EndGlobalSection
17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 | {4B79AB62-2794-43A8-9710-32731CDAFA72}.Debug|Any CPU.ActiveCfg = Debug|x86
19 | {4B79AB62-2794-43A8-9710-32731CDAFA72}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
20 | {4B79AB62-2794-43A8-9710-32731CDAFA72}.Debug|Mixed Platforms.Build.0 = Debug|x86
21 | {4B79AB62-2794-43A8-9710-32731CDAFA72}.Debug|x86.ActiveCfg = Debug|x86
22 | {4B79AB62-2794-43A8-9710-32731CDAFA72}.Debug|x86.Build.0 = Debug|x86
23 | {4B79AB62-2794-43A8-9710-32731CDAFA72}.Release|Any CPU.ActiveCfg = Release|x86
24 | {4B79AB62-2794-43A8-9710-32731CDAFA72}.Release|Mixed Platforms.ActiveCfg = Release|x86
25 | {4B79AB62-2794-43A8-9710-32731CDAFA72}.Release|Mixed Platforms.Build.0 = Release|x86
26 | {4B79AB62-2794-43A8-9710-32731CDAFA72}.Release|x86.ActiveCfg = Release|x86
27 | {4B79AB62-2794-43A8-9710-32731CDAFA72}.Release|x86.Build.0 = Release|x86
28 | {BFC2FB74-143A-4278-B7F3-943F60803345}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
29 | {BFC2FB74-143A-4278-B7F3-943F60803345}.Debug|Any CPU.Build.0 = Debug|Any CPU
30 | {BFC2FB74-143A-4278-B7F3-943F60803345}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
31 | {BFC2FB74-143A-4278-B7F3-943F60803345}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
32 | {BFC2FB74-143A-4278-B7F3-943F60803345}.Debug|x86.ActiveCfg = Debug|Any CPU
33 | {BFC2FB74-143A-4278-B7F3-943F60803345}.Release|Any CPU.ActiveCfg = Release|Any CPU
34 | {BFC2FB74-143A-4278-B7F3-943F60803345}.Release|Any CPU.Build.0 = Release|Any CPU
35 | {BFC2FB74-143A-4278-B7F3-943F60803345}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
36 | {BFC2FB74-143A-4278-B7F3-943F60803345}.Release|Mixed Platforms.Build.0 = Release|Any CPU
37 | {BFC2FB74-143A-4278-B7F3-943F60803345}.Release|x86.ActiveCfg = Release|Any CPU
38 | EndGlobalSection
39 | GlobalSection(SolutionProperties) = preSolution
40 | HideSolutionNode = FALSE
41 | EndGlobalSection
42 | GlobalSection(Performance) = preSolution
43 | HasPerformanceSessions = true
44 | EndGlobalSection
45 | EndGlobal
46 |
--------------------------------------------------------------------------------
/SimShift/SimShift/Controllers/JoystickInputDevice.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using Microsoft.Win32;
5 |
6 | namespace SimShift.Controllers
7 | {
8 | public class JoystickInputDevice
9 | {
10 | private const string RegKeyAxisData = @"SYSTEM\ControlSet001\Control\MediaProperties\PrivateProperties\Joystick\OEM";
11 | private const string RegKeyPlace = @"System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\";
12 | private const string RegReferencePlace = @"System\CurrentControlSet\Control\MediaResources\Joystick\DINPUT.DLL\CurrentJoystickSettings";
13 |
14 | public int id;
15 | public JOYCAPS data;
16 |
17 | public Dictionary AxisNames = new Dictionary();
18 |
19 | public string Name { get; private set; }
20 |
21 | public JoystickInputDevice(JOYCAPS captured, int device)
22 | {
23 | id = device;
24 |
25 | // Copy all members.
26 | data = new JOYCAPS();
27 | data.szPname = captured.szPname;
28 | data.wMid = captured.wMid;
29 | data.wPid = captured.wPid;
30 | data.wXmin = captured.wXmin;
31 | data.wXmax = captured.wXmax;
32 | data.wYmin = captured.wYmin;
33 | data.wYmax = captured.wYmax;
34 | data.wZmin = captured.wZmin;
35 | data.wZmax = captured.wZmax;
36 | data.wNumButtons = captured.wNumButtons;
37 | data.wPeriodMin = captured.wPeriodMin;
38 | data.wPeriodMax = captured.wPeriodMax;
39 |
40 | // Search register.
41 | RegistryKey rf = Registry.CurrentUser.OpenSubKey(RegReferencePlace);
42 | string USBDevice = Convert.ToString(rf.GetValue("Joystick" + (1 + id).ToString() + "OEMName"));
43 | RegistryKey usb = Registry.CurrentUser.OpenSubKey(RegKeyPlace);
44 | usb = usb.OpenSubKey(USBDevice);
45 | Name = (string)usb.GetValue("OEMName");
46 |
47 | // Get axis names
48 | RegistryKey axisMaster = Registry.LocalMachine.OpenSubKey(RegKeyAxisData).OpenSubKey(USBDevice);
49 |
50 | AxisNames = new Dictionary();
51 | if (axisMaster != null)
52 | {
53 | axisMaster = axisMaster.OpenSubKey("Axes");
54 | if (axisMaster != null)
55 | {
56 | foreach (string name in axisMaster.GetSubKeyNames())
57 | {
58 | RegistryKey axis = axisMaster.OpenSubKey(name);
59 | AxisNames.Add(Convert.ToInt32(name), (string)axis.GetValue(""));
60 | axis.Close();
61 | }
62 | axisMaster.Close();
63 | }
64 | }
65 | rf.Close();
66 | usb.Close();
67 | }
68 |
69 | public static IEnumerable Search(string name)
70 | {
71 | var results1 = Search();
72 | var results2 = results1.Where(dev => dev.Name.ToLower().Contains(name.ToLower()));
73 |
74 | return results2;
75 | }
76 |
77 |
78 | /******************* STATIC ******************/
79 | static int deviceNumber = 0;
80 | public static IEnumerable Search()
81 | {
82 | List Joysticks = new List();
83 |
84 | JOYCAPS CapturedJoysticks;
85 | uint devs = JoystickMethods.joyGetNumDevs();
86 | for (deviceNumber = 0; deviceNumber < devs; deviceNumber++)
87 | {
88 | UInt32 res = JoystickMethods.joyGetDevCaps(deviceNumber, out CapturedJoysticks, JOYCAPS.Size);
89 | if (res != 165)
90 | {
91 | Joysticks.Add(new JoystickInputDevice(CapturedJoysticks, deviceNumber));
92 | }
93 | }
94 |
95 | return Joysticks;
96 | }
97 |
98 | }
99 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Controllers/JoystickMethods.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 |
4 | namespace SimShift.Controllers
5 | {
6 | public static class JoystickMethods
7 | {
8 | [DllImport("Winmm.dll")]
9 | public static extern UInt32 joyGetDevCaps(Int32 uJoyID, out JOYCAPS pjc, Int32 cbjc);
10 | [DllImport("Winmm.dll")]
11 | public static extern UInt32 joyGetPosEx(Int32 uJoyID, out JOYINFOEX pji);
12 | [DllImport("Winmm.dll")]
13 | public static extern UInt32 joyGetNumDevs();
14 | }
15 | public enum JoystickError
16 | {
17 | NoError = 0,
18 | InvalidParameters = 165,
19 | NoCanDo = 166,
20 | Unplugged = 167
21 | }
22 |
23 | [Flags()]
24 | public enum JoystickFlags
25 | {
26 | JOY_RETURNX = 0x1,
27 | JOY_RETURNY = 0x2,
28 | JOY_RETURNZ = 0x4,
29 | JOY_RETURNR = 0x8,
30 | JOY_RETURNU = 0x10,
31 | JOY_RETURNV = 0x20,
32 | JOY_RETURNPOV = 0x40,
33 | JOY_RETURNBUTTONS = 0x80,
34 | JOY_RETURNALL = (JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV | JOY_RETURNBUTTONS)
35 | }
36 |
37 | public class WinMM
38 | {
39 | // Verreweg van compleet
40 | public const int MAXPNAMELEN = 32;
41 | }
42 | [Flags]
43 | public enum JoystCapsFlags
44 | {
45 | HasZ = 0x1,
46 | HasR = 0x2,
47 | HasU = 0x4,
48 | HasV = 0x8,
49 | HasPov = 0x16,
50 | HasPov4Dir = 0x32,
51 | HasPovContinuous = 0x64
52 | }
53 |
54 | public struct JOYCAPS
55 | {
56 | public short wMid;
57 | public short wPid;
58 | [MarshalAs(UnmanagedType.ByValTStr, SizeConst = WinMM.MAXPNAMELEN)]
59 | public string szPname;
60 | public uint wXmin;
61 | public uint wXmax;
62 | public uint wYmin;
63 | public uint wYmax;
64 | public uint wZmin;
65 | public uint wZmax;
66 | public uint wNumButtons;
67 | public uint wPeriodMin;
68 | public uint wPeriodMax;
69 | public uint RMin;
70 | public uint RMax;
71 | public uint UMin;
72 | public uint UMax;
73 | public uint VMin;
74 | public uint VMax;
75 | public JoystCapsFlags Capabilities;
76 | public uint MaxAxes;
77 | public uint NumAxes;
78 | public uint MaxButtons;
79 | [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
80 | public string RegKey;
81 | [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
82 | public string OemVxD;
83 |
84 | public static readonly int SizeInBytes;
85 |
86 | public static int Size { get { return Marshal.SizeOf(default(JOYCAPS)); } }
87 | }
88 | public struct JOYINFOEX
89 | {
90 | public int dwSize;
91 | public JoystickFlags dwFlags;
92 | public int dwXpos;
93 | public int dwYpos;
94 | public int dwZpos;
95 | public int dwRpos;
96 | public int dwUpos;
97 | public int dwVpos;
98 | public int dwButtons;
99 | public int dwButtonNumber;
100 | public int dwPOV;
101 | public int dwReserved1;
102 | public int dwReserved2;
103 | }
104 | public struct JOYINFO
105 | {
106 | public int wXpos;
107 | public int wYpos;
108 | public int wZpos;
109 | public int wButtons;
110 | }
111 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Common/GenericDataDefinition.cs:
--------------------------------------------------------------------------------
1 | namespace SimShift.Data.Common
2 | {
3 | public class GenericDataDefinition : IDataDefinition
4 | {
5 | public GenericDataDefinition(string car, float time, bool paused, int gear, int gears, float engineRpm, float fuel, float throttle, float brake, float speed)
6 | {
7 | Car = car;
8 | Time = time;
9 | Paused = paused;
10 | Gear = gear;
11 | Gears = gears;
12 | EngineRpm = engineRpm;
13 | Fuel = fuel;
14 | Throttle = throttle;
15 | Brake = brake;
16 | Speed = speed;
17 | }
18 |
19 | public string Car { get; set; }
20 |
21 | public float Time { get; private set; }
22 | public bool Paused { get; private set; }
23 |
24 | public int Gear { get; private set; }
25 | public int Gears { get; private set; }
26 |
27 | public float EngineRpm { get; private set; }
28 | public float Fuel { get; private set; }
29 |
30 | public float Throttle { get; private set; }
31 | public float Brake { get; private set; }
32 |
33 | public float Speed { get; private set; }
34 | }
35 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Common/IDataDefinition.cs:
--------------------------------------------------------------------------------
1 | namespace SimShift.Data.Common
2 | {
3 | public interface IDataDefinition
4 | {
5 | string Car { get; set; }
6 | float Time { get; }
7 | bool Paused { get; }
8 | int Gear { get; }
9 | int Gears { get; }
10 | float EngineRpm { get; }
11 | float Fuel { get; }
12 | float Throttle { get; }
13 | float Brake { get; }
14 | float Speed { get; }
15 | }
16 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Common/IDataMiner.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using SimShift.Services;
4 |
5 | namespace SimShift.Data.Common
6 | {
7 | public interface IDataMiner
8 | {
9 | string Application { get; }
10 | string Name { get; }
11 |
12 | EventHandler DataReceived { get; set; }
13 | IDataDefinition Telemetry { get; }
14 | bool Running { get; set; }
15 | bool IsActive { get; set; }
16 | bool SelectManually { get; }
17 | bool RunEvent { get; set; }
18 | Process ActiveProcess { get; set; }
19 |
20 | bool SupportsCar { get; }
21 | bool TransmissionSupportsRanges { get; }
22 | bool EnableWeirdAntistall { get; }
23 |
24 | void EvtStart();
25 | void EvtStop();
26 | void Write(TelemetryChannel cameraHorizon, T i);
27 | }
28 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Common/MemoryWriter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SimShift.Data.Common
4 | {
5 | public class MemoryWriter : MemoryReader
6 | {
7 | public override bool Open()
8 | {
9 | m_hProcess = ProcessMemoryReaderApi.OpenProcess(PROCESS_VM_WRITE | PROCESS_VM_READ, 0, (uint)m_ReadProcess.Id);
10 | return m_hProcess != IntPtr.Zero;
11 | }
12 |
13 | #region Write
14 | public void WriteFloat(IntPtr address, float value)
15 | {
16 | Write(address, BitConverter.GetBytes(value));
17 | }
18 |
19 | public void WriteDouble(IntPtr address, double value)
20 | {
21 | Write(address, BitConverter.GetBytes(value));
22 | }
23 |
24 | public void WriteByte(IntPtr address, byte value)
25 | {
26 | Write(address, new byte[1] { value });
27 | }
28 |
29 | public void WriteBytes(IntPtr address, byte[] value)
30 | {
31 | Write(address, value);
32 | }
33 |
34 | public void WriteInt16(IntPtr address, short value)
35 | {
36 | Write(address, BitConverter.GetBytes(value));
37 | }
38 |
39 | public void WriteInt32(IntPtr address, int value)
40 | {
41 | Write(address, BitConverter.GetBytes(value));
42 | }
43 |
44 | public void WriteInt64(IntPtr address, long value)
45 | {
46 | Write(address, BitConverter.GetBytes(value));
47 | }
48 |
49 | public void WriteUInt16(IntPtr address, ushort value)
50 | {
51 | Write(address, BitConverter.GetBytes(value));
52 | }
53 |
54 | public void WriteUInt32(IntPtr address, uint value)
55 | {
56 | Write(address, BitConverter.GetBytes(value));
57 | }
58 |
59 | public void WriteUInt64(IntPtr address, ulong value)
60 | {
61 | Write(address, BitConverter.GetBytes(value));
62 | }
63 | #endregion
64 | #region Write
65 |
66 | public void WriteFloat(int address, float value)
67 | {
68 | Write((IntPtr)address, BitConverter.GetBytes(value));
69 | }
70 |
71 | public void WriteDouble(int address, double value)
72 | {
73 | Write((IntPtr)address, BitConverter.GetBytes(value));
74 | }
75 |
76 | public void WriteByte(int address, byte value)
77 | {
78 | Write((IntPtr)address, new byte[1] { value });
79 | }
80 |
81 | public void WriteBytes(int address, byte[] value)
82 | {
83 | Write((IntPtr)address, value);
84 | }
85 |
86 | public void WriteInt16(int address, short value)
87 | {
88 | Write((IntPtr)address, BitConverter.GetBytes(value));
89 | }
90 |
91 | public void WriteInt32(int address, int value)
92 | {
93 | Write((IntPtr)address, BitConverter.GetBytes(value));
94 | }
95 |
96 | public void WriteInt64(int address, long value)
97 | {
98 | Write((IntPtr)address, BitConverter.GetBytes(value));
99 | }
100 |
101 | public void WriteUInt16(int address, ushort value)
102 | {
103 | Write((IntPtr)address, BitConverter.GetBytes(value));
104 | }
105 |
106 | public void WriteUInt32(int address, uint value)
107 | {
108 | Write((IntPtr)address, BitConverter.GetBytes(value));
109 | }
110 |
111 | public void WriteUInt64(int address, ulong value)
112 | {
113 | Write((IntPtr)address, BitConverter.GetBytes(value));
114 | }
115 | #endregion
116 | protected void Write(IntPtr address, byte[] data)
117 | {
118 | int bytesWritten;
119 | ProcessMemoryReaderApi.WriteProcessMemory(m_hProcess, address, data, (UIntPtr)data.Length, out bytesWritten);
120 | }
121 | }
122 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Common/ProcessMemoryReaderApi.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 |
4 | namespace SimShift.Data.Common
5 | {
6 | ///
7 | /// ProcessMemoryReader is a class that enables direct reading a process memory
8 | ///
9 | class ProcessMemoryReaderApi
10 | {
11 | // constants information can be found in
12 |
13 | // function declarations are found in the MSDN and in
14 |
15 | // HANDLE OpenProcess(
16 | // DWORD dwDesiredAccess, // access flag
17 | // BOOL bInheritHandle, // handle inheritance option
18 | // DWORD dwProcessId // process identifier
19 | // );
20 | [DllImport("kernel32.dll")]
21 | public static extern IntPtr OpenProcess(UInt32 dwDesiredAccess, Int32 bInheritHandle, UInt32 dwProcessId);
22 |
23 | // BOOL CloseHandle(
24 | // HANDLE hObject // handle to object
25 | // );
26 | [DllImport("kernel32.dll")]
27 | public static extern Int32 CloseHandle(IntPtr hObject);
28 |
29 | // BOOL ReadProcessMemory(
30 | // HANDLE hProcess, // handle to the process
31 | // LPCVOID lpBaseAddress, // base of memory area
32 | // LPVOID lpBuffer, // data buffer
33 | // SIZE_T nSize, // number of bytes to read
34 | // SIZE_T * lpNumberOfBytesRead // number of bytes read
35 | // );
36 | [DllImport("kernel32.dll")]
37 | public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesRead);
38 |
39 | [DllImport("kernel32.dll")]
40 | public static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, UIntPtr nSize, out int lpNumberOfBytesWritten);
41 | [DllImport("kernel32.dll", SetLastError = true)]
42 | public static extern IntPtr MapViewOfFile(IntPtr hFileMappingObject, uint dwDesiredAccess, uint dwFileOffsetHigh, uint dwFileOffsetLow, uint dwNumberOfBytesToMap);
43 | [DllImport("kernel32.dll", SetLastError = true)]
44 | public static extern IntPtr OpenFileMapping(uint dwDesiredAccess, bool bInheritHandle, string lpName);
45 | [DllImport("kernel32.dll", SetLastError = true)]
46 | public static extern bool UnmapViewOfFile(IntPtr lpBaseAddress);
47 |
48 | [DllImport("kernel32.dll")]
49 | public static extern Int32 GetLastError();
50 | }
51 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Common/SharedMemory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.IO.MemoryMappedFiles;
4 | using System.Net;
5 | using System.Net.NetworkInformation;
6 | using System.Net.Sockets;
7 | using System.Runtime.InteropServices;
8 |
9 | namespace SimShift.Data.Common
10 | {
11 | public class SharedMemory
12 | {
13 | public const uint mapSize = 16*1024;
14 |
15 | public bool Hooked { get; private set; }
16 | public T Data { get; private set; }
17 |
18 | public byte[] RawData { get; private set; }
19 |
20 | private MemoryMappedFile _memoryMappedFile;
21 | private MemoryMappedViewAccessor _memoryMappedBuffer;
22 |
23 | //private UdpClient udpServer;
24 |
25 | public void Connect(string map)
26 | {
27 | try
28 | {
29 | RawData = new byte[mapSize]; //Marshal.SizeOf(typeof(T))];
30 |
31 | //_mMMF = MemoryMappedFile.OpenExisting(map, MemoryMappedFileRights.TakeOwnership);
32 | _memoryMappedFile = MemoryMappedFile.CreateOrOpen(map, mapSize, MemoryMappedFileAccess.ReadWrite);
33 | _memoryMappedBuffer = _memoryMappedFile.CreateViewAccessor(0, mapSize);
34 |
35 | /*udpServer = new UdpClient();
36 |
37 | // Look up my wi-fi
38 | var ifaceIndex = 0;
39 |
40 | NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
41 | foreach (NetworkInterface adapter in nics)
42 | {
43 | if (adapter.Name.Contains("Wireless"))
44 | {
45 |
46 | IPv4InterfaceProperties p = adapter.GetIPProperties().GetIPv4Properties();
47 | ifaceIndex = p.Index;
48 | // now we have adapter index as p.Index, let put it to socket option
49 | udpServer.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface,
50 | (int)IPAddress.HostToNetworkOrder(p.Index));
51 | break;
52 | }
53 | }
54 |
55 | var ip = IPAddress.Parse("224.5.6.8");
56 | udpServer.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip,ifaceIndex));
57 | udpServer.Connect(new IPEndPoint(ip, 1235));*/
58 |
59 | Hooked = true;
60 | }
61 | catch (Exception e)
62 | {
63 | Hooked = false;
64 | //
65 | }
66 | }
67 |
68 | public void Disconnect()
69 | {
70 | Hooked = false;
71 | _memoryMappedBuffer.Dispose();
72 | _memoryMappedFile.Dispose();
73 | }
74 |
75 | public void Update()
76 | {
77 | if (_memoryMappedBuffer == null) return;
78 |
79 | _memoryMappedBuffer.ReadArray(0, RawData, 0, RawData.Length);
80 |
81 | Data = ToObject(RawData);
82 |
83 | //udpServer.Send(RawData, RawData.Length);
84 | }
85 |
86 | // Casts raw byte stream to object.
87 | protected T ToObject(byte[] structureDataBytes)
88 | {
89 | T createdObject = default(T);
90 |
91 | var memoryObjectSize = Marshal.SizeOf(typeof(T));
92 |
93 | // Cannot create object from array that is too small.
94 | if (memoryObjectSize > structureDataBytes.Length)
95 | return createdObject;
96 |
97 | // Reserve unmanaged memory, copy structureDataBytes bytes to there, and convert this unmanaged memory to a managed type.
98 | // Then free memory.
99 | var reservedMemPtr = Marshal.AllocHGlobal(memoryObjectSize);
100 |
101 | Marshal.Copy(structureDataBytes, 0, reservedMemPtr, memoryObjectSize);
102 |
103 | createdObject = (T)Marshal.PtrToStructure(reservedMemPtr, typeof(T));
104 |
105 | Marshal.FreeHGlobal(reservedMemPtr);
106 |
107 | return createdObject;
108 | }
109 |
110 |
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Ets2DataAuxilliary.cs:
--------------------------------------------------------------------------------
1 | namespace SimShift.Data
2 | {
3 | public enum Ets2DataAuxilliary : int
4 | {
5 | CruiseControl = 0,
6 | Wipers = 1,
7 |
8 | ParkBrake = 2,
9 | MotorBrake = 3,
10 |
11 | ElectricEnabled = 4,
12 | EngineEnabled = 5,
13 |
14 | BlinkerLeftActive = 6,
15 | BlinkerRightActive = 7,
16 | BlinkerLeftOn = 8,
17 | BlinkerRightOn = 9,
18 |
19 | LightsParking = 10,
20 | LightsBeamLow = 11,
21 | LightsBeamHigh = 12,
22 | LightsAuxFront = 13,
23 | LightsAuxRoof = 14,
24 | LightsBeacon = 15,
25 | LightsBrake = 16,
26 | LightsReverse = 17,
27 |
28 | BatteryVoltageWarning = 18,
29 | AirPressureWarning = 19,
30 | AirPressureEmergency = 20,
31 | AdblueWarning = 21,
32 | OilPressureWarning = 22,
33 | WaterTemperatureWarning = 23,
34 | }
35 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Ets2DataDebug.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace SimShift.Data
2 | {
3 | partial class Ets2DataDebug
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.label1 = new System.Windows.Forms.Label();
32 | this.SuspendLayout();
33 | //
34 | // label1
35 | //
36 | this.label1.AutoSize = true;
37 | this.label1.Location = new System.Drawing.Point(12, 9);
38 | this.label1.Name = "label1";
39 | this.label1.Size = new System.Drawing.Size(35, 13);
40 | this.label1.TabIndex = 0;
41 | this.label1.Text = "label1";
42 | //
43 | // Ets2DataDebug
44 | //
45 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
46 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
47 | this.ClientSize = new System.Drawing.Size(778, 460);
48 | this.Controls.Add(this.label1);
49 | this.Name = "Ets2DataDebug";
50 | this.Text = "Ets2DataDebug";
51 | this.ResumeLayout(false);
52 | this.PerformLayout();
53 |
54 | }
55 |
56 | #endregion
57 |
58 | private System.Windows.Forms.Label label1;
59 | }
60 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Memory/IDataField.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SimTelemetry.Domain.Memory
4 | {
5 | public interface IDataField
6 | {
7 | string Name { get; }
8 | Type ValueType { get; }
9 |
10 | bool HasChanged();
11 |
12 | T ReadAs();
13 | }
14 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Memory/IDataNode.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Xml;
3 |
4 | namespace SimTelemetry.Domain.Memory
5 | {
6 | public interface IDataNode
7 | {
8 | Dictionary Fields { get; }
9 |
10 | string Name { get; }
11 | T ReadAs(string field);
12 | IEnumerable GetDataFields();
13 | byte[] ReadBytes(string field);
14 | void GetDebugInfo(XmlWriter file);
15 | IDataNode Clone(string newName, int newAddress);
16 | }
17 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Memory/IDataProvider.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace SimTelemetry.Domain.Memory
4 | {
5 | public interface IDataProvider
6 | {
7 | IDataNode Get(string name);
8 | IEnumerable GetAll();
9 |
10 | void MarkDirty();
11 | void Refresh();
12 | }
13 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Memory/IMemoryObject.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using SimTelemetry.Domain.Memory;
3 |
4 | namespace SimShift.Data.Memory
5 | {
6 | public interface IMemoryObject : IDataField, ICloneable
7 | {
8 | string Name { get; }
9 | MemoryProvider Memory { get; }
10 | MemoryAddress AddressType { get; }
11 |
12 | bool IsDynamic { get; }
13 | bool IsStatic { get; }
14 | bool IsConstant { get; }
15 |
16 | MemoryPool Pool { get; }
17 | int Offset { get; }
18 | int Address { get; }
19 | int Size { get; }
20 | Type ValueType { get; }
21 |
22 | T ReadAs();
23 | object Read();
24 | bool HasChanged();
25 |
26 | void MarkDirty();
27 |
28 | void Refresh();
29 | void SetProvider(MemoryProvider provider);
30 | void SetPool(MemoryPool pool);
31 | }
32 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Memory/MemoryAddress.cs:
--------------------------------------------------------------------------------
1 | namespace SimTelemetry.Domain.Memory
2 | {
3 | public enum MemoryAddress
4 | {
5 | Static,
6 | StaticAbsolute,
7 | Dynamic,
8 | Constant
9 | }
10 | }
--------------------------------------------------------------------------------
/SimShift/SimShift/Data/Memory/MemoryDataConverterProvider.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SimTelemetry.Domain.Memory
4 | {
5 | public class MemoryDataConverterProvider
6 | {
7 | public Type DataType { get { return typeof(T); } }
8 | public Func Byte2Obj { get; private set; }
9 | public Func