initial commit
						commit
						b4993eaeb8
					
				|  | @ -0,0 +1,351 @@ | |||
| ## Ignore Visual Studio temporary files, build results, and | ||||
| ## files generated by popular Visual Studio add-ons. | ||||
| ## | ||||
| ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore | ||||
| 
 | ||||
| # User-specific files | ||||
| *.rsuser | ||||
| *.suo | ||||
| *.user | ||||
| *.userosscache | ||||
| *.sln.docstates | ||||
| 
 | ||||
| # User-specific files (MonoDevelop/Xamarin Studio) | ||||
| *.userprefs | ||||
| 
 | ||||
| # Mono auto generated files | ||||
| mono_crash.* | ||||
| 
 | ||||
| # Build results | ||||
| [Dd]ebug/ | ||||
| [Dd]ebugPublic/ | ||||
| [Rr]elease/ | ||||
| [Rr]eleases/ | ||||
| [Aa][Rr][Mm]/ | ||||
| [Aa][Rr][Mm]64/ | ||||
| bld/ | ||||
| [Bb]in/ | ||||
| [Oo]bj/ | ||||
| [Ll]og/ | ||||
| [Ll]ogs/ | ||||
| 
 | ||||
| # Visual Studio 2015/2017 cache/options directory | ||||
| .vs/ | ||||
| # Uncomment if you have tasks that create the project's static files in wwwroot | ||||
| #wwwroot/ | ||||
| 
 | ||||
| # Visual Studio 2017 auto generated files | ||||
| Generated\ Files/ | ||||
| 
 | ||||
| # MSTest test Results | ||||
| [Tt]est[Rr]esult*/ | ||||
| [Bb]uild[Ll]og.* | ||||
| 
 | ||||
| # NUnit | ||||
| *.VisualState.xml | ||||
| TestResult.xml | ||||
| nunit-*.xml | ||||
| 
 | ||||
| # Build Results of an ATL Project | ||||
| [Dd]ebugPS/ | ||||
| [Rr]eleasePS/ | ||||
| dlldata.c | ||||
| 
 | ||||
| # Benchmark Results | ||||
| BenchmarkDotNet.Artifacts/ | ||||
| 
 | ||||
| # .NET Core | ||||
| project.lock.json | ||||
| project.fragment.lock.json | ||||
| artifacts/ | ||||
| 
 | ||||
| # StyleCop | ||||
| StyleCopReport.xml | ||||
| 
 | ||||
| # Files built by Visual Studio | ||||
| *_i.c | ||||
| *_p.c | ||||
| *_h.h | ||||
| *.ilk | ||||
| *.meta | ||||
| *.obj | ||||
| *.iobj | ||||
| *.pch | ||||
| *.pdb | ||||
| *.ipdb | ||||
| *.pgc | ||||
| *.pgd | ||||
| *.rsp | ||||
| *.sbr | ||||
| *.tlb | ||||
| *.tli | ||||
| *.tlh | ||||
| *.tmp | ||||
| *.tmp_proj | ||||
| *_wpftmp.csproj | ||||
| *.log | ||||
| *.vspscc | ||||
| *.vssscc | ||||
| .builds | ||||
| *.pidb | ||||
| *.svclog | ||||
| *.scc | ||||
| 
 | ||||
| # Chutzpah Test files | ||||
| _Chutzpah* | ||||
| 
 | ||||
| # Visual C++ cache files | ||||
| ipch/ | ||||
| *.aps | ||||
| *.ncb | ||||
| *.opendb | ||||
| *.opensdf | ||||
| *.sdf | ||||
| *.cachefile | ||||
| *.VC.db | ||||
| *.VC.VC.opendb | ||||
| 
 | ||||
| # Visual Studio profiler | ||||
| *.psess | ||||
| *.vsp | ||||
| *.vspx | ||||
| *.sap | ||||
| 
 | ||||
| # Visual Studio Trace Files | ||||
| *.e2e | ||||
| 
 | ||||
| # TFS 2012 Local Workspace | ||||
| $tf/ | ||||
| 
 | ||||
| # Guidance Automation Toolkit | ||||
| *.gpState | ||||
| 
 | ||||
| # ReSharper is a .NET coding add-in | ||||
| _ReSharper*/ | ||||
| *.[Rr]e[Ss]harper | ||||
| *.DotSettings.user | ||||
| 
 | ||||
| # TeamCity is a build add-in | ||||
| _TeamCity* | ||||
| 
 | ||||
| # DotCover is a Code Coverage Tool | ||||
| *.dotCover | ||||
| 
 | ||||
