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,76 +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}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kav", "Kav\Kav.Framework.csproj", "{9B2EC2DE-7E2C-4768-B812-43AB4C7E31C5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Smuggler", "Smuggler\Smuggler.Framework.csproj", "{06664804-2B01-46F5-B8EC-07E5E2C1EADC}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Smuggler.Framework", "Smuggler\Smuggler.Framework.csproj", "{06664804-2B01-46F5-B8EC-07E5E2C1EADC}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FNA", "FNA\FNA.csproj", "{35253CE1-C864-4CD3-8249-4D1319748E8F}"
|
||||
EndProject
|
||||
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|x64
|
||||
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|x64.Build.0 = Debug|x64
|
||||
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{9ED076FA-32C3-4F1E-BB90-549B3A2FA46F}.Debug|x86.Build.0 = Debug|x86
|
||||
{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
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{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}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x86.Build.0 = Debug|x86
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|Any CPU.Build.0 = Debug|Any CPU
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x64.ActiveCfg = Debug|Any CPU
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x64.Build.0 = Debug|Any CPU
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x86.ActiveCfg = Debug|Any CPU
|
||||
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x86.Build.0 = Debug|Any CPU
|
||||
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 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -50,26 +50,7 @@ namespace KavTest.Engines
|
|||
if (SomeComponent<PerspectiveCameraComponent>())
|
||||
{
|
||||
var cameraEntity = ReadEntity<PerspectiveCameraComponent>();
|
||||
|
||||
if (keyboardState.IsKeyDown(Keys.I))
|
||||
{
|
||||
SendMessage(new RotateCameraMessage(cameraEntity, 0, 3));
|
||||
}
|
||||
|
||||
if (keyboardState.IsKeyDown(Keys.K))
|
||||
{
|
||||
SendMessage(new RotateCameraMessage(cameraEntity, 0, -3));
|
||||
}
|
||||
|
||||
if (keyboardState.IsKeyDown(Keys.J))
|
||||
{
|
||||
SendMessage(new RotateCameraMessage(cameraEntity, 3, 0));
|
||||
}
|
||||
|
||||
if (keyboardState.IsKeyDown(Keys.L))
|
||||
{
|
||||
SendMessage(new RotateCameraMessage(cameraEntity, -3, 0));
|
||||
}
|
||||
SendMessage(new RotateCameraMessage(cameraEntity, -mouseState.X, -mouseState.Y));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,8 +24,8 @@ 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";
|
||||
|
||||
|
@ -48,6 +49,81 @@ namespace KavTest
|
|||
{
|
||||
base.Initialize();
|
||||
|
||||
var rustyBallModel = Kav.ModelLoader.Load(
|
||||
GraphicsDevice,
|
||||
Smuggler.Importer.ImportGLB(
|
||||
GraphicsDevice,
|
||||
File.OpenRead("Content/rustysphere.glb")
|
||||
)
|
||||
);
|
||||
rustyBallModel.DisableNormalMaps();
|
||||
rustyBallModel.DisableAlbedoMaps();
|
||||
rustyBallModel.DisableMetallicRoughnessMaps();
|
||||
rustyBallModel.Albedo = Color.DeepSkyBlue;
|
||||
rustyBallModel.Metallic = 0.5f;
|
||||
rustyBallModel.Roughness = 0.284f;
|
||||
|
||||
var lightBulbModel = Kav.ModelLoader.Load(
|
||||
GraphicsDevice,
|
||||
Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/cube.glb"))
|
||||
);
|
||||
|
||||
var floorModel = Kav.ModelLoader.Load(
|
||||
GraphicsDevice,
|
||||
Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/floor.glb"))
|
||||
);
|
||||
floorModel.Metallic = 0f;
|
||||
floorModel.Roughness = 0f;
|
||||
|
||||
var avocadoModel = Kav.ModelLoader.Load(
|
||||
GraphicsDevice,
|
||||
Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/avocado.glb"))
|
||||
);
|
||||
|
||||
var redCylinderModel = Kav.ModelLoader.Load(
|
||||
GraphicsDevice,
|
||||
Smuggler.Importer.ImportGLB(
|
||||
GraphicsDevice,
|
||||
File.OpenRead("Content/redcylinder.glb")
|
||||
)
|
||||
);
|
||||
|
||||
var pinkConeModel = Kav.ModelLoader.Load(
|
||||
GraphicsDevice,
|
||||
Smuggler.Importer.ImportGLB(
|
||||
GraphicsDevice,
|
||||
File.OpenRead("Content/pinkcone.glb")
|
||||
)
|
||||
);
|
||||
|
||||
var blueTorusModel = Kav.ModelLoader.Load(
|
||||
GraphicsDevice,
|
||||
Smuggler.Importer.ImportGLB(
|
||||
GraphicsDevice,
|
||||
File.OpenRead("Content/bluetorus.glb")
|
||||
)
|
||||
);
|
||||
|
||||
var cubeModel = Kav.ModelLoader.Load(
|
||||
GraphicsDevice,
|
||||
Smuggler.Importer.ImportGLB(
|
||||
GraphicsDevice,
|
||||
File.OpenRead("Content/cube.glb")
|
||||
)
|
||||
);
|
||||
|
||||
var toonShadeRuinsModel = Kav.ModelLoader.Load(
|
||||
GraphicsDevice,
|
||||
Smuggler.Importer.ImportGLB(
|
||||
GraphicsDevice,
|
||||
File.OpenRead("Content/ToonShadeRuins.glb")
|
||||
)
|
||||
);
|
||||
|
||||
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,
|
||||
|
@ -98,14 +174,141 @@ 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());
|
||||
WorldBuilder.AddEngine(new MotionEngine());
|
||||
WorldBuilder.AddEngine(new CameraEngine());
|
||||
WorldBuilder.AddEngine(new RustyBallSpawner(rustyBallModel));
|
||||
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)),
|
||||
// new Vector3(1, 1, -1)
|
||||
// ));
|
||||
|
||||
// WorldBuilder.SendMessage(new RustyBallSpawnMessage(
|
||||
// new Transform3D(new Vector3(-3, 0, 0)),
|
||||
// new Vector3(-1, 1, -1)
|
||||
// ));
|
||||
|
||||
// WorldBuilder.SendMessage(new RustyBallSpawnMessage(
|
||||
// new Transform3D(new Vector3(3, 0, 0)),
|
||||
// new Vector3(-1, 1, 1)
|
||||
// ));
|
||||
|
||||
// WorldBuilder.SendMessage(new StaticModelSpawnMessage(
|
||||
// new Transform3D(new Vector3(0, 1, 0), Quaternion.Identity, new Vector3(1f, 1f, 1f)),
|
||||
// rustyBallModel
|
||||
// ));
|
||||
|
||||
WorldBuilder.SendMessage(new StaticModelSpawnMessage(
|
||||
new Transform3D(
|
||||
new Vector3(0, -15, 0),
|
||||
Quaternion.Identity,
|
||||
new Vector3(100f, 1f, 100f)
|
||||
),
|
||||
floorModel
|
||||
));
|
||||
|
||||
WorldBuilder.SendMessage(new StaticModelSpawnMessage(
|
||||
new Transform3D(
|
||||
new Vector3(0, 3, 0),
|
||||
Quaternion.CreateFromAxisAngle(
|
||||
Vector3.Right,
|
||||
-Microsoft.Xna.Framework.MathHelper.PiOver2
|
||||
),
|
||||
new Vector3(1f, 1f, 1f)
|
||||
),
|
||||
redCylinderModel
|
||||
));
|
||||
|
||||
WorldBuilder.SendMessage(new StaticModelSpawnMessage(
|
||||
new Transform3D(
|
||||
new Vector3(-3, 3, 0),
|
||||
Quaternion.CreateFromAxisAngle(
|
||||
Vector3.Right,
|
||||
-Microsoft.Xna.Framework.MathHelper.PiOver2
|
||||
),
|
||||
new Vector3(1f, 1f, 1f)
|
||||
),
|
||||
blueTorusModel
|
||||
));
|
||||
|
||||
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
|
||||
// ));
|
||||
|
||||
// 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)
|
||||
// );
|
||||
|
||||
//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();
|
||||
|
||||
WorldBuilder.SetComponent(ambientLightEntity, new AmbientLightComponent(
|
||||
new Color(0.4f, 0.4f, 0.4f)
|
||||
));
|
||||
|
||||
WorldBuilder.SendMessage(new DirectionalLightSpawnMessage(
|
||||
//Quaternion.CreateFromAxisAngle(Vector3.Right, Microsoft.Xna.Framework.MathHelper.Pi / 3f),
|
||||
|
@ -114,6 +317,18 @@ namespace KavTest
|
|||
0.7f
|
||||
));
|
||||
|
||||
// WorldBuilder.SendMessage(new DirectionalLightSpawnMessage(
|
||||
// Quaternion.CreateFromAxisAngle(Vector3.Right, Microsoft.Xna.Framework.MathHelper.PiOver4),
|
||||
// Color.GhostWhite,
|
||||
// 0.1f
|
||||
// ));
|
||||
|
||||
// WorldBuilder.SendMessage(new DirectionalLightSpawnMessage(
|
||||
// Quaternion.CreateFromAxisAngle(Vector3.Right, Microsoft.Xna.Framework.MathHelper.PiOver2 + Microsoft.Xna.Framework.MathHelper.PiOver4),
|
||||
// Color.GhostWhite,
|
||||
// 0.1f
|
||||
// ));
|
||||
|
||||
var cameraEntity = WorldBuilder.CreateEntity();
|
||||
WorldBuilder.SetComponent(cameraEntity, new ArcballTransformComponent(
|
||||
new ArcballTransform(
|
||||
|
|
|
@ -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 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,7 +109,9 @@ namespace KavTest.Renderers
|
|||
}
|
||||
}
|
||||
|
||||
private Kav.DirectionalLight DirectionalLight()
|
||||
private Kav.DirectionalLight? DirectionalLight()
|
||||
{
|
||||
if (SomeComponent<DirectionalLightComponent>())
|
||||
{
|
||||
var entity = ReadEntity<DirectionalLightComponent>();
|
||||
var transformComponent = GetComponent<Transform3DComponent>(entity);
|
||||
|
@ -85,16 +123,116 @@ namespace KavTest.Renderers
|
|||
directionalLightComponent.Intensity
|
||||
);
|
||||
}
|
||||
|
||||
public SceneRenderer(GraphicsDevice graphicsDevice)
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
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