Quellcode durchsuchen

Moved SceneManager to its own project
Moved ForwardRenderer to Banshee

Marko Pintera vor 13 Jahren
Ursprung
Commit
fc2c493b75
33 geänderte Dateien mit 543 neuen und 206 gelöschten Zeilen
  1. 2 0
      BansheeEngine/BansheeEngine.vcxproj
  2. 6 0
      BansheeEngine/BansheeEngine.vcxproj.filters
  3. 26 0
      BansheeEngine/Include/BsSceneManager.h
  4. 1 0
      BansheeEngine/Source/BsApplication.cpp
  5. 10 0
      BansheeEngine/Source/BsSceneManager.cpp
  6. 18 18
      BansheeForwardRenderer/BansheeForwardRenderer.vcxproj
  7. 6 6
      BansheeForwardRenderer/BansheeForwardRenderer.vcxproj.filters
  8. 22 0
      BansheeForwardRenderer/Include/BsForwardRenderer.h
  9. 16 0
      BansheeForwardRenderer/Include/BsForwardRendererFactory.h
  10. 19 0
      BansheeForwardRenderer/Include/BsForwardRendererPrerequisites.h
  11. 7 3
      BansheeForwardRenderer/Source/BsForwardRenderer.cpp
  12. 5 3
      BansheeForwardRenderer/Source/BsForwardRendererFactory.cpp
  13. 22 0
      BansheeForwardRenderer/Source/BsForwardRendererPlugin.cpp
  14. 160 0
      BansheeOctreeSM/BansheeOctreeSM.vcxproj
  15. 33 0
      BansheeOctreeSM/BansheeOctreeSM.vcxproj.filters
  16. 19 0
      BansheeOctreeSM/Include/BsOctreeSMPrerequisites.h
  17. 23 0
      BansheeOctreeSM/Include/BsOctreeSceneManager.h
  18. 68 0
      BansheeOctreeSM/Source/BsOctreeSceneManager.cpp
  19. 18 0
      BansheeOctreeSM/Source/BsSceneManagerPlugin.cpp
  20. 3 3
      CamelotClient/CamelotClient.cpp
  21. 2 1
      CamelotCore/Include/CmApplication.h
  22. 3 13
      CamelotCore/Include/CmSceneManager.h
  23. 6 4
      CamelotCore/Source/CmApplication.cpp
  24. 2 56
      CamelotCore/Source/CmSceneManager.cpp
  25. 34 20
      CamelotEngine.sln
  26. 3 1
      CamelotFBXImporter/Source/CmFBXPlugin.cpp
  27. 3 1
      CamelotFontImporter/Source/CmFontPlugin.cpp
  28. 0 22
      CamelotForwardRenderer/Include/CmForwardRenderer.h
  29. 0 16
      CamelotForwardRenderer/Include/CmForwardRendererFactory.h
  30. 0 19
      CamelotForwardRenderer/Include/CmForwardRendererPrerequisites.h
  31. 0 18
      CamelotForwardRenderer/Source/CmForwardRendererPlugin.cpp
  32. 3 1
      CamelotFreeImgImporter/Source/CmFreeImgPlugin.cpp
  33. 3 1
      CamelotOISInput/Source/CmOISPlugin.cpp

+ 2 - 0
BansheeEngine/BansheeEngine.vcxproj

@@ -158,6 +158,7 @@
     <ClInclude Include="Include\BsGUIWidget.h" />
     <ClInclude Include="Include\BsGUIWindowFrame.h" />
     <ClInclude Include="Include\BsImageSprite.h" />
+    <ClInclude Include="Include\BsSceneManager.h" />
     <ClInclude Include="Include\BsSprite.h" />
     <ClInclude Include="Include\BsSpriteTexture.h" />
     <ClInclude Include="Include\BsTextSprite.h" />
@@ -171,6 +172,7 @@
     <ClCompile Include="Source\BsGUISkin.cpp" />
     <ClCompile Include="Source\BsGUIWidget.cpp" />
     <ClCompile Include="Source\BsImageSprite.cpp" />
+    <ClCompile Include="Source\BsSceneManager.cpp" />
     <ClCompile Include="Source\BsSprite.cpp" />
     <ClCompile Include="Source\BsSpriteTexture.cpp" />
     <ClCompile Include="Source\BsTextSprite.cpp" />

+ 6 - 0
BansheeEngine/BansheeEngine.vcxproj.filters

@@ -72,6 +72,9 @@
     <ClInclude Include="Include\BsApplication.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="Include\BsSceneManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="Source\BsGUIElement.cpp">
@@ -107,5 +110,8 @@
     <ClCompile Include="Source\BsApplication.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="Source\BsSceneManager.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>

+ 26 - 0
BansheeEngine/Include/BsSceneManager.h

