Browse Source

Moved SceneManager to its own project
Moved ForwardRenderer to Banshee

Marko Pintera 12 years ago
parent
commit
fc2c493b75
33 changed files with 543 additions and 206 deletions
  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;
 	}
 }