| # AxoCover is a Code Coverage Tool | ||||
| .axoCover/* | ||||
| !.axoCover/settings.json | ||||
| 
 | ||||
| # Coverlet is a free, cross platform Code Coverage Tool | ||||
| coverage*[.json, .xml, .info] | ||||
| 
 | ||||
| # Visual Studio code coverage results | ||||
| *.coverage | ||||
| *.coveragexml | ||||
| 
 | ||||
| # NCrunch | ||||
| _NCrunch_* | ||||
| .*crunch*.local.xml | ||||
| nCrunchTemp_* | ||||
| 
 | ||||
| # MightyMoose | ||||
| *.mm.* | ||||
| AutoTest.Net/ | ||||
| 
 | ||||
| # Web workbench (sass) | ||||
| .sass-cache/ | ||||
| 
 | ||||
| # Installshield output folder | ||||
| [Ee]xpress/ | ||||
| 
 | ||||
| # DocProject is a documentation generator add-in | ||||
| DocProject/buildhelp/ | ||||
| DocProject/Help/*.HxT | ||||
| DocProject/Help/*.HxC | ||||
| DocProject/Help/*.hhc | ||||
| DocProject/Help/*.hhk | ||||
| DocProject/Help/*.hhp | ||||
| DocProject/Help/Html2 | ||||
| DocProject/Help/html | ||||
| 
 | ||||
| # Click-Once directory | ||||
| publish/ | ||||
| 
 | ||||
| # Publish Web Output | ||||
| *.[Pp]ublish.xml | ||||
| *.azurePubxml | ||||
| # Note: Comment the next line if you want to checkin your web deploy settings, | ||||
| # but database connection strings (with potential passwords) will be unencrypted | ||||
| *.pubxml | ||||
| *.publishproj | ||||
| 
 | ||||
| # Microsoft Azure Web App publish settings. Comment the next line if you want to | ||||
| # checkin your Azure Web App publish settings, but sensitive information contained | ||||
| # in these scripts will be unencrypted | ||||
| PublishScripts/ | ||||
| 
 | ||||
| # NuGet Packages | ||||
| *.nupkg | ||||
| # NuGet Symbol Packages | ||||
| *.snupkg | ||||
| # The packages folder can be ignored because of Package Restore | ||||
| **/[Pp]ackages/* | ||||
| # except build/, which is used as an MSBuild target. | ||||
| !**/[Pp]ackages/build/ | ||||
| # Uncomment if necessary however generally it will be regenerated when needed | ||||
| #!**/[Pp]ackages/repositories.config | ||||
| # NuGet v3's project.json files produces more ignorable files | ||||
| *.nuget.props | ||||
| *.nuget.targets | ||||
| 
 | ||||
| # Microsoft Azure Build Output | ||||
| csx/ | ||||
| *.build.csdef | ||||
| 
 | ||||
| # Microsoft Azure Emulator | ||||
| ecf/ | ||||
| rcf/ | ||||
| 
 | ||||
| # Windows Store app package directories and files | ||||
| AppPackages/ | ||||
| BundleArtifacts/ | ||||
| Package.StoreAssociation.xml | ||||
| _pkginfo.txt | ||||
| *.appx | ||||
| *.appxbundle | ||||
| *.appxupload | ||||
| 
 | ||||
| # Visual Studio cache files | ||||
| # files ending in .cache can be ignored | ||||
| *.[Cc]ache | ||||
| # but keep track of directories ending in .cache | ||||
| !?*.[Cc]ache/ | ||||
| 
 | ||||
| # Others | ||||
| ClientBin/ | ||||
| ~$* | ||||
| *~ | ||||
| *.dbmdl | ||||
| *.dbproj.schemaview | ||||
| *.jfm | ||||
| *.pfx | ||||
| *.publishsettings | ||||
| orleans.codegen.cs | ||||
| 
 | ||||
| # Including strong name files can present a security risk | ||||
| # (https://github.com/github/gitignore/pull/2483#issue-259490424) | ||||
| #*.snk | ||||
| 
 | ||||
| # Since there are multiple workflows, uncomment next line to ignore bower_components | ||||
| # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) | ||||
| #bower_components/ | ||||
| 
 | ||||
| # RIA/Silverlight projects | ||||
| Generated_Code/ | ||||
| 
 | ||||
| # Backup & report files from converting an old project file | ||||
| # to a newer Visual Studio version. Backup files are not needed, | ||||
| # because we have git ;-) | ||||
| _UpgradeReport_Files/ | ||||
| Backup*/ | ||||
| UpgradeLog*.XML | ||||
| UpgradeLog*.htm | ||||
| ServiceFabricBackup/ | ||||
| *.rptproj.bak | ||||
| 
 | ||||
| # SQL Server files | ||||
| *.mdf | ||||
| *.ldf | ||||
| *.ndf | ||||
| 
 | ||||
| # Business Intelligence projects | ||||
| *.rdl.data | ||||
| *.bim.layout | ||||
| *.bim_*.settings | ||||
| *.rptproj.rsuser | ||||
| *- [Bb]ackup.rdl | ||||
| *- [Bb]ackup ([0-9]).rdl | ||||
| *- [Bb]ackup ([0-9][0-9]).rdl | ||||
| 
 | ||||
| # Microsoft Fakes | ||||
| FakesAssemblies/ | ||||
| 
 | ||||
| # GhostDoc plugin setting file | ||||
| *.GhostDoc.xml | ||||
| 
 | ||||
| # Node.js Tools for Visual Studio | ||||
| .ntvs_analysis.dat | ||||
| node_modules/ | ||||
| 
 | ||||
| # Visual Studio 6 build log | ||||
| *.plg | ||||
| 
 | ||||
| # Visual Studio 6 workspace options file | ||||
| *.opt | ||||
| 
 | ||||
| # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) | ||||
| *.vbw | ||||
| 
 | ||||