@@ -0,0 +1,26 @@
+#pragma once
+
+#include "BsPrerequisites.h"
+#include "CmSceneManager.h"
+
+namespace BansheeEngine
+{
+	class BS_EXPORT SceneManager : public CM::SceneManager
+	{
+	public:
+		SceneManager() {}
+		virtual ~SceneManager() {}
+
+		/**
+		 * @brief	Returns all cameras in the scene.
+		 */
+		virtual const std::vector<CM::HCamera>& getAllCameras() const = 0;
+
+		/**
+		 * @brief	Returns all renderables visible to the specified camera.
+		 */
+		virtual std::vector<CM::HRenderable> getVisibleRenderables(const CM::HCamera& camera) const = 0;
+	};
+
+	BS_EXPORT SceneManager& gSceneManager();
+}

+ 1 - 0
BansheeEngine/Source/BsApplication.cpp

@@ -20,6 +20,7 @@ namespace BansheeEngine
 		desc.resourceCacheDirectory = resourceCacheDir;
 
 		desc.input = "CamelotOISInput";
+		desc.sceneManager = "BansheeOctreeSM";
 		desc.importers.push_back("CamelotFreeImgImporter");
 		desc.importers.push_back("CamelotFBXImporter");
 		desc.importers.push_back("CamelotFontImporter");

+ 10 - 0
BansheeEngine/Source/BsSceneManager.cpp

@@ -0,0 +1,10 @@
+#include "BsSceneManager.h"
+#include "CmSceneManager.h"
+
+namespace BansheeEngine
+{
+	SceneManager& gSceneManager()
+	{
+		return static_cast<BS::SceneManager&>(CM::gSceneManager());
+	}
+}

+ 18 - 18
CamelotForwardRenderer/CamelotForwardRenderer.vcxproj → BansheeForwardRenderer/BansheeForwardRenderer.vcxproj

@@ -85,14 +85,14 @@
     <ClCompile>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <AdditionalLibraryDirectories>../lib/$(Configuration);../Dependencies/lib/Debug</AdditionalLibraryDirectories>
-      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib</AdditionalDependencies>
+      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib;BansheeEngine.lib</AdditionalDependencies>
       <ImportLibrary>..\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
     </Link>
   </ItemDefinitionGroup>
@@ -100,14 +100,14 @@
     <ClCompile>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <AdditionalLibraryDirectories>../lib/$(Platform)/$(Configuration);../Dependencies/lib/x64/Debug</AdditionalLibraryDirectories>
-      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib</AdditionalDependencies>
+      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib;BansheeEngine.lib</AdditionalDependencies>
       <ImportLibrary>..\lib\$(Platform)\$(Configuration)\$(TargetName).lib</ImportLibrary>
     </Link>
   </ItemDefinitionGroup>
@@ -117,8 +117,8 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <Link>
@@ -126,7 +126,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../lib/$(Configuration);../Dependencies/lib/Release</AdditionalLibraryDirectories>
-      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib</AdditionalDependencies>
+      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib;BansheeEngine.lib</AdditionalDependencies>
       <ImportLibrary>..\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
     </Link>
   </ItemDefinitionGroup>
@@ -136,8 +136,8 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <Link>
@@ -145,19 +145,19 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../lib/$(Platform)/$(Configuration);../Dependencies/lib/x64/Release</AdditionalLibraryDirectories>
-      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib</AdditionalDependencies>
+      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib;BansheeEngine.lib</AdditionalDependencies>
       <ImportLibrary>..\lib\$(Platform)\$(Configuration)\$(TargetName).lib</ImportLibrary>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <ClInclude Include="Include\CmForwardRenderer.h" />
-    <ClInclude Include="Include\CmForwardRendererFactory.h" />
-    <ClInclude Include="Include\CmForwardRendererPrerequisites.h" />
+    <ClInclude Include="Include\BsForwardRenderer.h" />
+    <ClInclude Include="Include\BsForwardRendererFactory.h" />
+    <ClInclude Include="Include\BsForwardRendererPrerequisites.h" />
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="Source\CmForwardRenderer.cpp" />
-    <ClCompile Include="Source\CmForwardRendererFactory.cpp" />
-    <ClCompile Include="Source\CmForwardRendererPlugin.cpp" />
+    <ClCompile Include="Source\BsForwardRenderer.cpp" />
+    <ClCompile Include="Source\BsForwardRendererFactory.cpp" />
+    <ClCompile Include="Source\BsForwardRendererPlugin.cpp" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">

+ 6 - 6
CamelotForwardRenderer/CamelotForwardRenderer.vcxproj.filters → BansheeForwardRenderer/BansheeForwardRenderer.vcxproj.filters

@@ -15,24 +15,24 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="Include\CmForwardRendererFactory.h">
+    <ClInclude Include="Include\BsForwardRenderer.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Include\CmForwardRendererPrerequisites.h">
+    <ClInclude Include="Include\BsForwardRendererFactory.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Include\CmForwardRenderer.h">
+    <ClInclude Include="Include\BsForwardRendererPrerequisites.h">
       <Filter>Header Files</Filter>
     </ClInclude>
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="Source\CmForwardRendererFactory.cpp">
+    <ClCompile Include="Source\BsForwardRenderer.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Source\CmForwardRenderer.cpp">
+    <ClCompile Include="Source\BsForwardRendererFactory.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Source\CmForwardRendererPlugin.cpp">
+    <ClCompile Include="Source\BsForwardRendererPlugin.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
   </ItemGroup>

