diff --git a/.efrocachemap b/.efrocachemap
index 35fa556c..165bbaa2 100644
--- a/.efrocachemap
+++ b/.efrocachemap
@@ -3933,7 +3933,7 @@
"assets/build/windows/Win32/vc_redist.x86.exe": "https://files.ballistica.net/cache/ba1/1c/e1/4a1a2eddda2f4aebd5f8b64ab08e",
"assets/build/windows/Win32/vcruntime140d.dll": "https://files.ballistica.net/cache/ba1/50/8d/bc2600ac9491f1b14d659709451f",
"ballisticacore-windows/Generic/BallisticaCore.ico": "https://files.ballistica.net/cache/ba1/89/c0/e32c7d2a35dc9aef57cc73b0911a",
- "ballisticacore-windows/build/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/45/76/12988204e32839b08a160d08bd84",
+ "ballisticacore-windows/build/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/5e/5f/a44bc819df4b094006b0646427dc",
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/2e/f7/b12845cae61171552b89749ecd57",
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/74/1d/fc9e33e565475daaac80da5252f0",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/16/0d/63822a96173bf2920c12ab7630c6",
@@ -3950,7 +3950,7 @@
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/9b/c1/39884c20fc3c4f1f0a94f8e7fed3",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/65/e0/f9524f6731668303cca3628df795",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/7e/05/7d254ca951f0241406283397cea7",
- "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/84/e9/db6266a9efe6728de54364735682",
+ "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/dd/d1/3b56747ecaca7d7da86862e067ff",
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/c3/28/a9cce46c8b9ebde12d9b09556d84",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/66/67/14d56e4e90f25734712dbcedd94a",
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/78/66/a36de2580256b478e3cbdb11fb7f",
diff --git a/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj
new file mode 100644
index 00000000..fa22160c
--- /dev/null
+++ b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj
@@ -0,0 +1,723 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ {B9012642-2E6D-48A1-90EC-E91799B2198E}
+ Win32Proj
+ BallisticaCoreHeadless
+ 10.0
+
+
+
+ Application
+ true
+ v142
+ Unicode
+
+
+ Application
+ false
+ v142
+ true
+ Unicode
+
+
+ Application
+ true
+ v142
+ Unicode
+
+
+ Application
+ false
+ v142
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(ProjectDir)..\build\$(Configuration)_$(Platform)\
+ $(ProjectDir)..\build\obj\$(MSBuildProjectName)\$(Platform)_$(Configuration)\
+
+
+ true
+ $(ProjectDir)..\build\$(Configuration)_$(Platform)\
+ $(ProjectDir)..\build\obj\$(MSBuildProjectName)\$(Platform)_$(Configuration)\
+
+
+ false
+ $(ProjectDir)..\build\$(Configuration)_$(Platform)\
+ $(ProjectDir)..\build\obj\$(MSBuildProjectName)\$(Platform)_$(Configuration)\
+
+
+ false
+ $(ProjectDir)..\build\$(Configuration)_$(Platform)\
+ $(ProjectDir)..\build\obj\$(MSBuildProjectName)\$(Platform)_$(Configuration)\
+
+
+
+ Use
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ true
+ stdafx.h
+ false
+ SyncCThrow
+ ../../src;../../src/external/windows/include/SDL2;../../src/external/windows/include/Python;../../src/external/windows/include;../../src/external/open_dynamics_engine-ef
+ stdcpp17
+ Fast
+
+
+ Console
+ true
+ Default
+ ../../src/external/windows/lib/$(Platform)
+
+
+
+
+ Use
+ Level3
+ Disabled
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ SyncCThrow
+ stdafx.h
+ true
+ false
+ ../../src;../../src/external/windows/include/SDL2;../../src/external/windows/include/Python;../../src/external/windows/include;../../src/external/open_dynamics_engine-ef
+ stdcpp17
+ Fast
+
+
+ Console
+ true
+ ../../src/external/windows/lib/$(Platform)
+
+
+
+
+ Level3
+ Use
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ false
+ true
+ stdafx.h
+ SyncCThrow
+ ../../src;../../src/external/windows/include/SDL2;../../src/external/windows/include/Python;../../src/external/windows/include;../../src/external/open_dynamics_engine-ef
+ stdcpp17
+ Fast
+
+
+ Console
+ true
+ true
+ true
+ ../../src/external/windows/lib/$(Platform)
+
+
+
+
+ Level3
+ Use
+ MaxSpeed
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ false
+ SyncCThrow
+ stdafx.h
+ true
+ ../../src;../../src/external/windows/include/SDL2;../../src/external/windows/include/Python;../../src/external/windows/include;../../src/external/open_dynamics_engine-ef
+ stdcpp17
+ Fast
+
+
+ Console
+ true
+ true
+ true
+ ../../src/external/windows/lib/$(Platform)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create
+ Create
+ Create
+ Create
+
+
+
+
+
+
+
+
diff --git a/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj.filters b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj.filters
new file mode 100644
index 00000000..25c8e135
--- /dev/null
+++ b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj.filters
@@ -0,0 +1,1619 @@
+
+
+
+
+ ballistica\app
+
+
+ ballistica\app
+
+
+ ballistica\app
+
+
+ ballistica\app
+
+
+ ballistica\app
+
+
+ ballistica\app
+
+
+ ballistica\app
+
+
+ ballistica\app
+
+
+ ballistica\app
+
+
+ ballistica\app
+
+
+ ballistica\app
+
+
+ ballistica\app
+
+
+ ballistica\audio
+
+
+ ballistica\audio
+
+
+ ballistica\audio
+
+
+ ballistica\audio
+
+
+ ballistica\audio
+
+
+ ballistica\audio
+
+
+ ballistica\audio
+
+
+ ballistica\audio
+
+
+ ballistica\audio
+
+
+ ballistica\audio
+
+
+ ballistica\audio
+
+
+ ballistica\audio
+
+
+ ballistica
+
+
+ ballistica
+
+
+ ballistica\config
+
+
+ ballistica\config
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\core
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics\bg
+
+
+ ballistica\dynamics
+
+
+ ballistica\dynamics
+
+
+ ballistica\dynamics
+
+
+ ballistica\dynamics
+
+
+ ballistica\dynamics
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics\material
+
+
+ ballistica\dynamics
+
+
+ ballistica\dynamics
+
+
+ ballistica\dynamics
+
+
+ ballistica\dynamics
+
+
+ ballistica\game
+
+
+ ballistica\game
+
+
+ ballistica\game\connection
+
+
+ ballistica\game\connection
+
+
+ ballistica\game\connection
+
+
+ ballistica\game\connection
+
+
+ ballistica\game\connection
+
+
+ ballistica\game\connection
+
+
+ ballistica\game
+
+
+ ballistica\game
+
+
+ ballistica\game
+
+
+ ballistica\game
+
+
+ ballistica\game
+
+
+ ballistica\game
+
+
+ ballistica\game
+
+
+ ballistica\game
+
+
+ ballistica\game
+
+
+ ballistica\game
+
+
+ ballistica\game\session
+
+
+ ballistica\game\session
+
+
+ ballistica\game\session
+
+
+ ballistica\game\session
+
+
+ ballistica\game\session
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\generic
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics\component
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics\gl
+
+
+ ballistica\graphics\gl
+
+
+ ballistica\graphics\gl
+
+
+ ballistica\graphics\gl
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics\mesh
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics\text
+
+
+ ballistica\graphics\text
+
+
+ ballistica\graphics\text
+
+
+ ballistica\graphics\text
+
+
+ ballistica\graphics\text
+
+
+ ballistica\graphics\text
+
+
+ ballistica\graphics\text
+
+
+ ballistica\graphics\texture
+
+
+ ballistica\graphics\texture
+
+
+ ballistica\graphics\texture
+
+
+ ballistica\graphics\texture
+
+
+ ballistica\graphics\texture
+
+
+ ballistica\graphics\texture
+
+
+ ballistica\graphics
+
+
+ ballistica\graphics
+
+
+ ballistica\input\device
+
+
+ ballistica\input\device
+
+
+ ballistica\input\device
+
+
+ ballistica\input\device
+
+
+ ballistica\input\device
+
+
+ ballistica\input\device
+
+
+ ballistica\input\device
+
+
+ ballistica\input\device
+
+
+ ballistica\input\device
+
+
+ ballistica\input\device
+
+
+ ballistica\input\device
+
+
+ ballistica\input\device
+
+
+ ballistica\input
+
+
+ ballistica\input
+
+
+ ballistica\input
+
+
+ ballistica\input
+
+
+ ballistica\input
+
+
+ ballistica\input
+
+
+ ballistica\math
+
+
+ ballistica\math
+
+
+ ballistica\math
+
+
+ ballistica\math
+
+
+ ballistica\math
+
+
+ ballistica\math
+
+
+ ballistica\math
+
+
+ ballistica\math
+
+
+ ballistica\math
+
+
+ ballistica\math
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\component
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media\data
+
+
+ ballistica\media
+
+
+ ballistica\media
+
+
+ ballistica\media
+
+
+ ballistica\media
+
+
+ ballistica\networking
+
+
+ ballistica\networking
+
+
+ ballistica\networking
+
+
+ ballistica\networking
+
+
+ ballistica\networking
+
+
+ ballistica\networking
+
+
+ ballistica\networking
+
+
+ ballistica\networking
+
+
+ ballistica\platform\apple
+
+
+ ballistica\platform\linux
+
+
+ ballistica\platform\linux
+
+
+ ballistica\platform
+
+
+ ballistica\platform
+
+
+ ballistica\platform
+
+
+ ballistica\platform\sdl
+
+
+ ballistica\platform\sdl
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\class
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python\methods
+
+
+ ballistica\python
+
+
+ ballistica\python
+
+
+ ballistica\python
+
+
+ ballistica\python
+
+
+ ballistica\python
+
+
+ ballistica\python
+
+
+ ballistica\python
+
+
+ ballistica\python
+
+
+ ballistica\python
+
+
+ ballistica\python
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene\node
+
+
+ ballistica\scene
+
+
+ ballistica\scene
+
+
+ ballistica\ui
+
+
+ ballistica\ui
+
+
+ ballistica\ui
+
+
+ ballistica\ui
+
+
+ ballistica\ui
+
+
+ ballistica\ui
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ ballistica\ui\widget
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\open_dynamics_engine-ef\ode
+
+
+ external\qr_code_generator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ballisticacore-windows/Headless/stdafx.cpp b/ballisticacore-windows/Headless/stdafx.cpp
new file mode 100644
index 00000000..b3d8e0c5
--- /dev/null
+++ b/ballisticacore-windows/Headless/stdafx.cpp
@@ -0,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+// Ballistica Headless.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
diff --git a/ballisticacore-windows/Headless/stdafx.h b/ballisticacore-windows/Headless/stdafx.h
new file mode 100644
index 00000000..ced26a68
--- /dev/null
+++ b/ballisticacore-windows/Headless/stdafx.h
@@ -0,0 +1,9 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+
+#pragma once
+
+#include "ballistica/config/config_windows_headless.h"
diff --git a/ballisticacore-windows/Headless/targetver.h b/ballisticacore-windows/Headless/targetver.h
new file mode 100644
index 00000000..dd4dee81
--- /dev/null
+++ b/ballisticacore-windows/Headless/targetver.h
@@ -0,0 +1,14 @@
+#pragma once
+
+// Including SDKDDKVer.h defines the highest available Windows platform.
+
+// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
+// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
+
+#include
+
+// Targeting Windows 7
+#define WINVER _WIN32_WINNT_WIN7
+#define _WIN32_WINNT _WIN32_WINNT_WIN7
+
+#include