| # Visual Studio LightSwitch build output | ||||
| **/*.HTMLClient/GeneratedArtifacts | ||||
| **/*.DesktopClient/GeneratedArtifacts | ||||
| **/*.DesktopClient/ModelManifest.xml | ||||
| **/*.Server/GeneratedArtifacts | ||||
| **/*.Server/ModelManifest.xml | ||||
| _Pvt_Extensions | ||||
| 
 | ||||
| # Paket dependency manager | ||||
| .paket/paket.exe | ||||
| paket-files/ | ||||
| 
 | ||||
| # FAKE - F# Make | ||||
| .fake/ | ||||
| 
 | ||||
| # CodeRush personal settings | ||||
| .cr/personal | ||||
| 
 | ||||
| # Python Tools for Visual Studio (PTVS) | ||||
| __pycache__/ | ||||
| *.pyc | ||||
| 
 | ||||
| # Cake - Uncomment if you are using it | ||||
| # tools/** | ||||
| # !tools/packages.config | ||||
| 
 | ||||
| # Tabs Studio | ||||
| *.tss | ||||
| 
 | ||||
| # Telerik's JustMock configuration file | ||||
| *.jmconfig | ||||
| 
 | ||||
| # BizTalk build output | ||||
| *.btp.cs | ||||
| *.btm.cs | ||||
| *.odx.cs | ||||
| *.xsd.cs | ||||
| 
 | ||||
| # OpenCover UI analysis results | ||||
| OpenCover/ | ||||
| 
 | ||||
| # Azure Stream Analytics local run output | ||||
| ASALocalRun/ | ||||
| 
 | ||||
| # MSBuild Binary and Structured Log | ||||
| *.binlog | ||||
| 
 | ||||
| # NVidia Nsight GPU debugger configuration file | ||||
| *.nvuser | ||||
| 
 | ||||
| # MFractors (Xamarin productivity tool) working folder | ||||
| .mfractor/ | ||||
| 
 | ||||
| # Local History for Visual Studio | ||||
| .localhistory/ | ||||
| 
 | ||||
| # BeatPulse healthcheck temp database | ||||
| healthchecksdb | ||||
| 
 | ||||
| # Backup folder for Package Reference Convert tool in Visual Studio 2017 | ||||
| MigrationBackup/ | ||||
| 
 | ||||
| # Ionide (cross platform F# VS Code tools) working folder | ||||
| .ionide/ | ||||
|  | @ -0,0 +1,6 @@ | |||
| [submodule "FNA"] | ||||
| 	path = FNA | ||||
| 	url = https://github.com/FNA-XNA/FNA.git | ||||
| [submodule "encompass-cs"] | ||||
| 	path = encompass-cs | ||||
| 	url = https://gitea.moonside.games/MoonsideGames/encompass-cs.git | ||||
|  | @ -0,0 +1,20 @@ | |||
| { | ||||
|   "version": "0.2.0", | ||||
|   "configurations": [ | ||||
|     { | ||||
|       "name": "Attach to Core Debugger", | ||||
|       "type": "coreclr", | ||||
|       "request": "launch", | ||||
|       "preLaunchTask": "Build: Core Debug", | ||||
|       "program": "${workspaceFolder}/PongFE/bin/Debug/netcoreapp3.1/PongFE.dll", | ||||
|       "args": [], | ||||
|       "env": { | ||||
|         "LD_LIBRARY_PATH": "${workspaceFolder}/PongFE/bin/Debug/netcoreapp3.1/lib64", | ||||
|         "DYLD_LIBRARY_PATH": "${workspaceFolder}/PongFE/bin/Debug/netcoreapp3.1/osx" | ||||
|       }, | ||||
|       "cwd": "${workspaceFolder}", | ||||
|       "console": "integratedTerminal", | ||||
|       "internalConsoleOptions": "neverOpen" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
|  | @ -0,0 +1,224 @@ | |||
| { | ||||
|   "version": "2.0.0", | ||||
|   "options": { | ||||
|     "cwd": "${workspaceRoot}" | ||||
|   }, | ||||
|   "windows": { | ||||
|     "options": { | ||||
|       "shell": { | ||||
|         "executable": "cmd.exe", | ||||
|         "args": [ | ||||
|           "/d", | ||||
|           "/c" | ||||
|         ] | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "presentation": { | ||||
|     "reveal": "always", | ||||
|     "focus": true, | ||||
|     "panel": "shared" | ||||
|   }, | ||||
|   "tasks": [ | ||||
|     { | ||||
|       "label": "Build: Framework Release", | ||||
|       "command": "msbuild", | ||||
|       "args": [ | ||||
|         "-restore:True", | ||||
|         "${workspaceFolder}/PongFE.Framework.sln", | ||||
|         "-p:Configuration=Release" | ||||
|       ], | ||||
|       "type": "shell", | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": "$msCompile" | ||||
|     }, | ||||
|     { | ||||
|       "label": "Run: Framework Release", | ||||
|       "command": "mono", | ||||
|       "args": [ | ||||
|         "PongFE.exe" | ||||
|       ], | ||||
|       "options": { | ||||
|         "env": { | ||||
|           "LD_LIBRARY_PATH": "./lib64", | ||||
|           "DYLD_LIBRARY_PATH": "./osx" | ||||
|         }, | ||||
|         "cwd": "${workspaceFolder}/PongFE/bin/Release/net461" | ||||
|       }, | ||||
|       "type": "process", | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": [] | ||||
|     }, | ||||
|     { | ||||
|       "label": "Build & Run: Framework Release", | ||||
|       "dependsOn": [ | ||||
|         "Build: Framework Release", | ||||
|         "Run: Framework Release" | ||||
|       ], | ||||
|       "dependsOrder": "sequence", | ||||
|       "type": "shell", | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": [] | ||||
|     }, | ||||
|     { | ||||
|       "label": "Build: Framework Debug", | ||||
|       "command": "msbuild", | ||||
|       "args": [ | ||||
|         "-restore:True", | ||||
|         "${workspaceFolder}/PongFE.Framework.sln", | ||||
|         "-p:Configuration=Debug" | ||||
|       ], | ||||
|       "type": "shell", | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": [] | ||||
|     }, | ||||
|     { | ||||
|       "label": "Run: Framework Debug", | ||||
|       "command": "mono", | ||||
|       "args": [ | ||||
|         "PongFE.exe" | ||||
|       ], | ||||
|       "options": { | ||||
|         "env": { | ||||
|           "LD_LIBRARY_PATH": "./lib64", | ||||
|           "DYLD_LIBRARY_PATH": "./osx" | ||||
|         }, | ||||
|         "cwd": "${workspaceFolder}/PongFE/bin/Debug/net461" | ||||
|       }, | ||||
|       "type": "process", | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": [] | ||||
|     }, | ||||
|     { | ||||
|       "label": "Build & Run: Framework Debug", | ||||
|       "dependsOn": [ | ||||
|         "Build: Framework Debug", | ||||
|         "Run: Framework Debug" | ||||
|       ], | ||||
|       "dependsOrder": "sequence", | ||||
|       "type": "shell", | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": [] | ||||
|     }, | ||||
|     { | ||||
|       "label": "Build & Run: Core Debug", | ||||
|       "type": "shell", | ||||
|       "dependsOrder": "sequence", | ||||
|       "dependsOn": [ | ||||
|         "Build: Core Debug", | ||||
|         "Run: Core Debug" | ||||
|       ], | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": [] | ||||
|     }, | ||||
|     { | ||||
|       "label": "Build: Core Debug", | ||||
|       "command": "dotnet", | ||||
|       "args": [ | ||||
|         "build", | ||||
|         "./PongFE.Core.sln", | ||||
|         "-f", | ||||
|         "netcoreapp3.1" | ||||
|       ], | ||||
|       "type": "shell", | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": [] | ||||
|     }, | ||||
|     { | ||||
|       "label": "Run: Core Debug", | ||||
|       "command": "dotnet", | ||||
|       "args": [ | ||||
|         "./PongFE.dll" | ||||
|       ], | ||||
|       "options": { | ||||
|         "env": { | ||||
|           "LD_LIBRARY_PATH": "./lib64", | ||||
|           "DYLD_LIBRARY_PATH": "./osx" | ||||
|         }, | ||||
|         "cwd": "${workspaceFolder}/PongFE/bin/Debug/netcoreapp3.1" | ||||
|       }, | ||||
|       "type": "process", | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": [] | ||||
|     }, | ||||
|     { | ||||
|       "label": "Build: Core Release", | ||||
|       "command": "dotnet", | ||||
|       "args": [ | ||||
|         "build", | ||||
|         "./PongFE.Core.sln", | ||||
|         "--configuration", | ||||
|         "Release", | ||||
|         "-f", | ||||
|         "netcoreapp3.1" | ||||
|       ], | ||||
|       "type": "shell", | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": [] | ||||
|     }, | ||||
|     { | ||||
|       "label": "Run: Core Release", | ||||
|       "command": "dotnet", | ||||
|       "args": [ | ||||
|         "./PongFE.dll" | ||||
|       ], | ||||
|       "options": { | ||||
|         "env": { | ||||
|           "LD_LIBRARY_PATH": "./lib64", | ||||
|           "DYLD_LIBRARY_PATH": "./osx" | ||||
|         }, | ||||
|         "cwd": "${workspaceFolder}/PongFE/bin/Release/netcoreapp3.1" | ||||
|       }, | ||||
|       "type": "process", | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": [] | ||||
|     }, | ||||
|     { | ||||
|       "label": "Build & Run: Core Release", | ||||
|       "dependsOrder": "sequence", | ||||
|       "dependsOn": [ | ||||
|         "Build: Core Release", | ||||
|         "Run: Core Release" | ||||
|       ], | ||||
|       "type": "shell", | ||||
|       "group": { | ||||
|         "kind": "build", | ||||
|         "isDefault": true | ||||
|       }, | ||||
|       "problemMatcher": [] | ||||
|     } | ||||
|   ] | ||||
| } | ||||
|  | @ -0,0 +1 @@ | |||
| Subproject commit d5dd19a87b0046575172df9156ef1043ac8209d3 | ||||
|  | @ -0,0 +1,6 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <PropertyGroup> | ||||
|           <DefineConstants>$(DefineConstants)</DefineConstants> | ||||
|   </PropertyGroup> | ||||
| </Project> | ||||
|  | @ -0,0 +1,34 @@ | |||
|  | ||||
| Microsoft Visual Studio Solution File, Format Version 12.00 | ||||
| # Visual Studio 15 | ||||
| VisualStudioVersion = 15.0.26124.0 | ||||
| MinimumVisualStudioVersion = 15.0.26124.0 | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PongFE.Core", "PongFE\PongFE.Core.csproj", "{4589302C-174A-4173-9654-CAA6CA1B5220}" | ||||
| EndProject | ||||
| Global | ||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
| 		Debug|Any CPU = Debug|Any CPU | ||||
| 		Debug|x64 = Debug|x64 | ||||
| 		Debug|x86 = Debug|x86 | ||||
| 		Release|Any CPU = Release|Any CPU | ||||
| 		Release|x64 = Release|x64 | ||||
| 		Release|x86 = Release|x86 | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(SolutionProperties) = preSolution | ||||
| 		HideSolutionNode = FALSE | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|x64.Build.0 = Debug|Any CPU | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Debug|x86.Build.0 = Debug|Any CPU | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|x64.ActiveCfg = Release|Any CPU | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|x64.Build.0 = Release|Any CPU | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|x86.ActiveCfg = Release|Any CPU | ||||
| 		{4589302C-174A-4173-9654-CAA6CA1B5220}.Release|x86.Build.0 = Release|Any CPU | ||||
| 	EndGlobalSection | ||||
| EndGlobal | ||||
|  | @ -0,0 +1,34 @@ | |||
|  | ||||
| Microsoft Visual Studio Solution File, Format Version 12.00 | ||||
| # Visual Studio 15 | ||||
| VisualStudioVersion = 15.0.26124.0 | ||||
| MinimumVisualStudioVersion = 15.0.26124.0 | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FNATemplate.Framework", "PongFE\PongFE.Framework.csproj", "{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}" | ||||
| EndProject | ||||
| Global | ||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
| 		Debug|Any CPU = Debug|Any CPU | ||||
| 		Debug|x64 = Debug|x64 | ||||
| 		Debug|x86 = Debug|x86 | ||||
| 		Release|Any CPU = Release|Any CPU | ||||
| 		Release|x64 = Release|x64 | ||||
| 		Release|x86 = Release|x86 | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(SolutionProperties) = preSolution | ||||
| 		HideSolutionNode = FALSE | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|x64.Build.0 = Debug|Any CPU | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|x86.Build.0 = Debug|Any CPU | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|x64.ActiveCfg = Release|Any CPU | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|x64.Build.0 = Release|Any CPU | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|x86.ActiveCfg = Release|Any CPU | ||||
| 		{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Release|x86.Build.0 = Release|Any CPU | ||||
| 	EndGlobalSection | ||||
| EndGlobal | ||||
|  | @ -0,0 +1 @@ | |||
| Put your Component structs here. | ||||
|  | @ -0,0 +1 @@ | |||
| Insert your content files here (sprites, sound, etc) | ||||
|  | @ -0,0 +1,259 @@ | |||
| // only works in .NET Core. disable in .NET framework | ||||
| 
 | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| using System.Xml.Linq; | ||||
| 
 | ||||
| public static class DllMap | ||||
| { | ||||
|     [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] | ||||
|     [return: MarshalAs(UnmanagedType.Bool)] | ||||
|     static extern bool SetDefaultDllDirectories(int directoryFlags); | ||||
| 
 | ||||
|     [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] | ||||
|     static extern void AddDllDirectory(string lpPathName); | ||||
| 
 | ||||
|     [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] | ||||
|     [return: MarshalAs(UnmanagedType.Bool)] | ||||
|     static extern bool SetDllDirectory(string lpPathName); | ||||
| 
 | ||||
|     const int LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x00001000; | ||||
| 
 | ||||
|     public static Dictionary<string, string> MapDictionary; | ||||
|     public static string OS; | ||||
|     public static string CPU; | ||||
|     public static bool Optimise; | ||||
| 
 | ||||
|     public static void Initialise(bool optimise = true) | ||||
|     { | ||||
|         Optimise = optimise; | ||||
| 
 | ||||
|         // Our executabe needs to know how to find the native libraries | ||||
|         // For Windows, we can set this to be x86 or x64 directory at runtime (below) | ||||
|         // For Linux we need to move our native libraries to 'netcoredeps' which is set by .net core | ||||
|         // For OSX we need to set an environment variable (DYLD_LIBRARY_PATH) outside of the process by a script | ||||
|         if (Environment.OSVersion.Platform == PlatformID.Win32NT) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_DEFAULT_DIRS); | ||||
|                 AddDllDirectory(Path.Combine( | ||||
|                     AppDomain.CurrentDomain.BaseDirectory, | ||||
|                     Environment.Is64BitProcess ? "x64" : "x86" | ||||
|                 )); | ||||
|             } | ||||
|             catch | ||||
|             { | ||||
|                 // Pre-Windows 7, KB2533623 | ||||
|                 SetDllDirectory(Path.Combine( | ||||
|                     AppDomain.CurrentDomain.BaseDirectory, | ||||
|                     Environment.Is64BitProcess ? "x64" : "x86" | ||||
|                 )); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // .NET Core also doesn't use DllImport but we can replicate this using NativeLibrary as per below | ||||
|         // Uses FNA.dll.config to dictate what the name of the native library is per platform and architecture | ||||
|         var fnaAssembly = Assembly.GetAssembly(typeof(Microsoft.Xna.Framework.Graphics.ColorWriteChannels)); | ||||
|         DllMap.Register(fnaAssembly); | ||||
|     } | ||||
| 
 | ||||
|     // Register a call-back for native library resolution. | ||||
|     public static void Register(Assembly assembly) | ||||
|     { | ||||
|         NativeLibrary.SetDllImportResolver(assembly, MapAndLoad); | ||||
| 
 | ||||
|         // Do setup so that MapLibraryName is faster than reading the XML each time | ||||
| 
 | ||||
|         // 1) Get platform & cpu | ||||
|         OS = GetCurrentPlatform().ToString().ToLowerInvariant(); | ||||
|         CPU = GetCurrentRuntimeArchitecture().ToString().ToLowerInvariant(); | ||||
| 
 | ||||
|         // 2) Setup MapDictionary | ||||
|         // For Windows use hardcoded values | ||||
|         // Why?  This is our development platform and we wanted the fastest start time possible (eliminates XML Load) | ||||
|         if (OS == "windows" && Optimise) | ||||
|         { | ||||
|             MapDictionary = new Dictionary<string, string>(); | ||||
|             MapDictionary.Add("SDL2", "SDL2.dll"); | ||||
|             MapDictionary.Add("SDL_image", "SDL_image.dll"); | ||||
|             MapDictionary.Add("FAudio", "FAudio.dll"); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             // For every other platform use XML file | ||||
|             // Read in config XML and only store details we're interested in within MapDictionary | ||||
|             string xmlPath = Path.Combine(Path.GetDirectoryName(assembly.Location), | ||||
|                Path.GetFileNameWithoutExtension(assembly.Location) + ".dll.config"); | ||||
| 
 | ||||
|             if (!File.Exists(xmlPath)) | ||||
|             { | ||||
|                 Console.WriteLine($"=== Cannot find XML: " + xmlPath); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             XElement root = XElement.Load(xmlPath); | ||||
| 
 | ||||
|             MapDictionary = new Dictionary<string, string>(); | ||||
|             ParseXml(root, true); // Direct match on OS & CPU first | ||||
|             ParseXml(root, false); // Loose match on CPU second (won't allow duplicates) | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private static void ParseXml(XElement root, bool matchCPU) | ||||
|     { | ||||
|         foreach (var el in root.Elements("dllmap")) | ||||
|         { | ||||
|             // Ignore entries for other OSs | ||||
|             if (el.Attribute("os").ToString().IndexOf(OS) < 0) | ||||
|                 continue; | ||||
| 
 | ||||
|             // Ignore entries for other CPUs | ||||
|             if (matchCPU) | ||||
|             { | ||||
|                 if (el.Attribute("cpu") == null) | ||||
|                     continue; | ||||
|                 if (el.Attribute("cpu").ToString().IndexOf(CPU) < 0) | ||||
|                     continue; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 if (el.Attribute("cpu") != null && el.Attribute("cpu").ToString().IndexOf(CPU) < 0) | ||||
|                     continue; | ||||
|             } | ||||
| 
 | ||||
|             string oldLib = el.Attribute("dll").Value; | ||||
|             string newLib = el.Attribute("target").Value; | ||||
|             if (string.IsNullOrWhiteSpace(oldLib) || string.IsNullOrWhiteSpace(newLib)) | ||||
|                 continue; | ||||
| 
 | ||||
|             // Don't allow duplicates | ||||
|             if (MapDictionary.ContainsKey(oldLib)) | ||||
|                 continue; | ||||
| 
 | ||||
|             MapDictionary.Add(oldLib, newLib); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     // The callback: which loads the mapped libray in place of the original | ||||
|     private static IntPtr MapAndLoad(string libraryName, Assembly assembly, DllImportSearchPath? dllImportSearchPath) | ||||
|     { | ||||
|         string mappedName = null; | ||||
|         mappedName = MapLibraryName(assembly.Location, libraryName, out mappedName) ? mappedName : libraryName; | ||||
|         return NativeLibrary.Load(mappedName, assembly, dllImportSearchPath); | ||||
|     } | ||||
| 
 | ||||
|     // Parse the assembly.xml file, and map the old name to the new name of a library. | ||||
|     private static bool MapLibraryName(string assemblyLocation, string originalLibName, out string mappedLibName) | ||||
|     { | ||||
|         if (MapDictionary.TryGetValue(originalLibName, out mappedLibName)) | ||||
|             return true; | ||||
|         else | ||||
|             return false; | ||||
|     } | ||||
| 
 | ||||
|     // Below pinched from Mono.DllMap project:   https://github.com/Firwood-Software/AdvancedDLSupport/tree/1b7394211a655b2f77649ce3b610a3161215cbdc/Mono.DllMap | ||||
|     public static DllMapOS GetCurrentPlatform() | ||||
|     { | ||||
|         if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) | ||||
|         { | ||||
|             return DllMapOS.Linux; | ||||
|         } | ||||
| 
 | ||||
|         if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) | ||||
|         { | ||||
|             return DllMapOS.Windows; | ||||
|         } | ||||
| 
 | ||||
|         if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) | ||||
|         { | ||||
|             return DllMapOS.OSX; | ||||
|         } | ||||
| 
 | ||||
|         var operatingDesc = RuntimeInformation.OSDescription.ToUpperInvariant(); | ||||
|         foreach (var system in Enum.GetValues(typeof(DllMapOS)).Cast<DllMapOS>() | ||||
|             .Except(new[] { DllMapOS.Linux, DllMapOS.Windows, DllMapOS.OSX })) | ||||
|         { | ||||
|             if (operatingDesc.Contains(system.ToString().ToUpperInvariant())) | ||||
|             { | ||||
|                 return system; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         throw new PlatformNotSupportedException($"Couldn't detect platform: {RuntimeInformation.OSDescription}"); | ||||
|     } | ||||
| 
 | ||||
|     public static DllMapArchitecture GetCurrentRuntimeArchitecture() | ||||
|     { | ||||
|         switch (RuntimeInformation.ProcessArchitecture) | ||||
|         { | ||||
|             case Architecture.Arm: | ||||
|                 { | ||||
|                     return DllMapArchitecture.ARM; | ||||
|                 } | ||||
|             case Architecture.X64: | ||||
|                 { | ||||
|                     return DllMapArchitecture.x86_64; | ||||
|                 } | ||||
|             case Architecture.X86: | ||||
|                 { | ||||
|                     return DllMapArchitecture.x86; | ||||
|                 } | ||||
|         } | ||||
| 
 | ||||
|         typeof(object).Module.GetPEKind(out _, out var machine); | ||||
|         switch (machine) | ||||
|         { | ||||
|             case ImageFileMachine.I386: | ||||
|                 { | ||||
|                     return DllMapArchitecture.x86; | ||||
|                 } | ||||
|             case ImageFileMachine.AMD64: | ||||
|                 { | ||||
|                     return DllMapArchitecture.x86_64; | ||||
|                 } | ||||
|             case ImageFileMachine.ARM: | ||||
|                 { | ||||
|                     return DllMapArchitecture.ARM; | ||||
|                 } | ||||
|             case ImageFileMachine.IA64: | ||||
|                 { | ||||
|                     return DllMapArchitecture.IA64; | ||||
|                 } | ||||
|         } | ||||
|         throw new PlatformNotSupportedException("Couldn't detect the current architecture."); | ||||
|     } | ||||
| 
 | ||||
|     public enum DllMapOS | ||||
|     { | ||||
|         Linux = 1 << 0, | ||||
|         OSX = 1 << 1, | ||||
|         Solaris = 1 << 2, | ||||
|         FreeBSD = 1 << 3, | ||||
|         OpenBSD = 1 << 4, | ||||
|         NetBSD = 1 << 5, | ||||
|         Windows = 1 << 6, | ||||
|         AIX = 1 << 7, | ||||
|         HPUX = 1 << 8 | ||||
|     } | ||||
| 
 | ||||
|     public enum DllMapArchitecture | ||||
|     { | ||||
|         x86 = 1 << 0, | ||||
|         x86_64 = 1 << 1, | ||||
|         SPARC = 1 << 2, | ||||
|         PPC = 1 << 3, | ||||
|         S390 = 1 << 4, | ||||
|         S390X = 1 << 5, | ||||
|         ARM = 1 << 6, | ||||
|         ARMV8 = 1 << 7, | ||||
|         MIPS = 1 << 8, | ||||
|         Alpha = 1 << 9, | ||||
|         HPPA = 1 << 10, | ||||
|         IA64 = 1 << 11 | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1 @@ | |||
| Put your Engine classes here. | ||||
|  | @ -0,0 +1 @@ | |||
| Put your Message structs here. | ||||
|  | @ -0,0 +1,31 @@ | |||
| <Project> | ||||
| 	<PropertyGroup> | ||||
| 		<BaseIntermediateOutputPath>obj\$(MSBuildPongFE)</BaseIntermediateOutputPath> | ||||
| 	</PropertyGroup> | ||||
| 	<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.props" /> | ||||
|   <PropertyGroup> | ||||
|     <OutputType>WinExe</OutputType> | ||||
|     <TargetFramework>netcoreapp3.1</TargetFramework> | ||||
|     <TargetName>PongFE</TargetName> | ||||
|     <GenerateAssemblyInfo>false</GenerateAssemblyInfo> | ||||
|     <GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute> | ||||
|     <LangVersion>8.0</LangVersion> | ||||
|     <StartupObject>PongFE.Program</StartupObject> | ||||
|     <AssemblyName>PongFE</AssemblyName> | ||||
|     <RootNamespace>PongFE</RootNamespace> | ||||
|     <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> | ||||
|     <RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers> | ||||
|     <ApplicationIcon/> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="Content\**\*.*"> | ||||
|       <CopyToOutputDirectory>Always</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ProjectReference Include="..\FNA\FNA.Core.csproj"/> | ||||
|     <ProjectReference Include="..\encompass-cs\encompass-cs\encompass-cs.csproj" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="..\build\CopyFNALibs.targets"/> | ||||
|   <Import Sdk="Microsoft.NET.Sdk" Project="Sdk.targets" /> | ||||
| </Project> | ||||
|  | @ -0,0 +1,34 @@ | |||
| <Project> | ||||
| 	<PropertyGroup> | ||||
| 		<BaseIntermediateOutputPath>obj\$(MSBuildPongFE)</BaseIntermediateOutputPath> | ||||
| 	</PropertyGroup> | ||||
| 	<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.props" /> | ||||
|   <PropertyGroup> | ||||
|     <OutputType>WinExe</OutputType> | ||||
|     <TargetFramework>net461</TargetFramework> | ||||
|     <TargetName>PongFE</TargetName> | ||||
|     <GenerateAssemblyInfo>false</GenerateAssemblyInfo> | ||||
|     <GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute> | ||||
|     <LangVersion>8.0</LangVersion> | ||||
|     <StartupObject>PongFE.Program</StartupObject> | ||||
|     <AssemblyName>PongFE</AssemblyName> | ||||
|     <RootNamespace>PongFE</RootNamespace> | ||||
|     <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> | ||||
|     <RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers> | ||||
|     <ApplicationIcon/> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup> | ||||
|     <DefaultItemExcludes>$(DefaultItemExcludes);DllMap.cs</DefaultItemExcludes> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="Content\**\*.*"> | ||||
|       <CopyToOutputDirectory>Always</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ProjectReference Include="..\FNA\FNA.csproj"/> | ||||
|     <ProjectReference Include="..\encompass-cs\encompass-cs\encompass-cs.csproj" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="..\build\CopyFNALibs.targets"/> | ||||
|   <Import Sdk="Microsoft.NET.Sdk" Project="Sdk.targets" /> | ||||
| </Project> | ||||
|  | @ -0,0 +1,52 @@ | |||
| using Encompass; | ||||
| using Microsoft.Xna.Framework; | ||||
| using Microsoft.Xna.Framework.Graphics; | ||||
| 
 | ||||
| namespace PongFE | ||||
| { | ||||
|     class PongFEGame : Game | ||||
|     { | ||||
|         GraphicsDeviceManager graphics; | ||||
| 
 | ||||
|         WorldBuilder WorldBuilder { get; } = new WorldBuilder(); | ||||
|         World World { get; set; } | ||||
| 
 | ||||
|         public PongFEGame() | ||||
|         { | ||||
|             graphics = new GraphicsDeviceManager(this); | ||||
|             graphics.PreferredBackBufferWidth = 1280; | ||||
|             graphics.PreferredBackBufferHeight = 720; | ||||
|             graphics.PreferMultiSampling = true; | ||||
|             Content.RootDirectory = "Content"; | ||||
| 
 | ||||
|             Window.AllowUserResizing = true; | ||||
|             IsMouseVisible = true; | ||||
|         } | ||||
| 
 | ||||
|         protected override void LoadContent() | ||||
|         { | ||||
|             World = WorldBuilder.Build(); | ||||
|         } | ||||
| 
 | ||||
|         protected override void UnloadContent() | ||||
|         { | ||||
|             base.UnloadContent(); | ||||
|         } | ||||
| 
 | ||||
|         protected override void Update(GameTime gameTime) | ||||
|         { | ||||
|             World.Update(gameTime.ElapsedGameTime.TotalSeconds); | ||||
| 
 | ||||
|             base.Update(gameTime); | ||||
|         } | ||||
| 
 | ||||
|         protected override void Draw(GameTime gameTime) | ||||
|         { | ||||
|             GraphicsDevice.Clear(Color.CornflowerBlue); | ||||
| 
 | ||||
|             World.Draw(); | ||||
| 
 | ||||
|             base.Draw(gameTime); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,47 @@ | |||
| using System; | ||||
| using System.Diagnostics; | ||||
| using System.IO; | ||||
| using System.Runtime.InteropServices; | ||||
| 
 | ||||
| namespace PongFE | ||||
| { | ||||
|     class Program | ||||
|     { | ||||
|         [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] | ||||
|         [return: MarshalAs(UnmanagedType.Bool)] | ||||
|         static extern bool SetDllDirectory(string lpPathName); | ||||
| 
 | ||||
| 
 | ||||
|         static void Main(string[] args) | ||||
|         { | ||||
| #if NETCOREAPP | ||||
|             DllMap.Initialise(false); | ||||
| #endif | ||||
| 
 | ||||
|             // https://github.com/FNA-XNA/FNA/wiki/4:-FNA-and-Windows-API#64-bit-support | ||||
|             if (Environment.OSVersion.Platform == PlatformID.Win32NT) | ||||
|             { | ||||
|                 SetDllDirectory(Path.Combine( | ||||
|                     AppDomain.CurrentDomain.BaseDirectory, | ||||
|                     Environment.Is64BitProcess ? "x64" : "x86" | ||||
|                 )); | ||||
|             } | ||||
| 
 | ||||
|             // https://github.com/FNA-XNA/FNA/wiki/7:-FNA-Environment-Variables#fna_graphics_enable_highdpi | ||||
|             // NOTE: from documentation:  | ||||
|             //       Lastly, when packaging for macOS, be sure this is in your app bundle's Info.plist: | ||||
|             //           <key>NSHighResolutionCapable</key> | ||||
|             //           <string>True</string> | ||||
|             Environment.SetEnvironmentVariable("FNA_GRAPHICS_ENABLE_HIGHDPI", "1"); | ||||
| 
 | ||||
|             using (PongFEGame game = new PongFEGame()) | ||||
|             { | ||||
|                 bool isHighDPI = Environment.GetEnvironmentVariable("FNA_GRAPHICS_ENABLE_HIGHDPI") == "1"; | ||||
|                 if (isHighDPI) | ||||
|                     Debug.WriteLine("HiDPI Enabled"); | ||||
| 
 | ||||
|                 game.Run(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1 @@ | |||
| Put your Renderer classes here. | ||||
|  | @ -0,0 +1 @@ | |||
| Put your static Utility classes here. | ||||
|  | @ -0,0 +1,38 @@ | |||
| # Encompass-FNA-Template | ||||
| 
 | ||||
| Template (and VSCode build tasks) for developing a cross-platform multi-target .NET Framework and .NET Core game using Encompass and FNA. | ||||
| 
 | ||||
| ## Features | ||||
| 
 | ||||
| - Includes project boilerplate code | ||||
| - Build tasks for both .NET Framework and .NET Core side by side | ||||
| - Press F5 to build and debug in-editor with Core Debugger | ||||
| 
 | ||||
| ## Requirements | ||||
| 
 | ||||
| - [Git](https://git-scm.com/) | ||||
| - [Git for Windows](https://gitforwindows.org/) if on Windows | ||||
| - [Visual Studio Code](https://code.visualstudio.com/) | ||||
| - [VSCode C# Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp) | ||||
| - [.NET Core SDK](https://dotnet.microsoft.com/download/dotnet-core) | ||||
| - [.NET Framework SDK](https://dotnet.microsoft.com/download/visual-studio-sdks) or [Mono](https://www.mono-project.com/) | ||||
| 
 | ||||
| 
 | ||||
| ## Installation | ||||
| 
 | ||||
| - Make sure you have Git Bash from Git for Windows if you are on Windows | ||||
| - Download this repository | ||||
| - Run `install.sh` | ||||
| - Move the newly created project directory wherever you want | ||||
| 
 | ||||
| ## Usage | ||||
| 
 | ||||
| - Open the project directory in VSCode | ||||
| - Press Ctrl-Shift-B to open the build tasks menu | ||||
| - `Framework` tasks use .NET Framework or Mono to build and run | ||||
| - `Core` tasks use .NET Core to build and run | ||||
| - Press F5 to build and debug with Core Debugger | ||||
| 
 | ||||
| ## Acknowledgments | ||||
| 
 | ||||
| Thanks to Andrew Russell and Caleb Cornett's FNA templates for a starting point for this template. | ||||
|  | @ -0,0 +1,23 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| 
 | ||||
| 	<ItemGroup> | ||||
| 		<Content Include="..\fnalibs\x86\**\*.*" Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' == 'true' AND '$(Platform)' != 'x64'"> | ||||
| 			<Link>%(RecursiveDir)%(Filename)%(Extension)</Link> | ||||
| 			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
| 		</Content> | ||||
| 		<Content Include="..\fnalibs\x64\**\*.*" Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' == 'true' AND '$(Platform)' != 'x86'"> | ||||
| 			<Link>%(RecursiveDir)%(Filename)%(Extension)</Link> | ||||
| 			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
| 		</Content> | ||||
| 		<Content Include="..\fnalibs\osx\**\*.*" Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true'" > | ||||
| 			<Link>osx\%(RecursiveDir)%(Filename)%(Extension)</Link> | ||||
| 			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
| 		</Content> | ||||
| 		<Content Include="..\fnalibs\lib64\**\*.*" Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' == 'true'" > | ||||
| 			<Link>lib64\%(RecursiveDir)%(Filename)%(Extension)</Link> | ||||
| 			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
| 		</Content> | ||||
| 	</ItemGroup> | ||||
| 	 | ||||
| </Project> | ||||
|  | @ -0,0 +1 @@ | |||
| Subproject commit f82c92523329e48959d5949d4fe4991f33c02454 | ||||
		Loading…
	
		Reference in New Issue