+ 22 - 0
BansheeForwardRenderer/Include/BsForwardRenderer.h

@@ -0,0 +1,22 @@
+#pragma once
+
+#include "BsForwardRendererPrerequisites.h"
+#include "CmRenderer.h"
+
+namespace BansheeEngine
+{
+	class BS_FWDRND_EXPORT ForwardRenderer : public CM::Renderer
+	{
+	public:
+		ForwardRenderer();
+		~ForwardRenderer();
+
+		virtual const CM::String& getName() const;
+
+		virtual void renderAll();
+		virtual void render(const CM::HCamera& camera);
+
+	protected:
+		CM::RenderCommandBuffer* mCommandBuffer;
+	};
+}

+ 16 - 0
BansheeForwardRenderer/Include/BsForwardRendererFactory.h

@@ -0,0 +1,16 @@
+#pragma once
+
+#include "BsForwardRendererPrerequisites.h"
+#include "CmRendererFactory.h"
+
+namespace BansheeEngine
+{
+	const std::string SystemName = "BansheeForwardRenderer";
+
+	class BS_FWDRND_EXPORT ForwardRendererFactory : public CM::RendererFactory
+	{
+	public:
+		virtual CM::RendererPtr create();
+		virtual const std::string& name() const;
+	};
+}

+ 19 - 0
BansheeForwardRenderer/Include/BsForwardRendererPrerequisites.h

@@ -0,0 +1,19 @@
+#pragma once
+
+#include "BsPrerequisites.h"
+
+#if (CM_PLATFORM == CM_PLATFORM_WIN32) && !defined(__MINGW32__)
+#	ifdef BS_FWDRND_EXPORTS
+#		define BS_FWDRND_EXPORT __declspec(dllexport)
+#	else
+#       if defined( __MINGW32__ )
+#           define BS_FWDRND_EXPORT
+#       else
+#    		define BS_FWDRND_EXPORT __declspec(dllimport)
+#       endif
+#	endif
+#elif defined ( CM_GCC_VISIBILITY )
+#    define BS_FWDRND_EXPORT  __attribute__ ((visibility("default")))
+#else
+#    define BS_FWDRND_EXPORT
+#endif

+ 7 - 3
CamelotForwardRenderer/Source/CmForwardRenderer.cpp → BansheeForwardRenderer/Source/BsForwardRenderer.cpp

@@ -1,6 +1,6 @@
-#include "CmForwardRenderer.h"
+#include "BsForwardRenderer.h"
 #include "CmCamera.h"
-#include "CmSceneManager.h"
+#include "BsSceneManager.h"
 #include "CmDeferredRenderContext.h"
 #include "CmRenderable.h"
 #include "CmMaterial.h"
@@ -14,7 +14,9 @@
 #include "CmRenderTarget.h"
 #include "CmOverlayManager.h"
 
