├── README.md ├── SimToolsGamePlugin ├── .gitignore ├── GamePlugin.sln └── GamePlugin │ ├── GamePlugin.vb │ ├── GamePlugin.vbproj │ ├── My Project │ ├── Application.Designer.vb │ ├── Application.myapp │ ├── AssemblyInfo.vb │ ├── Resources.Designer.vb │ ├── Resources.resx │ ├── Settings.Designer.vb │ ├── Settings.settings │ └── _svn │ │ ├── all-wcprops │ │ ├── entries │ │ ├── format │ │ └── text-base │ │ ├── Application.Designer.vb.svn-base │ │ ├── Application.myapp.svn-base │ │ ├── AssemblyInfo.vb.svn-base │ │ ├── Resources.Designer.vb.svn-base │ │ ├── Resources.resx.svn-base │ │ ├── Settings.Designer.vb.svn-base │ │ └── Settings.settings.svn-base │ └── bin │ ├── Debug │ ├── Game_PluginAPI.dll │ └── PluginValidator.exe │ └── Release │ ├── Game_PluginAPI.dll │ └── PluginValidator.exe ├── SimpleUdpReciever ├── .gitignore ├── SimpleUdpReciever.sln └── SimpleUdpReciever │ ├── Program.cs │ ├── Properties │ └── AssemblyInfo.cs │ ├── SimpleUdpReciever.csproj │ └── UdpState.cs ├── Unity3D ├── Plugin │ └── QuPlaySimtools.cs └── QuPlay │ ├── .gitignore │ ├── Assets │ ├── Main.cs │ ├── Main.cs.meta │ ├── Main.unity │ ├── Main.unity.meta │ ├── QuPlaySimtools.cs │ └── QuPlaySimtools.cs.meta │ └── ProjectSettings │ ├── AudioManager.asset │ ├── ClusterInputManager.asset │ ├── DynamicsManager.asset │ ├── EditorBuildSettings.asset │ ├── EditorSettings.asset │ ├── GraphicsSettings.asset │ ├── InputManager.asset │ ├── NavMeshAreas.asset │ ├── NetworkManager.asset │ ├── Physics2DSettings.asset │ ├── ProjectSettings.asset │ ├── ProjectVersion.txt │ ├── QualitySettings.asset │ ├── TagManager.asset │ ├── TimeManager.asset │ └── UnityConnectSettings.asset └── Unreal ├── Plugins └── QuPlaySimtools │ ├── QuPlaySimtools.uplugin │ ├── Resources │ └── Icon128.png │ └── Source │ └── QuPlaySimtools │ ├── Private │ ├── QuPlaySimtools.cpp │ └── QuPlaySimtoolsBPLibrary.cpp │ ├── Public │ ├── QuPlaySimtools.h │ └── QuPlaySimtoolsBPLibrary.h │ └── QuPlaySimtools.Build.cs └── QuPlay ├── .gitignore ├── Config ├── DefaultEditor.ini ├── DefaultEngine.ini └── DefaultGame.ini ├── Content ├── Main.umap └── Main_BuiltData.uasset ├── Plugins └── QuPlaySimtools │ ├── QuPlaySimtools.uplugin │ ├── Resources │ └── Icon128.png │ └── Source │ └── QuPlaySimtools │ ├── Private │ ├── QuPlaySimtools.cpp │ └── QuPlaySimtoolsBPLibrary.cpp │ ├── Public │ ├── QuPlaySimtools.h │ └── QuPlaySimtoolsBPLibrary.h │ └── QuPlaySimtools.Build.cs ├── QuPlay.uproject └── Source ├── QuPlay.Target.cs ├── QuPlay ├── QuPlay.Build.cs ├── QuPlay.cpp ├── QuPlay.h ├── QuPlayGameModeBase.cpp └── QuPlayGameModeBase.h └── QuPlayEditor.Target.cs /README.md: -------------------------------------------------------------------------------- 1 | # QuplaySimTools 2 | 3 | https://www.xsimulator.net/community/threads/how-to-write-a-game-plugin-for-simtools-2-0-api-documentation.9107/ 4 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | x64/ 17 | x86/ 18 | bld/ 19 | [Oo]bj/ 20 | [Ll]og/ 21 | 22 | # Visual Studio 2015/2017 cache/options directory 23 | .vs/ 24 | # Uncomment if you have tasks that create the project's static files in wwwroot 25 | #wwwroot/ 26 | 27 | # Visual Studio 2017 auto generated files 28 | Generated\ Files/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # Benchmark Results 44 | BenchmarkDotNet.Artifacts/ 45 | 46 | # .NET Core 47 | project.lock.json 48 | project.fragment.lock.json 49 | artifacts/ 50 | **/Properties/launchSettings.json 51 | 52 | # StyleCop 53 | StyleCopReport.xml 54 | 55 | # Files built by Visual Studio 56 | *_i.c 57 | *_p.c 58 | *_i.h 59 | *.ilk 60 | *.meta 61 | *.obj 62 | *.pch 63 | *.pdb 64 | *.pgc 65 | *.pgd 66 | *.rsp 67 | *.sbr 68 | *.tlb 69 | *.tli 70 | *.tlh 71 | *.tmp 72 | *.tmp_proj 73 | *.log 74 | *.vspscc 75 | *.vssscc 76 | .builds 77 | *.pidb 78 | *.svclog 79 | *.scc 80 | 81 | # Chutzpah Test files 82 | _Chutzpah* 83 | 84 | # Visual C++ cache files 85 | ipch/ 86 | *.aps 87 | *.ncb 88 | *.opendb 89 | *.opensdf 90 | *.sdf 91 | *.cachefile 92 | *.VC.db 93 | *.VC.VC.opendb 94 | 95 | # Visual Studio profiler 96 | *.psess 97 | *.vsp 98 | *.vspx 99 | *.sap 100 | 101 | # Visual Studio Trace Files 102 | *.e2e 103 | 104 | # TFS 2012 Local Workspace 105 | $tf/ 106 | 107 | # Guidance Automation Toolkit 108 | *.gpState 109 | 110 | # ReSharper is a .NET coding add-in 111 | _ReSharper*/ 112 | *.[Rr]e[Ss]harper 113 | *.DotSettings.user 114 | 115 | # JustCode is a .NET coding add-in 116 | .JustCode 117 | 118 | # TeamCity is a build add-in 119 | _TeamCity* 120 | 121 | # DotCover is a Code Coverage Tool 122 | *.dotCover 123 | 124 | # AxoCover is a Code Coverage Tool 125 | .axoCover/* 126 | !.axoCover/settings.json 127 | 128 | # Visual Studio code coverage results 129 | *.coverage 130 | *.coveragexml 131 | 132 | # NCrunch 133 | _NCrunch_* 134 | .*crunch*.local.xml 135 | nCrunchTemp_* 136 | 137 | # MightyMoose 138 | *.mm.* 139 | AutoTest.Net/ 140 | 141 | # Web workbench (sass) 142 | .sass-cache/ 143 | 144 | # Installshield output folder 145 | [Ee]xpress/ 146 | 147 | # DocProject is a documentation generator add-in 148 | DocProject/buildhelp/ 149 | DocProject/Help/*.HxT 150 | DocProject/Help/*.HxC 151 | DocProject/Help/*.hhc 152 | DocProject/Help/*.hhk 153 | DocProject/Help/*.hhp 154 | DocProject/Help/Html2 155 | DocProject/Help/html 156 | 157 | # Click-Once directory 158 | publish/ 159 | 160 | # Publish Web Output 161 | *.[Pp]ublish.xml 162 | *.azurePubxml 163 | # Note: Comment the next line if you want to checkin your web deploy settings, 164 | # but database connection strings (with potential passwords) will be unencrypted 165 | *.pubxml 166 | *.publishproj 167 | 168 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 169 | # checkin your Azure Web App publish settings, but sensitive information contained 170 | # in these scripts will be unencrypted 171 | PublishScripts/ 172 | 173 | # NuGet Packages 174 | *.nupkg 175 | # The packages folder can be ignored because of Package Restore 176 | **/[Pp]ackages/* 177 | # except build/, which is used as an MSBuild target. 178 | !**/[Pp]ackages/build/ 179 | # Uncomment if necessary however generally it will be regenerated when needed 180 | #!**/[Pp]ackages/repositories.config 181 | # NuGet v3's project.json files produces more ignorable files 182 | *.nuget.props 183 | *.nuget.targets 184 | 185 | # Microsoft Azure Build Output 186 | csx/ 187 | *.build.csdef 188 | 189 | # Microsoft Azure Emulator 190 | ecf/ 191 | rcf/ 192 | 193 | # Windows Store app package directories and files 194 | AppPackages/ 195 | BundleArtifacts/ 196 | Package.StoreAssociation.xml 197 | _pkginfo.txt 198 | *.appx 199 | 200 | # Visual Studio cache files 201 | # files ending in .cache can be ignored 202 | *.[Cc]ache 203 | # but keep track of directories ending in .cache 204 | !*.[Cc]ache/ 205 | 206 | # Others 207 | ClientBin/ 208 | ~$* 209 | *~ 210 | *.dbmdl 211 | *.dbproj.schemaview 212 | *.jfm 213 | *.pfx 214 | *.publishsettings 215 | orleans.codegen.cs 216 | 217 | # Since there are multiple workflows, uncomment next line to ignore bower_components 218 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 219 | #bower_components/ 220 | 221 | # RIA/Silverlight projects 222 | Generated_Code/ 223 | 224 | # Backup & report files from converting an old project file 225 | # to a newer Visual Studio version. Backup files are not needed, 226 | # because we have git ;-) 227 | _UpgradeReport_Files/ 228 | Backup*/ 229 | UpgradeLog*.XML 230 | UpgradeLog*.htm 231 | 232 | # SQL Server files 233 | *.mdf 234 | *.ldf 235 | *.ndf 236 | 237 | # Business Intelligence projects 238 | *.rdl.data 239 | *.bim.layout 240 | *.bim_*.settings 241 | 242 | # Microsoft Fakes 243 | FakesAssemblies/ 244 | 245 | # GhostDoc plugin setting file 246 | *.GhostDoc.xml 247 | 248 | # Node.js Tools for Visual Studio 249 | .ntvs_analysis.dat 250 | node_modules/ 251 | 252 | # TypeScript v1 declaration files 253 | typings/ 254 | 255 | # Visual Studio 6 build log 256 | *.plg 257 | 258 | # Visual Studio 6 workspace options file 259 | *.opt 260 | 261 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 262 | *.vbw 263 | 264 | # Visual Studio LightSwitch build output 265 | **/*.HTMLClient/GeneratedArtifacts 266 | **/*.DesktopClient/GeneratedArtifacts 267 | **/*.DesktopClient/ModelManifest.xml 268 | **/*.Server/GeneratedArtifacts 269 | **/*.Server/ModelManifest.xml 270 | _Pvt_Extensions 271 | 272 | # Paket dependency manager 273 | .paket/paket.exe 274 | paket-files/ 275 | 276 | # FAKE - F# Make 277 | .fake/ 278 | 279 | # JetBrains Rider 280 | .idea/ 281 | *.sln.iml 282 | 283 | # CodeRush 284 | .cr/ 285 | 286 | # Python Tools for Visual Studio (PTVS) 287 | __pycache__/ 288 | *.pyc 289 | 290 | # Cake - Uncomment if you are using it 291 | # tools/** 292 | # !tools/packages.config 293 | 294 | # Tabs Studio 295 | *.tss 296 | 297 | # Telerik's JustMock configuration file 298 | *.jmconfig 299 | 300 | # BizTalk build output 301 | *.btp.cs 302 | *.btm.cs 303 | *.odx.cs 304 | *.xsd.cs 305 | 306 | # OpenCover UI analysis results 307 | OpenCover/ 308 | 309 | # Azure Stream Analytics local run output 310 | ASALocalRun/ -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Basic Express 2010 4 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "GamePlugin", "GamePlugin\GamePlugin.vbproj", "{111AFF88-CCF4-4359-BC0C-A55F4F0A4197}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {111AFF88-CCF4-4359-BC0C-A55F4F0A4197}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {111AFF88-CCF4-4359-BC0C-A55F4F0A4197}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {111AFF88-CCF4-4359-BC0C-A55F4F0A4197}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {111AFF88-CCF4-4359-BC0C-A55F4F0A4197}.Release|Any CPU.Build.0 = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/GamePlugin.vb: -------------------------------------------------------------------------------- 1 | Option Explicit On 2 | Option Strict On 3 | 4 | Imports Game_PluginAPI 5 | Imports System.IO 6 | 7 | Public Class GamePlugin 8 | Implements IPlugin_Game 9 | '/// 10 | '/// Simple implementation of the plugin Simtools 2.0 11 | '/// Autor: Claudio Silva - DDK 12 | '/// Blog: https://clclaudio.wordpress.com 13 | '/// 14 | 15 | '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 16 | '/// SimTools Plugin - Edit the Setting below to provide support for your favorite game! /// 17 | '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 18 | '//////////////////////////////////////////////// 19 | '/// Per Game Settings - Change for Each Game /// 20 | '//////////////////////////////////////////////// 21 | Private Const _PluginAuthorsName As String = "QuPlay" 22 | Private Const _GameName As String = "QuPlay" 'GameName (Must Be Unique!) - the displayed Name. 23 | Private Const _ProcessName As String = "QuPlay" 'Process_Name without the (".exe") for this game 24 | Private Const _Port As String = "4123" 'Your Sending/Recieving UDP Port for this game 25 | Private Const _RequiresPatchingPath As Boolean = True 'do we need the game exe path for patching? (must be True if _RequiresSecondCheck = True) 26 | Private Const _RequiresSecondCheck As Boolean = False 'Used when games have the same _ProcessName. (all plugins with the same _ProcessName must use this!) 27 | Private Const _PluginOptions As String = "" 'Reserved For Future Use - No Change Needed 28 | '//////////////////////////////////////////////// 29 | '/// Memory Map Variables /// 30 | '//////////////////////////////////////////////// 31 | Private Const _Enable_MemoryMap As Boolean = False 'Is a MemoryMap file Required for this game? 32 | Private Const _MMF_Name As String = "NULL" 'Set if using a Memory Map File - EXAMPLE("$gtr2$") 33 | '//////////////////////////////////////////////// 34 | '/// MemoryHook Variables /// 35 | '//////////////////////////////////////////////// 36 | Private Const _Enable_MemoryHook As Boolean = False 'Is a Memory Hook Required for this game? 37 | Private Const _MemHook_Roll As UInteger = 0 'Not Used = 0 38 | Private Const _MemHook_Pitch As UInteger = 0 39 | Private Const _MemHook_Heave As UInteger = 0 40 | Private Const _MemHook_Yaw As UInteger = 0 41 | Private Const _MemHook_Sway As UInteger = 0 42 | Private Const _MemHook_Surge As UInteger = 0 43 | Private Const _MemHook_Extra1 As UInteger = 0 44 | Private Const _MemHook_Extra2 As UInteger = 0 45 | Private Const _MemHook_Extra3 As UInteger = 0 46 | '//////////////////////////////////////////////// 47 | '/// DOFs Used for Output for this Game /// 48 | '//////////////////////////////////////////////// 49 | Private Const _DOF_Support_Roll As Boolean = True 50 | Private Const _DOF_Support_Pitch As Boolean = True 51 | Private Const _DOF_Support_Heave As Boolean = True 52 | Private Const _DOF_Support_Yaw As Boolean = True 53 | Private Const _DOF_Support_Sway As Boolean = True 54 | Private Const _DOF_Support_Surge As Boolean = True 55 | Private Const _DOF_Support_Extra1 As String = "Traction Loss" 'Blank = False 56 | Private Const _DOF_Support_Extra2 As String = "" '"" = Not Used 57 | Private Const _DOF_Support_Extra3 As String = "" 'ADD THE FORCE NAME HERE 58 | '///////////////////////////////////////////////// 59 | '/// GameDash - Dash Board Support /// 60 | '///////////////////////////////////////////////// 61 | Private Const _Enable_DashBoard As Boolean = False 'Enable the DashBoard Output System? 62 | 'EXAMPLES OF DASH OUTPUT (all variables are strings) - 20 DASH OUTPUTS MAX!!! 63 | 'Use the Variables with either Process_PacketRecieved, Process_MemoryHook or Process_MemoryMap. 64 | 'Variable = (*Action, Value) as String - (The *Action variable can be anything) 65 | 'Basic Dash Support should include at the minimum - SPEED, RPM and GEAR 66 | 'Dash_1_Output = "Speed," & OUTPUT_VALUE_HERE.ToString 67 | 'Dash_2_Output = "Rpm," & OUTPUT_VALUE_HERE.ToString 68 | 'Dash_2_Output = "Gear," & OUTPUT_VALUE_HERE.ToString 69 | '... 70 | 'Dash_20_Output = "Engine Temp," & OUTPUT_VALUE_HERE.ToString 71 | '///////////////////////////////////////////////// 72 | '/// GameVibe Support /// 73 | '///////////////////////////////////////////////// 74 | Private Const _Enable_GameVibe As Boolean = False 'Enable the GameVibe Output System? 75 | 'EXAMPLES OF GameVibe OUTPUT (all variables are strings) - 9 GameVibe OUTPUTS MAX!!! 76 | 'Use the Variables with either Process_PacketRecieved, Process_MemoryHook or Process_MemoryMap. 77 | 'Variable = (*Action, Value) as String - (The *Action" variable can ONLY be: Rpm, Heave, Sway, Surge, FR, FL, RR, RL, Turbo) 78 | 'Basic GameVibe Support should include at the minimum - Rpm 79 | 'Vibe_1_Output = "Rpm," & OUTPUT_VALUE_HERE.ToString 80 | 'Vibe_2_Output = "Heave," & OUTPUT_VALUE_HERE.ToString 81 | 'Vibe_3_Output = "Sway," & OUTPUT_VALUE_HERE.ToString 82 | 'Vibe_4_Output = "Surge," & OUTPUT_VALUE_HERE.ToString 83 | '... 84 | 'Vibe_9_Output = "Gear Shift," & OUTPUT_VALUE_HERE.ToString 85 | '///////////////////////////////////////////////// 86 | 87 | 'Used by GameManager when the Game Starts. 88 | Public Sub GameStart() Implements IPlugin_Game.GameStart 89 | 'DO SOMETHING HERE AT GAME START! 90 | End Sub 91 | 92 | 'Used by GameManager when the Game Stops. 93 | Public Sub GameStop() Implements IPlugin_Game.GameEnd 94 | 'DO SOMETHING HERE AT GAME STOP! 95 | End Sub 96 | 97 | 'Used by GameManager to Process a MemoryHook. 98 | Public Sub Process_MemoryHook() Implements IPlugin_Game.Process_MemoryHook 99 | 'DO SOMETHING HERE AT GAME START! 100 | End Sub 101 | 102 | 'Used by GameManager to Process a MemoryMap. 103 | Public Sub Process_MemoryMap() Implements IPlugin_Game.Process_MemoryMap 104 | 'DO SOMETHING HERE AT GAME START! 105 | End Sub 106 | 107 | 'Used by GameEngine to Process Incoming UDP Packets. 108 | Public Sub Process_PacketRecieved(Text As String) Implements IPlugin_Game.Process_PacketRecieved 109 | Dim telemetry As String() = Text.Split(New Char() {","c}) 110 | 111 | Roll_Output = CDbl(Val(telemetry(0))) 112 | Pitch_Output = CDbl(Val(telemetry(1))) 113 | Yaw_Output = CDbl(Val(telemetry(2))) 114 | Heave_Output = CDbl(Val(telemetry(3))) 115 | Sway_Output = CDbl(Val(telemetry(4))) 116 | Surge_Output = CDbl(Val(telemetry(5))) 117 | Extra1_Output = CDbl(Val(telemetry(6))) 118 | Extra2_Output = CDbl(Val(telemetry(7))) 119 | Extra3_Output = CDbl(Val(telemetry(8))) 120 | End Sub 121 | 122 | 'Used by GameManager to Patch a Game. 123 | Public Function PatchGame(ByVal MyPath As String, ByVal MyIp As String) As Boolean Implements IPlugin_Game.PatchGame 124 | 'Change as Needed 125 | 'If game is already patched - Unpatch first 126 | UnPatch(MyPath) 127 | Return True 128 | 129 | End Function 130 | 131 | 'Used by GameManager to UnPatch a Game. 132 | Public Sub UnPatchGame(MyPath As String) Implements IPlugin_Game.UnPatchGame 133 | 'Change as Needed 134 | UnPatch(MyPath) 135 | MsgBox("Patch Uninstalled!", MsgBoxStyle.OkOnly, "Patching info") 136 | End Sub 137 | 138 | 'Used by GameManager to UnPatch a Game. 139 | Private Sub UnPatch(MyPath As String) 140 | If System.IO.File.Exists(MyPath & "\QuPlay.exe") = True Then 141 | If File.Exists(MyPath & "\system\cfg.BAK") Then 'Restore backup File 142 | If File.Exists(MyPath & "\system\hardware_settings_config.xml") Then 143 | System.IO.File.Delete(MyPath & "\system\hardware_settings_config.xml") 144 | End If 145 | Rename(MyPath & "\system\cfg.BAK", MyPath & "\system\hardware_settings_config.xml") 146 | End If 147 | Else 148 | If File.Exists(MyPath & "\hardwaresettings\cfg.BAK") Then 'Restore backup File 149 | If File.Exists(MyPath & "\hardwaresettings\hardware_settings_config.xml") Then 150 | System.IO.File.Delete(MyPath & "\hardwaresettings\hardware_settings_config.xml") 151 | End If 152 | Rename(MyPath & "\hardwaresettings\cfg.BAK", MyPath & "\hardwaresettings\hardware_settings_config.xml") 153 | End If 154 | End If 155 | End Sub 156 | 157 | 'Tells the User where to patch the game 158 | Public Sub PatchPathInfo() Implements IPlugin_Game.PatchPathInfo 159 | 'Tell the User where to patch the game 160 | MsgBox("32bit PC's - Please Select Dirt 2's Installation Directory." & vbCrLf & "64bit PC's - Please Select Dirt 2's Game Save Directory" & vbCrLf & "(64bit's default location is Documents\MyGames\Dirt2).", MsgBoxStyle.OkOnly, "Patching info") 161 | End Sub 162 | 163 | 'Used by GameManager to Validate a Path befors Patching. 164 | Public Function ValidatePatchPath(MyPath As String) As Boolean Implements IPlugin_Game.ValidatePatchPath 165 | 'insert a simple validation of the patching path - let the user know he got it right 166 | If System.IO.File.Exists(MyPath & "\QuPlay.exe") = True Or System.IO.File.Exists(MyPath & "\hardwaresettings\hardware_settings_config.xml") = True Then 167 | Return True 168 | Else 169 | Return False 170 | End If 171 | End Function 172 | 173 | 174 | '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 175 | '/// PLACE EXTRA NEEDED CODE/FUNCTIONS HERE /// 176 | '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 177 | #Region "///// - EXTRA CODE/FUNCTIONS USED FOR THIS PLUGIN - /////" 178 | 'Used by GameEngine to Process Incoming UDP Packets. 179 | Private MyOutsim_Internal As New OutSim 180 | Private Structure OutSim 181 | Public PosX As Single 182 | End Structure 183 | 184 | 'File Editor - Replaces a line in a txt/cfg file 185 | Private Sub MyFileEditor(FileName As String, LinetoEdit As String, StingReplacment As String) 186 | Dim lines As New List(Of String) 187 | Dim x As Integer = 0 188 | Using sr As New System.IO.StreamReader(FileName) 189 | While Not sr.EndOfStream 190 | lines.Add(sr.ReadLine) 191 | End While 192 | End Using 193 | 194 | For Each line As String In lines 195 | If line.Contains(LinetoEdit) Then 196 | lines.RemoveAt(x) 197 | lines.Insert(x, StingReplacment) 198 | Exit For 'must exit as we changed the iteration 199 | End If 200 | x = x + 1 201 | Next 202 | 203 | Using sw As New System.IO.StreamWriter(FileName) 204 | For Each line As String In lines 205 | sw.WriteLine(line) 206 | Next 207 | End Using 208 | lines.Clear() 209 | End Sub 210 | #End Region 211 | 212 | 213 | '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 214 | '/// DO NOT EDIT BELOW HERE!!! /// 215 | '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 216 | #Region "///// BUILT IN METHODS FOR SIMTOOLS - DO NOT CHANGE /////" 217 | 'Output Dash Vars 218 | Public Dash_1_Output As String = "" 219 | Public Dash_2_Output As String = "" 220 | Public Dash_3_Output As String = "" 221 | Public Dash_4_Output As String = "" 222 | Public Dash_5_Output As String = "" 223 | Public Dash_6_Output As String = "" 224 | Public Dash_7_Output As String = "" 225 | Public Dash_8_Output As String = "" 226 | Public Dash_9_Output As String = "" 227 | Public Dash_10_Output As String = "" 228 | Public Dash_11_Output As String = "" 229 | Public Dash_12_Output As String = "" 230 | Public Dash_13_Output As String = "" 231 | Public Dash_14_Output As String = "" 232 | Public Dash_15_Output As String = "" 233 | Public Dash_16_Output As String = "" 234 | Public Dash_17_Output As String = "" 235 | Public Dash_18_Output As String = "" 236 | Public Dash_19_Output As String = "" 237 | Public Dash_20_Output As String = "" 238 | 239 | 'Output Vars 240 | Public Roll_Output As Double = 0 241 | Public Pitch_Output As Double = 0 242 | Public Heave_Output As Double = 0 243 | Public Yaw_Output As Double = 0 244 | Public Sway_Output As Double = 0 245 | Public Surge_Output As Double = 0 246 | Public Extra1_Output As Double = 0 247 | Public Extra2_Output As Double = 0 248 | Public Extra3_Output As Double = 0 249 | 250 | 'MemHook Vars 251 | Public Roll_MemHook As Double = 0 252 | Public Pitch_MemHook As Double = 0 253 | Public Heave_MemHook As Double = 0 254 | Public Yaw_MemHook As Double = 0 255 | Public Sway_MemHook As Double = 0 256 | Public Surge_MemHook As Double = 0 257 | Public Extra1_MemHook As Double = 0 258 | Public Extra2_MemHook As Double = 0 259 | Public Extra3_MemHook As Double = 0 260 | 261 | 'MemMap Vars 262 | Public Roll_MemMap As Double = 0 263 | Public Pitch_MemMap As Double = 0 264 | Public Heave_MemMap As Double = 0 265 | Public Yaw_MemMap As Double = 0 266 | Public Sway_MemMap As Double = 0 267 | Public Surge_MemMap As Double = 0 268 | Public Extra1_MemMap As Double = 0 269 | Public Extra2_MemMap As Double = 0 270 | Public Extra3_MemMap As Double = 0 271 | 272 | 'GameVibe Vars 273 | Public Vibe_1_Output As String = "" 274 | Public Vibe_2_Output As String = "" 275 | Public Vibe_3_Output As String = "" 276 | Public Vibe_4_Output As String = "" 277 | Public Vibe_5_Output As String = "" 278 | Public Vibe_6_Output As String = "" 279 | Public Vibe_7_Output As String = "" 280 | Public Vibe_8_Output As String = "" 281 | Public Vibe_9_Output As String = "" 282 | 283 | Public Function Get_PluginVersion() As String Implements IPlugin_Game.Get_PluginVersion 284 | Return System.Reflection.Assembly.GetExecutingAssembly.GetName.Version.ToString 285 | End Function 286 | 287 | Public Function GetDOFsUsed() As String Implements IPlugin_Game.GetDOFsUsed 288 | 'Return DOF's Used (Roll,Pitch,Heave,Yaw,Sway,Surge) 289 | Return (_DOF_Support_Roll.ToString & "," & _DOF_Support_Pitch.ToString & "," & _DOF_Support_Heave.ToString & "," & _DOF_Support_Yaw.ToString & "," & _DOF_Support_Sway.ToString & "," & _DOF_Support_Surge.ToString & "," & _DOF_Support_Extra1.ToString & "," & _DOF_Support_Extra2.ToString & "," & _DOF_Support_Extra3.ToString) 290 | End Function 291 | 292 | Public Sub ResetDOFVars() Implements IPlugin_Game.ResetDOFVars 293 | Roll_Output = 0 294 | Pitch_Output = 0 295 | Heave_Output = 0 296 | Yaw_Output = 0 297 | Sway_Output = 0 298 | Surge_Output = 0 299 | Extra1_Output = 0 300 | Extra2_Output = 0 301 | Extra3_Output = 0 302 | End Sub 303 | 304 | Public Sub ResetMapVars() Implements IPlugin_Game.ResetMapVars 305 | Roll_MemMap = 0 306 | Pitch_MemMap = 0 307 | Heave_MemMap = 0 308 | Yaw_MemMap = 0 309 | Sway_MemMap = 0 310 | Surge_MemMap = 0 311 | Extra1_MemMap = 0 312 | Extra2_MemMap = 0 313 | Extra3_MemMap = 0 314 | End Sub 315 | 316 | Public Sub ResetHookVars() Implements IPlugin_Game.ResetHookVars 317 | Roll_MemHook = 0 318 | Pitch_MemHook = 0 319 | Heave_MemHook = 0 320 | Yaw_MemHook = 0 321 | Sway_MemHook = 0 322 | Surge_MemHook = 0 323 | Extra1_MemHook = 0 324 | Extra2_MemHook = 0 325 | Extra3_MemHook = 0 326 | End Sub 327 | 328 | Public Sub ResetDashVars() Implements IPlugin_Game.ResetDashVars 329 | Dash_1_Output = "" 330 | Dash_2_Output = "" 331 | Dash_3_Output = "" 332 | Dash_4_Output = "" 333 | Dash_5_Output = "" 334 | Dash_6_Output = "" 335 | Dash_7_Output = "" 336 | Dash_8_Output = "" 337 | Dash_9_Output = "" 338 | Dash_10_Output = "" 339 | Dash_11_Output = "" 340 | Dash_12_Output = "" 341 | Dash_13_Output = "" 342 | Dash_14_Output = "" 343 | Dash_15_Output = "" 344 | Dash_16_Output = "" 345 | Dash_17_Output = "" 346 | Dash_18_Output = "" 347 | Dash_19_Output = "" 348 | Dash_20_Output = "" 349 | End Sub 350 | 351 | Public Sub ResetVibeVars() Implements IPlugin_Game.ResetVibeVars 352 | Vibe_1_Output = "" 353 | Vibe_2_Output = "" 354 | Vibe_3_Output = "" 355 | Vibe_4_Output = "" 356 | Vibe_5_Output = "" 357 | Vibe_6_Output = "" 358 | Vibe_7_Output = "" 359 | Vibe_8_Output = "" 360 | Vibe_9_Output = "" 361 | End Sub 362 | 363 | Public ReadOnly Property PluginAuthorsName() As String Implements IPlugin_Game.PluginAuthorsName 364 | Get 365 | Return _PluginAuthorsName 366 | End Get 367 | End Property 368 | 369 | Public ReadOnly Property Name() As String Implements IPlugin_Game.GameName 370 | Get 371 | Return _GameName 372 | End Get 373 | End Property 374 | 375 | Public ReadOnly Property ProcessName() As String Implements IPlugin_Game.ProcessName 376 | Get 377 | Return _ProcessName 378 | End Get 379 | End Property 380 | 381 | Public ReadOnly Property Port() As String Implements IPlugin_Game.Port 382 | Get 383 | Return _Port 384 | End Get 385 | End Property 386 | 387 | Public ReadOnly Property Enable_MemoryMap() As Boolean Implements IPlugin_Game.Enable_MemoryMap 388 | Get 389 | Return _Enable_MemoryMap 390 | End Get 391 | End Property 392 | 393 | Public ReadOnly Property Enable_MemoryHook() As Boolean Implements IPlugin_Game.Enable_MemoryHook 394 | Get 395 | Return _Enable_MemoryHook 396 | End Get 397 | End Property 398 | 399 | Public ReadOnly Property RequiresPatchingPath() As Boolean Implements IPlugin_Game.RequiresPatchingPath 400 | Get 401 | Return _RequiresPatchingPath 402 | End Get 403 | End Property 404 | 405 | Public ReadOnly Property RequiresSecondCheck() As Boolean Implements IPlugin_Game.RequiresSecondCheck 406 | Get 407 | Return _RequiresSecondCheck 408 | End Get 409 | End Property 410 | 411 | Public ReadOnly Property Enable_DashBoard() As Boolean Implements IPlugin_Game.Enable_DashBoard 412 | Get 413 | Return _Enable_DashBoard 414 | End Get 415 | End Property 416 | 417 | Public ReadOnly Property Enable_GameVibe() As Boolean Implements IPlugin_Game.Enable_GameVibe 418 | Get 419 | Return _Enable_GameVibe 420 | End Get 421 | End Property 422 | 423 | Public Function Get_RollOutput() As Double Implements IPlugin_Game.Get_RollOutput 424 | Return Roll_Output 425 | End Function 426 | 427 | Public Function Get_PitchOutput() As Double Implements IPlugin_Game.Get_PitchOutput 428 | Return Pitch_Output 429 | End Function 430 | 431 | Public Function Get_HeaveOutput() As Double Implements IPlugin_Game.Get_HeaveOutput 432 | Return Heave_Output 433 | End Function 434 | 435 | Public Function Get_YawOutput() As Double Implements IPlugin_Game.Get_YawOutput 436 | Return Yaw_Output 437 | End Function 438 | 439 | Public Function Get_SwayOutput() As Double Implements IPlugin_Game.Get_SwayOutput 440 | Return Sway_Output 441 | End Function 442 | 443 | Public Function Get_SurgeOutput() As Double Implements IPlugin_Game.Get_SurgeOutput 444 | Return Surge_Output 445 | End Function 446 | 447 | Public Function Get_Extra1Output() As Double Implements IPlugin_Game.Get_Extra1Output 448 | Return Extra1_Output 449 | End Function 450 | 451 | Public Function Get_Extra2Output() As Double Implements IPlugin_Game.Get_Extra2Output 452 | Return Extra2_Output 453 | End Function 454 | 455 | Public Function Get_Extra3Output() As Double Implements IPlugin_Game.Get_Extra3Output 456 | Return Extra3_Output 457 | End Function 458 | 459 | Public Function Get_Dash_1_Output() As String Implements IPlugin_Game.Get_Dash1_Output 460 | Return Dash_1_Output 461 | End Function 462 | 463 | Public Function Get_Dash_2_Output() As String Implements IPlugin_Game.Get_Dash2_Output 464 | Return Dash_2_Output 465 | End Function 466 | 467 | Public Function Get_Dash_3_Output() As String Implements IPlugin_Game.Get_Dash3_Output 468 | Return Dash_3_Output 469 | End Function 470 | 471 | Public Function Get_Dash_4_Output() As String Implements IPlugin_Game.Get_Dash4_Output 472 | Return Dash_4_Output 473 | End Function 474 | 475 | Public Function Get_Dash_5_Output() As String Implements IPlugin_Game.Get_Dash5_Output 476 | Return Dash_5_Output 477 | End Function 478 | 479 | Public Function Get_Dash_6_Output() As String Implements IPlugin_Game.Get_Dash6_Output 480 | Return Dash_6_Output 481 | End Function 482 | 483 | Public Function Get_Dash_7_Output() As String Implements IPlugin_Game.Get_Dash7_Output 484 | Return Dash_7_Output 485 | End Function 486 | 487 | Public Function Get_Dash_8_Output() As String Implements IPlugin_Game.Get_Dash8_Output 488 | Return Dash_8_Output 489 | End Function 490 | 491 | Public Function Get_Dash_9_Output() As String Implements IPlugin_Game.Get_Dash9_Output 492 | Return Dash_9_Output 493 | End Function 494 | 495 | Public Function Get_Dash_10_Output() As String Implements IPlugin_Game.Get_Dash10_Output 496 | Return Dash_10_Output 497 | End Function 498 | 499 | Public Function Get_Dash_11_Output() As String Implements IPlugin_Game.Get_Dash11_Output 500 | Return Dash_11_Output 501 | End Function 502 | 503 | Public Function Get_Dash_12_Output() As String Implements IPlugin_Game.Get_Dash12_Output 504 | Return Dash_12_Output 505 | End Function 506 | 507 | Public Function Get_Dash_13_Output() As String Implements IPlugin_Game.Get_Dash13_Output 508 | Return Dash_13_Output 509 | End Function 510 | 511 | Public Function Get_Dash_14_Output() As String Implements IPlugin_Game.Get_Dash14_Output 512 | Return Dash_14_Output 513 | End Function 514 | 515 | Public Function Get_Dash_15_Output() As String Implements IPlugin_Game.Get_Dash15_Output 516 | Return Dash_15_Output 517 | End Function 518 | 519 | Public Function Get_Dash_16_Output() As String Implements IPlugin_Game.Get_Dash16_Output 520 | Return Dash_16_Output 521 | End Function 522 | 523 | Public Function Get_Dash_17_Output() As String Implements IPlugin_Game.Get_Dash17_Output 524 | Return Dash_17_Output 525 | End Function 526 | 527 | Public Function Get_Dash_18_Output() As String Implements IPlugin_Game.Get_Dash18_Output 528 | Return Dash_18_Output 529 | End Function 530 | 531 | Public Function Get_Dash_19_Output() As String Implements IPlugin_Game.Get_Dash19_Output 532 | Return Dash_19_Output 533 | End Function 534 | 535 | Public Function Get_Dash_20_Output() As String Implements IPlugin_Game.Get_Dash20_Output 536 | Return Dash_20_Output 537 | End Function 538 | 539 | Public Function Get_RollMemHook() As Double Implements IPlugin_Game.Get_RollMemHook 540 | Return Roll_MemHook 541 | End Function 542 | 543 | Public Function Get_PitchMemHook() As Double Implements IPlugin_Game.Get_PitchMemHook 544 | Return Pitch_MemHook 545 | End Function 546 | 547 | Public Function Get_HeaveMemHook() As Double Implements IPlugin_Game.Get_HeaveMemHook 548 | Return Heave_MemHook 549 | End Function 550 | 551 | Public Function Get_YawMemHook() As Double Implements IPlugin_Game.Get_YawMemHook 552 | Return Yaw_MemHook 553 | End Function 554 | 555 | Public Function Get_SwayMemHook() As Double Implements IPlugin_Game.Get_SwayMemHook 556 | Return Sway_MemHook 557 | End Function 558 | 559 | Public Function Get_SurgeMemHook() As Double Implements IPlugin_Game.Get_SurgeMemHook 560 | Return Surge_MemHook 561 | End Function 562 | 563 | Public Function Get_Extra1MemHook() As Double Implements IPlugin_Game.Get_Extra1MemHook 564 | Return Extra1_MemHook 565 | End Function 566 | 567 | Public Function Get_Extra2MemHook() As Double Implements IPlugin_Game.Get_Extra2MemHook 568 | Return Extra2_MemHook 569 | End Function 570 | 571 | Public Function Get_Extra3MemHook() As Double Implements IPlugin_Game.Get_Extra3MemHook 572 | Return Extra3_MemHook 573 | End Function 574 | 575 | Public Function Get_RollMemMap() As Double Implements IPlugin_Game.Get_RollMemMap 576 | Return Roll_MemMap 577 | End Function 578 | 579 | Public Function Get_PitchMemMap() As Double Implements IPlugin_Game.Get_PitchMemMap 580 | Return Pitch_MemMap 581 | End Function 582 | 583 | Public Function Get_HeaveMemMap() As Double Implements IPlugin_Game.Get_HeaveMemMap 584 | Return Heave_MemMap 585 | End Function 586 | 587 | Public Function Get_YawMemMap() As Double Implements IPlugin_Game.Get_YawMemMap 588 | Return Yaw_MemMap 589 | End Function 590 | 591 | Public Function Get_SwayMemMap() As Double Implements IPlugin_Game.Get_SwayMemMap 592 | Return Sway_MemMap 593 | End Function 594 | 595 | Public Function Get_SurgeMemMap() As Double Implements IPlugin_Game.Get_SurgeMemMap 596 | Return Surge_MemMap 597 | End Function 598 | 599 | Public Function Get_Extra1MemMap() As Double Implements IPlugin_Game.Get_Extra1MemMap 600 | Return Extra1_MemMap 601 | End Function 602 | 603 | Public Function Get_Extra2MemMap() As Double Implements IPlugin_Game.Get_Extra2MemMap 604 | Return Extra2_MemMap 605 | End Function 606 | 607 | Public Function Get_Extra3MemMap() As Double Implements IPlugin_Game.Get_Extra3MemMap 608 | Return Extra3_MemMap 609 | End Function 610 | 611 | Public Function Get_Vibe1_Output() As String Implements IPlugin_Game.Get_Vibe1_Output 612 | Return Vibe_1_Output 613 | End Function 614 | 615 | Public Function Get_Vibe2_Output() As String Implements IPlugin_Game.Get_Vibe2_Output 616 | Return Vibe_2_Output 617 | End Function 618 | 619 | Public Function Get_Vibe3_Output() As String Implements IPlugin_Game.Get_Vibe3_Output 620 | Return Vibe_3_Output 621 | End Function 622 | 623 | Public Function Get_Vibe4_Output() As String Implements IPlugin_Game.Get_Vibe4_Output 624 | Return Vibe_4_Output 625 | End Function 626 | 627 | Public Function Get_Vibe5_Output() As String Implements IPlugin_Game.Get_Vibe5_Output 628 | Return Vibe_5_Output 629 | End Function 630 | 631 | Public Function Get_Vibe6_Output() As String Implements IPlugin_Game.Get_Vibe6_Output 632 | Return Vibe_6_Output 633 | End Function 634 | 635 | Public Function Get_Vibe7_Output() As String Implements IPlugin_Game.Get_Vibe7_Output 636 | Return Vibe_7_Output 637 | End Function 638 | 639 | Public Function Get_Vibe8_Output() As String Implements IPlugin_Game.Get_Vibe8_Output 640 | Return Vibe_8_Output 641 | End Function 642 | 643 | Public Function Get_Vibe9_Output() As String Implements IPlugin_Game.Get_Vibe9_Output 644 | Return Vibe_9_Output 645 | End Function 646 | 647 | Public ReadOnly Property PluginOptions() As String Implements IPlugin_Game.PluginOptions 648 | Get 649 | Return _PluginOptions 650 | End Get 651 | End Property 652 | #End Region 653 | End Class -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/GamePlugin.vbproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 9.0.30729 7 | 2.0 8 | {111AFF88-CCF4-4359-BC0C-A55F4F0A4197} 9 | Library 10 | QuPlay_GamePlugin 11 | QuPlay_GamePlugin 12 | 512 13 | Windows 14 | v4.0 15 | On 16 | Binary 17 | On 18 | On 19 | 20 | 21 | 22 | 23 | 3.5 24 | 25 | 26 | true 27 | full 28 | true 29 | true 30 | bin\Debug\ 31 | QuPlay_GamePlugin.xml 32 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,42353,42354,42355 33 | 34 | 35 | pdbonly 36 | false 37 | true 38 | true 39 | bin\Release\ 40 | QuPlay_GamePlugin.xml 41 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,42353,42354,42355 42 | 43 | 44 | 45 | False 46 | bin\Debug\Game_PluginAPI.dll 47 | 48 | 49 | 50 | 51 | 3.5 52 | 53 | 54 | 3.5 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | True 71 | Application.myapp 72 | 73 | 74 | True 75 | True 76 | Resources.resx 77 | 78 | 79 | True 80 | Settings.settings 81 | True 82 | 83 | 84 | 85 | 86 | VbMyResourcesResXFileCodeGenerator 87 | Resources.Designer.vb 88 | My.Resources 89 | Designer 90 | 91 | 92 | 93 | 94 | MyApplicationCodeGenerator 95 | Application.Designer.vb 96 | 97 | 98 | SettingsSingleFileGenerator 99 | My 100 | Settings.Designer.vb 101 | 102 | 103 | 104 | 111 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/Application.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/Application.myapp: -------------------------------------------------------------------------------- 1 |  2 | 3 | false 4 | false 5 | 0 6 | true 7 | 0 8 | 1 9 | true 10 | 11 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/AssemblyInfo.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Reflection 3 | Imports 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 | 9 | ' Review the values of the assembly attributes 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 'The following GUID is for the ID of the typelib if this project is exposed to COM 21 | 22 | 23 | ' Version information for an assembly consists of the following four values: 24 | ' 25 | ' Major Version 26 | ' Minor Version 27 | ' Build Number 28 | ' Revision 29 | ' 30 | ' You can specify all the values or you can default the Build and Revision Numbers 31 | ' by using the '*' as shown below: 32 | ' 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/Resources.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | Imports System 15 | 16 | Namespace My.Resources 17 | 18 | 'This class was auto-generated by the StronglyTypedResourceBuilder 19 | 'class via a tool like ResGen or Visual Studio. 20 | 'To add or remove a member, edit your .ResX file then rerun ResGen 21 | 'with the /str option, or rebuild your VS project. 22 | ''' 23 | ''' A strongly-typed resource class, for looking up localized strings, etc. 24 | ''' 25 | _ 29 | Friend Module Resources 30 | 31 | Private resourceMan As Global.System.Resources.ResourceManager 32 | 33 | Private resourceCulture As Global.System.Globalization.CultureInfo 34 | 35 | ''' 36 | ''' Returns the cached ResourceManager instance used by this class. 37 | ''' 38 | _ 39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager 40 | Get 41 | If Object.ReferenceEquals(resourceMan, Nothing) Then 42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("QuPlay_GamePlugin.Resources", GetType(Resources).Assembly) 43 | resourceMan = temp 44 | End If 45 | Return resourceMan 46 | End Get 47 | End Property 48 | 49 | ''' 50 | ''' Overrides the current thread's CurrentUICulture property for all 51 | ''' resource lookups using this strongly typed resource class. 52 | ''' 53 | _ 54 | Friend Property Culture() As Global.System.Globalization.CultureInfo 55 | Get 56 | Return resourceCulture 57 | End Get 58 | Set 59 | resourceCulture = value 60 | End Set 61 | End Property 62 | End Module 63 | End Namespace 64 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/Settings.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | _ 20 | Partial Friend NotInheritable Class MySettings 21 | Inherits Global.System.Configuration.ApplicationSettingsBase 22 | 23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) 24 | 25 | #Region "My.Settings Auto-Save Functionality" 26 | #If _MyType = "WindowsForms" Then 27 | Private Shared addedHandler As Boolean 28 | 29 | Private Shared addedHandlerLockObject As New Object 30 | 31 | _ 32 | Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) 33 | If My.Application.SaveMySettingsOnExit Then 34 | My.Settings.Save() 35 | End If 36 | End Sub 37 | #End If 38 | #End Region 39 | 40 | Public Shared ReadOnly Property [Default]() As MySettings 41 | Get 42 | 43 | #If _MyType = "WindowsForms" Then 44 | If Not addedHandler Then 45 | SyncLock addedHandlerLockObject 46 | If Not addedHandler Then 47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings 48 | addedHandler = True 49 | End If 50 | End SyncLock 51 | End If 52 | #End If 53 | Return defaultInstance 54 | End Get 55 | End Property 56 | End Class 57 | End Namespace 58 | 59 | Namespace My 60 | 61 | _ 64 | Friend Module MySettingsProperty 65 | 66 | _ 67 | Friend ReadOnly Property Settings() As Global.QuPlay_GamePlugin.My.MySettings 68 | Get 69 | Return Global.QuPlay_GamePlugin.My.MySettings.Default 70 | End Get 71 | End Property 72 | End Module 73 | End Namespace 74 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/_svn/all-wcprops: -------------------------------------------------------------------------------- 1 | K 25 2 | svn:wc:ra_dav:version-url 3 | V 61 4 | /svn/!svn/ver/14342/PluginExample/AdditionPlugin/My%20Project 5 | END 6 | Resources.Designer.vb 7 | K 25 8 | svn:wc:ra_dav:version-url 9 | V 83 10 | /svn/!svn/ver/14342/PluginExample/AdditionPlugin/My%20Project/Resources.Designer.vb 11 | END 12 | Settings.settings 13 | K 25 14 | svn:wc:ra_dav:version-url 15 | V 79 16 | /svn/!svn/ver/14342/PluginExample/AdditionPlugin/My%20Project/Settings.settings 17 | END 18 | AssemblyInfo.vb 19 | K 25 20 | svn:wc:ra_dav:version-url 21 | V 77 22 | /svn/!svn/ver/14342/PluginExample/AdditionPlugin/My%20Project/AssemblyInfo.vb 23 | END 24 | Settings.Designer.vb 25 | K 25 26 | svn:wc:ra_dav:version-url 27 | V 82 28 | /svn/!svn/ver/14342/PluginExample/AdditionPlugin/My%20Project/Settings.Designer.vb 29 | END 30 | Application.Designer.vb 31 | K 25 32 | svn:wc:ra_dav:version-url 33 | V 85 34 | /svn/!svn/ver/14342/PluginExample/AdditionPlugin/My%20Project/Application.Designer.vb 35 | END 36 | Application.myapp 37 | K 25 38 | svn:wc:ra_dav:version-url 39 | V 79 40 | /svn/!svn/ver/14342/PluginExample/AdditionPlugin/My%20Project/Application.myapp 41 | END 42 | Resources.resx 43 | K 25 44 | svn:wc:ra_dav:version-url 45 | V 76 46 | /svn/!svn/ver/14342/PluginExample/AdditionPlugin/My%20Project/Resources.resx 47 | END 48 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/_svn/entries: -------------------------------------------------------------------------------- 1 | 9 2 | 3 | dir 4 | 14342 5 | https://wtfnext.svn.codeplex.com/svn/PluginExample/AdditionPlugin/My%20Project 6 | https://wtfnext.svn.codeplex.com/svn 7 | 8 | 9 | 10 | 2009-05-06T17:31:59.177212Z 11 | 14342 12 | unknown 13 | 14 | 15 | svn:special svn:externals svn:needs-lock 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 856ff616-a6d3-46b1-938b-83cc1fee1ebb 28 | 29 | 30 | 31 | 32 | 33 | 34 | 0 35 | 36 | Resources.Designer.vb 37 | file 38 | 39 | 40 | 41 | 42 | 2009-05-04T20:37:51.422539Z 43 | b2705b8b9ace0e3a2c5181879db894e9 44 | 2009-05-06T17:31:59.177212Z 45 | 14342 46 | unknown 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 2802 69 | 70 | Settings.settings 71 | file 72 | 73 | 74 | 75 | 76 | 2009-05-04T20:37:51.438164Z 77 | 4a12ce12282d0ee237b12e7513037c50 78 | 2009-05-06T17:31:59.177212Z 79 | 14342 80 | unknown 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 279 103 | 104 | AssemblyInfo.vb 105 | file 106 | 107 | 108 | 109 | 110 | 2009-05-04T20:37:51.375662Z 111 | 6bc2a9815f5eca7949dcaa59f3d3f940 112 | 2009-05-06T17:31:59.177212Z 113 | 14342 114 | unknown 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 1209 137 | 138 | Settings.Designer.vb 139 | file 140 | 141 | 142 | 143 | 144 | 2009-05-04T20:37:51.469415Z 145 | 95f28532d3053a6a796bff1f6aaf47ba 146 | 2009-05-06T17:31:59.177212Z 147 | 14342 148 | unknown 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 3048 171 | 172 | Application.Designer.vb 173 | file 174 | 175 | 176 | 177 | 178 | 2009-05-04T20:37:51.344411Z 179 | 40f1ddc1960c42b69f163425a52b58e5 180 | 2009-05-06T17:31:59.177212Z 181 | 14342 182 | unknown 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 440 205 | 206 | Application.myapp 207 | file 208 | 209 | 210 | 211 | 212 | 2009-05-04T20:37:51.328786Z 213 | 9a61ce94d05f84833fa4cff2de9a56b2 214 | 2009-05-06T17:31:59.177212Z 215 | 14342 216 | unknown 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 481 239 | 240 | Resources.resx 241 | file 242 | 243 | 244 | 245 | 246 | 2009-05-04T20:37:51.406913Z 247 | 0cd8c971317d19bbed44757809bcb92b 248 | 2009-05-06T17:31:59.177212Z 249 | 14342 250 | unknown 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 5612 273 | 274 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/_svn/format: -------------------------------------------------------------------------------- 1 | 9 2 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/_svn/text-base/Application.Designer.vb.svn-base: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:2.0.50727.3082 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/_svn/text-base/Application.myapp.svn-base: -------------------------------------------------------------------------------- 1 |  2 | 3 | false 4 | false 5 | 0 6 | true 7 | 0 8 | 1 9 | true 10 | 11 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/_svn/text-base/AssemblyInfo.vb.svn-base: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Reflection 3 | Imports 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 | 9 | ' Review the values of the assembly attributes 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 'The following GUID is for the ID of the typelib if this project is exposed to COM 21 | 22 | 23 | ' Version information for an assembly consists of the following four values: 24 | ' 25 | ' Major Version 26 | ' Minor Version 27 | ' Build Number 28 | ' Revision 29 | ' 30 | ' You can specify all the values or you can default the Build and Revision Numbers 31 | ' by using the '*' as shown below: 32 | ' 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/_svn/text-base/Resources.Designer.vb.svn-base: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:2.0.50727.3082 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My.Resources 16 | 17 | 'This class was auto-generated by the StronglyTypedResourceBuilder 18 | 'class via a tool like ResGen or Visual Studio. 19 | 'To add or remove a member, edit your .ResX file then rerun ResGen 20 | 'with the /str option, or rebuild your VS project. 21 | ' 22 | ' A strongly-typed resource class, for looking up localized strings, etc. 23 | ' 24 | _ 28 | Friend Module Resources 29 | 30 | Private resourceMan As Global.System.Resources.ResourceManager 31 | 32 | Private resourceCulture As Global.System.Globalization.CultureInfo 33 | 34 | ' 35 | ' Returns the cached ResourceManager instance used by this class. 36 | ' 37 | _ 38 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager 39 | Get 40 | If Object.ReferenceEquals(resourceMan, Nothing) Then 41 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("AdditionPlugin.Resources", GetType(Resources).Assembly) 42 | resourceMan = temp 43 | End If 44 | Return resourceMan 45 | End Get 46 | End Property 47 | 48 | ' 49 | ' Overrides the current thread's CurrentUICulture property for all 50 | ' resource lookups using this strongly typed resource class. 51 | ' 52 | _ 53 | Friend Property Culture() As Global.System.Globalization.CultureInfo 54 | Get 55 | Return resourceCulture 56 | End Get 57 | Set(ByVal value As Global.System.Globalization.CultureInfo) 58 | resourceCulture = value 59 | End Set 60 | End Property 61 | End Module 62 | End Namespace 63 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/_svn/text-base/Resources.resx.svn-base: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/_svn/text-base/Settings.Designer.vb.svn-base: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:2.0.50727.3082 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | _ 20 | Partial Friend NotInheritable Class MySettings 21 | Inherits Global.System.Configuration.ApplicationSettingsBase 22 | 23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) 24 | 25 | #Region "My.Settings Auto-Save Functionality" 26 | #If _MyType = "WindowsForms" Then 27 | Private Shared addedHandler As Boolean 28 | 29 | Private Shared addedHandlerLockObject As New Object 30 | 31 | _ 32 | Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) 33 | If My.Application.SaveMySettingsOnExit Then 34 | My.Settings.Save() 35 | End If 36 | End Sub 37 | #End If 38 | #End Region 39 | 40 | Public Shared ReadOnly Property [Default]() As MySettings 41 | Get 42 | 43 | #If _MyType = "WindowsForms" Then 44 | If Not addedHandler Then 45 | SyncLock addedHandlerLockObject 46 | If Not addedHandler Then 47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings 48 | addedHandler = True 49 | End If 50 | End SyncLock 51 | End If 52 | #End If 53 | Return defaultInstance 54 | End Get 55 | End Property 56 | End Class 57 | End Namespace 58 | 59 | Namespace My 60 | 61 | _ 64 | Friend Module MySettingsProperty 65 | 66 | _ 67 | Friend ReadOnly Property Settings() As Global.AdditionPlugin.My.MySettings 68 | Get 69 | Return Global.AdditionPlugin.My.MySettings.Default 70 | End Get 71 | End Property 72 | End Module 73 | End Namespace 74 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/My Project/_svn/text-base/Settings.settings.svn-base: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/bin/Debug/Game_PluginAPI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/SimToolsGamePlugin/GamePlugin/bin/Debug/Game_PluginAPI.dll -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/bin/Debug/PluginValidator.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/SimToolsGamePlugin/GamePlugin/bin/Debug/PluginValidator.exe -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/bin/Release/Game_PluginAPI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/SimToolsGamePlugin/GamePlugin/bin/Release/Game_PluginAPI.dll -------------------------------------------------------------------------------- /SimToolsGamePlugin/GamePlugin/bin/Release/PluginValidator.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/SimToolsGamePlugin/GamePlugin/bin/Release/PluginValidator.exe -------------------------------------------------------------------------------- /SimpleUdpReciever/.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | [Dd]ebug/ 17 | [Dd]ebugPublic/ 18 | [Rr]elease/ 19 | [Rr]eleases/ 20 | x64/ 21 | x86/ 22 | bld/ 23 | [Bb]in/ 24 | [Oo]bj/ 25 | [Ll]og/ 26 | 27 | # Visual Studio 2015/2017 cache/options directory 28 | .vs/ 29 | # Uncomment if you have tasks that create the project's static files in wwwroot 30 | #wwwroot/ 31 | 32 | # Visual Studio 2017 auto generated files 33 | Generated\ Files/ 34 | 35 | # MSTest test Results 36 | [Tt]est[Rr]esult*/ 37 | [Bb]uild[Ll]og.* 38 | 39 | # NUNIT 40 | *.VisualState.xml 41 | TestResult.xml 42 | 43 | # Build Results of an ATL Project 44 | [Dd]ebugPS/ 45 | [Rr]eleasePS/ 46 | dlldata.c 47 | 48 | # Benchmark Results 49 | BenchmarkDotNet.Artifacts/ 50 | 51 | # .NET Core 52 | project.lock.json 53 | project.fragment.lock.json 54 | artifacts/ 55 | **/Properties/launchSettings.json 56 | 57 | # StyleCop 58 | StyleCopReport.xml 59 | 60 | # Files built by Visual Studio 61 | *_i.c 62 | *_p.c 63 | *_i.h 64 | *.ilk 65 | *.meta 66 | *.obj 67 | *.pch 68 | *.pdb 69 | *.pgc 70 | *.pgd 71 | *.rsp 72 | *.sbr 73 | *.tlb 74 | *.tli 75 | *.tlh 76 | *.tmp 77 | *.tmp_proj 78 | *.log 79 | *.vspscc 80 | *.vssscc 81 | .builds 82 | *.pidb 83 | *.svclog 84 | *.scc 85 | 86 | # Chutzpah Test files 87 | _Chutzpah* 88 | 89 | # Visual C++ cache files 90 | ipch/ 91 | *.aps 92 | *.ncb 93 | *.opendb 94 | *.opensdf 95 | *.sdf 96 | *.cachefile 97 | *.VC.db 98 | *.VC.VC.opendb 99 | 100 | # Visual Studio profiler 101 | *.psess 102 | *.vsp 103 | *.vspx 104 | *.sap 105 | 106 | # Visual Studio Trace Files 107 | *.e2e 108 | 109 | # TFS 2012 Local Workspace 110 | $tf/ 111 | 112 | # Guidance Automation Toolkit 113 | *.gpState 114 | 115 | # ReSharper is a .NET coding add-in 116 | _ReSharper*/ 117 | *.[Rr]e[Ss]harper 118 | *.DotSettings.user 119 | 120 | # JustCode is a .NET coding add-in 121 | .JustCode 122 | 123 | # TeamCity is a build add-in 124 | _TeamCity* 125 | 126 | # DotCover is a Code Coverage Tool 127 | *.dotCover 128 | 129 | # AxoCover is a Code Coverage Tool 130 | .axoCover/* 131 | !.axoCover/settings.json 132 | 133 | # Visual Studio code coverage results 134 | *.coverage 135 | *.coveragexml 136 | 137 | # NCrunch 138 | _NCrunch_* 139 | .*crunch*.local.xml 140 | nCrunchTemp_* 141 | 142 | # MightyMoose 143 | *.mm.* 144 | AutoTest.Net/ 145 | 146 | # Web workbench (sass) 147 | .sass-cache/ 148 | 149 | # Installshield output folder 150 | [Ee]xpress/ 151 | 152 | # DocProject is a documentation generator add-in 153 | DocProject/buildhelp/ 154 | DocProject/Help/*.HxT 155 | DocProject/Help/*.HxC 156 | DocProject/Help/*.hhc 157 | DocProject/Help/*.hhk 158 | DocProject/Help/*.hhp 159 | DocProject/Help/Html2 160 | DocProject/Help/html 161 | 162 | # Click-Once directory 163 | publish/ 164 | 165 | # Publish Web Output 166 | *.[Pp]ublish.xml 167 | *.azurePubxml 168 | # Note: Comment the next line if you want to checkin your web deploy settings, 169 | # but database connection strings (with potential passwords) will be unencrypted 170 | *.pubxml 171 | *.publishproj 172 | 173 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 174 | # checkin your Azure Web App publish settings, but sensitive information contained 175 | # in these scripts will be unencrypted 176 | PublishScripts/ 177 | 178 | # NuGet Packages 179 | *.nupkg 180 | # The packages folder can be ignored because of Package Restore 181 | **/[Pp]ackages/* 182 | # except build/, which is used as an MSBuild target. 183 | !**/[Pp]ackages/build/ 184 | # Uncomment if necessary however generally it will be regenerated when needed 185 | #!**/[Pp]ackages/repositories.config 186 | # NuGet v3's project.json files produces more ignorable files 187 | *.nuget.props 188 | *.nuget.targets 189 | 190 | # Microsoft Azure Build Output 191 | csx/ 192 | *.build.csdef 193 | 194 | # Microsoft Azure Emulator 195 | ecf/ 196 | rcf/ 197 | 198 | # Windows Store app package directories and files 199 | AppPackages/ 200 | BundleArtifacts/ 201 | Package.StoreAssociation.xml 202 | _pkginfo.txt 203 | *.appx 204 | 205 | # Visual Studio cache files 206 | # files ending in .cache can be ignored 207 | *.[Cc]ache 208 | # but keep track of directories ending in .cache 209 | !*.[Cc]ache/ 210 | 211 | # Others 212 | ClientBin/ 213 | ~$* 214 | *~ 215 | *.dbmdl 216 | *.dbproj.schemaview 217 | *.jfm 218 | *.pfx 219 | *.publishsettings 220 | orleans.codegen.cs 221 | 222 | # Since there are multiple workflows, uncomment next line to ignore bower_components 223 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 224 | #bower_components/ 225 | 226 | # RIA/Silverlight projects 227 | Generated_Code/ 228 | 229 | # Backup & report files from converting an old project file 230 | # to a newer Visual Studio version. Backup files are not needed, 231 | # because we have git ;-) 232 | _UpgradeReport_Files/ 233 | Backup*/ 234 | UpgradeLog*.XML 235 | UpgradeLog*.htm 236 | 237 | # SQL Server files 238 | *.mdf 239 | *.ldf 240 | *.ndf 241 | 242 | # Business Intelligence projects 243 | *.rdl.data 244 | *.bim.layout 245 | *.bim_*.settings 246 | 247 | # Microsoft Fakes 248 | FakesAssemblies/ 249 | 250 | # GhostDoc plugin setting file 251 | *.GhostDoc.xml 252 | 253 | # Node.js Tools for Visual Studio 254 | .ntvs_analysis.dat 255 | node_modules/ 256 | 257 | # TypeScript v1 declaration files 258 | typings/ 259 | 260 | # Visual Studio 6 build log 261 | *.plg 262 | 263 | # Visual Studio 6 workspace options file 264 | *.opt 265 | 266 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 267 | *.vbw 268 | 269 | # Visual Studio LightSwitch build output 270 | **/*.HTMLClient/GeneratedArtifacts 271 | **/*.DesktopClient/GeneratedArtifacts 272 | **/*.DesktopClient/ModelManifest.xml 273 | **/*.Server/GeneratedArtifacts 274 | **/*.Server/ModelManifest.xml 275 | _Pvt_Extensions 276 | 277 | # Paket dependency manager 278 | .paket/paket.exe 279 | paket-files/ 280 | 281 | # FAKE - F# Make 282 | .fake/ 283 | 284 | # JetBrains Rider 285 | .idea/ 286 | *.sln.iml 287 | 288 | # CodeRush 289 | .cr/ 290 | 291 | # Python Tools for Visual Studio (PTVS) 292 | __pycache__/ 293 | *.pyc 294 | 295 | # Cake - Uncomment if you are using it 296 | # tools/** 297 | # !tools/packages.config 298 | 299 | # Tabs Studio 300 | *.tss 301 | 302 | # Telerik's JustMock configuration file 303 | *.jmconfig 304 | 305 | # BizTalk build output 306 | *.btp.cs 307 | *.btm.cs 308 | *.odx.cs 309 | *.xsd.cs 310 | 311 | # OpenCover UI analysis results 312 | OpenCover/ 313 | 314 | # Azure Stream Analytics local run output 315 | ASALocalRun/ -------------------------------------------------------------------------------- /SimpleUdpReciever/SimpleUdpReciever.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleUdpReciever", "SimpleUdpReciever\SimpleUdpReciever.csproj", "{3A48A6B4-854F-4F5D-9871-03F8BE205C12}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|x86 = Debug|x86 9 | Release|x86 = Release|x86 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {3A48A6B4-854F-4F5D-9871-03F8BE205C12}.Debug|x86.ActiveCfg = Debug|x86 13 | {3A48A6B4-854F-4F5D-9871-03F8BE205C12}.Debug|x86.Build.0 = Debug|x86 14 | {3A48A6B4-854F-4F5D-9871-03F8BE205C12}.Release|x86.ActiveCfg = Release|x86 15 | {3A48A6B4-854F-4F5D-9871-03F8BE205C12}.Release|x86.Build.0 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /SimpleUdpReciever/SimpleUdpReciever/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Net.Sockets; 5 | using System.Net; 6 | 7 | namespace SimpleUdpReciever 8 | { 9 | /// 10 | /// Simple implementation of the Udp Reciever 11 | /// Autor: Claudio Silva - DDK 12 | /// Blog: https://clclaudio.wordpress.com 13 | /// 14 | class Program 15 | { 16 | static void Main(string[] args) 17 | { 18 | string ip = "127.0.0.1"; 19 | int port = 4123; 20 | string name_space = typeof(Program).Namespace; 21 | 22 | try { 23 | IPEndPoint remoteSender = new IPEndPoint(IPAddress.Parse(ip), port); 24 | 25 | // Create UDP client 26 | UdpClient client = new UdpClient(port); 27 | UdpState state = new UdpState(client, remoteSender); 28 | 29 | // Start async receiving 30 | client.BeginReceive(new AsyncCallback(DataReceived), state); 31 | 32 | // Wait for any key to terminate application 33 | 34 | Console.Write(name_space + ": Waiting for packages\n"); 35 | Console.ReadKey(); 36 | client.Close(); 37 | Console.Write(name_space + ": Finalized\n"); 38 | } 39 | catch (Exception e) { 40 | Console.Write(name_space + ": ERROR : " + e); 41 | } 42 | } 43 | 44 | private static void DataReceived(IAsyncResult ar) 45 | { 46 | UdpClient c = (UdpClient)((UdpState)ar.AsyncState).c; 47 | IPEndPoint wantedIpEndPoint = (IPEndPoint)((UdpState)(ar.AsyncState)).e; 48 | IPEndPoint receivedIpEndPoint = new IPEndPoint(IPAddress.Any, 0); 49 | Byte[] receiveBytes = c.EndReceive(ar, ref receivedIpEndPoint); 50 | 51 | // Convert data to ASCII and print in console 52 | string receivedText = ASCIIEncoding.ASCII.GetString(receiveBytes); 53 | Console.Write(receivedText + "\n"); 54 | 55 | // Restart listening for udp data packages 56 | c.BeginReceive(new AsyncCallback(DataReceived), ar.AsyncState); 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /SimpleUdpReciever/SimpleUdpReciever/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("SimpleUdpReciever")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("SimpleUdpReciever")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2010")] 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("82fac1ff-ba81-45ec-9340-d78c1501b76a")] 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 | -------------------------------------------------------------------------------- /SimpleUdpReciever/SimpleUdpReciever/SimpleUdpReciever.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {3A48A6B4-854F-4F5D-9871-03F8BE205C12} 9 | Exe 10 | Properties 11 | SimpleUdpReciever 12 | SimpleUdpReciever 13 | v2.0 14 | 512 15 | 16 | 17 | x86 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | x86 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 53 | -------------------------------------------------------------------------------- /SimpleUdpReciever/SimpleUdpReciever/UdpState.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Net.Sockets; 5 | using System.Net; 6 | 7 | namespace SimpleUdpReciever 8 | { 9 | /// 10 | /// Simple implementation of the UdpState class mentioned on 11 | /// http://msdn.microsoft.com/en-us/library/c8s04db1(v=VS.80).aspx 12 | /// 13 | internal class UdpState 14 | { 15 | internal UdpState(UdpClient c, IPEndPoint e) 16 | { 17 | this.c = c; 18 | this.e = e; 19 | } 20 | 21 | internal UdpClient c; 22 | internal IPEndPoint e; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Unity3D/Plugin/QuPlaySimtools.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System; 4 | using System.Text; 5 | using System.Net; 6 | using System.Net.Sockets; 7 | 8 | class Simtools 9 | { 10 | public float Roll; 11 | public float Pitch; 12 | public float Yaw; 13 | public float Heave; 14 | public float Sway; 15 | public float Surge; 16 | public float Extra1; 17 | public float Extra2; 18 | public float Extra3; 19 | public Simtools() { } 20 | public Simtools(float Roll, float Pitch, float Yaw, float Heave, float Sway, float Surge, float Extra1, float Extra2, float Extra3) 21 | { 22 | this.Roll = Roll; 23 | this.Pitch = Pitch; 24 | this.Yaw = Yaw; 25 | this.Heave = Heave; 26 | this.Sway = Sway; 27 | this.Surge = Surge; 28 | this.Extra1 = Extra1; 29 | this.Extra2 = Extra2; 30 | this.Extra3 = Extra3; 31 | } 32 | } 33 | 34 | public class QuPlaySimtools : MonoBehaviour 35 | { 36 | public string IP = "127.0.0.1"; 37 | public int port = 4123; 38 | 39 | IPEndPoint remoteEndPoint; 40 | static UdpClient client; 41 | static Simtools simtools; 42 | 43 | void Start() 44 | { 45 | remoteEndPoint = new IPEndPoint(IPAddress.Parse(IP), port); 46 | client = new UdpClient(); 47 | simtools = new Simtools(); 48 | StartCoroutine("QuSimtools_Start"); 49 | } 50 | 51 | public static void QuSimtools_SendTelemetry(float Roll, float Pitch, float Yaw, float Heave, float Sway, float Surge, float Extra1, float Extra2, float Extra3) 52 | { 53 | simtools = new Simtools(Roll, Pitch, Yaw, Heave, Sway, Surge, Extra1, Extra2, Extra3); 54 | } 55 | 56 | IEnumerator QuSimtools_Start() 57 | { 58 | while (true) 59 | { 60 | string info = String.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8}", simtools.Roll, simtools.Pitch, simtools.Yaw, simtools.Heave, simtools.Sway, simtools.Surge, simtools.Extra1, simtools.Extra2, simtools.Extra3); 61 | byte[] data = Encoding.Default.GetBytes(info); 62 | client.Send(data, data.Length, remoteEndPoint); 63 | yield return null; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /Unity3D/QuPlay/.gitignore: -------------------------------------------------------------------------------- 1 | # =============== # 2 | # Unity generated # 3 | # =============== # 4 | [Tt]emp/ 5 | [Oo]bj/ 6 | [Bb]uild 7 | /[Bb]uilds/ 8 | /[Ll]ibrary/ 9 | sysinfo.txt 10 | *.stackdump 11 | /Assets/AssetStoreTools* 12 | *.apk 13 | *.unitypackage 14 | 15 | # ===================================== # 16 | # Visual Studio / MonoDevelop generated # 17 | # ===================================== # 18 | [Ee]xported[Oo]bj/ 19 | .vs/ 20 | /*.userprefs 21 | /*.csproj 22 | /*.pidb 23 | *.pidb.meta 24 | /*.suo 25 | /*.sln* 26 | /*.user 27 | /*.unityproj 28 | /*.booproj 29 | .consulo/ 30 | /*.tmp 31 | /*.svd 32 | 33 | # ============ # 34 | # OS generated # 35 | # ============ # 36 | .DS_Store* 37 | ._* 38 | .Spotlight-V100 39 | .Trashes 40 | Icon? 41 | ehthumbs.db 42 | [Tt]humbs.db 43 | [Dd]esktop.ini 44 | Corridor/Library/ShaderCache/ 45 | Corridor/Library/metadata/ -------------------------------------------------------------------------------- /Unity3D/QuPlay/Assets/Main.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class Main : MonoBehaviour 4 | { 5 | // Update is called once per frame 6 | void Update() 7 | { 8 | QuPlaySimtools.QuSimtools_SendTelemetry(Random.RandomRange(-180, 180), Random.RandomRange(-180, 180), Random.RandomRange(-180, 180), Random.RandomRange(-180, 180), Random.RandomRange(-180, 180), Random.RandomRange(-180, 180), Random.RandomRange(-180, 180), Random.RandomRange(-180, 180), Random.RandomRange(-180, 180)); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Unity3D/QuPlay/Assets/Main.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cafcb11f38d274b409c0055edf7d93d0 3 | timeCreated: 1513008383 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Unity3D/QuPlay/Assets/Main.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/Assets/Main.unity -------------------------------------------------------------------------------- /Unity3D/QuPlay/Assets/Main.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ba00eb398935b594d93728aab42deda4 3 | timeCreated: 1511669794 4 | licenseType: Free 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Unity3D/QuPlay/Assets/QuPlaySimtools.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System; 4 | using System.Text; 5 | using System.Net; 6 | using System.Net.Sockets; 7 | 8 | class Simtools 9 | { 10 | public float Roll; 11 | public float Pitch; 12 | public float Yaw; 13 | public float Heave; 14 | public float Sway; 15 | public float Surge; 16 | public float Extra1; 17 | public float Extra2; 18 | public float Extra3; 19 | public Simtools() { } 20 | public Simtools(float Roll, float Pitch, float Yaw, float Heave, float Sway, float Surge, float Extra1, float Extra2, float Extra3) 21 | { 22 | this.Roll = Roll; 23 | this.Pitch = Pitch; 24 | this.Yaw = Yaw; 25 | this.Heave = Heave; 26 | this.Sway = Sway; 27 | this.Surge = Surge; 28 | this.Extra1 = Extra1; 29 | this.Extra2 = Extra2; 30 | this.Extra3 = Extra3; 31 | } 32 | } 33 | 34 | public class QuPlaySimtools : MonoBehaviour 35 | { 36 | public string IP = "127.0.0.1"; 37 | public int port = 4123; 38 | 39 | IPEndPoint remoteEndPoint; 40 | static UdpClient client; 41 | static Simtools simtools; 42 | 43 | void Start() 44 | { 45 | remoteEndPoint = new IPEndPoint(IPAddress.Parse(IP), port); 46 | client = new UdpClient(); 47 | simtools = new Simtools(); 48 | StartCoroutine("QuSimtools_Start"); 49 | } 50 | 51 | public static void QuSimtools_SendTelemetry(float Roll, float Pitch, float Yaw, float Heave, float Sway, float Surge, float Extra1, float Extra2, float Extra3) 52 | { 53 | simtools = new Simtools(Roll, Pitch, Yaw, Heave, Sway, Surge, Extra1, Extra2, Extra3); 54 | } 55 | 56 | IEnumerator QuSimtools_Start() 57 | { 58 | while (true) 59 | { 60 | string info = String.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8}", simtools.Roll, simtools.Pitch, simtools.Yaw, simtools.Heave, simtools.Sway, simtools.Surge, simtools.Extra1, simtools.Extra2, simtools.Extra3); 61 | byte[] data = Encoding.Default.GetBytes(info); 62 | client.Send(data, data.Length, remoteEndPoint); 63 | yield return null; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /Unity3D/QuPlay/Assets/QuPlaySimtools.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4c35f4dfee22e594e82b4094f5d1e983 3 | timeCreated: 1512773050 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/AudioManager.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/ClusterInputManager.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/DynamicsManager.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/EditorBuildSettings.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/EditorSettings.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/GraphicsSettings.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/InputManager.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/NavMeshAreas.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/NetworkManager.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/Physics2DSettings.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/ProjectSettings.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 5.6.3f1 2 | -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/QualitySettings.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/TagManager.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/TimeManager.asset -------------------------------------------------------------------------------- /Unity3D/QuPlay/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unity3D/QuPlay/ProjectSettings/UnityConnectSettings.asset -------------------------------------------------------------------------------- /Unreal/Plugins/QuPlaySimtools/QuPlaySimtools.uplugin: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "Version": 1, 4 | "VersionName": "1.0", 5 | "FriendlyName": "QuPlaySimtools", 6 | "Description": "UE4.18 plugin to Simtools 2.0", 7 | "Category": "Network", 8 | "CreatedBy": "QuPlay", 9 | "CreatedByURL": "https://clclaudio.wordpress.com", 10 | "DocsURL": "https://clclaudio.wordpress.com", 11 | "MarketplaceURL": "https://clclaudio.wordpress.com", 12 | "SupportURL": "https://clclaudio.wordpress.com", 13 | "EnabledByDefault": true, 14 | "CanContainContent": false, 15 | "IsBetaVersion": false, 16 | "Installed": false, 17 | "Modules": [ 18 | { 19 | "Name": "QuPlaySimtools", 20 | "Type": "Runtime", 21 | "LoadingPhase": "PreLoadingScreen" 22 | } 23 | ] 24 | } -------------------------------------------------------------------------------- /Unreal/Plugins/QuPlaySimtools/Resources/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unreal/Plugins/QuPlaySimtools/Resources/Icon128.png -------------------------------------------------------------------------------- /Unreal/Plugins/QuPlaySimtools/Source/QuPlaySimtools/Private/QuPlaySimtools.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "QuPlaySimtools.h" 4 | 5 | #define LOCTEXT_NAMESPACE "FQuPlaySimtoolsModule" 6 | 7 | void FQuPlaySimtoolsModule::StartupModule() 8 | { 9 | // This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module 10 | 11 | } 12 | 13 | void FQuPlaySimtoolsModule::ShutdownModule() 14 | { 15 | // This function may be called during shutdown to clean up your module. For modules that support dynamic reloading, 16 | // we call this function before unloading the module. 17 | 18 | } 19 | 20 | #undef LOCTEXT_NAMESPACE 21 | 22 | IMPLEMENT_MODULE(FQuPlaySimtoolsModule, QuPlaySimtools) -------------------------------------------------------------------------------- /Unreal/Plugins/QuPlaySimtools/Source/QuPlaySimtools/Private/QuPlaySimtoolsBPLibrary.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "QuPlaySimtoolsBPLibrary.h" 4 | #include "QuPlaySimtools.h" 5 | 6 | UQuPlaySimtoolsBPLibrary::UQuPlaySimtoolsBPLibrary(const FObjectInitializer& ObjectInitializer) 7 | : Super(ObjectInitializer) 8 | { 9 | 10 | } 11 | 12 | UQuPlaySimtoolsBPLibrary::~UQuPlaySimtoolsBPLibrary() 13 | { 14 | QuSimtools_Stop(); 15 | } 16 | 17 | 18 | 19 | bool UQuPlaySimtoolsBPLibrary::QuSimtools_Start(const FString & YourChosenSocketName, const FString & TheIP, const int32 ThePort) 20 | { 21 | QuSimtools_Stop(); 22 | SenderSocket = NULL; 23 | 24 | //Create Remote Address. 25 | RemoteAddr = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateInternetAddr(); 26 | 27 | bool bIsValid; 28 | RemoteAddr->SetIp(*TheIP, bIsValid); 29 | RemoteAddr->SetPort(ThePort); 30 | 31 | if (!bIsValid) 32 | { 33 | UE_LOG(LogTemp, Error, TEXT("UDP Sender>> ip address was not valid!")); 34 | return false; 35 | } 36 | 37 | SenderSocket = FUdpSocketBuilder(*YourChosenSocketName).AsReusable().WithBroadcast(); 38 | 39 | 40 | //check(SenderSocket->GetSocketType() == SOCKTYPE_Datagram); 41 | 42 | //Set Send Buffer Size 43 | int32 SendSize = 2 * 1024 * 1024; 44 | SenderSocket->SetSendBufferSize(SendSize, SendSize); 45 | SenderSocket->SetReceiveBufferSize(SendSize, SendSize); 46 | 47 | UE_LOG(LogTemp, Log, TEXT("\n\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")); 48 | UE_LOG(LogTemp, Log, TEXT("****UDP**** Sender Initialized Successfully!!!")); 49 | UE_LOG(LogTemp, Log, TEXT("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n\n")); 50 | 51 | return true; 52 | } 53 | 54 | bool UQuPlaySimtoolsBPLibrary::QuSimtools_SendTelemetry(float Roll, float Pitch, float Yaw, float Heave, float Sway, float Surge, float Extra1, float Extra2, float Extra3) 55 | { 56 | if (!SenderSocket) 57 | { 58 | UE_LOG(LogTemp, Error, TEXT("No sender socket")); 59 | return false; 60 | } 61 | int32 BytesSent = 0; 62 | 63 | TArray telemetry; 64 | telemetry.Add(FString::SanitizeFloat(Roll)); 65 | telemetry.Add(FString::SanitizeFloat(Pitch)); 66 | telemetry.Add(FString::SanitizeFloat(Yaw)); 67 | telemetry.Add(FString::SanitizeFloat(Heave)); 68 | telemetry.Add(FString::SanitizeFloat(Sway)); 69 | telemetry.Add(FString::SanitizeFloat(Surge)); 70 | telemetry.Add(FString::SanitizeFloat(Extra1)); 71 | telemetry.Add(FString::SanitizeFloat(Extra2)); 72 | telemetry.Add(FString::SanitizeFloat(Extra3)); 73 | FString ToSend = FString::Join(telemetry,_T(",")); 74 | TCHAR *data = ToSend.GetCharArray().GetData(); 75 | SenderSocket->SendTo((uint8*)TCHAR_TO_UTF8(data), FCString::Strlen(data), BytesSent, *RemoteAddr); 76 | 77 | if (BytesSent <= 0) 78 | { 79 | UE_LOG(LogTemp, Error, TEXT("Socket is valid but the receiver received 0 bytes, make sure it is listening properly!")); 80 | return false; 81 | } 82 | 83 | return true; 84 | } 85 | 86 | void UQuPlaySimtoolsBPLibrary::QuSimtools_Stop() 87 | { 88 | if (SenderSocket) 89 | { 90 | SenderSocket->Close(); 91 | ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->DestroySocket(SenderSocket); 92 | } 93 | } -------------------------------------------------------------------------------- /Unreal/Plugins/QuPlaySimtools/Source/QuPlaySimtools/Public/QuPlaySimtools.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "ModuleManager.h" 6 | 7 | class FQuPlaySimtoolsModule : public IModuleInterface 8 | { 9 | public: 10 | 11 | /** IModuleInterface implementation */ 12 | virtual void StartupModule() override; 13 | virtual void ShutdownModule() override; 14 | }; -------------------------------------------------------------------------------- /Unreal/Plugins/QuPlaySimtools/Source/QuPlaySimtools/Public/QuPlaySimtoolsBPLibrary.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | #include "Networking.h" 5 | #include "Sockets.h" 6 | #include "Engine.h" 7 | 8 | #include "Kismet/BlueprintFunctionLibrary.h" 9 | #include "QuPlaySimtoolsBPLibrary.generated.h" 10 | 11 | static TSharedPtr RemoteAddr; 12 | static FSocket* SenderSocket; 13 | 14 | /* 15 | * Function library class. 16 | * Each function in it is expected to be static and represents blueprint node that can be called in any blueprint. 17 | * 18 | * When declaring function you can define metadata for the node. Key function specifiers will be BlueprintPure and BlueprintCallable. 19 | * BlueprintPure - means the function does not affect the owning object in any way and thus creates a node without Exec pins. 20 | * BlueprintCallable - makes a function which can be executed in Blueprints - Thus it has Exec pins. 21 | * DisplayName - full name of the node, shown when you mouse over the node and in the blueprint drop down menu. 22 | * Its lets you name the node using characters not allowed in C++ function names. 23 | * CompactNodeTitle - the word(s) that appear on the node. 24 | * Keywords - the list of keywords that helps you to find node when you search for it using Blueprint drop-down menu. 25 | * Good example is "Print String" node which you can find also by using keyword "log". 26 | * Category - the category your node will be under in the Blueprint drop-down menu. 27 | * 28 | * For more info on custom blueprint nodes visit documentation: 29 | * https://wiki.unrealengine.com/Custom_Blueprint_Node_Creation 30 | */ 31 | UCLASS() 32 | class UQuPlaySimtoolsBPLibrary : public UBlueprintFunctionLibrary 33 | { 34 | GENERATED_UCLASS_BODY() 35 | ~UQuPlaySimtoolsBPLibrary(); 36 | 37 | public: // FUNCOES DE REDE 38 | 39 | /** Create socket and connect to the Simtools 2.0 40 | * @param YourChosenSocketName a simple name to the socket 41 | * @param TheIP IP address server (local: "127.0.0.1") 42 | * @param ThePort port server (4123) 43 | * @return True if successful 44 | */ 45 | UFUNCTION(BlueprintCallable, meta = (Keywords = "QuPlay Simtools UDP"), Category = "QuPlay Simtools 2.0 | UDP") 46 | static bool QuSimtools_Start(const FString & YourChosenSocketName, const FString & TheIP, const int32 ThePort); 47 | 48 | /** Sending data to Simtools 2.0 socket 49 | * @return True if successful 50 | */ 51 | UFUNCTION(BlueprintCallable, meta = (Keywords = "QuPlay Simtools UDP"), Category = "QuPlay Simtools 2.0 | UDP") 52 | static bool QuSimtools_SendTelemetry(float Roll, float Pitch, float Yaw, float Heave, float Sway, float Surge, float Extra1, float Extra2, float Extra3); 53 | 54 | /** Destroy socket and connect to the Simtools 2.0 55 | */ 56 | UFUNCTION(BlueprintCallable, meta = (Keywords = "QuPlay Simtools UDP"), Category = "QuPlay Simtools 2.0 | UDP") 57 | static void QuSimtools_Stop(); 58 | }; 59 | -------------------------------------------------------------------------------- /Unreal/Plugins/QuPlaySimtools/Source/QuPlaySimtools/QuPlaySimtools.Build.cs: -------------------------------------------------------------------------------- 1 | // Some copyright should be here... 2 | 3 | using UnrealBuildTool; 4 | 5 | public class QuPlaySimtools : ModuleRules 6 | { 7 | public QuPlaySimtools(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicIncludePaths.AddRange( 12 | new string[] { 13 | "QuPlaySimtools/Public" 14 | 15 | // ... add public include paths required here ... 16 | } 17 | ); 18 | 19 | 20 | PrivateIncludePaths.AddRange( 21 | new string[] { 22 | "QuPlaySimtools/Private", 23 | 24 | // ... add other private include paths required here ... 25 | } 26 | ); 27 | 28 | 29 | PublicDependencyModuleNames.AddRange( 30 | new string[] 31 | { 32 | "Core", 33 | "CoreUObject", 34 | "Engine", 35 | "InputCore", 36 | "Sockets", 37 | "Networking", 38 | "Json" //<~~~~~ 39 | 40 | // ... add other public dependencies that you statically link with here ... 41 | } 42 | ); 43 | 44 | 45 | PrivateDependencyModuleNames.AddRange( 46 | new string[] 47 | { 48 | "CoreUObject", 49 | "Engine", 50 | "Slate", 51 | "SlateCore" 52 | 53 | // ... add private dependencies that you statically link with here ... 54 | } 55 | ); 56 | 57 | 58 | DynamicallyLoadedModuleNames.AddRange( 59 | new string[] 60 | { 61 | // ... add any modules that your module loads dynamically here ... 62 | } 63 | ); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Unreal/QuPlay/.gitignore: -------------------------------------------------------------------------------- 1 | Binaries 2 | DerivedDataCache 3 | Intermediate 4 | Saved 5 | .vscode 6 | .vs 7 | *.VC.db 8 | *.opensdf 9 | *.opendb 10 | *.sdf 11 | *.sln 12 | *.suo 13 | *.xcodeproj 14 | *.xcworkspace 15 | -------------------------------------------------------------------------------- /Unreal/QuPlay/Config/DefaultEditor.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unreal/QuPlay/Config/DefaultEditor.ini -------------------------------------------------------------------------------- /Unreal/QuPlay/Config/DefaultEngine.ini: -------------------------------------------------------------------------------- 1 | [URL] 2 | 3 | [/Script/HardwareTargeting.HardwareTargetingSettings] 4 | TargetedHardwareClass=Desktop 5 | AppliedTargetedHardwareClass=Desktop 6 | DefaultGraphicsPerformance=Maximum 7 | AppliedDefaultGraphicsPerformance=Maximum 8 | 9 | [/Script/EngineSettings.GameMapsSettings] 10 | EditorStartupMap=/Game/Main.Main 11 | GameDefaultMap=/Game/Main.Main 12 | 13 | [/Script/Engine.PhysicsSettings] 14 | DefaultGravityZ=-980.000000 15 | DefaultTerminalVelocity=4000.000000 16 | DefaultFluidFriction=0.300000 17 | SimulateScratchMemorySize=262144 18 | RagdollAggregateThreshold=4 19 | TriangleMeshTriangleMinAreaThreshold=5.000000 20 | bEnableAsyncScene=False 21 | bEnableShapeSharing=False 22 | bEnablePCM=True 23 | bEnableStabilization=False 24 | bWarnMissingLocks=True 25 | bEnable2DPhysics=False 26 | LockedAxis=Invalid 27 | DefaultDegreesOfFreedom=Full3D 28 | BounceThresholdVelocity=200.000000 29 | FrictionCombineMode=Average 30 | RestitutionCombineMode=Average 31 | MaxAngularVelocity=3600.000000 32 | MaxDepenetrationVelocity=0.000000 33 | ContactOffsetMultiplier=0.020000 34 | MinContactOffset=2.000000 35 | MaxContactOffset=8.000000 36 | bSimulateSkeletalMeshOnDedicatedServer=True 37 | DefaultShapeComplexity=CTF_UseSimpleAndComplex 38 | bDefaultHasComplexCollision=True 39 | bSuppressFaceRemapTable=False 40 | bSupportUVFromHitResults=False 41 | bDisableActiveActors=False 42 | bDisableCCD=False 43 | bEnableEnhancedDeterminism=False 44 | MaxPhysicsDeltaTime=0.033333 45 | bSubstepping=False 46 | bSubsteppingAsync=False 47 | MaxSubstepDeltaTime=0.016667 48 | MaxSubsteps=6 49 | SyncSceneSmoothingFactor=0.000000 50 | AsyncSceneSmoothingFactor=0.990000 51 | InitialAverageFrameRate=0.016667 52 | PhysXTreeRebuildRate=10 53 | 54 | 55 | -------------------------------------------------------------------------------- /Unreal/QuPlay/Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | [/Script/EngineSettings.GeneralProjectSettings] 2 | ProjectID=3FD96F4D46D87A7FD5DAF9B2E8B1437B 3 | ProjectName=QuPlay 4 | 5 | [/Script/UnrealEd.ProjectPackagingSettings] 6 | BuildConfiguration=PPBC_Shipping 7 | 8 | -------------------------------------------------------------------------------- /Unreal/QuPlay/Content/Main.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unreal/QuPlay/Content/Main.umap -------------------------------------------------------------------------------- /Unreal/QuPlay/Content/Main_BuiltData.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unreal/QuPlay/Content/Main_BuiltData.uasset -------------------------------------------------------------------------------- /Unreal/QuPlay/Plugins/QuPlaySimtools/QuPlaySimtools.uplugin: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "Version": 1, 4 | "VersionName": "1.0", 5 | "FriendlyName": "QuPlaySimtools", 6 | "Description": "UE4.18 plugin to Simtools 2.0", 7 | "Category": "Networking", 8 | "CreatedBy": "QuPlay", 9 | "CreatedByURL": "https://clclaudio.wordpress.com", 10 | "DocsURL": "https://clclaudio.wordpress.com", 11 | "MarketplaceURL": "https://clclaudio.wordpress.com", 12 | "SupportURL": "https://clclaudio.wordpress.com", 13 | "EnabledByDefault": true, 14 | "CanContainContent": false, 15 | "IsBetaVersion": false, 16 | "Installed": false, 17 | "Modules": [ 18 | { 19 | "Name": "QuPlaySimtools", 20 | "Type": "Runtime", 21 | "LoadingPhase": "PreLoadingScreen" 22 | } 23 | ] 24 | } -------------------------------------------------------------------------------- /Unreal/QuPlay/Plugins/QuPlaySimtools/Resources/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddkclaudio/QuplaySimTools/671bb2429bbec7628d7496a855cc87306a6b74fb/Unreal/QuPlay/Plugins/QuPlaySimtools/Resources/Icon128.png -------------------------------------------------------------------------------- /Unreal/QuPlay/Plugins/QuPlaySimtools/Source/QuPlaySimtools/Private/QuPlaySimtools.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "QuPlaySimtools.h" 4 | 5 | #define LOCTEXT_NAMESPACE "FQuPlaySimtoolsModule" 6 | 7 | void FQuPlaySimtoolsModule::StartupModule() 8 | { 9 | // This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module 10 | 11 | } 12 | 13 | void FQuPlaySimtoolsModule::ShutdownModule() 14 | { 15 | // This function may be called during shutdown to clean up your module. For modules that support dynamic reloading, 16 | // we call this function before unloading the module. 17 | 18 | } 19 | 20 | #undef LOCTEXT_NAMESPACE 21 | 22 | IMPLEMENT_MODULE(FQuPlaySimtoolsModule, QuPlaySimtools) -------------------------------------------------------------------------------- /Unreal/QuPlay/Plugins/QuPlaySimtools/Source/QuPlaySimtools/Private/QuPlaySimtoolsBPLibrary.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "QuPlaySimtoolsBPLibrary.h" 4 | #include "QuPlaySimtools.h" 5 | 6 | UQuPlaySimtoolsBPLibrary::UQuPlaySimtoolsBPLibrary(const FObjectInitializer& ObjectInitializer) 7 | : Super(ObjectInitializer) 8 | { 9 | 10 | } 11 | 12 | UQuPlaySimtoolsBPLibrary::~UQuPlaySimtoolsBPLibrary() 13 | { 14 | QuSimtools_Stop(); 15 | } 16 | 17 | 18 | 19 | bool UQuPlaySimtoolsBPLibrary::QuSimtools_Start(const FString & YourChosenSocketName, const FString & TheIP, const int32 ThePort) 20 | { 21 | QuSimtools_Stop(); 22 | SenderSocket = NULL; 23 | 24 | //Create Remote Address. 25 | RemoteAddr = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateInternetAddr(); 26 | 27 | bool bIsValid; 28 | RemoteAddr->SetIp(*TheIP, bIsValid); 29 | RemoteAddr->SetPort(ThePort); 30 | 31 | if (!bIsValid) 32 | { 33 | UE_LOG(LogTemp, Error, TEXT("UDP Sender>> ip address was not valid!")); 34 | return false; 35 | } 36 | 37 | SenderSocket = FUdpSocketBuilder(*YourChosenSocketName).AsReusable().WithBroadcast(); 38 | 39 | 40 | //check(SenderSocket->GetSocketType() == SOCKTYPE_Datagram); 41 | 42 | //Set Send Buffer Size 43 | int32 SendSize = 2 * 1024 * 1024; 44 | SenderSocket->SetSendBufferSize(SendSize, SendSize); 45 | SenderSocket->SetReceiveBufferSize(SendSize, SendSize); 46 | 47 | UE_LOG(LogTemp, Log, TEXT("\n\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")); 48 | UE_LOG(LogTemp, Log, TEXT("****UDP**** Sender Initialized Successfully!!!")); 49 | UE_LOG(LogTemp, Log, TEXT("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n\n")); 50 | 51 | return true; 52 | } 53 | 54 | bool UQuPlaySimtoolsBPLibrary::QuSimtools_SendTelemetry(float Roll, float Pitch, float Yaw, float Heave, float Sway, float Surge, float Extra1, float Extra2, float Extra3) 55 | { 56 | if (!SenderSocket) 57 | { 58 | UE_LOG(LogTemp, Error, TEXT("No sender socket")); 59 | return false; 60 | } 61 | int32 BytesSent = 0; 62 | 63 | TArray telemetry; 64 | telemetry.Add(FString::SanitizeFloat(Roll)); 65 | telemetry.Add(FString::SanitizeFloat(Pitch)); 66 | telemetry.Add(FString::SanitizeFloat(Yaw)); 67 | telemetry.Add(FString::SanitizeFloat(Heave)); 68 | telemetry.Add(FString::SanitizeFloat(Sway)); 69 | telemetry.Add(FString::SanitizeFloat(Surge)); 70 | telemetry.Add(FString::SanitizeFloat(Extra1)); 71 | telemetry.Add(FString::SanitizeFloat(Extra2)); 72 | telemetry.Add(FString::SanitizeFloat(Extra3)); 73 | FString ToSend = FString::Join(telemetry,_T(",")); 74 | TCHAR *data = ToSend.GetCharArray().GetData(); 75 | SenderSocket->SendTo((uint8*)TCHAR_TO_UTF8(data), FCString::Strlen(data), BytesSent, *RemoteAddr); 76 | 77 | if (BytesSent <= 0) 78 | { 79 | UE_LOG(LogTemp, Error, TEXT("Socket is valid but the receiver received 0 bytes, make sure it is listening properly!")); 80 | return false; 81 | } 82 | 83 | return true; 84 | } 85 | 86 | void UQuPlaySimtoolsBPLibrary::QuSimtools_Stop() 87 | { 88 | if (SenderSocket) 89 | { 90 | SenderSocket->Close(); 91 | ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->DestroySocket(SenderSocket); 92 | } 93 | } -------------------------------------------------------------------------------- /Unreal/QuPlay/Plugins/QuPlaySimtools/Source/QuPlaySimtools/Public/QuPlaySimtools.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "ModuleManager.h" 6 | 7 | class FQuPlaySimtoolsModule : public IModuleInterface 8 | { 9 | public: 10 | 11 | /** IModuleInterface implementation */ 12 | virtual void StartupModule() override; 13 | virtual void ShutdownModule() override; 14 | }; -------------------------------------------------------------------------------- /Unreal/QuPlay/Plugins/QuPlaySimtools/Source/QuPlaySimtools/Public/QuPlaySimtoolsBPLibrary.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | #include "Networking.h" 5 | #include "Sockets.h" 6 | #include "Engine.h" 7 | 8 | #include "Kismet/BlueprintFunctionLibrary.h" 9 | #include "QuPlaySimtoolsBPLibrary.generated.h" 10 | 11 | static TSharedPtr RemoteAddr; 12 | static FSocket* SenderSocket; 13 | 14 | /* 15 | * Function library class. 16 | * Each function in it is expected to be static and represents blueprint node that can be called in any blueprint. 17 | * 18 | * When declaring function you can define metadata for the node. Key function specifiers will be BlueprintPure and BlueprintCallable. 19 | * BlueprintPure - means the function does not affect the owning object in any way and thus creates a node without Exec pins. 20 | * BlueprintCallable - makes a function which can be executed in Blueprints - Thus it has Exec pins. 21 | * DisplayName - full name of the node, shown when you mouse over the node and in the blueprint drop down menu. 22 | * Its lets you name the node using characters not allowed in C++ function names. 23 | * CompactNodeTitle - the word(s) that appear on the node. 24 | * Keywords - the list of keywords that helps you to find node when you search for it using Blueprint drop-down menu. 25 | * Good example is "Print String" node which you can find also by using keyword "log". 26 | * Category - the category your node will be under in the Blueprint drop-down menu. 27 | * 28 | * For more info on custom blueprint nodes visit documentation: 29 | * https://wiki.unrealengine.com/Custom_Blueprint_Node_Creation 30 | */ 31 | UCLASS() 32 | class UQuPlaySimtoolsBPLibrary : public UBlueprintFunctionLibrary 33 | { 34 | GENERATED_UCLASS_BODY() 35 | ~UQuPlaySimtoolsBPLibrary(); 36 | 37 | public: // FUNCOES DE REDE 38 | 39 | /** Create socket and connect to the Simtools 2.0 40 | * @param YourChosenSocketName a simple name to the socket 41 | * @param TheIP IP address server (local: "127.0.0.1") 42 | * @param ThePort port server (4123) 43 | * @return True if successful 44 | */ 45 | UFUNCTION(BlueprintCallable, meta = (Keywords = "QuPlay Simtools UDP"), Category = "QuPlay Simtools 2.0 | UDP") 46 | static bool QuSimtools_Start(const FString & YourChosenSocketName, const FString & TheIP, const int32 ThePort); 47 | 48 | /** Sending data to Simtools 2.0 socket 49 | * @return True if successful 50 | */ 51 | UFUNCTION(BlueprintCallable, meta = (Keywords = "QuPlay Simtools UDP"), Category = "QuPlay Simtools 2.0 | UDP") 52 | static bool QuSimtools_SendTelemetry(float Roll, float Pitch, float Yaw, float Heave, float Sway, float Surge, float Extra1, float Extra2, float Extra3); 53 | 54 | /** Destroy socket and connect to the Simtools 2.0 55 | */ 56 | UFUNCTION(BlueprintCallable, meta = (Keywords = "QuPlay Simtools UDP"), Category = "QuPlay Simtools 2.0 | UDP") 57 | static void QuSimtools_Stop(); 58 | }; 59 | -------------------------------------------------------------------------------- /Unreal/QuPlay/Plugins/QuPlaySimtools/Source/QuPlaySimtools/QuPlaySimtools.Build.cs: -------------------------------------------------------------------------------- 1 | // Some copyright should be here... 2 | 3 | using UnrealBuildTool; 4 | 5 | public class QuPlaySimtools : ModuleRules 6 | { 7 | public QuPlaySimtools(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicIncludePaths.AddRange( 12 | new string[] { 13 | "QuPlaySimtools/Public" 14 | 15 | // ... add public include paths required here ... 16 | } 17 | ); 18 | 19 | 20 | PrivateIncludePaths.AddRange( 21 | new string[] { 22 | "QuPlaySimtools/Private", 23 | 24 | // ... add other private include paths required here ... 25 | } 26 | ); 27 | 28 | 29 | PublicDependencyModuleNames.AddRange( 30 | new string[] 31 | { 32 | "Core", 33 | "CoreUObject", 34 | "Engine", 35 | "InputCore", 36 | "Sockets", 37 | "Networking", 38 | "Json" //<~~~~~ 39 | 40 | // ... add other public dependencies that you statically link with here ... 41 | } 42 | ); 43 | 44 | 45 | PrivateDependencyModuleNames.AddRange( 46 | new string[] 47 | { 48 | "CoreUObject", 49 | "Engine", 50 | "Slate", 51 | "SlateCore" 52 | 53 | // ... add private dependencies that you statically link with here ... 54 | } 55 | ); 56 | 57 | 58 | DynamicallyLoadedModuleNames.AddRange( 59 | new string[] 60 | { 61 | // ... add any modules that your module loads dynamically here ... 62 | } 63 | ); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Unreal/QuPlay/QuPlay.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "4.18", 4 | "Category": "", 5 | "Description": "", 6 | "Modules": [ 7 | { 8 | "Name": "QuPlay", 9 | "Type": "Runtime", 10 | "LoadingPhase": "Default" 11 | } 12 | ], 13 | "TargetPlatforms": [ 14 | "AllDesktop", 15 | "LinuxNoEditor", 16 | "MacNoEditor", 17 | "WindowsNoEditor" 18 | ] 19 | } -------------------------------------------------------------------------------- /Unreal/QuPlay/Source/QuPlay.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class QuPlayTarget : TargetRules 7 | { 8 | public QuPlayTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Game; 11 | 12 | ExtraModuleNames.AddRange( new string[] { "QuPlay" } ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Unreal/QuPlay/Source/QuPlay/QuPlay.Build.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class QuPlay : ModuleRules 6 | { 7 | public QuPlay(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); 12 | 13 | PrivateDependencyModuleNames.AddRange(new string[] { }); 14 | 15 | // Uncomment if you are using Slate UI 16 | // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); 17 | 18 | // Uncomment if you are using online features 19 | // PrivateDependencyModuleNames.Add("OnlineSubsystem"); 20 | 21 | // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Unreal/QuPlay/Source/QuPlay/QuPlay.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "QuPlay.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, QuPlay, "QuPlay" ); 7 | -------------------------------------------------------------------------------- /Unreal/QuPlay/Source/QuPlay/QuPlay.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | -------------------------------------------------------------------------------- /Unreal/QuPlay/Source/QuPlay/QuPlayGameModeBase.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "QuPlayGameModeBase.h" 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unreal/QuPlay/Source/QuPlay/QuPlayGameModeBase.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/GameModeBase.h" 7 | #include "QuPlayGameModeBase.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class QUPLAY_API AQuPlayGameModeBase : public AGameModeBase 14 | { 15 | GENERATED_BODY() 16 | 17 | 18 | 19 | 20 | }; 21 | -------------------------------------------------------------------------------- /Unreal/QuPlay/Source/QuPlayEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class QuPlayEditorTarget : TargetRules 7 | { 8 | public QuPlayEditorTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Editor; 11 | 12 | ExtraModuleNames.AddRange( new string[] { "QuPlay" } ); 13 | } 14 | } 15 | --------------------------------------------------------------------------------