From deaa84d28d7606e335abe323ccc4a101d025dfea Mon Sep 17 00:00:00 2001 From: Jeffery Myers Date: Thu, 3 Jun 2021 10:09:43 -0700 Subject: [PATCH] Add a split screen example showing render texture use and multiple cameras. (#1806) Co-authored-by: Jeffery Myers --- examples/Makefile | 3 +- examples/core/core_split_screen.c | 161 ++++++++ examples/core/core_split_screen.png | Bin 0 -> 37733 bytes .../VS2019/examples/core_split_screen.vcxproj | 387 ++++++++++++++++++ projects/VS2019/raylib.sln | 19 + 5 files changed, 569 insertions(+), 1 deletion(-) create mode 100644 examples/core/core_split_screen.c create mode 100644 examples/core/core_split_screen.png create mode 100644 projects/VS2019/examples/core_split_screen.vcxproj diff --git a/examples/Makefile b/examples/Makefile index 432455f18..01c30c14c 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -395,7 +395,8 @@ CORE = \ core/core_vr_simulator \ core/core_loading_thread \ core/core_quat_conversion \ - core/core_window_flags + core/core_window_flags \ + core/core_split_screen SHAPES = \ shapes/shapes_basic_shapes \ diff --git a/examples/core/core_split_screen.c b/examples/core/core_split_screen.c new file mode 100644 index 000000000..cf34a3ca6 --- /dev/null +++ b/examples/core/core_split_screen.c @@ -0,0 +1,161 @@ +/******************************************************************************************* +* +* raylib [core] example - split screen +* +* Welcome to raylib! +* +* To test examples, just press F6 and execute raylib_compile_execute script +* Note that compiled executable is placed in the same folder as .c file +* +* You can find all basic examples on C:\raylib\raylib\examples folder or +* raylib official webpage: www.raylib.com +* +* Enjoy using raylib. :) +* +* This example has been created using raylib 3.7 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2013-2016 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" + +Texture2D GridTexture; +Camera Player1Camera = { 0 }; +Camera Player2Camera = { 0 }; + +void DrawScene() +{ + // grid of cube trees on a plane to make a "world" + DrawPlane((Vector3){ 0, 0, 0 }, (Vector2){ 50, 50 }, BEIGE); // simple world plane + float spacing = 4; + int count = 5; + + for (float x = -count * spacing; x <= count * spacing; x += spacing) + { + for (float z = -count * spacing; z <= count * spacing; z += spacing) + { + Vector3 pos = { x, 0.5f, z }; + + Vector3 min = { x - 0.5f,0,z - 0.5f }; + Vector3 max = { x + 0.5f,1,z + 0.5f }; + + DrawCubeTexture(GridTexture, (Vector3) { x, 1.5f, z }, 1, 1, 1, GREEN); + DrawCubeTexture(GridTexture, (Vector3) { x, 0.5f, z }, 0.25f, 1, 0.25f, BROWN); + } + } + + // draw a cube at each player's position + DrawCube(Player1Camera.position, 1, 1, 1, RED); + DrawCube(Player2Camera.position, 1, 1, 1, BLUE); +} + +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [core] example - split screen"); + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + + // generate a simple texture to use for trees + Image img = GenImageChecked(256, 256, 32, 32, DARKGRAY, WHITE); + GridTexture = LoadTextureFromImage(img); + UnloadImage(img); + SetTextureFilter(GridTexture, TEXTURE_FILTER_ANISOTROPIC_16X); + SetTextureWrap(GridTexture, TEXTURE_WRAP_CLAMP); + + + // setup player 1 camera and screen + Player1Camera.fovy = 45; + Player1Camera.up.y = 1; + Player1Camera.target.y = 1; + Player1Camera.position.z = -3; + Player1Camera.position.y = 1; + + RenderTexture player1Screen = LoadRenderTexture(screenWidth / 2, screenHeight); + + // setup player two camera and screen + Player2Camera.fovy = 45; + Player2Camera.up.y = 1; + Player2Camera.target.y =3; + Player2Camera.position.x = -3; + Player2Camera.position.y = 3; + + RenderTexture player2Screen = LoadRenderTexture(screenWidth / 2, screenHeight); + + // build a flipped rectangle the size of the split view to use for drawing later + Rectangle splitScreenRect = { 0,0, (float)player1Screen.texture.width, (float)-player1Screen.texture.height }; + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // if anyone moves this frame, how far will they move based on the time since the last frame + // this moves thigns at 10 world units per second, regardless of the actual FPS + float offsetThisFrame = 10 * GetFrameTime(); + + + // move player 1 forward and backwards (no turning) + if (IsKeyDown(KEY_W)) + { + Player1Camera.position.z += offsetThisFrame; + Player1Camera.target.z += offsetThisFrame; + } + else if (IsKeyDown(KEY_S)) + { + Player1Camera.position.z -= offsetThisFrame; + Player1Camera.target.z -= offsetThisFrame; + } + + // move player 2 forward and backwards (no turning) + if (IsKeyDown(KEY_UP)) + { + Player2Camera.position.x += offsetThisFrame; + Player2Camera.target.x += offsetThisFrame; + } + else if (IsKeyDown(KEY_DOWN)) + { + Player2Camera.position.x -= offsetThisFrame; + Player2Camera.target.x -= offsetThisFrame; + } + + // draw player 1's view to the render texture + BeginTextureMode(player1Screen); + ClearBackground(SKYBLUE); + BeginMode3D(Player1Camera); + DrawScene(); + EndMode3D(); + DrawText("PLAYER1 W/S to move", 0, 0, 20, RED); + EndTextureMode(); + + // draw player 2's view to the render texture + BeginTextureMode(player2Screen); + ClearBackground(SKYBLUE); + BeginMode3D(Player2Camera); + DrawScene(); + EndMode3D(); + DrawText("PLAYER2 UP/DOWN to move", 0, 0, 20, BLUE); + EndTextureMode(); + + // draw both view render textures to the screen side by side + BeginDrawing(); + ClearBackground(BLACK); + DrawTextureRec(player1Screen.texture, splitScreenRect, (Vector2) { 0, 0 }, WHITE); + DrawTextureRec(player2Screen.texture, splitScreenRect, (Vector2) { screenWidth/2.0f, 0 }, WHITE); + EndDrawing(); + } + + UnloadRenderTexture(player1Screen); + UnloadRenderTexture(player2Screen); + UnloadTexture(GridTexture); + + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/examples/core/core_split_screen.png b/examples/core/core_split_screen.png new file mode 100644 index 0000000000000000000000000000000000000000..20cd2ead9dd40391ad4c1729ef9a0f2c655cebae GIT binary patch literal 37733 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 h z_8kE~iX3nM3z%4MHLdjG$@5=@W`P?72i8vq<-e-)TlS{^h@ACTUg}nBvp1)>nBKx^ zh2Pr0Ifm)`tYNQ?yMA0`Yv-+>TQ|gcev-Jg^+x3$5$@MFr*FOJE?s+OWpDD_=DDEa zp}$q)Q|q3Bdo_NG%~Y-9*mL(^(-jtclB8F@;dA=o+8Y(|C#+T8C>XwbUU`4R;T_X2 zI3Kdd2>e^;57&5nZZ!M7;wN8UcgKtH&0khW{*o5_+uL!Ex&Iz>cL#@_dW_BUxS$W= z6ZQ%8#ck<-W8t<%&>mE(-n+HNS^Dt=vpzGGV{7`M>Dp9&V&S*N`#mcx#O*dm$${K9 z$KE^c`Gs#k_D}tH()gI=r=2OX&)1vSnO=W=Cj2D(wFbVj2_Fs%ZJPjE7Xw;;V|#1O zcC%xVRkJk&8|^)Qq|{3oOUj4~1~PtH!O;1KW#_lEN0uJjnek}bKEaFTN`f}0pMBh} z_DAMyo${m_!?}O1@QOz*)c`y7$0V28`hl>dkT!Q~?j7%*gJMch?hES zGdbtHW zf0TUM@W$?4Cdcnx{cv_u%5Ta4=ai#C<+9*J^O|R#g-2N>ZfWe>({j%{KfP8^Q1ttC zmo$mXn_XJ;<@2WNDM_!6jhX-X{WSeu_5b8;cJ1k7<-B${>Kc|MEYp`v)P&CLeh3DY z;PdLU+U1Ykuzq2x|9|pt`L-LoSA;yd`|8F=oeAb1^Xn0#NPM*~_O{$R8Ew1$(!P)O zd~DYWzrQ;#QRy7Fwtt)F3&qIiUrpzVe%!Fu^GExdpH26cY;Vlprg^i{HphT(zl6K| zrf<#i)#``aQs1(BoBlsAtZ?9|H z+u>0k^XlgN$&U>LH*&ueZJj@B@AG82_)leqwQsvmPro_)zsF6v>FV)W5{FYySoO?o zkwslDR51L zo$tP<%BSq^|C{v5_@nFpxSRK`ZQlJz)WxNw@%zpL?q^?v8s>0tG-dMb9suyv+FW zGR}|B)#IxCje0UZ9M?17_So!p;qCYd6YE|I9kn^p(RV4Z7c(_nZ6qly7C-$v+z9H{|Uw-y=WY)<#}uZExM%$S+lA8jslA z*jRIX|NjkkZz2w{qXg#J#~adPJ^wfB-@H53?$5es+kQU&Zhb5M`MZ|&wI2_gD@E_R zB69khXCSB{8RN2~x8TY-@AD77%|EC+_u|~z=0@(`r{aJ9eR9p1ex?3j`>Emr&O_(# zutr`=)|~kZi1VOGdo!vHs|LuzOIz3aqO@2{8hQ(V9aE}*(+ktiXYqfZjxQj zUXw$t^>P0W$?Ly=tt+pnv}x(-KeLinif))L1?qzDT=qPDOT_Bw{rgv3_�a``)vc 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 + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {946A1700-C7AA-46F0-AEF2-67C98B5722AC} + Win32Proj + core_split_screen + 10.0 + core_split_screen + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2019/raylib.sln b/projects/VS2019/raylib.sln index 27ef792ba..53d2a18ad 100644 --- a/projects/VS2019/raylib.sln +++ b/projects/VS2019/raylib.sln @@ -273,6 +273,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raudio_standalone", "exampl EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_standalone", "examples\rlgl_standalone.vcxproj", "{C8765523-58F8-4C8E-9914-693396F6F0FF}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_split_screen", "examples\core_split_screen.vcxproj", "{946A1700-C7AA-46F0-AEF2-67C98B5722AC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|x64 = Debug.DLL|x64 @@ -2265,6 +2267,22 @@ Global {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.Build.0 = Release|x64 {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.ActiveCfg = Release|Win32 {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.Build.0 = Release|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.ActiveCfg = Debug|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.Build.0 = Debug|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.ActiveCfg = Debug|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.Build.0 = Debug|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.ActiveCfg = Release|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.Build.0 = Release|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.ActiveCfg = Release|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -2403,6 +2421,7 @@ Global {E1B6D565-9D7C-46B7-9202-ECF54974DE50} = {E9D708A5-9C1F-4B84-A795-C5F191801762} {6237BEDE-BAAA-4A06-9C5E-8089BAA14C8B} = {E9D708A5-9C1F-4B84-A795-C5F191801762} {C8765523-58F8-4C8E-9914-693396F6F0FF} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {946A1700-C7AA-46F0-AEF2-67C98B5722AC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29}