-namespace CamelotEngine
+using namespace CamelotEngine;
+
+namespace BansheeEngine
 {
 	ForwardRenderer::ForwardRenderer()
 	{
@@ -31,6 +33,8 @@ namespace CamelotEngine
 
 	void ForwardRenderer::renderAll() 
 	{
+		
+
 		DeferredRenderContextPtr renderContext = gApplication().getPrimaryRenderContext();
 
 		const vector<HCamera>::type& allCameras = gSceneManager().getAllCameras();

+ 5 - 3
CamelotForwardRenderer/Source/CmForwardRendererFactory.cpp → BansheeForwardRenderer/Source/BsForwardRendererFactory.cpp

@@ -1,8 +1,10 @@
-#include "CmForwardRendererFactory.h"
+#include "BsForwardRendererFactory.h"
 #include "CmRenderer.h"
-#include "CmForwardRenderer.h"
+#include "BsForwardRenderer.h"
 
-namespace CamelotEngine
+using namespace CamelotEngine;
+
+namespace BansheeEngine
 {
 	RendererPtr ForwardRendererFactory::create()
 	{

+ 22 - 0
BansheeForwardRenderer/Source/BsForwardRendererPlugin.cpp

@@ -0,0 +1,22 @@
+#include "BsForwardRendererPrerequisites.h"
+#include "BsForwardRendererFactory.h"
+#include "CmRendererManager.h"
+
+using namespace CamelotEngine;
+
+namespace BansheeEngine
+{
+	extern "C" BS_FWDRND_EXPORT const String& getPluginName()
+	{
+		return SystemName;
+	}
+
+	extern "C" BS_FWDRND_EXPORT void* loadPlugin()
+	{
+		RendererManager::instance().registerFactory(
+			RendererFactoryPtr(CM_NEW(ForwardRendererFactory, GenAlloc) ForwardRendererFactory(),
+			&MemAllocDeleter<ForwardRendererFactory, GenAlloc>::deleter));
+
+		return nullptr;
+	}
+}

+ 160 - 0
BansheeOctreeSM/BansheeOctreeSM.vcxproj

@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{41CC18CE-139E-45A5-A9AA-336CBA2E1521}</ProjectGuid>
+    <RootNamespace>CamelotOctreeSM</RootNamespace>
+    <ProjectName>BansheeOctreeSM</ProjectName>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>..\bin\$(Configuration)\</OutDir>
+    <IntDir>.\Intermediate\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <IntDir>.\Intermediate\$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>..\bin\$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>..\bin\$(Configuration)\</OutDir>
+    <IntDir>.\Intermediate\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <OutDir>..\bin\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir>.\Intermediate\$(Platform)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>..\lib\$(Configuration);..\Dependencies\lib\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib;BansheeEngine.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ImportLibrary>..\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>..\lib\$(Platform)\$(Configuration);..\Dependencies\lib\x64\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib;BansheeEngine.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ImportLibrary>..\lib\$(Platform)\$(Configuration)\$(TargetName).lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalLibraryDirectories>..\lib\$(Configuration);..\Dependencies\lib\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib;BansheeEngine.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ImportLibrary>..\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalLibraryDirectories>..\lib\$(Platform)\$(Configuration);..\Dependencies\lib\x64\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>CamelotCore.lib;CamelotUtility.lib;BansheeEngine.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ImportLibrary>..\lib\$(Platform)\$(Configuration)\$(TargetName).lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClInclude Include="Include\BsOctreeSceneManager.h" />
+    <ClInclude Include="Include\BsOctreeSMPrerequisites.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="Source\BsOctreeSceneManager.cpp" />
+    <ClCompile Include="Source\BsSceneManagerPlugin.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 33 - 0
BansheeOctreeSM/BansheeOctreeSM.vcxproj.filters

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="Include\BsOctreeSceneManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="Include\BsOctreeSMPrerequisites.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="Source\BsSceneManagerPlugin.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Source\BsOctreeSceneManager.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>

+ 19 - 0
BansheeOctreeSM/Include/BsOctreeSMPrerequisites.h

@@ -0,0 +1,19 @@
+#pragma once
+
+#include "BsPrerequisites.h"
+
+#if (CM_PLATFORM == CM_PLATFORM_WIN32) && !defined(__MINGW32__)
+#	ifdef BS_SM_EXPORTS
+#		define BS_SM_EXPORT __declspec(dllexport)
+#	else
+#       if defined( __MINGW32__ )
+#           define BS_SM_EXPORT
+#       else
+#    		define BS_SM_EXPORT __declspec(dllimport)
+#       endif
+#	endif
+#elif defined ( CM_GCC_VISIBILITY )
+#    define BS_SM_EXPORT  __attribute__ ((visibility("default")))
+#else
+#    define BS_SM_EXPORT
+#endif

+ 23 - 0
BansheeOctreeSM/Include/BsOctreeSceneManager.h

@@ -0,0 +1,23 @@
+#pragma once
+
+#include "BsOctreeSMPrerequisites.h"
+#include "BsSceneManager.h"
+
+namespace BansheeEngine
+{
+	class BS_SM_EXPORT OctreeSceneManager : public SceneManager
+	{
+	public:
+		OctreeSceneManager() {}
+		~OctreeSceneManager() {}
+
+		const std::vector<CM::HCamera>& getAllCameras() const { return mCachedCameras; }
+
+		std::vector<CM::HRenderable> getVisibleRenderables(const CM::HCamera& camera) const;
+	private:
+		void notifyComponentAdded(const CM::HComponent& component);
+		void notifyComponentRemoved(const CM::HComponent& component);
+
+		std::vector<CM::HCamera> mCachedCameras;
+	};
+}

+ 68 - 0
BansheeOctreeSM/Source/BsOctreeSceneManager.cpp

@@ -0,0 +1,68 @@
+#include "BsOctreeSceneManager.h"
+#include "CmComponent.h"
+#include "CmException.h"
+#include "CmSceneObject.h"
+#include "CmRenderable.h"
+#include "CmCamera.h"
+
+using namespace CamelotEngine;
+
+namespace BansheeEngine
+{
+	std::vector<HRenderable> OctreeSceneManager::getVisibleRenderables(const HCamera& camera) const
+	{
+		// TODO - Cull invisible objects
+
+		vector<HRenderable>::type renderables;
+
+		stack<HSceneObject>::type todo;
+		todo.push(mRootNode);
+
+		while(!todo.empty())
+		{
+			HSceneObject currentGO = todo.top();
+			todo.pop();
+
+			HRenderable curRenderable = currentGO->getComponent<Renderable>();
+			if(curRenderable != nullptr)
+				renderables.push_back(curRenderable);
+
+			for(UINT32 i = 0; i < currentGO->getNumChildren(); i++)
+				todo.push(currentGO->getChild(i));
+		}
+
+		return renderables;
+	}
+
+	void OctreeSceneManager::notifyComponentAdded(const HComponent& component)
+	{
+		if(component->getTypeId() == TID_Camera)
+		{
+			HCamera camera = static_object_cast<Camera>(component);
+			auto findIter = std::find(mCachedCameras.begin(), mCachedCameras.end(), camera);
+
+			if(findIter != mCachedCameras.end())
+			{
+				CM_EXCEPT(InternalErrorException, "Trying to add an already existing camera!");
+			}
+
+			mCachedCameras.push_back(camera);
+		}
+	}
+
+	void OctreeSceneManager::notifyComponentRemoved(const HComponent& component)
+	{
+		if(component->getTypeId() == TID_Camera)
+		{
+			HCamera camera = static_object_cast<Camera>(component);
+			auto findIter = std::find(mCachedCameras.begin(), mCachedCameras.end(), camera);
+
+			if(findIter == mCachedCameras.end())
+			{
+				CM_EXCEPT(InternalErrorException, "Cannot find specified camera!");
+			}
+
+			mCachedCameras.erase(findIter);
+		}
+	}
+}

+ 18 - 0
BansheeOctreeSM/Source/BsSceneManagerPlugin.cpp

@@ -0,0 +1,18 @@
+#include "BsOctreeSMPrerequisites.h"
+#include "BsOctreeSceneManager.h"
+
+using namespace CamelotEngine;
+
+namespace BansheeEngine
+{
+	extern "C" BS_SM_EXPORT const String& getPluginName()
+	{
+		static String pluginName = "BansheeOctreeSM";
+		return pluginName;
+	}
+
+	extern "C" BS_SM_EXPORT void* loadPlugin()
+	{
+		return CM_NEW(OctreeSceneManager, GenAlloc) OctreeSceneManager();
+	}
+}

+ 3 - 3
CamelotClient/CamelotClient.cpp

@@ -44,11 +44,11 @@ int CALLBACK WinMain(
 	)
 {
 #ifdef DX11
-	gBansheeApp().startUp("CamelotD3D11RenderSystem", "CamelotForwardRenderer", "D:\\CamelotResourceMetas");
+	gBansheeApp().startUp("CamelotD3D11RenderSystem", "BansheeForwardRenderer", "D:\\CamelotResourceMetas");
 #elif defined DX9
-	gBansheeApp().startUp("CamelotD3D9RenderSystem", "CamelotForwardRenderer", "D:\\CamelotResourceMetas");
+	gBansheeApp().startUp("CamelotD3D9RenderSystem", "BansheeForwardRenderer", "D:\\CamelotResourceMetas");
 #else
-	gBansheeApp().startUp("CamelotGLRenderSystem", "CamelotForwardRenderer", "D:\\CamelotResourceMetas");
+	gBansheeApp().startUp("CamelotGLRenderSystem", "BansheeForwardRenderer", "D:\\CamelotResourceMetas");
 #endif
 
 	//CommandQueue::addBreakpoint(1, 11);

+ 2 - 1
CamelotCore/Include/CmApplication.h

@@ -19,6 +19,7 @@ namespace CamelotEngine
 		String renderer;
 
 		String input;
+		String sceneManager;
 
 		std::vector<String> importers;
 
@@ -67,7 +68,7 @@ namespace CamelotEngine
 			 *
 			 * @param	pluginName	Name of the plugin to load, without extension.
 			 */
-			void loadPlugin(const String& pluginName);
+			void* loadPlugin(const String& pluginName);
 
 	private:
 		RenderWindowPtr mPrimaryRenderWindow;

+ 3 - 13
CamelotCore/Include/CmSceneManager.h

@@ -21,15 +21,7 @@ namespace CamelotEngine
 		HSceneObject getRootNode() const { return mRootNode; }
 
 		virtual void update();
-
-		/**
-		 * @brief	Returns all cameras in the scene.
-		 */
-		const vector<HCamera>::type& getAllCameras() const { return mCachedCameras; }
-
-		vector<HRenderable>::type getVisibleRenderables(const HCamera& camera) const;
-
-	private:
+	protected:
 		friend class SceneObject;
 		HSceneObject mRootNode;
 
@@ -43,10 +35,8 @@ namespace CamelotEngine
 		 */
 		void registerNewGO(const HSceneObject& node);
 
-		void notifyComponentAdded(const HComponent& component);
-		void notifyComponentRemoved(const HComponent& component);
-
-		vector<HCamera>::type mCachedCameras;
+		virtual void notifyComponentAdded(const HComponent& component);
+		virtual void notifyComponentRemoved(const HComponent& component);
 	};
 
 	CM_EXPORT SceneManager& gSceneManager();

+ 6 - 4
CamelotCore/Source/CmApplication.cpp

@@ -75,7 +75,7 @@ namespace CamelotEngine
 
 		mPrimaryRenderContext = renderSystem->createDeferredContext();
 
-		SceneManager::startUp(CM_NEW(SceneManager, GenAlloc) SceneManager());
+		SceneManager::startUp((SceneManager*)loadPlugin(desc.sceneManager));
 
 		MeshManager::startUp(CM_NEW(MeshManager, GenAlloc) MeshManager());
 		MaterialManager::startUp(CM_NEW(MaterialManager, GenAlloc) MaterialManager());
@@ -172,7 +172,7 @@ namespace CamelotEngine
 		Time::shutDown();
 	}
 
-	void Application::loadPlugin(const String& pluginName)
+	void* Application::loadPlugin(const String& pluginName)
 	{
 		String name = pluginName;
 #if CM_PLATFORM == CM_PLATFORM_LINUX
@@ -194,11 +194,13 @@ namespace CamelotEngine
 
 		if(library != nullptr)
 		{
-			typedef const void (*LoadPluginFunc)();
+			typedef void* (*LoadPluginFunc)();
 
 			LoadPluginFunc loadPluginFunc = (LoadPluginFunc)library->getSymbol("loadPlugin");
-			loadPluginFunc();
+			return loadPluginFunc();
 		}
+
+		return nullptr;
 	}
 
 	UINT64 Application::getAppWindowId()

+ 2 - 56
CamelotCore/Source/CmSceneManager.cpp

@@ -39,68 +39,14 @@ namespace CamelotEngine
 		}
 	}
 
-	vector<HRenderable>::type SceneManager::getVisibleRenderables(const HCamera& camera) const
-	{
-		// TODO - Cull invisible objects
-
-		vector<HRenderable>::type renderables;
-
-		stack<HSceneObject>::type todo;
-		todo.push(mRootNode);
-
-		while(!todo.empty())
-		{
-			HSceneObject currentGO = todo.top();
-			todo.pop();
-
-			HRenderable curRenderable = currentGO->getComponent<Renderable>();
-			if(curRenderable != nullptr)
-				renderables.push_back(curRenderable);
-
-			for(UINT32 i = 0; i < currentGO->getNumChildren(); i++)
-				todo.push(currentGO->getChild(i));
-		}
-
-		return renderables;
-	}
-
 	void SceneManager::registerNewGO(const HSceneObject& node) 
 	{ 
 		if(mRootNode) // If root node is null, then this new node is the root node
 			node->setParent(mRootNode);
 	}
 
-	void SceneManager::notifyComponentAdded(const HComponent& component)
-	{
-		if(component->getTypeId() == TID_Camera)
-		{
-			HCamera camera = static_object_cast<Camera>(component);
-			auto findIter = std::find(mCachedCameras.begin(), mCachedCameras.end(), camera);
-
-			if(findIter != mCachedCameras.end())
-			{
-				CM_EXCEPT(InternalErrorException, "Trying to add an already existing camera!");
-			}
-
-			mCachedCameras.push_back(camera);
-		}
-	}
-
-	void SceneManager::notifyComponentRemoved(const HComponent& component)
-	{
-		if(component->getTypeId() == TID_Camera)
-		{
-			HCamera camera = static_object_cast<Camera>(component);
-			auto findIter = std::find(mCachedCameras.begin(), mCachedCameras.end(), camera);
-
-			if(findIter == mCachedCameras.end())
-			{
-				CM_EXCEPT(InternalErrorException, "Cannot find specified camera!");
-			}
-
-			mCachedCameras.erase(findIter);
-		}
-	}
+	void SceneManager::notifyComponentAdded(const HComponent& component) { }
+	void SceneManager::notifyComponentRemoved(const HComponent& component) { }
 
 	SceneManager& gSceneManager()
 	{

+ 34 - 20
CamelotEngine.sln

@@ -25,6 +25,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotClient", "CamelotCli
 		{AB6C9284-D1CB-4AAD-BA4B-8A9E81AD1A73} = {AB6C9284-D1CB-4AAD-BA4B-8A9E81AD1A73}
 		{07B0C186-5173-46F2-BE26-7E4148BD0CCA} = {07B0C186-5173-46F2-BE26-7E4148BD0CCA}
 		{7F449698-73DF-4203-9F31-0877DBF01695} = {7F449698-73DF-4203-9F31-0877DBF01695}
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521} = {41CC18CE-139E-45A5-A9AA-336CBA2E1521}
 		{BFEBBAF8-8A84-4899-8899-D0D7196AF9A1} = {BFEBBAF8-8A84-4899-8899-D0D7196AF9A1}
 		{796B6DFF-BA04-42B7-A43A-2B14D707A33A} = {796B6DFF-BA04-42B7-A43A-2B14D707A33A}
 	EndProjectSection
@@ -63,12 +64,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotOISInput", "CamelotO
 		{CC7F9445-71C9-4559-9976-FF0A64DCB582} = {CC7F9445-71C9-4559-9976-FF0A64DCB582}
 	EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotForwardRenderer", "CamelotForwardRenderer\CamelotForwardRenderer.vcxproj", "{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}"
-	ProjectSection(ProjectDependencies) = postProject
-		{9B21D41C-516B-43BF-9B10-E99B599C7589} = {9B21D41C-516B-43BF-9B10-E99B599C7589}
-		{CC7F9445-71C9-4559-9976-FF0A64DCB582} = {CC7F9445-71C9-4559-9976-FF0A64DCB582}
-	EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotD3D11RenderSystem", "CamelotD3D11RenderSystem\CamelotD3D11RenderSystem.vcxproj", "{1437BB4E-DDB3-4307-AA41-8C035DA3014B}"
 	ProjectSection(ProjectDependencies) = postProject
 		{9B21D41C-516B-43BF-9B10-E99B599C7589} = {9B21D41C-516B-43BF-9B10-E99B599C7589}
@@ -93,6 +88,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BansheeEngine", "BansheeEng
 		{CC7F9445-71C9-4559-9976-FF0A64DCB582} = {CC7F9445-71C9-4559-9976-FF0A64DCB582}
 	EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BansheeForwardRenderer", "BansheeForwardRenderer\BansheeForwardRenderer.vcxproj", "{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BansheeOctreeSM", "BansheeOctreeSM\BansheeOctreeSM.vcxproj", "{41CC18CE-139E-45A5-A9AA-336CBA2E1521}"
+EndProject
 Global
 	GlobalSection(SubversionScc) = preSolution
 		Svn-Managed = True
@@ -221,20 +220,6 @@ Global
 		{BFEBBAF8-8A84-4899-8899-D0D7196AF9A1}.Release|Win32.Build.0 = Release|Win32
 		{BFEBBAF8-8A84-4899-8899-D0D7196AF9A1}.Release|x64.ActiveCfg = Release|x64
 		{BFEBBAF8-8A84-4899-8899-D0D7196AF9A1}.Release|x64.Build.0 = Release|x64
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Win32.ActiveCfg = Debug|Win32
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Win32.Build.0 = Debug|Win32
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|x64.ActiveCfg = Debug|x64
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|x64.Build.0 = Debug|x64
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Any CPU.ActiveCfg = Release|Win32
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Win32.ActiveCfg = Release|Win32
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Win32.Build.0 = Release|Win32
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|x64.ActiveCfg = Release|x64
-		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|x64.Build.0 = Release|x64
 		{1437BB4E-DDB3-4307-AA41-8C035DA3014B}.Debug|Any CPU.ActiveCfg = Debug|Win32
 		{1437BB4E-DDB3-4307-AA41-8C035DA3014B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
 		{1437BB4E-DDB3-4307-AA41-8C035DA3014B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
@@ -283,12 +268,41 @@ Global
 		{07B0C186-5173-46F2-BE26-7E4148BD0CCA}.Debug|Win32.ActiveCfg = Debug|Win32
 		{07B0C186-5173-46F2-BE26-7E4148BD0CCA}.Debug|Win32.Build.0 = Debug|Win32
 		{07B0C186-5173-46F2-BE26-7E4148BD0CCA}.Debug|x64.ActiveCfg = Debug|x64
+		{07B0C186-5173-46F2-BE26-7E4148BD0CCA}.Debug|x64.Build.0 = Debug|x64
 		{07B0C186-5173-46F2-BE26-7E4148BD0CCA}.Release|Any CPU.ActiveCfg = Release|Win32
 		{07B0C186-5173-46F2-BE26-7E4148BD0CCA}.Release|Mixed Platforms.ActiveCfg = Release|Win32
 		{07B0C186-5173-46F2-BE26-7E4148BD0CCA}.Release|Mixed Platforms.Build.0 = Release|Win32
 		{07B0C186-5173-46F2-BE26-7E4148BD0CCA}.Release|Win32.ActiveCfg = Release|Win32
 		{07B0C186-5173-46F2-BE26-7E4148BD0CCA}.Release|Win32.Build.0 = Release|Win32
 		{07B0C186-5173-46F2-BE26-7E4148BD0CCA}.Release|x64.ActiveCfg = Release|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Win32.ActiveCfg = Debug|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Win32.Build.0 = Debug|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|x64.ActiveCfg = Debug|x64
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|x64.Build.0 = Debug|x64
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Any CPU.ActiveCfg = Release|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Win32.ActiveCfg = Release|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Win32.Build.0 = Release|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|x64.ActiveCfg = Release|x64
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|x64.Build.0 = Release|x64
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Debug|Win32.ActiveCfg = Debug|Win32
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Debug|Win32.Build.0 = Debug|Win32
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Debug|x64.ActiveCfg = Debug|x64
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Debug|x64.Build.0 = Debug|x64
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Release|Any CPU.ActiveCfg = Release|Win32
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Release|Win32.ActiveCfg = Release|Win32
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Release|Win32.Build.0 = Release|Win32
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Release|x64.ActiveCfg = Release|x64
+		{41CC18CE-139E-45A5-A9AA-336CBA2E1521}.Release|x64.Build.0 = Release|x64
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 3 - 1
CamelotFBXImporter/Source/CmFBXPlugin.cpp

@@ -9,8 +9,10 @@ namespace CamelotEngine
 		return pluginName;
 	}
 
-	extern "C" CM_FBX_EXPORT void loadPlugin()
+	extern "C" CM_FBX_EXPORT void* loadPlugin()
 	{
 		FBXImporter::startUp();
+
+		return nullptr;
 	}
 }

+ 3 - 1
CamelotFontImporter/Source/CmFontPlugin.cpp

@@ -9,8 +9,10 @@ namespace CamelotEngine
 		return pluginName;
 	}
 
-	extern "C" CM_FONT_EXPORT void loadPlugin()
+	extern "C" CM_FONT_EXPORT void* loadPlugin()
 	{
 		FontImporter::startUp();
+
+		return nullptr;
 	}
 }

+ 0 - 22
CamelotForwardRenderer/Include/CmForwardRenderer.h

@@ -1,22 +0,0 @@
-#pragma once
-
-#include "CmForwardRendererPrerequisites.h"
-#include "CmRenderer.h"
-
-namespace CamelotEngine
-{
-	class CM_FWDRND_EXPORT ForwardRenderer : public Renderer
-	{
-	public:
-		ForwardRenderer();
-		~ForwardRenderer();
-
-		virtual const String& getName() const;
-
-		virtual void renderAll();
-		virtual void render(const HCamera& camera);
-
-	protected:
-		RenderCommandBuffer* mCommandBuffer;
-	};
-}

+ 0 - 16
CamelotForwardRenderer/Include/CmForwardRendererFactory.h

@@ -1,16 +0,0 @@
-#pragma once
-
-#include "CmForwardRendererPrerequisites.h"
-#include "CmRendererFactory.h"
-
-namespace CamelotEngine
-{
-	const std::string SystemName = "CamelotForwardRenderer";
-
-	class CM_FWDRND_EXPORT ForwardRendererFactory : public RendererFactory
-	{
-	public:
-		virtual RendererPtr create();
-		virtual const std::string& name() const;
-	};
-}

+ 0 - 19
CamelotForwardRenderer/Include/CmForwardRendererPrerequisites.h

@@ -1,19 +0,0 @@
-#pragma once
-
-#include "CmPrerequisites.h"
-
-#if (CM_PLATFORM == CM_PLATFORM_WIN32) && !defined(__MINGW32__)
-#	ifdef CM_FWDRND_EXPORTS
-#		define CM_FWDRND_EXPORT __declspec(dllexport)
-#	else
-#       if defined( __MINGW32__ )
-#           define CM_FWDRND_EXPORT
-#       else
-#    		define CM_FWDRND_EXPORT __declspec(dllimport)
-#       endif
-#	endif
-#elif defined ( CM_GCC_VISIBILITY )
-#    define CM_FWDRND_EXPORT  __attribute__ ((visibility("default")))
-#else
-#    define CM_FWDRND_EXPORT
-#endif

+ 0 - 18
CamelotForwardRenderer/Source/CmForwardRendererPlugin.cpp

@@ -1,18 +0,0 @@
-#include "CmForwardRendererPrerequisites.h"
-#include "CmForwardRendererFactory.h"
-#include "CmRendererManager.h"
-
-namespace CamelotEngine
-{
-	extern "C" CM_FWDRND_EXPORT const String& getPluginName()
-	{
-		return SystemName;
-	}
-
-	extern "C" CM_FWDRND_EXPORT void loadPlugin()
-	{
-		RendererManager::instance().registerFactory(
-			RendererFactoryPtr(CM_NEW(ForwardRendererFactory, GenAlloc) ForwardRendererFactory(),
-			&MemAllocDeleter<ForwardRendererFactory, GenAlloc>::deleter));
-	}
-}

+ 3 - 1
CamelotFreeImgImporter/Source/CmFreeImgPlugin.cpp

@@ -9,8 +9,10 @@ namespace CamelotEngine
 		return pluginName;
 	}
 
-	extern "C" CM_FREEIMG_EXPORT void loadPlugin()
+	extern "C" CM_FREEIMG_EXPORT void* loadPlugin()
 	{
 		FreeImgImporter::startUp();
+
+		return nullptr;
 	}
 }

+ 3 - 1
CamelotOISInput/Source/CmOISPlugin.cpp

@@ -11,7 +11,7 @@ namespace CamelotEngine
 		return pluginName;
 	}
 
-	extern "C" CM_OIS_EXPORT void loadPlugin()
+	extern "C" CM_OIS_EXPORT void* loadPlugin()
 	{
 		// TODO - Window handles in Windows are 64 bits when compiled as x64, but OIS only accepts a 32bit value. Is this okay?
 		UINT32 windowId = (UINT32)gApplication().getAppWindowId();
@@ -19,5 +19,7 @@ namespace CamelotEngine
 		InputHandlerPtr inputHandler = InputHandlerPtr(CM_NEW(InputHandlerOIS, GenAlloc) InputHandlerOIS(windowId), &MemAllocDeleter<InputHandlerOIS, GenAlloc>::deleter);
 
 		gInput().registerInputHandler(inputHandler);
+
+		return nullptr;
 	}
 }