Compare commits
22 Commits
skybox_exa
...
main
Author | SHA1 | Date |
---|---|---|
cosmonaut | 7a5df24253 | |
cosmonaut | 2a2b481eca | |
cosmonaut | ba994797b1 | |
cosmonaut | 6833ad5a24 | |
cosmonaut | 867d4d7f5d | |
cosmonaut | 8f570e04f0 | |
cosmonaut | d896707506 | |
cosmonaut | 552a62d90d | |
cosmonaut | 03984c4043 | |
cosmonaut | 822b897ffc | |
cosmonaut | 4687d57b28 | |
cosmonaut | f6f78eccbb | |
cosmonaut | 54f5976cd4 | |
cosmonaut | e090252d08 | |
cosmonaut | f08c89e327 | |
cosmonaut | 1c679b8323 | |
cosmonaut | 9ca6d62f11 | |
cosmonaut | 10bb9dea5b | |
cosmonaut | 56c837ac63 | |
cosmonaut | e24e0a0303 | |
cosmonaut | 37340a64e6 | |
cosmonaut | 3937004ad4 |
|
@ -1,6 +1,32 @@
|
|||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Attach to Framework Debugger",
|
||||
"type": "clr",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "Build: Framework Debug",
|
||||
"program": "${workspaceFolder}/KavTest/bin/Debug/net48/KavTest.exe",
|
||||
"args": [],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"console": "integratedTerminal",
|
||||
"internalConsoleOptions": "neverOpen"
|
||||
},
|
||||
{
|
||||
"name": "Attach to Mono Debugger",
|
||||
"type": "mono",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "Build: Mono Debug",
|
||||
"program": "${workspaceFolder}/KavTest/bin/x64/Debug/net48/KavTest.exe",
|
||||
"args": [],
|
||||
"env": {
|
||||
"LD_LIBRARY_PATH": "./lib64",
|
||||
"DYLD_LIBRARY_PATH": "./osx"
|
||||
},
|
||||
"cwd": "${workspaceFolder}/KavTest/bin/x64/Debug/net48",
|
||||
"console": "integratedTerminal",
|
||||
"internalConsoleOptions": "neverOpen"
|
||||
},
|
||||
{
|
||||
"name": "Attach to Core Debugger",
|
||||
"type": "coreclr",
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
},
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Build: Framework Release",
|
||||
"label": "Build: Mono Release",
|
||||
"command": "msbuild",
|
||||
"args": [
|
||||
"-restore:True",
|
||||
|
@ -36,7 +36,7 @@
|
|||
"problemMatcher": "$msCompile"
|
||||
},
|
||||
{
|
||||
"label": "Run: Framework Release",
|
||||
"label": "Run: Mono Release",
|
||||
"command": "mono",
|
||||
"args": [
|
||||
"KavTest.exe"
|
||||
|
@ -44,10 +44,9 @@
|
|||
"options": {
|
||||
"env": {
|
||||
"LD_LIBRARY_PATH": "./lib64",
|
||||
"DYLD_LIBRARY_PATH": "./osx",
|
||||
"FNA3D_FORCE_DRIVER": "Vulkan"
|
||||
"DYLD_LIBRARY_PATH": "./osx"
|
||||
},
|
||||
"cwd": "${workspaceFolder}/KavTest/bin/Release/net461"
|
||||
"cwd": "${workspaceFolder}/KavTest/bin/x64/Release/net48"
|
||||
},
|
||||
"type": "process",
|
||||
"group": {
|
||||
|
@ -57,10 +56,10 @@
|
|||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Build & Run: Framework Release",
|
||||
"label": "Build & Run: Mono Release",
|
||||
"dependsOn": [
|
||||
"Build: Framework Release",
|
||||
"Run: Framework Release"
|
||||
"Build: Mono Release",
|
||||
"Run: Mono Release"
|
||||
],
|
||||
"dependsOrder": "sequence",
|
||||
"type": "shell",
|
||||
|
@ -71,7 +70,7 @@
|
|||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Build: Framework Debug",
|
||||
"label": "Build: Mono Debug",
|
||||
"command": "msbuild",
|
||||
"args": [
|
||||
"-restore:True",
|
||||
|
@ -86,7 +85,7 @@
|
|||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Run: Framework Debug",
|
||||
"label": "Run: Mono Debug",
|
||||
"command": "mono",
|
||||
"args": [
|
||||
"KavTest.exe"
|
||||
|
@ -97,7 +96,7 @@
|
|||
"DYLD_LIBRARY_PATH": "./osx",
|
||||
"FNA3D_FORCE_DRIVER": "OpenGL"
|
||||
},
|
||||
"cwd": "${workspaceFolder}/KavTest/bin/Debug/net461"
|
||||
"cwd": "${workspaceFolder}/KavTest/bin/x64/Debug/net48"
|
||||
},
|
||||
"type": "process",
|
||||
"group": {
|
||||
|
@ -107,10 +106,10 @@
|
|||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Build & Run: Framework Debug",
|
||||
"label": "Build & Run: Mono Debug",
|
||||
"dependsOn": [
|
||||
"Build: Framework Debug",
|
||||
"Run: Framework Debug"
|
||||
"Build: Mono Debug",
|
||||
"Run: Mono Debug"
|
||||
],
|
||||
"dependsOrder": "sequence",
|
||||
"type": "shell",
|
||||
|
@ -219,6 +218,92 @@
|
|||
"isDefault": true
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Build: Framework Debug",
|
||||
"command": "MsBuild.exe",
|
||||
"args": [
|
||||
"-restore:True",
|
||||
"${workspaceFolder}/KavTest.Framework.sln",
|
||||
"-p:Configuration=Debug",
|
||||
"-p:Platform=x64"
|
||||
],
|
||||
"type": "shell",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Run: Framework Debug",
|
||||
"command": "KavTest.exe",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/KavTest/bin/x64/Debug/net48"
|
||||
},
|
||||
"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: Framework Release",
|
||||
"command": "MsBuild.exe",
|
||||
"args": [
|
||||
"-restore:True",
|
||||
"${workspaceFolder}/KavTest.Framework.sln",
|
||||
"-p:Configuration=Release",
|
||||
"-p:Platform=x64"
|
||||
],
|
||||
"type": "shell",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Run: Framework Release",
|
||||
"command": "KavTest.exe",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/KavTest/bin/x64/Release/net48"
|
||||
},
|
||||
"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": []
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
2
FNA
2
FNA
|
@ -1 +1 @@
|
|||
Subproject commit 1df9f588a701eefc4b55a0869cd5871be0124307
|
||||
Subproject commit 7357a6f297fee33b7a8d5afddaca30480c591ba5
|
2
Kav
2
Kav
|
@ -1 +1 @@
|
|||
Subproject commit 06e552399600be4b706249bab54740eae4fd8e6b
|
||||
Subproject commit 1723f1dff8898e1d108135e13901bfa6ea3bb0fe
|
|
@ -1,48 +1,61 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.26124.0
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30717.126
|
||||
MinimumVisualStudioVersion = 15.0.26124.0
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KavTest.Core", "KavTest\KavTest.Core.csproj", "{4589302C-174A-4173-9654-CAA6CA1B5220}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KavTest.Core", "KavTest\KavTest.Core.csproj", "{98DFC9BD-FBA1-4562-AAA0-466BED7102D3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kav", "Kav\Kav.Core.csproj", "{08398000-DF30-465A-AE07-E11D108B8A74}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FNA.Core", "FNA\FNA.Core.csproj", "{C674DC0C-0ADF-410F-B7F5-307748973352}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Kav.Core", "Kav\Kav.Core.csproj", "{E75FECE9-6919-4DF8-8847-1F7CB523D390}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Smuggler.Core", "Smuggler\Smuggler.Core.csproj", "{C11884A7-61B3-41F2-A3DA-2E7A58E1DC80}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bonk", "MoonTools.Bonk\Bonk\Bonk.csproj", "{66453D48-F637-4289-9775-84639EE4005F}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "encompass-cs", "encompass-cs\encompass-cs\encompass-cs.csproj", "{FEEEF90D-B4C1-4E39-929B-DC525A5AB048}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Curve", "MoonTools.Curve\Curve\Curve.csproj", "{335EAE2A-2F19-44FD-AD24-238CCE61B697}"
|
||||
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(ProjectConfigurationPlatforms) = postSolution
|
||||
{98DFC9BD-FBA1-4562-AAA0-466BED7102D3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{98DFC9BD-FBA1-4562-AAA0-466BED7102D3}.Debug|x64.Build.0 = Debug|x64
|
||||
{98DFC9BD-FBA1-4562-AAA0-466BED7102D3}.Release|x64.ActiveCfg = Release|x64
|
||||
{98DFC9BD-FBA1-4562-AAA0-466BED7102D3}.Release|x64.Build.0 = Release|x64
|
||||
{C674DC0C-0ADF-410F-B7F5-307748973352}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C674DC0C-0ADF-410F-B7F5-307748973352}.Debug|x64.Build.0 = Debug|x64
|
||||
{C674DC0C-0ADF-410F-B7F5-307748973352}.Release|x64.ActiveCfg = Release|x64
|
||||
{C674DC0C-0ADF-410F-B7F5-307748973352}.Release|x64.Build.0 = Release|x64
|
||||
{E75FECE9-6919-4DF8-8847-1F7CB523D390}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E75FECE9-6919-4DF8-8847-1F7CB523D390}.Debug|x64.Build.0 = Debug|x64
|
||||
{E75FECE9-6919-4DF8-8847-1F7CB523D390}.Release|x64.ActiveCfg = Release|x64
|
||||
{E75FECE9-6919-4DF8-8847-1F7CB523D390}.Release|x64.Build.0 = Release|x64
|
||||
{C11884A7-61B3-41F2-A3DA-2E7A58E1DC80}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C11884A7-61B3-41F2-A3DA-2E7A58E1DC80}.Debug|x64.Build.0 = Debug|x64
|
||||
{C11884A7-61B3-41F2-A3DA-2E7A58E1DC80}.Release|x64.ActiveCfg = Release|x64
|
||||
{C11884A7-61B3-41F2-A3DA-2E7A58E1DC80}.Release|x64.Build.0 = Release|x64
|
||||
{66453D48-F637-4289-9775-84639EE4005F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{66453D48-F637-4289-9775-84639EE4005F}.Debug|x64.Build.0 = Debug|x64
|
||||
{66453D48-F637-4289-9775-84639EE4005F}.Release|x64.ActiveCfg = Release|x64
|
||||
{66453D48-F637-4289-9775-84639EE4005F}.Release|x64.Build.0 = Release|x64
|
||||
{FEEEF90D-B4C1-4E39-929B-DC525A5AB048}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FEEEF90D-B4C1-4E39-929B-DC525A5AB048}.Debug|x64.Build.0 = Debug|x64
|
||||
{FEEEF90D-B4C1-4E39-929B-DC525A5AB048}.Release|x64.ActiveCfg = Release|x64
|
||||
{FEEEF90D-B4C1-4E39-929B-DC525A5AB048}.Release|x64.Build.0 = Release|x64
|
||||
{335EAE2A-2F19-44FD-AD24-238CCE61B697}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{335EAE2A-2F19-44FD-AD24-238CCE61B697}.Debug|x64.Build.0 = Debug|x64
|
||||
{335EAE2A-2F19-44FD-AD24-238CCE61B697}.Release|x64.ActiveCfg = Release|x64
|
||||
{335EAE2A-2F19-44FD-AD24-238CCE61B697}.Release|x64.Build.0 = Release|x64
|
||||
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
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|x64.Build.0 = Release|Any CPU
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{08398000-DF30-465A-AE07-E11D108B8A74}.Release|x86.Build.0 = Release|Any CPU
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {EE29AB8C-0987-4AB5-B007-05F81EFD7291}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
@ -1,62 +1,61 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.26124.0
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30717.126
|
||||
MinimumVisualStudioVersion = 15.0.26124.0
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FNATemplate.Framework", "KavTest\KavTest.Framework.csproj", "{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Smuggler.Framework", "Smuggler\Smuggler.Framework.csproj", "{06664804-2B01-46F5-B8EC-07E5E2C1EADC}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kav", "Kav\Kav.Framework.csproj", "{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FNA", "FNA\FNA.csproj", "{35253CE1-C864-4CD3-8249-4D1319748E8F}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Smuggler", "Smuggler\Smuggler.Framework.csproj", "{06664804-2B01-46F5-B8EC-07E5E2C1EADC}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Kav.Framework", "Kav\Kav.Framework.csproj", "{9DCFEB6B-7C62-4F6B-A78F-168FAA474145}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KavTest.Framework", "KavTest\KavTest.Framework.csproj", "{A4DFCA0B-D54D-42C0-ABA9-1A1842D39927}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Curve", "MoonTools.Curve\Curve\Curve.csproj", "{572DCC26-4184-45B1-B813-5C798E106E76}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bonk", "MoonTools.Bonk\Bonk\Bonk.csproj", "{16F6F157-1C3D-4E94-A222-66AF0CC360B1}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "encompass-cs", "encompass-cs\encompass-cs\encompass-cs.csproj", "{F23E4933-6B1F-4E29-B165-6C640D7B33DA}"
|
||||
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(ProjectConfigurationPlatforms) = postSolution
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x64.Build.0 = Debug|x64
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x64.ActiveCfg = Release|x64
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x64.Build.0 = Release|x64
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x64.Build.0 = Debug|x64
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x64.ActiveCfg = Debug|x64
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x64.Build.0 = Debug|x64
|
||||
{9DCFEB6B-7C62-4F6B-A78F-168FAA474145}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9DCFEB6B-7C62-4F6B-A78F-168FAA474145}.Debug|x64.Build.0 = Debug|x64
|
||||
{9DCFEB6B-7C62-4F6B-A78F-168FAA474145}.Release|x64.ActiveCfg = Release|x64
|
||||
{9DCFEB6B-7C62-4F6B-A78F-168FAA474145}.Release|x64.Build.0 = Release|x64
|
||||
{A4DFCA0B-D54D-42C0-ABA9-1A1842D39927}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A4DFCA0B-D54D-42C0-ABA9-1A1842D39927}.Debug|x64.Build.0 = Debug|x64
|
||||
{A4DFCA0B-D54D-42C0-ABA9-1A1842D39927}.Release|x64.ActiveCfg = Release|x64
|
||||
{A4DFCA0B-D54D-42C0-ABA9-1A1842D39927}.Release|x64.Build.0 = Release|x64
|
||||
{572DCC26-4184-45B1-B813-5C798E106E76}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{572DCC26-4184-45B1-B813-5C798E106E76}.Debug|x64.Build.0 = Debug|x64
|
||||
{572DCC26-4184-45B1-B813-5C798E106E76}.Release|x64.ActiveCfg = Release|x64
|
||||
{572DCC26-4184-45B1-B813-5C798E106E76}.Release|x64.Build.0 = Release|x64
|
||||
{16F6F157-1C3D-4E94-A222-66AF0CC360B1}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{16F6F157-1C3D-4E94-A222-66AF0CC360B1}.Debug|x64.Build.0 = Debug|x64
|
||||
{16F6F157-1C3D-4E94-A222-66AF0CC360B1}.Release|x64.ActiveCfg = Release|x64
|
||||
{16F6F157-1C3D-4E94-A222-66AF0CC360B1}.Release|x64.Build.0 = Release|x64
|
||||
{F23E4933-6B1F-4E29-B165-6C640D7B33DA}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F23E4933-6B1F-4E29-B165-6C640D7B33DA}.Debug|x64.Build.0 = Debug|x64
|
||||
{F23E4933-6B1F-4E29-B165-6C640D7B33DA}.Release|x64.ActiveCfg = Release|x64
|
||||
{F23E4933-6B1F-4E29-B165-6C640D7B33DA}.Release|x64.Build.0 = Release|x64
|
||||
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
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|x64.Build.0 = Release|Any CPU
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}.Release|x86.Build.0 = Release|Any CPU
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Debug|x86.Build.0 = Debug|x86
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x64.Build.0 = Release|Any CPU
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x86.ActiveCfg = Release|x86
|
||||
{06664804-2B01-46F5-B8EC-07E5E2C1EADC}.Release|x86.Build.0 = Release|x86
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {F5E92C03-53E8-4716-B589-BC692E409E40}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
using Encompass;
|
||||
|
||||
namespace KavTest.Components
|
||||
{
|
||||
public struct InstancedCubeComponent : IComponent { }
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
using Encompass;
|
||||
using Kav;
|
||||
|
||||
namespace KavTest
|
||||
{
|
||||
public struct MeshSpriteComponent : IComponent
|
||||
{
|
||||
public MeshSprite MeshSprite { get; }
|
||||
|
||||
public MeshSpriteComponent(
|
||||
MeshSprite meshSprite
|
||||
) {
|
||||
MeshSprite = meshSprite;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -6,10 +6,12 @@ namespace KavTest.Components
|
|||
public struct ModelComponent : IComponent
|
||||
{
|
||||
public Model Model { get; }
|
||||
public bool Instanced { get; }
|
||||
|
||||
public ModelComponent(Model model)
|
||||
public ModelComponent(Model model, bool instanced)
|
||||
{
|
||||
Model = model;
|
||||
Instanced = instanced;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
using Encompass;
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
namespace KavTest.Components
|
||||
{
|
||||
public struct SpotLightComponent : IComponent
|
||||
{
|
||||
public Color Color { get; }
|
||||
public float Intensity { get; }
|
||||
public float Angle { get; }
|
||||
|
||||
public SpotLightComponent(Color color, float intensity, float angleInRadians)
|
||||
{
|
||||
Color = color;
|
||||
Intensity = intensity;
|
||||
Angle = angleInRadians;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
using Encompass;
|
||||
using Kav;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
|
||||
namespace KavTest
|
||||
{
|
||||
public struct SpriteComponent : IComponent
|
||||
{
|
||||
public Texture2D Texture { get; }
|
||||
public Vector2 Origin { get; }
|
||||
public float Rotation { get; }
|
||||
public SpriteBillboardConstraint BillboardConstraint { get; }
|
||||
|
||||
public SpriteComponent(
|
||||
Texture2D texture,
|
||||
Vector2 origin,
|
||||
float rotation,
|
||||
SpriteBillboardConstraint billboardConstraint
|
||||
) {
|
||||
Texture = texture;
|
||||
Origin = origin;
|
||||
Rotation = rotation;
|
||||
BillboardConstraint = billboardConstraint;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
using Encompass;
|
||||
|
||||
namespace KavTest.Components
|
||||
{
|
||||
public struct StaticComponent : IComponent
|
||||
{
|
||||
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -12,11 +12,13 @@ namespace KavTest.Engines
|
|||
typeof(LocalRotationMessage)
|
||||
)]
|
||||
[Writes(typeof(Transform3DComponent))]
|
||||
[QueryWith(typeof(Transform3DComponent))]
|
||||
[QueryWithout(typeof(StaticComponent))]
|
||||
public class MotionEngine : Engine
|
||||
{
|
||||
public override void Update(double dt)
|
||||
{
|
||||
foreach (var entity in ReadEntities<Transform3DComponent>())
|
||||
foreach (var entity in TrackedEntities)
|
||||
{
|
||||
ref readonly var transformComponent = ref GetComponent<Transform3DComponent>(entity);
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace KavTest.Spawners
|
|||
AddComponent(entity, new Transform3DComponent(message.Transform));
|
||||
AddComponent(entity, new PointLightComponent(message.Color, message.Intensity));
|
||||
AddComponent(entity, new MoveAlongCurve3DComponent(message.Curve));
|
||||
AddComponent(entity, new ModelComponent(LightBulbModel));
|
||||
//AddComponent(entity, new ModelComponent(LightBulbModel));
|
||||
AddComponent(entity, new OverrideAlbedoComponent(message.Color.ToVector3()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
using Encompass;
|
||||
using KavTest.Components;
|
||||
using KavTest.Messages;
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
namespace KavTest.Spawners
|
||||
{
|
||||
public class MeshSpriteSpawner : Spawner<MeshSpriteSpawnMessage>
|
||||
{
|
||||
protected override void Spawn(in MeshSpriteSpawnMessage message)
|
||||
{
|
||||
var entity = CreateEntity();
|
||||
|
||||
AddComponent(entity, new Transform3DComponent(message.Transform));
|
||||
AddComponent(entity, new MeshSpriteComponent(message.MeshSprite));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,7 +19,7 @@ namespace KavTest.Spawners
|
|||
var entity = CreateEntity();
|
||||
|
||||
AddComponent(entity, new Transform3DComponent(message.Transform));
|
||||
AddComponent(entity, new ModelComponent(RustyBallModel));
|
||||
AddComponent(entity, new ModelComponent(RustyBallModel, true));
|
||||
AddComponent(entity, new AngularVelocityComponent(message.AngularVelocity));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ namespace KavTest.Spawners
|
|||
var entity = CreateEntity();
|
||||
|
||||
AddComponent(entity, new Transform3DComponent(message.Transform));
|
||||
AddComponent(entity, new ModelComponent(message.Model));
|
||||
AddComponent(entity, new ModelComponent(message.Model, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
using Microsoft.Xna.Framework;
|
||||
|
||||
namespace KavTest.Extensions
|
||||
{
|
||||
public static class QuaternionExtensions
|
||||
{
|
||||
public static Vector3 EulerAngles(this Quaternion q)
|
||||
{
|
||||
Vector3 angles;
|
||||
|
||||
double sinr_cosp = 2 * (q.W * q.X + q.Y * q.Z);
|
||||
double cosr_cosp = 1 - 2 * (q.X * q.X + q.Y * q.Y);
|
||||
angles.X = (float) System.Math.Atan2(sinr_cosp, cosr_cosp);
|
||||
|
||||
double sinp = 2 * (q.W * q.Y - q.Z * q.X);
|
||||
if (System.Math.Abs(sinp) >= 1)
|
||||
{
|
||||
angles.Y = (float) System.Math.PI / 2 * System.Math.Sign(sinp);
|
||||
}
|
||||
else
|
||||
{
|
||||
angles.Y = (float) System.Math.Asin(sinp);
|
||||
}
|
||||
|
||||
double siny_cosp = 2 * (q.W * q.Z + q.X * q.Y);
|
||||
double cosy_cosp = 1 - 2 * (q.Y * q.Y + q.Z * q.Z);
|
||||
angles.Z = (float) System.Math.Atan2(siny_cosp, cosy_cosp);
|
||||
|
||||
return angles;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
using Kav;
|
||||
|
||||
namespace KavTest
|
||||
{
|
||||
public class InstancedModelContainer
|
||||
{
|
||||
public MeshPart CubeModel { get; set; }
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<BaseIntermediateOutputPath>obj\$(MSBuildKavTest)</BaseIntermediateOutputPath>
|
||||
<Platforms>x64</Platforms>
|
||||
</PropertyGroup>
|
||||
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.props" />
|
||||
<PropertyGroup>
|
||||
|
@ -15,7 +16,7 @@
|
|||
<RootNamespace>KavTest</RootNamespace>
|
||||
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
|
||||
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
|
||||
<ApplicationIcon/>
|
||||
<ApplicationIcon />
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\**\*.*">
|
||||
|
@ -23,13 +24,13 @@
|
|||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\FNA\FNA.Core.csproj"/>
|
||||
<ProjectReference Include="..\FNA\FNA.Core.csproj" />
|
||||
<ProjectReference Include="..\encompass-cs\encompass-cs\encompass-cs.csproj" />
|
||||
<ProjectReference Include="..\Kav\Kav.Core.csproj" />
|
||||
<ProjectReference Include="..\Smuggler\Smuggler.Core.csproj" />
|
||||
<ProjectReference Include="..\MoonTools.Curve\Curve\Curve.csproj" />
|
||||
<ProjectReference Include="..\MoonTools.Bonk\Bonk\Bonk.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\build\CopyFNALibs.targets"/>
|
||||
<Import Project="..\build\CopyFNALibs.targets" />
|
||||
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.targets" />
|
||||
</Project>
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<BaseIntermediateOutputPath>obj\$(MSBuildKavTest)</BaseIntermediateOutputPath>
|
||||
<Platforms>x64</Platforms>
|
||||
</PropertyGroup>
|
||||
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.props" />
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net461</TargetFramework>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<TargetName>KavTest</TargetName>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>
|
||||
<LangVersion>8.0</LangVersion>
|
||||
|
@ -15,7 +17,7 @@
|
|||
<RootNamespace>KavTest</RootNamespace>
|
||||
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
|
||||
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
|
||||
<ApplicationIcon/>
|
||||
<ApplicationIcon />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<DefaultItemExcludes>$(DefaultItemExcludes);DllMap.cs</DefaultItemExcludes>
|
||||
|
@ -26,13 +28,13 @@
|
|||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\FNA\FNA.csproj"/>
|
||||
<ProjectReference Include="..\FNA\FNA.csproj" />
|
||||
<ProjectReference Include="..\encompass-cs\encompass-cs\encompass-cs.csproj" />
|
||||
<ProjectReference Include="..\Kav\Kav.Framework.csproj" />
|
||||
<ProjectReference Include="..\Smuggler\Smuggler.Framework.csproj" />
|
||||
<ProjectReference Include="..\MoonTools.Curve\Curve\Curve.csproj" />
|
||||
<ProjectReference Include="..\MoonTools.Bonk\Bonk\Bonk.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\build\CopyFNALibs.targets"/>
|
||||
<Import Project="..\build\CopyFNALibs.targets" />
|
||||
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.targets" />
|
||||
</Project>
|
||||
|
|
|
@ -16,6 +16,7 @@ namespace KavTest
|
|||
class KavTestGame : Game
|
||||
{
|
||||
GraphicsDeviceManager graphics;
|
||||
InstancedModelContainer InstancedModelContainer { get; } = new InstancedModelContainer();
|
||||
|
||||
WorldBuilder WorldBuilder { get; } = new WorldBuilder();
|
||||
World World { get; set; }
|
||||
|
@ -23,14 +24,14 @@ namespace KavTest
|
|||
public KavTestGame()
|
||||
{
|
||||
graphics = new GraphicsDeviceManager(this);
|
||||
graphics.PreferredBackBufferWidth = 1280;
|
||||
graphics.PreferredBackBufferHeight = 720;
|
||||
graphics.PreferredBackBufferWidth = 1600;
|
||||
graphics.PreferredBackBufferHeight = 900;
|
||||
graphics.PreferMultiSampling = false;
|
||||
Content.RootDirectory = "Content";
|
||||
|
||||
Window.AllowUserResizing = true;
|
||||
IsMouseVisible = true;
|
||||
|
||||
|
||||
Microsoft.Xna.Framework.Input.Mouse.IsRelativeMouseModeEXT = true;
|
||||
}
|
||||
|
||||
|
@ -51,7 +52,7 @@ namespace KavTest
|
|||
var rustyBallModel = Kav.ModelLoader.Load(
|
||||
GraphicsDevice,
|
||||
Smuggler.Importer.ImportGLB(
|
||||
GraphicsDevice,
|
||||
GraphicsDevice,
|
||||
File.OpenRead("Content/rustysphere.glb")
|
||||
)
|
||||
);
|
||||
|
@ -119,6 +120,10 @@ namespace KavTest
|
|||
)
|
||||
);
|
||||
|
||||
InstancedModelContainer.CubeModel = cubeModel.Meshes[0].MeshParts[0];
|
||||
InstancedModelContainer.CubeModel.Albedo = Color.Blue.ToVector3();
|
||||
InstancedModelContainer.CubeModel.DisableAlbedoMap = true;
|
||||
|
||||
Texture2D.TextureDataFromStreamEXT(
|
||||
File.OpenRead("Content/Skybox/front.jpg"),
|
||||
out var skyboxSize,
|
||||
|
@ -169,6 +174,14 @@ namespace KavTest
|
|||
skybox.SetData(CubeMapFace.PositiveY, topPixels);
|
||||
skybox.SetData(CubeMapFace.NegativeY, bottomPixels);
|
||||
|
||||
var mushroomGuyTexture = Texture2D.FromStream(GraphicsDevice, new FileStream("Content/Sprites/mushroomguy.png", FileMode.Open));
|
||||
|
||||
var mushroomGuyMeshSprite = new Kav.MeshSprite(
|
||||
GraphicsDevice,
|
||||
mushroomGuyTexture,
|
||||
Kav.SpriteBillboardConstraint.None
|
||||
);
|
||||
|
||||
WorldBuilder.AddEngine(new InputEngine(this));
|
||||
WorldBuilder.AddEngine(new AngularVelocityEngine());
|
||||
WorldBuilder.AddEngine(new MoveAlongCurve3DEngine());
|
||||
|
@ -178,7 +191,8 @@ namespace KavTest
|
|||
WorldBuilder.AddEngine(new LightBulbSpawner(lightBulbModel));
|
||||
WorldBuilder.AddEngine(new StaticModelSpawner());
|
||||
WorldBuilder.AddEngine(new DirectionalLightSpawner());
|
||||
WorldBuilder.AddGeneralRenderer(new SceneRenderer(GraphicsDevice), 0);
|
||||
WorldBuilder.AddEngine(new MeshSpriteSpawner());
|
||||
WorldBuilder.AddGeneralRenderer(new SceneRenderer(GraphicsDevice, InstancedModelContainer), 0);
|
||||
|
||||
// WorldBuilder.SendMessage(new RustyBallSpawnMessage(
|
||||
// new Transform3D(new Vector3(0, 0, 0)),
|
||||
|
@ -201,17 +215,21 @@ namespace KavTest
|
|||
// ));
|
||||
|
||||
WorldBuilder.SendMessage(new StaticModelSpawnMessage(
|
||||
new Transform3D(new Vector3(0, -3, 0), Quaternion.Identity, new Vector3(10f, 1f, 10f)),
|
||||
new Transform3D(
|
||||
new Vector3(0, -15, 0),
|
||||
Quaternion.Identity,
|
||||
new Vector3(100f, 1f, 100f)
|
||||
),
|
||||
floorModel
|
||||
));
|
||||
|
||||
WorldBuilder.SendMessage(new StaticModelSpawnMessage(
|
||||
new Transform3D(
|
||||
new Vector3(0, 1, 0),
|
||||
new Vector3(0, 3, 0),
|
||||
Quaternion.CreateFromAxisAngle(
|
||||
Vector3.Right,
|
||||
Vector3.Right,
|
||||
-Microsoft.Xna.Framework.MathHelper.PiOver2
|
||||
),
|
||||
),
|
||||
new Vector3(1f, 1f, 1f)
|
||||
),
|
||||
redCylinderModel
|
||||
|
@ -219,44 +237,72 @@ namespace KavTest
|
|||
|
||||
WorldBuilder.SendMessage(new StaticModelSpawnMessage(
|
||||
new Transform3D(
|
||||
new Vector3(-3, 1, 0),
|
||||
new Vector3(-3, 3, 0),
|
||||
Quaternion.CreateFromAxisAngle(
|
||||
Vector3.Right,
|
||||
Vector3.Right,
|
||||
-Microsoft.Xna.Framework.MathHelper.PiOver2
|
||||
),
|
||||
),
|
||||
new Vector3(1f, 1f, 1f)
|
||||
),
|
||||
blueTorusModel
|
||||
));
|
||||
|
||||
WorldBuilder.SendMessage(new StaticModelSpawnMessage(
|
||||
new Transform3D(
|
||||
new Vector3(3, 1, 0),
|
||||
Quaternion.CreateFromAxisAngle(
|
||||
Vector3.Right,
|
||||
-Microsoft.Xna.Framework.MathHelper.PiOver2
|
||||
),
|
||||
new Vector3(1f, 1f, 1f)
|
||||
),
|
||||
cubeModel
|
||||
for (int i = -10; i < 10; i++)
|
||||
{
|
||||
for (int j = -10; j < 10; j++)
|
||||
{
|
||||
var entity = WorldBuilder.CreateEntity();
|
||||
WorldBuilder.SetComponent(entity, new Transform3DComponent(
|
||||
new Transform3D(
|
||||
new Vector3(i * 5, -1, j * 5)
|
||||
)
|
||||
));
|
||||
WorldBuilder.SetComponent(entity, new InstancedCubeComponent());
|
||||
WorldBuilder.SetComponent(entity, new StaticComponent());
|
||||
}
|
||||
}
|
||||
|
||||
WorldBuilder.SendMessage(new MeshSpriteSpawnMessage(
|
||||
new Transform3D(new Vector3(3, 0, 11), Quaternion.CreateFromAxisAngle(Vector3.Up, (float)System.Math.PI), Vector3.One),
|
||||
mushroomGuyMeshSprite
|
||||
));
|
||||
|
||||
|
||||
// WorldBuilder.SendMessage(new StaticModelSpawnMessage(
|
||||
// Transform3D.Identity,
|
||||
// toonShadeRuinsModel
|
||||
// ));
|
||||
|
||||
for (var i = 0; i < 1; i++)
|
||||
{
|
||||
var start = RandomHelper.RandomVector3(-5, 5);
|
||||
// var lightEntity = WorldBuilder.CreateEntity();
|
||||
// WorldBuilder.SetComponent(
|
||||
// lightEntity,
|
||||
// new Transform3DComponent(
|
||||
// new Transform3D(
|
||||
// new Vector3(0, 3, 3),
|
||||
// Quaternion.Identity,
|
||||
// new Vector3(0.1f, 0.1f, 0.1f)
|
||||
// )
|
||||
// )
|
||||
// );
|
||||
// WorldBuilder.SetComponent(
|
||||
// lightEntity,
|
||||
// new PointLightComponent(Color.Blue, 1000f)
|
||||
// );
|
||||
// WorldBuilder.SetComponent(
|
||||
// lightEntity,
|
||||
// new ModelComponent(cubeModel)
|
||||
// );
|
||||
|
||||
WorldBuilder.SendMessage(new LightBulbSpawnMessage(
|
||||
new Transform3D(start.ToXNAVector(), Quaternion.Identity, new Vector3(0.1f, 0.1f, 0.1f)),
|
||||
RandomHelper.RandomColor(),
|
||||
1f,
|
||||
RandomHelper.RandomLoop(start, -15, 15, 3, 10)
|
||||
));
|
||||
}
|
||||
//for (var i = 0; i < 1; i++)
|
||||
//{
|
||||
// var start = new Vector3(-2, 5, 0);
|
||||
|
||||
// WorldBuilder.SendMessage(new LightBulbSpawnMessage(
|
||||
// new Transform3D(start, Quaternion.Identity, new Vector3(0.1f, 0.1f, 0.1f)),
|
||||
// RandomHelper.RandomColor(),
|
||||
// 50f,
|
||||
// RandomHelper.RandomLoop(new System.Numerics.Vector3(-2, 5, 0), 2, 5, 3, 10)
|
||||
// ));
|
||||
//}
|
||||
|
||||
var ambientLightEntity = WorldBuilder.CreateEntity();
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
using Encompass;
|
||||
using Kav;
|
||||
|
||||
namespace KavTest.Messages
|
||||
{
|
||||
public struct MeshSpriteSpawnMessage : IMessage
|
||||
{
|
||||
public Transform3D Transform { get; }
|
||||
public MeshSprite MeshSprite { get; }
|
||||
|
||||
public MeshSpriteSpawnMessage(
|
||||
Transform3D transform,
|
||||
MeshSprite meshSprite
|
||||
) {
|
||||
Transform = transform;
|
||||
MeshSprite = meshSprite;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"profiles": {
|
||||
"KavTest.Framework": {
|
||||
"commandName": "Project",
|
||||
"environmentVariables": {
|
||||
"FNA3D_FORCE_DRIVER": "Vulkan"
|
||||
},
|
||||
"nativeDebugging": true
|
||||
}
|
||||
}
|
||||
}
|
|
@ -11,9 +11,43 @@ namespace KavTest.Renderers
|
|||
{
|
||||
public class SceneRenderer : GeneralRenderer
|
||||
{
|
||||
private GraphicsDevice GraphicsDevice { get; }
|
||||
private SpriteBatch SpriteBatch { get; }
|
||||
private InstancedModelContainer InstancedModelContainer { get; }
|
||||
|
||||
private Kav.Renderer Renderer { get; }
|
||||
|
||||
private IEnumerable<(Kav.Model, Matrix)> ModelTransforms
|
||||
private RenderTargetBinding[] GBuffer { get; }
|
||||
|
||||
private RenderTarget2D GPosition { get; }
|
||||
private RenderTarget2D GNormal { get; }
|
||||
private RenderTarget2D GAlbedo { get; }
|
||||
private RenderTarget2D GMetallicRoughness { get; }
|
||||
|
||||
private RenderTarget2D DeferredTarget { get; }
|
||||
private RenderTarget2D BillboardTarget { get; }
|
||||
private RenderTargetCube ShadowCubeMap { get; }
|
||||
private DirectionalShadowMapData DirectionalShadowMapData { get; }
|
||||
|
||||
private readonly Dictionary<Kav.MeshPart, List<Matrix>> InstanceMap = new Dictionary<MeshPart, List<Matrix>>();
|
||||
|
||||
private IEnumerable<Matrix> CubeTransforms
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (var entity in ReadEntitiesAsEnumerable<InstancedCubeComponent>())
|
||||
{
|
||||
if (HasComponent<Transform3DComponent>(entity))
|
||||
{
|
||||
var transformComponent = GetComponent<Transform3DComponent>(entity);
|
||||
|
||||
yield return transformComponent.Transform.TransformMatrix;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerable<(Kav.MeshPart, Matrix)> MeshPartTransforms
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@ -22,20 +56,22 @@ namespace KavTest.Renderers
|
|||
/* FIXME: this transformation should definitely not go here */
|
||||
var transformComponent = GetComponent<Transform3DComponent>(entity);
|
||||
var modelComponent = GetComponent<ModelComponent>(entity);
|
||||
if (HasComponent<OverrideAlbedoComponent>(entity))
|
||||
{
|
||||
var overrideAlbedoComponent = GetComponent<OverrideAlbedoComponent>(entity);
|
||||
|
||||
foreach (var mesh in modelComponent.Model.Meshes)
|
||||
foreach (var mesh in modelComponent.Model.Meshes)
|
||||
{
|
||||
foreach (var meshPart in mesh.MeshParts)
|
||||
{
|
||||
foreach (var meshPart in mesh.MeshParts)
|
||||
if (HasComponent<OverrideAlbedoComponent>(entity))
|
||||
{
|
||||
var overrideAlbedoComponent = GetComponent<OverrideAlbedoComponent>(entity);
|
||||
|
||||
meshPart.DisableAlbedoMap = true;
|
||||
meshPart.Albedo = overrideAlbedoComponent.Color;
|
||||
}
|
||||
|
||||
yield return (meshPart, transformComponent.Transform.TransformMatrix);
|
||||
}
|
||||
}
|
||||
yield return (modelComponent.Model, transformComponent.Transform.TransformMatrix);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -73,28 +109,130 @@ namespace KavTest.Renderers
|
|||
}
|
||||
}
|
||||
|
||||
private Kav.DirectionalLight DirectionalLight()
|
||||
private Kav.DirectionalLight? DirectionalLight()
|
||||
{
|
||||
var entity = ReadEntity<DirectionalLightComponent>();
|
||||
var transformComponent = GetComponent<Transform3DComponent>(entity);
|
||||
var directionalLightComponent = GetComponent<DirectionalLightComponent>(entity);
|
||||
if (SomeComponent<DirectionalLightComponent>())
|
||||
{
|
||||
var entity = ReadEntity<DirectionalLightComponent>();
|
||||
var transformComponent = GetComponent<Transform3DComponent>(entity);
|
||||
var directionalLightComponent = GetComponent<DirectionalLightComponent>(entity);
|
||||
|
||||
return new Kav.DirectionalLight(
|
||||
transformComponent.Transform.Forward,
|
||||
directionalLightComponent.Color,
|
||||
directionalLightComponent.Intensity
|
||||
);
|
||||
return new Kav.DirectionalLight(
|
||||
transformComponent.Transform.Forward,
|
||||
directionalLightComponent.Color,
|
||||
directionalLightComponent.Intensity
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public SceneRenderer(GraphicsDevice graphicsDevice)
|
||||
private IEnumerable<(MeshSprite, Matrix)> MeshSpriteTransforms()
|
||||
{
|
||||
foreach (var entity in ReadEntitiesAsEnumerable<MeshSpriteComponent>())
|
||||
{
|
||||
var transformComponent = GetComponent<Transform3DComponent>(entity);
|
||||
var spriteComponent = GetComponent<MeshSpriteComponent>(entity);
|
||||
|
||||
yield return (spriteComponent.MeshSprite, transformComponent.Transform.TransformMatrix);
|
||||
}
|
||||
}
|
||||
|
||||
public SceneRenderer(
|
||||
GraphicsDevice graphicsDevice,
|
||||
InstancedModelContainer instancedModelContainer
|
||||
) {
|
||||
GraphicsDevice = graphicsDevice;
|
||||
InstancedModelContainer = instancedModelContainer;
|
||||
|
||||
var renderDimensionsX = GraphicsDevice.PresentationParameters.BackBufferWidth;
|
||||
var renderDimensionsY = GraphicsDevice.PresentationParameters.BackBufferHeight;
|
||||
|
||||
Renderer = new Kav.Renderer(
|
||||
graphicsDevice,
|
||||
graphicsDevice.PresentationParameters.BackBufferWidth,
|
||||
graphicsDevice.PresentationParameters.BackBufferHeight,
|
||||
4,
|
||||
4096
|
||||
GraphicsDevice
|
||||
);
|
||||
|
||||
DeferredTarget = new RenderTarget2D(
|
||||
GraphicsDevice,
|
||||
renderDimensionsX,
|
||||
renderDimensionsY,
|
||||
false,
|
||||
SurfaceFormat.Color,
|
||||
DepthFormat.Depth24Stencil8,
|
||||
0,
|
||||
RenderTargetUsage.PreserveContents
|
||||
);
|
||||
|
||||
BillboardTarget = new RenderTarget2D(
|
||||
GraphicsDevice,
|
||||
renderDimensionsX,
|
||||
renderDimensionsY,
|
||||
false,
|
||||
SurfaceFormat.Color,
|
||||
DepthFormat.Depth24Stencil8,
|
||||
0,
|
||||
RenderTargetUsage.PreserveContents
|
||||
);
|
||||
|
||||
GPosition = new RenderTarget2D(
|
||||
GraphicsDevice,
|
||||
renderDimensionsX,
|
||||
renderDimensionsY,
|
||||
false,
|
||||
SurfaceFormat.Vector4,
|
||||
DepthFormat.Depth24,
|
||||
0,
|
||||
RenderTargetUsage.PreserveContents
|
||||
);
|
||||
|
||||
GNormal = new RenderTarget2D(
|
||||
GraphicsDevice,
|
||||
renderDimensionsX,
|
||||
renderDimensionsY,
|
||||
false,
|
||||
SurfaceFormat.Vector4,
|
||||
DepthFormat.None
|
||||
);
|
||||
|
||||
GAlbedo = new RenderTarget2D(
|
||||
GraphicsDevice,
|
||||
renderDimensionsX,
|
||||
renderDimensionsY,
|
||||
false,
|
||||
SurfaceFormat.Color,
|
||||
DepthFormat.None
|
||||
);
|
||||
|
||||
GMetallicRoughness = new RenderTarget2D(
|
||||
GraphicsDevice,
|
||||
renderDimensionsX,
|
||||
renderDimensionsY,
|
||||
false,
|
||||
SurfaceFormat.HalfVector2,
|
||||
DepthFormat.None
|
||||
);
|
||||
|
||||
GBuffer = new RenderTargetBinding[4] {
|
||||
new RenderTargetBinding(GPosition),
|
||||
new RenderTargetBinding(GNormal),
|
||||
new RenderTargetBinding(GAlbedo),
|
||||
new RenderTargetBinding(GMetallicRoughness)
|
||||
};
|
||||
|
||||
ShadowCubeMap = Kav.Renderer.CreateShadowCubeMap(
|
||||
GraphicsDevice,
|
||||
2048
|
||||
);
|
||||
|
||||
DirectionalShadowMapData = Kav.Renderer.CreateDirectionalShadowMaps(
|
||||
graphicsDevice,
|
||||
2048,
|
||||
4
|
||||
);
|
||||
|
||||
SpriteBatch = new SpriteBatch(GraphicsDevice);
|
||||
}
|
||||
|
||||
public override void Render()
|
||||
|
@ -115,45 +253,156 @@ namespace KavTest.Renderers
|
|||
cameraComponent.FarPlane
|
||||
);
|
||||
|
||||
// if (SomeComponent<DirectionalLightComponent>())
|
||||
// {
|
||||
// ref readonly var directionalLightEntity = ref ReadEntity<DirectionalLightComponent>();
|
||||
// ref readonly var directionalLightTransformComponent = ref GetComponent<Transform3DComponent>(directionalLightEntity);
|
||||
// ref readonly var directionalLightComponent = ref GetComponent<DirectionalLightComponent>(directionalLightEntity);
|
||||
GraphicsDevice.SetRenderTargets(GBuffer);
|
||||
GraphicsDevice.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.Black, 1f, 0);
|
||||
|
||||
// Renderer.DepthRender(
|
||||
// ModelTransforms,
|
||||
// new Kav.DirectionalLight(
|
||||
// directionalLightTransformComponent.Transform.Forward,
|
||||
// directionalLightComponent.Color,
|
||||
// directionalLightComponent.Intensity
|
||||
// )
|
||||
// );
|
||||
// }
|
||||
GraphicsDevice.SetRenderTarget(DeferredTarget);
|
||||
GraphicsDevice.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.Black, 1f, 0);
|
||||
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
|
||||
|
||||
// Renderer.DeferredRender(
|
||||
// camera,
|
||||
// ModelTransforms,
|
||||
// AmbientLight,
|
||||
// PointLights,
|
||||
// DirectionalLight()
|
||||
// );
|
||||
|
||||
Renderer.DeferredToonRender(
|
||||
Renderer.RenderGBufferInstanced(
|
||||
GBuffer,
|
||||
DeferredTarget,
|
||||
camera,
|
||||
InstancedModelContainer.CubeModel,
|
||||
CubeTransforms
|
||||
);
|
||||
|
||||
Renderer.RenderGBufferIndexed(
|
||||
GBuffer,
|
||||
camera,
|
||||
MeshPartTransforms
|
||||
);
|
||||
|
||||
Renderer.RenderDepthIndexed(
|
||||
DeferredTarget,
|
||||
camera,
|
||||
MeshPartTransforms
|
||||
);
|
||||
|
||||
Renderer.RenderAmbientLight(
|
||||
DeferredTarget,
|
||||
GPosition,
|
||||
GAlbedo,
|
||||
AmbientLight
|
||||
);
|
||||
|
||||
foreach (var pointLight in PointLights)
|
||||
{
|
||||
foreach (CubeMapFace face in Enum.GetValues(typeof(CubeMapFace)))
|
||||
{
|
||||
GraphicsDevice.SetRenderTarget(ShadowCubeMap, face);
|
||||
GraphicsDevice.Clear(Color.White);
|
||||
}
|
||||
|
||||
Renderer.RenderPointShadowMapIndexed(
|
||||
ShadowCubeMap,
|
||||
camera,
|
||||
MeshPartTransforms,
|
||||
pointLight
|
||||
);
|
||||
|
||||
Renderer.RenderPointLight(
|
||||
DeferredTarget,
|
||||
GPosition,
|
||||
GAlbedo,
|
||||
GNormal,
|
||||
GMetallicRoughness,
|
||||
ShadowCubeMap,
|
||||
camera,
|
||||
pointLight
|
||||
);
|
||||
}
|
||||
|
||||
var directionalLight = DirectionalLight();
|
||||
|
||||
if (directionalLight.HasValue)
|
||||
{
|
||||
DirectionalShadowMapData.Clear(GraphicsDevice);
|
||||
|
||||
Renderer.PrepareDirectionalShadowData(
|
||||
DirectionalShadowMapData,
|
||||
camera,
|
||||
directionalLight.Value
|
||||
);
|
||||
|
||||
Renderer.RenderDirectionalShadowsIndexed(
|
||||
DirectionalShadowMapData,
|
||||
MeshPartTransforms
|
||||
);
|
||||
|
||||
Renderer.RenderDirectionalShadowsInstanced(
|
||||
DirectionalShadowMapData,
|
||||
InstancedModelContainer.CubeModel,
|
||||
CubeTransforms
|
||||
);
|
||||
|
||||
Renderer.RenderDirectionalLight(
|
||||
DeferredTarget,
|
||||
GPosition,
|
||||
GAlbedo,
|
||||
GNormal,
|
||||
GMetallicRoughness,
|
||||
DirectionalShadowMapData,
|
||||
camera,
|
||||
directionalLight.Value
|
||||
);
|
||||
}
|
||||
|
||||
Renderer.RenderSkybox(
|
||||
DeferredTarget,
|
||||
camera,
|
||||
ModelTransforms,
|
||||
AmbientLight,
|
||||
DirectionalLight(),
|
||||
ReadComponent<SkyboxComponent>().Skybox
|
||||
);
|
||||
|
||||
// foreach (var directionalLight in DirectionalLights)
|
||||
// {
|
||||
// Renderer.DepthRender(
|
||||
// ModelTransforms,
|
||||
// directionalLight
|
||||
// );
|
||||
// }
|
||||
Renderer.MeshSpriteRender(
|
||||
DeferredTarget,
|
||||
camera,
|
||||
MeshSpriteTransforms(),
|
||||
AmbientLight,
|
||||
PointLights,
|
||||
DirectionalLight()
|
||||
);
|
||||
|
||||
GraphicsDevice.SetRenderTarget(null);
|
||||
SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null);
|
||||
SpriteBatch.Draw(DeferredTarget, Vector2.Zero, Color.White);
|
||||
//SpriteBatch.Draw(BillboardTarget, Vector2.Zero, Color.White);
|
||||
SpriteBatch.End();
|
||||
}
|
||||
}
|
||||
|
||||
private void CollectInstances()
|
||||
{
|
||||
foreach (var list in InstanceMap.Values)
|
||||
{
|
||||
list.Clear();
|
||||
}
|
||||
|
||||
foreach (var modelEntity in ReadEntities<ModelComponent>())
|
||||
{
|
||||
if (HasComponent<Transform3DComponent>(modelEntity))
|
||||
{
|
||||
var modelComponent = GetComponent<ModelComponent>(modelEntity);
|
||||
if (modelComponent.Instanced)
|
||||
{
|
||||
var transformComponent = GetComponent<Transform3DComponent>(modelEntity);
|
||||
|
||||
foreach (var mesh in modelComponent.Model.Meshes)
|
||||
{
|
||||
foreach (var meshPart in mesh.MeshParts)
|
||||
{
|
||||
if (!InstanceMap.ContainsKey(meshPart))
|
||||
{
|
||||
InstanceMap.Add(meshPart, new List<Matrix>());
|
||||
}
|
||||
else
|
||||
|
||||
InstanceMap[meshPart].Add(transformComponent.Transform.TransformMatrix);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 2f341aaeae07d2cb9b8f9be0ff5688543dcd582b
|
||||
Subproject commit 094cf4b3d2cc5197cc8e0719f0dd368d50afe00e
|
|
@ -1 +1 @@
|
|||
Subproject commit 1a14f2595ad83dae3d6a715506bf2f735168416c
|
||||
Subproject commit f1120a2572a7aa16b859da81bd6a4a5e7a8ea19b
|
2
Smuggler
2
Smuggler
|
@ -1 +1 @@
|
|||
Subproject commit 4c78ed3d392af9d5c004ad1f6f133d94f1bd36d9
|
||||
Subproject commit ae6794e71bab538cc82e75f77ab0ed07a993320a
|
|
@ -1 +1 @@
|
|||
Subproject commit bdd9f595493609444d8ebb31b9d07b7ef320eafb
|
||||
Subproject commit 4538c0f3c9bbff1f17633eff897b61998e5fec3d
|
Loading…
Reference in New Issue