Forráskód Böngészése

VS 2013 port stage 1

Marko Pintera 11 éve
szülő
commit
c454e2d14f
86 módosított fájl, 411 hozzáadás és 509 törlés
  1. 7 7
      BansheeEditor/BansheeEditor.vcxproj
  2. 4 4
      BansheeEditor/Include/BsEditorWidget.h
  3. 2 2
      BansheeEditor/Include/BsEditorWidgetContainer.h
  4. 2 2
      BansheeEditor/Include/BsEditorWindowBase.h
  5. 1 1
      BansheeEditor/Include/BsEditorWindowManager.h
  6. 2 2
      BansheeEditor/Include/BsGUIDockSlider.h
  7. 2 2
      BansheeEditor/Include/BsGUIDropButton.h
  8. 1 1
      BansheeEditor/Include/BsGUIFoldout.h
  9. 1 1
      BansheeEditor/Include/BsGUIIntField.h
  10. 5 5
      BansheeEditor/Include/BsGUIResourceTreeView.h
  11. 1 1
      BansheeEditor/Include/BsGUISceneTreeView.h
  12. 3 3
      BansheeEditor/Include/BsGUITabButton.h
  13. 5 5
      BansheeEditor/Include/BsGUITabbedTitleBar.h
  14. 1 1
      BansheeEditor/Include/BsGUITreeView.h
  15. 2 2
      BansheeEditor/Include/BsGUITreeViewEditBox.h
  16. 2 2
      BansheeEditor/Include/BsGUIWindowDropArea.h
  17. 1 1
      BansheeEditor/Include/BsGUIWindowFrameWidget.h
  18. 2 2
      BansheeEditor/Include/BsProjectLibrary.h
  19. 1 1
      BansheeEditor/Source/BsEditorApplication.cpp
  20. 7 7
      BansheeEditorExec/BansheeEditorExec.vcxproj
  21. 7 7
      BansheeEngine/BansheeEngine.vcxproj
  22. 2 3
      BansheeEngine/Include/BsApplication.h
  23. 2 2
      BansheeEngine/Include/BsDragAndDropManager.h
  24. 1 1
      BansheeEngine/Include/BsGUIButton.h
  25. 5 5
      BansheeEngine/Include/BsGUIButtonBase.h
  26. 1 1
      BansheeEngine/Include/BsGUIDropDownBox.h
  27. 2 2
      BansheeEngine/Include/BsGUIDropDownHitBox.h
  28. 3 3
      BansheeEngine/Include/BsGUIInputBox.h
  29. 1 1
      BansheeEngine/Include/BsGUILabel.h
  30. 2 2
      BansheeEngine/Include/BsGUIListBox.h
  31. 12 12
      BansheeEngine/Include/BsGUIManager.h
  32. 33 13
      BansheeEngine/Include/BsGUIOptions.h
  33. 2 3
      BansheeEngine/Include/BsGUIScrollBar.h
  34. 2 2
      BansheeEngine/Include/BsGUIScrollBarHandle.h
  35. 1 2
      BansheeEngine/Include/BsGUIScrollBarHorz.h
  36. 1 2
      BansheeEngine/Include/BsGUIScrollBarVert.h
  37. 2 2
      BansheeEngine/Include/BsGUIToggle.h
  38. 2 2
      BansheeEngine/Include/BsGUIWidget.h
  39. 2 2
      BansheeEngine/Include/BsProfilerOverlay.h
  40. 2 3
      BansheeEngine/Include/BsUpdateCallback.h
  41. 3 3
      BansheeEngine/Include/BsVirtualInput.h
  42. 7 7
      BansheeForwardRenderer/BansheeForwardRenderer.vcxproj
  43. 7 7
      BansheeMono/BansheeMono.vcxproj
  44. 7 7
      BansheeOctreeSM/BansheeOctreeSM.vcxproj
  45. 6 12
      BoostPort.txt
  46. 7 7
      CamelotCore/CamelotCore.vcxproj
  47. 2 3
      CamelotCore/Include/CmApplication.h
  48. 17 27
      CamelotCore/Include/CmCoreObject.h
  49. 1 1
      CamelotCore/Include/CmEventQuery.h
  50. 8 8
      CamelotCore/Include/CmInput.h
  51. 15 15
      CamelotCore/Include/CmOSInputHandler.h
  52. 4 4
      CamelotCore/Include/CmPlatform.h
  53. 4 4
      CamelotCore/Include/CmRawInputHandler.h
  54. 1 2
      CamelotCore/Include/CmRenderSystem.h
  55. 2 2
      CamelotCore/Include/CmRenderTarget.h
  56. 3 3
      CamelotCore/Include/CmRenderWindowManager.h
  57. 1 1
      CamelotCore/Include/CmRenderer.h
  58. 11 36
      CamelotCore/Include/CmSceneObject.h
  59. 1 1
      CamelotCore/Include/CmTimerQuery.h
  60. 3 3
      CamelotCore/Include/CmViewport.h
  61. 4 4
      CamelotCore/Include/CmWin32FolderMonitor.h
  62. 13 13
      CamelotCore/Include/Win32/CmPlatformImpl.h
  63. 14 14
      CamelotCore/Source/Win32/CmPlatformImpl.cpp
  64. 7 7
      CamelotD3D11RenderSystem/CamelotD3D11RenderSystem.vcxproj
  65. 7 7
      CamelotD3D9Renderer/CamelotD3D9Renderer.vcxproj
  66. 7 7
      CamelotFBXImporter/CamelotFBXImporter.vcxproj
  67. 7 7
      CamelotFontImporter/CamelotTTFImporter.vcxproj
  68. 7 7
      CamelotFreeImgImporter/CamelotFreeImgImporter.vcxproj
  69. 7 7
      CamelotGLRenderer/CamelotGLRenderer.vcxproj
  70. 7 7
      CamelotOISInput/CamelotOISInput.vcxproj
  71. 7 7
      CamelotUtility/CamelotUtility.vcxproj
  72. 32 19
      CamelotUtility/Include/BsEvent.h
  73. 4 4
      CamelotUtility/Include/CmHString.h
  74. 2 2
      CamelotUtility/Include/CmLog.h
  75. 7 46
      CamelotUtility/Include/CmMemoryAllocator.h
  76. 0 1
      CamelotUtility/Include/CmPath.h
  77. 1 5
      CamelotUtility/Include/CmPrerequisitesUtil.h
  78. 8 43
      CamelotUtility/Include/CmStdHeaders.h
  79. 2 2
      CamelotUtility/Include/CmStringTable.h
  80. 3 2
      CamelotUtility/Include/CmTypes.h
  81. 1 1
      CamelotUtility/Source/CmHString.cpp
  82. 0 1
      CamelotUtility/Source/CmLog.cpp
  83. 0 4
      Dependencies.txt
  84. 3 3
      SBansheeEditor/Include/BsScriptEditorWindow.h
  85. 7 7
      SBansheeEditor/SBansheeEditor.vcxproj
  86. 7 7
      SBansheeEngine/SBansheeEngine.vcxproj

+ 7 - 7
BansheeEditor/BansheeEditor.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -36,40 +36,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 4 - 4
BansheeEditor/Include/BsEditorWidget.h

@@ -2,7 +2,7 @@
 
 #include "BsEditorPrerequisites.h"
 #include "BsEditorWidgetManager.h"
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -27,9 +27,9 @@ namespace BansheeEngine
 
 		void close();
 
-		boost::signal<void(UINT32, UINT32)> onResized;
-		boost::signal<void(INT32, INT32)> onMoved;
-		boost::signal<void(EditorWidgetContainer*)> onParentChanged;
+		Event<void(UINT32, UINT32)> onResized;
+		Event<void(INT32, INT32)> onMoved;
+		Event<void(EditorWidgetContainer*)> onParentChanged;
 	protected:
 		friend class EditorWidgetManager;
 

+ 2 - 2
BansheeEditor/Include/BsEditorWidgetContainer.h

@@ -1,7 +1,7 @@
 #pragma once
 
 #include "BsEditorPrerequisites.h"
-#include <boost/signal.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -29,7 +29,7 @@ namespace BansheeEngine
 
 		void _notifyWidgetDestroyed(EditorWidgetBase* widget);
 
-		boost::signal<void()> onWidgetClosed;
+		Event<void()> onWidgetClosed;
 	private:
 		EditorWindow* mParentWindow;
 		GUITabbedTitleBar* mTitleBar;

+ 2 - 2
BansheeEditor/Include/BsEditorWindowBase.h

@@ -1,7 +1,7 @@
 #pragma once
 
 #include "BsEditorPrerequisites.h"
-#include <boost/signals/connection.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -41,6 +41,6 @@ namespace BansheeEngine
 		virtual void initialize();
 		virtual void resized() { }
 	private:
-		boost::signals::connection mResizedConn;
+		HEvent mResizedConn;
 	};
 }

+ 1 - 1
BansheeEditor/Include/BsEditorWindowManager.h

@@ -2,7 +2,7 @@
 
 #include "BsEditorPrerequisites.h"
 #include "CmModule.h"
-#include <boost/signals.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {

+ 2 - 2
BansheeEditor/Include/BsGUIDockSlider.h

@@ -3,7 +3,7 @@
 #include "BsEditorPrerequisites.h"
 #include "BsGUIButtonBase.h"
 #include "BsDockManager.h"
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -15,7 +15,7 @@ namespace BansheeEngine
 		static GUIDockSlider* create(bool horizontal, const String& styleName = StringUtil::BLANK);
 		static GUIDockSlider* create(bool horizontal, const GUIOptions& layoutOptions, const String& styleName = StringUtil::BLANK);
 
-		boost::signal<void(const Vector2I&)> onDragged;
+		Event<void(const Vector2I&)> onDragged;
 	protected:
 		virtual bool mouseEvent(const GUIMouseEvent& ev);
 

+ 2 - 2
BansheeEditor/Include/BsGUIDropButton.h

@@ -6,7 +6,7 @@
 #include "BsImageSprite.h"
 #include "BsTextSprite.h"
 #include "BsGUIContent.h"
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -19,7 +19,7 @@ namespace BansheeEngine
 		static GUIDropButton* create(UINT32 dragType, const GUIOptions& layoutOptions, 
 			const String& styleName = StringUtil::BLANK);
 
-		boost::signal<void(void*)> onDataDropped;
+		Event<void(void*)> onDataDropped;
 	protected:
 		virtual ~GUIDropButton();
 

+ 1 - 1
BansheeEditor/Include/BsGUIFoldout.h

@@ -29,7 +29,7 @@ namespace BansheeEngine
 
 		Vector2I _getOptimalSize() const;
 
-		boost::signal<void(bool)> onStateChanged;
+		Event<void(bool)> onStateChanged;
 	protected:
 		virtual ~GUIFoldout();
 

+ 1 - 1
BansheeEditor/Include/BsGUIIntField.h

@@ -16,7 +16,7 @@ namespace BansheeEngine
 		INT32 getValue() const { return mValue; }
 		void setValue(INT32 value);
 
-		boost::signal<void(INT32)> onValueChanged;
+		Event<void(INT32)> onValueChanged;
 
 	protected:
 		virtual ~GUIIntField();

+ 5 - 5
BansheeEditor/Include/BsGUIResourceTreeView.h

@@ -3,7 +3,7 @@
 #include "BsEditorPrerequisites.h"
 #include "BsGUITreeView.h"
 #include "BsProjectLibrary.h"
-#include <boost/signal.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -55,10 +55,10 @@ namespace BansheeEngine
 		OSDropTarget* mDropTarget;
 		bool mDropTargetDragActive;
 
-		boost::signals::connection mDropTargetEnterConn;
-		boost::signals::connection mDropTargetMoveConn;
-		boost::signals::connection mDropTargetLeaveConn;
-		boost::signals::connection mDropTargetDroppedConn;
+		HEvent mDropTargetEnterConn;
+		HEvent mDropTargetMoveConn;
+		HEvent mDropTargetLeaveConn;
+		HEvent mDropTargetDroppedConn;
 
 		GUIResourceTreeView(const String& backgroundStyle, const String& elementBtnStyle, 
 			const String& foldoutBtnStyle, const String& selectionBackgroundStyle, const String& editBoxStyle, 

+ 1 - 1
BansheeEditor/Include/BsGUISceneTreeView.h

@@ -2,7 +2,7 @@
 
 #include "BsEditorPrerequisites.h"
 #include "BsGUITreeView.h"
-#include <boost/signal.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {

+ 3 - 3
BansheeEditor/Include/BsGUITabButton.h

@@ -4,7 +4,7 @@
 #include "BsGUIToggle.h"
 #include "BsGUIToggleGroup.h"
 #include "BsImageSprite.h"
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -26,8 +26,8 @@ namespace BansheeEngine
 		UINT32 getIndex() const { return mIndex; }
 		void _setDraggedState(bool active);
 
-		boost::signal<void(UINT32, const Vector2I&)> onDragged;
-		boost::signal<void(UINT32, const Vector2I&)> onDragEnd;
+		Event<void(UINT32, const Vector2I&)> onDragged;
+		Event<void(UINT32, const Vector2I&)> onDragEnd;
 	protected:
 		virtual bool mouseEvent(const GUIMouseEvent& ev);
 

+ 5 - 5
BansheeEditor/Include/BsGUITabbedTitleBar.h

@@ -3,7 +3,7 @@
 #include "BsEditorPrerequisites.h"
 #include "BsGUIElementContainer.h"
 #include "CmRectI.h"
-#include <boost/signal.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -29,10 +29,10 @@ namespace BansheeEngine
 
 		Vector<RectI>::type calcDraggableAreas(INT32 x, INT32 y, UINT32 width, UINT32 height) const;
 
-		boost::signal<void(UINT32)> onTabActivated;
-		boost::signal<void(UINT32)> onTabClosed;
-		boost::signal<void(UINT32)> onTabDraggedOff;
-		boost::signal<void(UINT32)> onTabDraggedOn;
+		Event<void(UINT32)> onTabActivated;
+		Event<void(UINT32)> onTabClosed;
+		Event<void(UINT32)> onTabDraggedOff;
+		Event<void(UINT32)> onTabDraggedOn;
 
 	protected:
 		virtual ~GUITabbedTitleBar();

+ 1 - 1
BansheeEditor/Include/BsGUITreeView.h

@@ -3,7 +3,7 @@
 #include "BsEditorPrerequisites.h"
 #include "BsGUIElementContainer.h"
 #include "BsVirtualInput.h"
-#include <boost/signal.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {

+ 2 - 2
BansheeEditor/Include/BsGUITreeViewEditBox.h

@@ -13,8 +13,8 @@ namespace BansheeEngine
 		static GUITreeViewEditBox* create(const String& styleName = StringUtil::BLANK);
 		static GUITreeViewEditBox* create(const GUIOptions& layoutOptions, const String& styleName = StringUtil::BLANK);
 
-		boost::signal<void()> onInputConfirmed;
-		boost::signal<void()> onInputCanceled;
+		Event<void()> onInputConfirmed;
+		Event<void()> onInputCanceled;
 
 	private:
 		GUITreeViewEditBox(const String& styleName, const GUILayoutOptions& layoutOptions);

+ 2 - 2
BansheeEditor/Include/BsGUIWindowDropArea.h

@@ -2,7 +2,7 @@
 
 #include "BsEditorPrerequisites.h"
 #include "BsGUITexture.h"
-#include <boost/signals.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -16,7 +16,7 @@ namespace BansheeEngine
 
 		void setFocused(bool focused);
 
-		boost::signal<void()> onDraggedItemDropped;
+		Event<void()> onDraggedItemDropped;
 	protected:
 		~GUIWindowDropArea();
 		GUIWindowDropArea(const String& styleName, const GUILayoutOptions& layoutOptions);

+ 1 - 1
BansheeEditor/Include/BsGUIWindowFrameWidget.h

@@ -2,7 +2,7 @@
 
 #include "BsEditorPrerequisites.h"
 #include "BsGUIWidget.h"
-#include <boost/signal.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {

+ 2 - 2
BansheeEditor/Include/BsProjectLibrary.h

@@ -61,8 +61,8 @@ namespace BansheeEngine
 		void moveEntry(const Path& oldPath, const Path& newPath);
 		void deleteEntry(const Path& path);
 
-		boost::signal<void(const Path&)> onEntryRemoved;
-		boost::signal<void(const Path&)> onEntryAdded;
+		Event<void(const Path&)> onEntryRemoved;
+		Event<void(const Path&)> onEntryAdded;
 	private:
 		static const Path RESOURCES_DIR;
 		static const Path INTERNAL_RESOURCES_DIR;

+ 1 - 1
BansheeEditor/Source/BsEditorApplication.cpp

@@ -58,7 +58,7 @@ namespace BansheeEngine
 		};
 
 		TmpClass instance;
-		Event<void (int)> myEvent;
+		TEvent<void (int)> myEvent;
 		HEvent evSomeMethod = myEvent.connect(std::bind(&TmpClass::someMEthod, instance, std::placeholders::_1));
 
 		evSomeMethod.disconnect();

+ 7 - 7
BansheeEditorExec/BansheeEditorExec.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -34,40 +34,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 7 - 7
BansheeEngine/BansheeEngine.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -34,40 +34,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 2 - 3
BansheeEngine/Include/BsApplication.h

@@ -1,8 +1,7 @@
 #pragma once
 
 #include "BsPrerequisites.h"
-
-#include "boost/signals/connection.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -30,7 +29,7 @@ namespace BansheeEngine
 
 			const ViewportPtr& getPrimaryViewport() const;
 	private:
-		boost::signals::connection updateCallbackConn;
+		HEvent updateCallbackConn;
 		DynLib* mMonoPlugin;
 		DynLib* mSBansheeEnginePlugin;
 

+ 2 - 2
BansheeEngine/Include/BsDragAndDropManager.h

@@ -3,7 +3,7 @@
 #include "BsPrerequisites.h"
 #include "CmModule.h"
 #include "CmInput.h"
-#include <boost/signals.hpp>
+#include "BsEvent.h"
 #include <atomic>
 
 namespace BansheeEngine
@@ -40,7 +40,7 @@ namespace BansheeEngine
 		 */
 		void update();
 
-		boost::signal<bool(const PointerEvent&)> onDragEnded;
+		Event<bool(const PointerEvent&)> onDragEnded;
 	private:
 		UINT32 mDragTypeId;
 		void* mData;

+ 1 - 1
BansheeEngine/Include/BsGUIButton.h

@@ -5,7 +5,7 @@
 #include "BsImageSprite.h"
 #include "BsTextSprite.h"
 #include "BsGUIContent.h"
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {

+ 5 - 5
BansheeEngine/Include/BsGUIButtonBase.h

@@ -5,7 +5,7 @@
 #include "BsImageSprite.h"
 #include "BsTextSprite.h"
 #include "BsGUIContent.h"
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -31,9 +31,9 @@ namespace BansheeEngine
 
 		virtual Vector2I _getOptimalSize() const;
 
-		boost::signal<void()> onClick;
-		boost::signal<void()> onHover;
-		boost::signal<void()> onOut;
+		Event<void()> onClick;
+		Event<void()> onHover;
+		Event<void()> onOut;
 	protected:
 		GUIButtonBase(const String& styleName, const GUIContent& content, const GUILayoutOptions& layoutOptions);
 		virtual ~GUIButtonBase();
@@ -88,6 +88,6 @@ namespace BansheeEngine
 		IMAGE_SPRITE_DESC mImageDesc;
 		GUIContent mContent;
 
-		boost::signals::connection mLocStringUpdatedConn;
+		HEvent mLocStringUpdatedConn;
 	};
 }

+ 1 - 1
BansheeEngine/Include/BsGUIDropDownBox.h

@@ -3,7 +3,7 @@
 #include "BsPrerequisites.h"
 #include "BsGUIWidget.h"
 #include "CmVector2I.h"
-#include <boost/signal.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {

+ 2 - 2
BansheeEngine/Include/BsGUIDropDownHitBox.h

@@ -16,8 +16,8 @@ namespace BansheeEngine
 		void setBounds(const RectI& bounds) { mBounds.clear(); mBounds.push_back(bounds); }
 		void setBounds(const Vector<RectI>::type& bounds) { mBounds = bounds; }
 
-		boost::signal<void()> onFocusLost;
-		boost::signal<void()> onFocusGained;
+		Event<void()> onFocusLost;
+		Event<void()> onFocusGained;
 
 	private:
 		GUIDropDownHitBox(bool captureMouse, const GUILayoutOptions& layoutOptions);

+ 3 - 3
BansheeEngine/Include/BsGUIInputBox.h

@@ -33,9 +33,9 @@ namespace BansheeEngine
 
 		virtual Vector2I _getOptimalSize() const;
 
-		boost::signal<void(const WString&)> onValueChanged;
-		boost::signal<void()> onFocusGained;
-		boost::signal<void()> onFocusLost;
+		Event<void(const WString&)> onValueChanged;
+		Event<void()> onFocusGained;
+		Event<void()> onFocusLost;
 	protected:
 		GUIInputBox(const String& styleName, const GUILayoutOptions& layoutOptions, bool multiline);
 		virtual ~GUIInputBox();

+ 1 - 1
BansheeEngine/Include/BsGUILabel.h

@@ -58,7 +58,7 @@ namespace BansheeEngine
 	private:
 		TextSprite* mTextSprite;
 		GUIContent mContent;
-		boost::signals::connection mLocStringUpdatedConn;
+		HEvent mLocStringUpdatedConn;
 
 		TEXT_SPRITE_DESC mDesc;
 		

+ 2 - 2
BansheeEngine/Include/BsGUIListBox.h

@@ -4,7 +4,7 @@
 #include "BsGUIButtonBase.h"
 #include "BsImageSprite.h"
 #include "BsTextSprite.h"
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -20,7 +20,7 @@ namespace BansheeEngine
 
 		virtual ElementType getElementType() const { return ElementType::ListBox; }
 
-		boost::signal<void(UINT32)> onSelectionChanged;
+		Event<void(UINT32)> onSelectionChanged;
 	protected:
 		~GUIListBox();
 

+ 12 - 12
BansheeEngine/Include/BsGUIManager.h

@@ -9,7 +9,7 @@
 #include "CmModule.h"
 #include "CmColor.h"
 #include "CmInput.h"
-#include <boost/signals/connection.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -169,20 +169,20 @@ namespace BansheeEngine
 
 		Map<const RenderTexture*, const GUIElement*>::type mInputBridge;
 
-		boost::signals::connection mOnPointerMovedConn;
-		boost::signals::connection mOnPointerPressedConn;
-		boost::signals::connection mOnPointerReleasedConn;
-		boost::signals::connection mOnPointerDoubleClick;
-		boost::signals::connection mOnTextInputConn;
-		boost::signals::connection mOnInputCommandConn;
-		boost::signals::connection mOnVirtualButtonDown;
+		HEvent mOnPointerMovedConn;
+		HEvent mOnPointerPressedConn;
+		HEvent mOnPointerReleasedConn;
+		HEvent mOnPointerDoubleClick;
+		HEvent mOnTextInputConn;
+		HEvent mOnInputCommandConn;
+		HEvent mOnVirtualButtonDown;
 
-		boost::signals::connection mDragEndedConn;
+		HEvent mDragEndedConn;
 
-		boost::signals::connection mWindowGainedFocusConn;
-		boost::signals::connection mWindowLostFocusConn;
+		HEvent mWindowGainedFocusConn;
+		HEvent mWindowLostFocusConn;
 
-		boost::signals::connection mMouseLeftWindowConn;
+		HEvent mMouseLeftWindowConn;
 
 		void updateMeshes();
 		void updateCaretTexture();

+ 33 - 13
BansheeEngine/Include/BsGUIOptions.h

@@ -1,7 +1,6 @@
 #pragma once
 
 #include "BsPrerequisites.h"
-#include <boost/preprocessor.hpp>
 
 namespace BansheeEngine
 {
@@ -36,21 +35,42 @@ namespace BansheeEngine
 	public:
 		GUIOptions() { }
 
-		// Constructor that accepts an arbitrary number of parameters > 0
-#define MAKE_GUIOPTION_CONSTRUCTOR(z, n, unused)											\
-	GUIOptions(BOOST_PP_ENUM_PARAMS(n, const GUIOption& e) )	\
-	{			\
-			mOptions.push_back(e0);					\
-			BOOST_PP_REPEAT_FROM_TO(1, n, ADD_OPTION, ~) 									\
-	}
+		GUIOptions(const GUIOption& e0)
+		{			
+			mOptions.push_back(e0);					
+		}
 
-#define ADD_OPTION(z, i, unused) \
-	mOptions.push_back(BOOST_PP_CAT(e, i));
+		GUIOptions(const GUIOption& e0, const GUIOption& e1)
+		{
+			mOptions.push_back(e0);
+			mOptions.push_back(e1);
+		}
+
+		GUIOptions(const GUIOption& e0, const GUIOption& e1, const GUIOption& e2)
+		{
+			mOptions.push_back(e0);
+			mOptions.push_back(e1);
+			mOptions.push_back(e2);
+		}
 
-	BOOST_PP_REPEAT_FROM_TO(1, 15, MAKE_GUIOPTION_CONSTRUCTOR, ~)
+		GUIOptions(const GUIOption& e0, const GUIOption& e1, const GUIOption& e2,
+			const GUIOption& e3)
+		{
+			mOptions.push_back(e0);
+			mOptions.push_back(e1);
+			mOptions.push_back(e2);
+			mOptions.push_back(e3);
+		}
 
-#undef ADD_OPTION
-#undef MAKE_GUIOPTION_CONSTRUCTOR
+		GUIOptions(const GUIOption& e0, const GUIOption& e1, const GUIOption& e2,
+			const GUIOption& e4)
+		{
+			mOptions.push_back(e0);
+			mOptions.push_back(e1);
+			mOptions.push_back(e2);
+			mOptions.push_back(e3);
+			mOptions.push_back(e4);
+		}
 
 		void addOption(const GUIOption& option)
 		{

+ 2 - 3
BansheeEngine/Include/BsGUIScrollBar.h

@@ -2,15 +2,14 @@
 
 #include "BsPrerequisites.h"
 #include "BsGUIElement.h"
-
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
 	class BS_EXPORT GUIScrollBar : public GUIElement
 	{
 	public:
-		boost::signal<void(float newPosition)> onScrollPositionChanged;
+		Event<void(float newPosition)> onScrollPositionChanged;
 
 		void setHandleSize(UINT32 size);
 		void setScrollPos(float pct);

+ 2 - 2
BansheeEngine/Include/BsGUIScrollBarHandle.h

@@ -3,7 +3,7 @@
 #include "BsPrerequisites.h"
 #include "BsGUIElement.h"
 #include "BsImageSprite.h"
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -31,7 +31,7 @@ namespace BansheeEngine
 
 		virtual Vector2I _getOptimalSize() const;
 
-		boost::signal<void(float newPosition)> onHandleMoved;
+		Event<void(float newPosition)> onHandleMoved;
 	protected:
 		~GUIScrollBarHandle();
 

+ 1 - 2
BansheeEngine/Include/BsGUIScrollBarHorz.h

@@ -2,8 +2,7 @@
 
 #include "BsPrerequisites.h"
 #include "BsGUIScrollBar.h"
-
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {

+ 1 - 2
BansheeEngine/Include/BsGUIScrollBarVert.h

@@ -2,8 +2,7 @@
 
 #include "BsPrerequisites.h"
 #include "BsGUIScrollBar.h"
-
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {

+ 2 - 2
BansheeEngine/Include/BsGUIToggle.h

@@ -6,7 +6,7 @@
 #include "BsImageSprite.h"
 #include "BsTextSprite.h"
 #include "BsGUIContent.h"
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -44,7 +44,7 @@ namespace BansheeEngine
 
 		void _setToggleGroup(std::shared_ptr<GUIToggleGroup> toggleGroup);
 
-		boost::signal<void(bool)> onToggled;
+		Event<void(bool)> onToggled;
 	protected:
 		virtual ~GUIToggle();
 

+ 2 - 2
BansheeEngine/Include/BsGUIWidget.h

@@ -5,7 +5,7 @@
 #include "CmRectI.h"
 #include "CmVector3.h"
 #include "CmQuaternion.h"
-#include <boost/signal.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -94,7 +94,7 @@ namespace BansheeEngine
 		Quaternion mLastFrameRotation;
 		Vector3 mLastFrameScale;
 
-		boost::signals::connection mOwnerTargetResizedConn;
+		HEvent mOwnerTargetResizedConn;
 
 		mutable bool mWidgetIsDirty;
 		mutable RectI mBounds;

+ 2 - 2
BansheeEngine/Include/BsProfilerOverlay.h

@@ -2,7 +2,7 @@
 
 #include "BsPrerequisites.h"
 #include "CmModule.h"
-#include "boost/signals/connection.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -98,7 +98,7 @@ namespace BansheeEngine
 		Vector<BasicRow>::type mBasicRows;
 		Vector<PreciseRow>::type mPreciseRows;
 
-		boost::signals::connection mTargetResizedConn;
+		HEvent mTargetResizedConn;
 		bool mIsShown;
 
 		void targetResized();

+ 2 - 3
BansheeEngine/Include/BsUpdateCallback.h

@@ -1,7 +1,6 @@
 #include "BsPrerequisites.h"
 #include "CmComponent.h"
-
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -16,6 +15,6 @@ namespace BansheeEngine
 
 		virtual void update();
 
-		boost::signal<void()> onUpdate;
+		Event<void()> onUpdate;
 	};
 }

+ 3 - 3
BansheeEngine/Include/BsVirtualInput.h

@@ -44,9 +44,9 @@ namespace BansheeEngine
 
 		void update();
 
-		boost::signal<void(const VirtualButton&)> onButtonDown;
-		boost::signal<void(const VirtualButton&)> onButtonUp;
-		boost::signal<void(const VirtualButton&)> onButtonHeld;
+		Event<void(const VirtualButton&)> onButtonDown;
+		Event<void(const VirtualButton&)> onButtonUp;
+		Event<void(const VirtualButton&)> onButtonHeld;
 	private:
 		friend class VirtualButton;
 

+ 7 - 7
BansheeForwardRenderer/BansheeForwardRenderer.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -34,40 +34,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 7 - 7
BansheeMono/BansheeMono.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -34,40 +34,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 7 - 7
BansheeOctreeSM/BansheeOctreeSM.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -35,40 +35,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 6 - 12
BoostPort.txt

@@ -1,26 +1,20 @@
-Events:
- - Add support for variadic number of parameters. Initially just by using boost preprocessor like in other places.
-  - Note for events and its function style arguments: "class variadic_extended_signature<R (Args...)>"
-
-Temporarily make filesystem use VS filesystem header
-
---------------
-Once ported to VS:
- - Remove boost preprocessor macros and use variadic templates
  - Remove ::type extensions from vectors
- - Port filesystem from VS implementation to custom one
 
 --------------
 Other:
  - std::function allocates memory yet I'm not using a custom allocator for it. Replace std::function with custom Function method.
  - Ability to construct Module using startUp without having to do allocation outside of it
 
-
  REFACTOR GpuProgram
   - Get rid of HighLevelGpuProgram and merge everything into GpuProgram if possible
   - Right now HighLevelGpuProgram always creates just one instance of GpuProgram internally, and I don't see why they should be separate
   - Possibly also determine how to neatly handle compilation faliure. Error should be reported and dummy shader should be returned.
 
+cm_shared_ptr should use && for parameter forwarding?
+cm_core_ptr too
+
  FreeImaged.lib -> FreeImage.lib
 freetypeD -> freetype
-all fbx libs -> libfbxsdk-md.lib
+all fbx libs -> libfbxsdk-md.lib
+
+Update Dependencies doc

+ 7 - 7
CamelotCore/CamelotCore.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -36,40 +36,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 2 - 3
CamelotCore/Include/CmApplication.h

@@ -4,8 +4,7 @@
 #include "CmCoreThreadAccessor.h"
 #include "CmHighLevelGpuProgram.h"
 #include "CmRenderWindow.h"
-
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -78,7 +77,7 @@ namespace BansheeEngine
 			/**
 			 * @brief	Called every frame by the main loop, after scene update and before rendering.
 			 */
-			boost::signal<void()> mainLoopCallback;
+			Event<void()> mainLoopCallback;
 
 	private:
 		RenderWindowPtr mPrimaryWindow;

+ 17 - 27
CamelotCore/Include/CmCoreObject.h

@@ -2,7 +2,6 @@
 
 #include "CmPrerequisites.h"
 #include "CmAsyncOp.h"
-#include <boost/preprocessor.hpp>
 
 namespace BansheeEngine
 {
@@ -208,48 +207,39 @@ namespace BansheeEngine
 	 * @note	All core thread object shared pointers must be created using this method or its overloads
 	 * 			and you should not create them manually.
 	 */
-#define MAKE_CM_NEW_CORE(z, n, unused)                                     \
-	template<class Type, class MainAlloc, class PtrDataAlloc BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>     \
-	std::shared_ptr<Type> cm_core_ptr(BOOST_PP_ENUM_BINARY_PARAMS(n, T, t) ) { \
-	return std::shared_ptr<Type>(cm_new<Type, MainAlloc>(BOOST_PP_ENUM_PARAMS (n, t)), &CoreObject::_deleteDelayed<Type, MainAlloc>, StdAlloc<PtrDataAlloc>());     \
+	template<class Type, class MainAlloc, class PtrDataAlloc, class... Args>
+	std::shared_ptr<Type> cm_core_ptr(Args ...args)
+	{
+		return std::shared_ptr<Type>(cm_new<Type, MainAlloc>(args...),
+			&CoreObject::_deleteDelayed<Type, MainAlloc>, StdAlloc<PtrDataAlloc>());
 	}
 
-	BOOST_PP_REPEAT(15, MAKE_CM_NEW_CORE, ~)
-
-#undef MAKE_CM_NEW_CORE
-
 	/**
 	 * @brief	Creates a new core object using the specified allocator and returns a shared pointer to it.
 	 *
 	 * @note	All core thread object shared pointers must be created using this method or its overloads
 	 * 			and you should not create them manually.
 	 */
-#define MAKE_CM_NEW_CORE(z, n, unused)                                     \
-	template<class Type, class MainAlloc BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>     \
-	std::shared_ptr<Type> cm_core_ptr(BOOST_PP_ENUM_BINARY_PARAMS(n, T, t) ) { \
-	return std::shared_ptr<Type>(cm_new<Type, MainAlloc>(BOOST_PP_ENUM_PARAMS (n, t)), &CoreObject::_deleteDelayed<Type, MainAlloc>, StdAlloc<GenAlloc>());     \
+	template<class Type, class MainAlloc, class... Args>
+	std::shared_ptr<Type> cm_core_ptr(Args ...args)
+	{
+		return std::shared_ptr<Type>(cm_new<Type, MainAlloc>(args...),
+			&CoreObject::_deleteDelayed<Type, MainAlloc>, StdAlloc<GenAlloc>());
 	}
 
-	BOOST_PP_REPEAT(15, MAKE_CM_NEW_CORE, ~)
-
-#undef MAKE_CM_NEW_CORE
-
 	/**
 	 * @brief	Creates a new core object and returns a shared pointer to it.
 	 *
 	 * @note	All core thread object shared pointers must be created using this method or its overloads
 	 * 			and you should not create them manually.
 	 */
-#define MAKE_CM_NEW_CORE(z, n, unused)                                     \
-	template<class Type BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>     \
-	std::shared_ptr<Type> cm_core_ptr(BOOST_PP_ENUM_BINARY_PARAMS(n, T, t) ) { \
-	return std::shared_ptr<Type>(cm_new<Type, GenAlloc>(BOOST_PP_ENUM_PARAMS (n, t)), &CoreObject::_deleteDelayed<Type, GenAlloc>, StdAlloc<GenAlloc>());     \
+	template<class Type, class... Args>
+	std::shared_ptr<Type> cm_core_ptr(Args ...args)
+	{
+		return std::shared_ptr<Type>(cm_new<Type, GenAlloc>(args...),
+			&CoreObject::_deleteDelayed<Type, GenAlloc>, StdAlloc<GenAlloc>());
 	}
 
-	BOOST_PP_REPEAT(15, MAKE_CM_NEW_CORE, ~)
-
-#undef MAKE_CM_NEW_CORE
-
 	/**
 	 * @brief	Creates a core object shared pointer using a previously constructed object.
 	 *
@@ -257,7 +247,7 @@ namespace BansheeEngine
 	 * 			and you should not create them manually.
 	 */
 	template<class Type, class MainAlloc>
-	std::shared_ptr<Type> cm_core_ptr(Type* data) 
+	std::shared_ptr<Type> cm_core_ptr(Type* data)
 	{
 		return std::shared_ptr<Type>(data, &CoreObject::_deleteDelayed<Type, MainAlloc>, StdAlloc<GenAlloc>());  
 	}
@@ -269,7 +259,7 @@ namespace BansheeEngine
 	 * 			and you should not create them manually.
 	 */
 	template<class Type, class MainAlloc, class PtrDataAlloc>
-	std::shared_ptr<Type> cm_core_ptr(Type* data) 
+	std::shared_ptr<Type> cm_core_ptr(Type* data)
 	{
 		return std::shared_ptr<Type>(data, &CoreObject::_deleteDelayed<Type, MainAlloc>, StdAlloc<PtrDataAlloc>());  
 	}

+ 1 - 1
CamelotCore/Include/CmEventQuery.h

@@ -36,7 +36,7 @@ namespace BansheeEngine
 		/**
 		 * @brief	Triggered when GPU starts processing the query.
 		 */
-		boost::signal<void()> onTriggered;
+		Event<void()> onTriggered;
 
 		/**
 		 * @brief	Creates a new query, but does not schedule it on GPU.

+ 8 - 8
CamelotCore/Include/CmInput.h

@@ -36,43 +36,43 @@ namespace BansheeEngine
 		/**
 		 * @brief	Triggered whenever a button is first pressed.
 		 */
-		boost::signal<void(const ButtonEvent&)> onButtonDown;
+		Event<void(const ButtonEvent&)> onButtonDown;
 
 		/**
 		 * @brief	Triggered whenever a button is first released.
 		 */
-		boost::signal<void(const ButtonEvent&)> onButtonUp;
+		Event<void(const ButtonEvent&)> onButtonUp;
 
 		/**
 		 * @brief	Triggered whenever user inputs a text character. 
 		 */
-		boost::signal<void(const TextInputEvent&)> onCharInput;
+		Event<void(const TextInputEvent&)> onCharInput;
 
 		/**
 		 * @brief	Triggers when some pointing device (mouse cursor, touch) moves.
 		 */
-		boost::signal<void(const PointerEvent&)> onPointerMoved;
+		Event<void(const PointerEvent&)> onPointerMoved;
 
 		/**
 		 * @brief	Triggers when some pointing device (mouse cursor, touch) button is pressed.
 		 */
-		boost::signal<void(const PointerEvent&)> onPointerPressed;
+		Event<void(const PointerEvent&)> onPointerPressed;
 
 		/**
 		 * @brief	Triggers when some pointing device (mouse cursor, touch) button is released.
 		 */
-		boost::signal<void(const PointerEvent&)> onPointerReleased;
+		Event<void(const PointerEvent&)> onPointerReleased;
 
 		/**
 		 * @brief	Triggers when some pointing device (mouse cursor, touch) button is double clicked.
 		 */
-		boost::signal<void(const PointerEvent&)> onPointerDoubleClick;
+		Event<void(const PointerEvent&)> onPointerDoubleClick;
 
 		// TODO Low priority: Remove this, I can emulate it using virtual input
 		/**
 		 * @brief	Triggers on special input commands.
 		 */
-		boost::signal<void(InputCommandType)> onInputCommand;
+		Event<void(InputCommandType)> onInputCommand;
 
 		/**
 		 * @brief	Registers a new input handler. Replaces any previous input handler.

+ 15 - 15
CamelotCore/Include/CmOSInputHandler.h

@@ -2,7 +2,7 @@
 
 #include "CmPrerequisites.h"
 #include "CmPlatform.h"
-#include <boost/signal.hpp>
+#include "BsEvent.h"
 #include "CmVector2I.h"
 
 namespace BansheeEngine
@@ -45,39 +45,39 @@ namespace BansheeEngine
 		 * 			multiple keys, so character input will not necessarily correspond with button presses.
 		 * 			Provide character code of the input character.
 		 */
-		boost::signal<void(UINT32)> onCharInput;
+		Event<void(UINT32)> onCharInput;
 
 		/**
 		 * @brief	Triggers whenever user scrolls the mouse wheel. Returns the screen
 		 * 			position of the mouse cursor and delta amount of mouse scroll (can be negative or positive).
 		 */
-		boost::signal<void(const Vector2I&, float)> onMouseWheelScrolled;
+		Event<void(const Vector2I&, float)> onMouseWheelScrolled;
 
 		/**
 		 * @brief	Triggers whenever user moves the mouse cursor.
 		 */
-		boost::signal<void(const PointerEvent&)> onCursorMoved;
+		Event<void(const PointerEvent&)> onCursorMoved;
 
 		/**
 		 * @brief	Triggers whenever user presses one of the mouse buttons.
 		 */
-		boost::signal<void(const PointerEvent&)> onCursorPressed;
+		Event<void(const PointerEvent&)> onCursorPressed;
 
 		/**
 		 * @brief	Triggers whenever user releases one of the mouse buttons.
 		 */
-		boost::signal<void(const PointerEvent&)> onCursorReleased;
+		Event<void(const PointerEvent&)> onCursorReleased;
 
 		/**
 		 * @brief	Triggers when user clicks a mouse button quickly twice in a row.
 		 */
-		boost::signal<void(const PointerEvent&)> onDoubleClick;
+		Event<void(const PointerEvent&)> onDoubleClick;
 
 		/**
 		 * @brief	Triggers when user inputa a special input command, like commands user
 		 * 			for manipulating text input.
 		 */
-		boost::signal<void(InputCommandType)> onInputCommand;
+		Event<void(InputCommandType)> onInputCommand;
 
 		/**
 		 * @brief	Called once per frame. Capture input here if needed.
@@ -106,13 +106,13 @@ namespace BansheeEngine
 		Queue<InputCommandType>::type mInputCommands;
 		OSPointerButtonStates mMouseMoveBtnState;
 
-		boost::signals::connection mCharInputConn;
-		boost::signals::connection mCursorMovedConn;
-		boost::signals::connection mCursorPressedConn;
-		boost::signals::connection mCursorReleasedConn;
-		boost::signals::connection mCursorDoubleClickConn;
-		boost::signals::connection mInputCommandConn;
-		boost::signals::connection mMouseWheelScrolledConn;
+		HEvent mCharInputConn;
+		HEvent mCursorMovedConn;
+		HEvent mCursorPressedConn;
+		HEvent mCursorReleasedConn;
+		HEvent mCursorDoubleClickConn;
+		HEvent mInputCommandConn;
+		HEvent mMouseWheelScrolledConn;
 
 		/**
 		 * @brief	Called from the message loop to notify user has entered a character.

+ 4 - 4
CamelotCore/Include/CmPlatform.h

@@ -92,25 +92,25 @@ namespace BansheeEngine
 		 * @brief	Triggered when a pointer is being dragged over the drop area.
 		 *			Provides window coordinates of the pointer position.
 		 */
-		boost::signal<void(INT32 x, INT32 y)> onDragOver;
+		Event<void(INT32 x, INT32 y)> onDragOver;
 
 		/**
 		 * @brief	Triggered when the user completes a drop while pointer is over
 		 *			the drop area.
 		 *			Provides window coordinates of the pointer position.
 		 */
-		boost::signal<void(INT32 x, INT32 y)> onDrop;
+		Event<void(INT32 x, INT32 y)> onDrop;
 
 		/**
 		 * @brief	Triggered when a pointer enters the drop area.
 		 *			Provides window coordinates of the pointer position.
 		 */
-		boost::signal<void(INT32 x, INT32 y)> onEnter;
+		Event<void(INT32 x, INT32 y)> onEnter;
 
 		/**
 		 * @brief	Triggered when a pointer leaves the drop area.
 		 */
-		boost::signal<void()> onLeave;
+		Event<void()> onLeave;
 
 		/**
 		 * @brief	Sets the drop target area, in local window coordinates.

+ 4 - 4
CamelotCore/Include/CmRawInputHandler.h

@@ -2,7 +2,7 @@
 
 #include "CmPrerequisites.h"
 #include "CmInputFwd.h"
-#include <boost/signal.hpp>
+#include "BsEvent.h"
 #include "CmVector2I.h"
 
 namespace BansheeEngine
@@ -62,19 +62,19 @@ namespace BansheeEngine
 		 * 			include button code of the pressed button, and a timestamp of
 		 * 			the button press event.
 		 */
-		boost::signal<void(ButtonCode, UINT64)> onButtonDown;
+		Event<void(ButtonCode, UINT64)> onButtonDown;
 
 		/**
 		 * @brief	Triggered when user releases a button. Parameters
 		 * 			include button code of the released button, and a timestamp of
 		 * 			the button release event.
 		 */
-		boost::signal<void(ButtonCode, UINT64)> onButtonUp;
+		Event<void(ButtonCode, UINT64)> onButtonUp;
 
 		/**
 		 * @brief	Triggered whenever the specified axis state changes.
 		 */
-		boost::signal<void(const RawAxisState&, RawInputAxis)> onAxisMoved;
+		Event<void(const RawAxisState&, RawInputAxis)> onAxisMoved;
 
 		/**
 		 * @brief	Called once per frame. Capture input here if needed.

+ 1 - 2
CamelotCore/Include/CmRenderSystem.h

@@ -48,8 +48,7 @@ THE SOFTWARE.
 #include "CmVertexDeclaration.h"
 #include "CmPlane.h"
 #include "CmModule.h"
-
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {

+ 2 - 2
CamelotCore/Include/CmRenderTarget.h

@@ -33,7 +33,7 @@ THE SOFTWARE.
 #include "CmPixelUtil.h"
 #include "CmViewport.h"
 #include "CmCoreObject.h"
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine 
 {
@@ -98,7 +98,7 @@ namespace BansheeEngine
 		virtual void copyToMemory(const PixelData &dst, FrameBuffer buffer = FB_AUTO) = 0;
 		virtual bool requiresTextureFlipping() const = 0;
 
-		mutable boost::signal<void()> onResized;
+		mutable Event<void()> onResized;
     protected:
 		RenderTarget();
 

+ 3 - 3
CamelotCore/Include/CmRenderWindowManager.h

@@ -3,7 +3,7 @@
 #include "CmPrerequisites.h"
 #include "CmModule.h"
 #include "CmRenderWindow.h"
-#include <boost/signals.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -24,8 +24,8 @@ namespace BansheeEngine
 
 		Vector<RenderWindow*>::type getRenderWindows() const;
 
-		boost::signal<void(RenderWindow&)> onFocusGained;
-		boost::signal<void(RenderWindow&)> onFocusLost;
+		Event<void(RenderWindow&)> onFocusGained;
+		Event<void(RenderWindow&)> onFocusLost;
 	protected:
 		friend class RenderWindow;
 

+ 1 - 1
CamelotCore/Include/CmRenderer.h

@@ -2,7 +2,7 @@
 
 #include "CmPrerequisites.h"
 #include "CmGameObject.h"
-#include <boost/signals.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {

+ 11 - 36
CamelotCore/Include/CmSceneObject.h

@@ -213,51 +213,26 @@ namespace BansheeEngine
 		/* 								Component	                     		*/
 		/************************************************************************/
 	public:
-		template <typename T>
-		GameObjectHandle<T> addComponent()
+		template<class T, class... Args>
+		GameObjectHandle<T> addComponent(Args &&... args)
 		{
-			static_assert((std::is_base_of<BansheeEngine::Component, T>::value), "Specified type is not a valid Component.");
+			static_assert((std::is_base_of<BansheeEngine::Component, T>::value),
+				"Specified type is not a valid Component.");
 
-			std::shared_ptr<T> gameObject(new (cm_alloc<T, PoolAlloc>()) T(mThisHandle), &cm_delete<PoolAlloc, T>, StdAlloc<PoolAlloc>());
+			std::shared_ptr<T> gameObject(new (cm_alloc<T, PoolAlloc>()) T(mThisHandle,
+				std::forward<Args>(args)...),
+				&cm_delete<PoolAlloc, T>, StdAlloc<PoolAlloc>());
+
+			GameObjectHandle<T> newComponent =
+				GameObjectHandle<T>(GameObjectManager::instance().registerObject(gameObject));
 
-			GameObjectHandle<T> newComponent = GameObjectHandle<T>(GameObjectManager::instance().registerObject(gameObject));
 			mComponents.push_back(newComponent);
 
-			gSceneManager().notifyComponentAdded(newComponent);
+			gSceneManager().notifyComponentAdded(newComponent);	
 
 			return newComponent;
 		}
 
-		// addComponent that accepts an arbitrary number of parameters > 0
-#define MAKE_ADD_COMPONENT(z, n, unused)												\
-		template<class Type BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>					\
-		GameObjectHandle<Type> addComponent(BOOST_PP_ENUM_BINARY_PARAMS(n, T, &&t) )	\
-		{																				\
-			static_assert((std::is_base_of<BansheeEngine::Component, Type>::value),  \
-				"Specified type is not a valid Component.");										\
-																									\
-			std::shared_ptr<Type> gameObject(new (cm_alloc<Type, PoolAlloc>()) Type(mThisHandle,	\
-				std::forward<T0>(t0) BOOST_PP_REPEAT_FROM_TO(1, n, FORWARD_T, ~)),					\
-				&cm_delete<PoolAlloc, Type>, StdAlloc<PoolAlloc>());								\
-																									\
-			GameObjectHandle<Type> newComponent =													\
-				GameObjectHandle<Type>(GameObjectManager::instance().registerObject(gameObject));	\
-																									\
-			mComponents.push_back(newComponent);													\
-																									\
-			gSceneManager().notifyComponentAdded(newComponent);										\
-																									\
-			return newComponent;																	\
-		}
-
-#define FORWARD_T(z, i, unused) \
-		, std::forward<BOOST_PP_CAT(T, i)>(BOOST_PP_CAT(t, i))
-
-		BOOST_PP_REPEAT_FROM_TO(1, 15, MAKE_ADD_COMPONENT, ~)
-
-#undef FORWARD_T
-#undef MAKE_ADD_COMPONENT
-
 		/**
 		 * @brief	Searches for a component with the specific type and returns the first one
 		 * 			it finds. 

+ 1 - 1
CamelotCore/Include/CmTimerQuery.h

@@ -41,7 +41,7 @@ namespace BansheeEngine
 		 */
 		virtual float getTimeMs() = 0;
 
-		boost::signal<void(float)> onTriggered;
+		Event<void(float)> onTriggered;
 
 		static TimerQueryPtr create();
 

+ 3 - 3
CamelotCore/Include/CmViewport.h

@@ -5,7 +5,7 @@
 #include "CmColor.h"
 #include "CmRectI.h"
 #include "CmRectF.h"
-#include <boost/signals/connection.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine 
 {
@@ -102,7 +102,7 @@ namespace BansheeEngine
 		bool getRequiresStencilClear() const { return mRequiresStencilClear; }
 		void setRequiresStencilClear(bool requiresClear) { mRequiresStencilClear = requiresClear; }
 
-		boost::signal<void()> onResized;
+		Event<void()> onResized;
     protected:
         RenderTargetPtr mTarget;
 
@@ -117,7 +117,7 @@ namespace BansheeEngine
 		float mDepthClearValue;
 		UINT16 mStencilClearValue;
 
-		boost::signals::connection mTargetResizedConn;
+		HEvent mTargetResizedConn;
 
 		static const Color DEFAULT_CLEAR_COLOR;
 

+ 4 - 4
CamelotCore/Include/CmWin32FolderMonitor.h

@@ -65,25 +65,25 @@ namespace BansheeEngine
 		 * @brief	Triggers when a file is modified. Provides
 		 *			full path to the file.
 		 */
-		boost::signal<void(const Path&)> onModified;
+		Event<void(const Path&)> onModified;
 
 		/**
 		 * @brief	Triggers when a file/folder is adeed. Provides
 		 *			full path to the file/folder.
 		 */
-		boost::signal<void(const Path&)> onAdded;
+		Event<void(const Path&)> onAdded;
 
 		/**
 		 * @brief	Triggers when a file/folder is removed. Provides
 		 *			full path to the file/folder.
 		 */
-		boost::signal<void(const Path&)> onRemoved;
+		Event<void(const Path&)> onRemoved;
 
 		/**
 		 * @brief	Triggers when a file/folder is renamed. Provides
 		 *			full path to the old and new name.
 		 */
-		boost::signal<void(const Path&, const Path&)> onRenamed;
+		Event<void(const Path&, const Path&)> onRenamed;
 
 	private:
 		Pimpl* mPimpl;

+ 13 - 13
CamelotCore/Include/Win32/CmPlatformImpl.h

@@ -4,7 +4,7 @@
 #include "CmInputFwd.h"
 #include "CmVector2I.h"
 #include "CmRectI.h"
-#include <boost/signals.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -270,77 +270,77 @@ namespace BansheeEngine
 		 * 			
 		 * @note	Sim thread only.
 		 */
-		static boost::signal<void(RenderWindow*)> onMouseLeftWindow;
+		static Event<void(RenderWindow*)> onMouseLeftWindow;
 
 		/**
 		 * @brief	Triggered whenever the pointer moves.
 		 * 			
 		 * @note	Core thread only.
 		 */
-		static boost::signal<void(const Vector2I&, OSPointerButtonStates)> onCursorMoved;
+		static Event<void(const Vector2I&, OSPointerButtonStates)> onCursorMoved;
 
 		/**
 		 * @brief	Triggered whenever a pointer button is pressed.
 		 * 			
 		 * @note	Core thread only.
 		 */
-		static boost::signal<void(const Vector2I&, OSMouseButton button, OSPointerButtonStates)> onCursorButtonPressed;
+		static Event<void(const Vector2I&, OSMouseButton button, OSPointerButtonStates)> onCursorButtonPressed;
 
 		/**
 		 * @brief	Triggered whenever pointer button is released.
 		 * 			
 		 * @note	Core thread only.
 		 */
-		static boost::signal<void(const Vector2I&, OSMouseButton button, OSPointerButtonStates)> onCursorButtonReleased;
+		static Event<void(const Vector2I&, OSMouseButton button, OSPointerButtonStates)> onCursorButtonReleased;
 
 		/**
 		 * @brief	Triggered whenever a pointer button is double clicked.
 		 * 			
 		 * @note	Core thread only.
 		 */
-		static boost::signal<void(const Vector2I&, OSPointerButtonStates)> onCursorDoubleClick;
+		static Event<void(const Vector2I&, OSPointerButtonStates)> onCursorDoubleClick;
 
 		/**
 		 * @brief	Triggered whenever an input command is entered.
 		 * 			
 		 * @note	Core thread only.
 		 */
-		static boost::signal<void(InputCommandType)> onInputCommand;
+		static Event<void(InputCommandType)> onInputCommand;
 
 		/**
 		 * @brief	Triggered whenever the mouse wheel is scolled.
 		 * 			
 		 * @note	Core thread only.
 		 */
-		static boost::signal<void(float)> onMouseWheelScrolled;
+		static Event<void(float)> onMouseWheelScrolled;
 
 		/**
 		 * @brief	Triggered whenever a character is entered.
 		 * 			
 		 * @note	Core thread only.
 		 */
-		static boost::signal<void(UINT32)> onCharInput;
+		static Event<void(UINT32)> onCharInput;
 
 		/**
 		 * @brief	Triggered whenever a window receives focus.
 		 * 			
 		 * @note	Core thread only.
 		 */
-		static boost::signal<void(RenderWindow*)> onWindowFocusReceived;
+		static Event<void(RenderWindow*)> onWindowFocusReceived;
 
 		/**
 		 * @brief	Triggered whenever a window loses focus.
 		 * 			
 		 * @note	Core thread only.
 		 */
-		static boost::signal<void(RenderWindow*)> onWindowFocusLost;
+		static Event<void(RenderWindow*)> onWindowFocusLost;
 
 		/**
 		 * @brief	Triggered whenever a window gets moved or resized.
 		 * 			
 		 * @note	Core thread only.
 		 */
-		static boost::signal<void(RenderWindow*)> onWindowMovedOrResized;
+		static Event<void(RenderWindow*)> onWindowMovedOrResized;
 
 		/**
 		 * @brief	Triggered whenever mouse capture state for the window is changed
@@ -348,7 +348,7 @@ namespace BansheeEngine
 		 * 			
 		 * @note	Core thread only.
 		 */
-		static boost::signal<void()> onMouseCaptureChanged;
+		static Event<void()> onMouseCaptureChanged;
 	protected:
 		static bool mIsCursorHidden;
 		static NativeCursorData mCursor;

+ 14 - 14
CamelotCore/Source/Win32/CmPlatformImpl.cpp

@@ -9,20 +9,20 @@
 
 namespace BansheeEngine
 {
-	boost::signal<void(RenderWindow*)> Platform::onMouseLeftWindow;
-
-	boost::signal<void(const Vector2I&, OSPointerButtonStates)> Platform::onCursorMoved;
-	boost::signal<void(const Vector2I&, OSMouseButton button, OSPointerButtonStates)> Platform::onCursorButtonPressed;
-	boost::signal<void(const Vector2I&, OSMouseButton button, OSPointerButtonStates)> Platform::onCursorButtonReleased;
-	boost::signal<void(const Vector2I&, OSPointerButtonStates)> Platform::onCursorDoubleClick;
-	boost::signal<void(InputCommandType)> Platform::onInputCommand;
-	boost::signal<void(float)> Platform::onMouseWheelScrolled;
-	boost::signal<void(UINT32)> Platform::onCharInput;
-
-	boost::signal<void(RenderWindow*)> Platform::onWindowFocusReceived;
-	boost::signal<void(RenderWindow*)> Platform::onWindowFocusLost;
-	boost::signal<void(RenderWindow*)> Platform::onWindowMovedOrResized;
-	boost::signal<void()> Platform::onMouseCaptureChanged;
+	Event<void(RenderWindow*)> Platform::onMouseLeftWindow;
+
+	Event<void(const Vector2I&, OSPointerButtonStates)> Platform::onCursorMoved;
+	Event<void(const Vector2I&, OSMouseButton button, OSPointerButtonStates)> Platform::onCursorButtonPressed;
+	Event<void(const Vector2I&, OSMouseButton button, OSPointerButtonStates)> Platform::onCursorButtonReleased;
+	Event<void(const Vector2I&, OSPointerButtonStates)> Platform::onCursorDoubleClick;
+	Event<void(InputCommandType)> Platform::onInputCommand;
+	Event<void(float)> Platform::onMouseWheelScrolled;
+	Event<void(UINT32)> Platform::onCharInput;
+
+	Event<void(RenderWindow*)> Platform::onWindowFocusReceived;
+	Event<void(RenderWindow*)> Platform::onWindowFocusLost;
+	Event<void(RenderWindow*)> Platform::onWindowMovedOrResized;
+	Event<void()> Platform::onMouseCaptureChanged;
 
 	Map<const RenderWindow*, WindowNonClientAreaData>::type Platform::mNonClientAreas;
 	bool Platform::mIsTrackingMouse = false;

+ 7 - 7
CamelotD3D11RenderSystem/CamelotD3D11RenderSystem.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -34,40 +34,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 7 - 7
CamelotD3D9Renderer/CamelotD3D9Renderer.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -35,40 +35,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 7 - 7
CamelotFBXImporter/CamelotFBXImporter.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -34,40 +34,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 7 - 7
CamelotFontImporter/CamelotTTFImporter.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -35,40 +35,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 7 - 7
CamelotFreeImgImporter/CamelotFreeImgImporter.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -44,40 +44,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 7 - 7
CamelotGLRenderer/CamelotGLRenderer.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -35,40 +35,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 7 - 7
CamelotOISInput/CamelotOISInput.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -34,40 +34,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 7 - 7
CamelotUtility/CamelotUtility.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -34,40 +34,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 32 - 19
CamelotUtility/Include/BsEvent.h

@@ -9,16 +9,32 @@ namespace BansheeEngine
 	/* 								EVENTS									*/
 	/************************************************************************/
 	
+	/**
+	 * @brief	Event handle. Allows you to track to which events you subscribed to and
+	 *			disconnect from them when needed.
+	 */
 	class HEvent
 	{
 	public:
+		HEvent()
+			:mDisconnectCallback(nullptr), mConnection(nullptr), mEvent(nullptr)
+		{ }
+
 		HEvent(void* connection, void* event, void (*disconnectCallback) (void*, void*))
 			:mConnection(connection), mEvent(event), mDisconnectCallback(disconnectCallback)
 		{ }
 
+		/**
+		 * @brief	Disconnect from the event you are subscribed to.
+		 *
+		 * @note	Caller must ensure the event is still valid.
+		 */
 		void disconnect()
 		{
-			mDisconnectCallback(mConnection, mEvent);
+			if (mDisconnectCallback != nullptr)
+				mDisconnectCallback(mConnection, mEvent);
+
+			mDisconnectCallback = nullptr;
 		}
 
 	private:
@@ -27,27 +43,26 @@ namespace BansheeEngine
 		void* mEvent;
 	};	
 
-	// 1 parameter
-	template <class P0, class RetType>
-	class Event1
+	template <class RetType, class... Args>
+	class TEvent
 	{
 		struct ConnectionData
 		{
 		public:
-			ConnectionData(std::function<RetType(P0)> func)
+			ConnectionData(std::function<RetType(Args...)> func)
 				:func(func)
 			{ }
 
-			std::function<RetType(P0)> func;
+			std::function<RetType(Args...)> func;
 		};
 
 	public:
-		~Event1()
+		~TEvent()
 		{
 			clear();
 		}
 
-		HEvent connect(std::function<RetType(P0)> func)
+		HEvent connect(std::function<RetType(Args...)> func)
 		{
 			ConnectionData* connData = cm_new<ConnectionData>(func);
 
@@ -56,18 +71,18 @@ namespace BansheeEngine
 				mConnections.push_back(connData);
 			}
 			
-			return HEvent(connData, this, &Event1::disconnectCallback);
+			return HEvent(connData, this, &TEvent::disconnectCallback);
 		}
 
-		void operator() (P0 args)
+		void operator() (Args... args)
 		{
 			CM_LOCK_MUTEX(mMutex);
 
 			for(auto& connection : mConnections)
 			{
-				std::function<RetType(P0)> func = connection->func;
+				std::function<RetType(Args...)> func = connection->func;
 
-				func(args);
+				func(args...);
 			}
 		}
 
@@ -91,16 +106,14 @@ namespace BansheeEngine
 		}
 
 	private:
-		friend class EventHandle1;
-
 		typename Vector<ConnectionData*>::type mConnections;
 		CM_MUTEX(mMutex);
 
 		static void disconnectCallback(void* connection, void* event)
 		{
-			Event1<P0, RetType>::ConnectionData* castConnection = 
-				reinterpret_cast<Event1<P0, RetType>::ConnectionData*>(connection);
-			Event1<P0, RetType>* castEvent = reinterpret_cast<Event1<P0, RetType>*>(event);
+			TEvent<RetType, Args...>::ConnectionData* castConnection =
+				reinterpret_cast<TEvent<RetType, Args...>::ConnectionData*>(connection);
+			TEvent<RetType, Args...>* castEvent = reinterpret_cast<TEvent<RetType, Args...>*>(event);
 
 			castEvent->disconnect(castConnection);
 		}
@@ -130,7 +143,7 @@ namespace BansheeEngine
 	class Event;
 
 	// 1 parameter
-	template <class P0, class RetType>
-	class Event<RetType(P0) > : public Event1 <P0, RetType>
+	template <class RetType, class... Args>
+	class Event<RetType(Args...) > : public TEvent <RetType, Args...>
 	{ };
 }

+ 4 - 4
CamelotUtility/Include/CmHString.h

@@ -1,6 +1,6 @@
 #pragma once
 
-#include <boost/signals.hpp>
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -23,14 +23,14 @@ namespace BansheeEngine
 			StringData();
 			~StringData();
 
-			mutable boost::signal<void()> onStringModified;
+			mutable Event<void()> onStringModified;
 
 		private:
 			friend class HString;
 
 			LocalizedStringData* mStringData;
 			WString* mParameters;
-			boost::signals::connection mUpdateConn;
+			HEvent mUpdateConn;
 
 			mutable bool mIsDirty;
 			mutable WString mCachedString;
@@ -64,7 +64,7 @@ namespace BansheeEngine
 		 * @brief	Registers a callback that gets triggered whenever string value changes. This may happen
 		 * 			when the string table is modified, or when the active language is changed.
 		 */
-		boost::signals::connection addOnStringModifiedCallback(std::function<void()> callback) const;
+		HEvent addOnStringModifiedCallback(std::function<void()> callback) const;
 
 		/**
 		 * @brief	Returns an empty string.

+ 2 - 2
CamelotUtility/Include/CmLog.h

@@ -1,7 +1,7 @@
 #pragma once
 
 #include "CmPrerequisitesUtil.h"
-#include "boost/signal.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -70,6 +70,6 @@ namespace BansheeEngine
 		 * 			
 		 * @note	
 		 */
-		boost::signal<void(const LogEntry&)> onEntryAdded;
+		Event<void(const LogEntry&)> onEntryAdded;
 	};
 }

+ 7 - 46
CamelotUtility/Include/CmMemoryAllocator.h

@@ -3,7 +3,6 @@
 #undef min
 #undef max
 
-#include <boost/preprocessor.hpp>
 #include <atomic>
 
 namespace BansheeEngine
@@ -154,32 +153,13 @@ namespace BansheeEngine
 		return ptr;
 	}
 
-/**
- * @brief	Create a new object with the specified allocator and the specified parameters.
- */
-#define MAKE_CM_NEW(z, n, unused)                                     \
-	template<class Type, class Alloc BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>     \
-	Type* cm_new(BOOST_PP_ENUM_BINARY_PARAMS(n, T, &&t) ) { \
-		return new (cm_alloc<Alloc>(sizeof(Type))) Type(std::forward<T0>(t0) BOOST_PP_REPEAT_FROM_TO(1, n, FORWARD_T, ~));     \
-	}
-
-#define FORWARD_T(z, i, unused) \
-	, std::forward<BOOST_PP_CAT(T, i)>(BOOST_PP_CAT(t, i))
-
-	BOOST_PP_REPEAT_FROM_TO(1, 15, MAKE_CM_NEW, ~)
-
-#undef FORWARD_T
-#undef MAKE_CM_NEW
-
 	/**
-	 * @brief	Create a new object with the specified allocator without any parameters
-	 *
-	 * @note	Needs to be separate from parameter version so I don't unnecessarily zero-initialize POD types.
+	 * @brief	Create a new object with the specified allocator and the specified parameters.
 	 */
-	template<class Type, class Alloc>
-	Type* cm_new() 
+	template<class Type, class Alloc, class... Args>
+	Type* cm_new(Args &&...args)
 	{
-		return new (cm_alloc<Alloc>(sizeof(Type))) Type;
+		return new (cm_alloc<Alloc>(sizeof(Type))) Type(std::forward<Args>(args)...);
 	}
 
 	/**
@@ -252,29 +232,10 @@ namespace BansheeEngine
 	/**
 	 * @brief	Create a new object with the specified allocator and the specified parameters.
 	 */
-#define MAKE_CM_NEW(z, n, unused)                                     \
-	template<class Type BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>     \
-	Type* cm_new(BOOST_PP_ENUM_BINARY_PARAMS(n, T, &&t) ) { \
-	return new (cm_alloc<GenAlloc>(sizeof(Type))) Type(std::forward<T0>(t0) BOOST_PP_REPEAT_FROM_TO(1, n, FORWARD_T, ~));     \
-	}
-
-#define FORWARD_T(z, i, unused) \
-	, std::forward<BOOST_PP_CAT(T, i)>(BOOST_PP_CAT(t, i))
-
-	BOOST_PP_REPEAT_FROM_TO(1, 15, MAKE_CM_NEW, ~)
-
-#undef FORWARD_T
-#undef MAKE_CM_NEW
-
-	/**
-	 * @brief	Create a new object with the specified allocator without any parameters
-	 *
-	 * @note	Needs to be separate from parameter version so I don't unnecessarily zero-initialize POD types.
-	 */
-	template<class Type>
-	Type* cm_new() 
+	template<class Type, class... Args>
+	Type* cm_new(Args &&...args)
 	{
-		return new (cm_alloc<GenAlloc>(sizeof(Type))) Type;
+		return new (cm_alloc<GenAlloc>(sizeof(Type))) Type(std::forward<Args>(args)...);
 	}
 
 	/**

+ 0 - 1
CamelotUtility/Include/CmPath.h

@@ -2,7 +2,6 @@
 
 #include "CmPrerequisitesUtil.h"
 #include "CmUtil.h"
-#include <boost/filesystem.hpp>
 
 namespace BansheeEngine
 {

+ 1 - 5
CamelotUtility/Include/CmPrerequisitesUtil.h

@@ -20,14 +20,10 @@
 // Secure versions aren't multiplatform, so we won't be using them
 #define _CRT_SECURE_NO_WARNINGS
 
-// disable: "<type> needs to have dll-interface to be used by clients'
+// Disable: "<type> needs to have dll-interface to be used by clients'
 // Happens on STL member variables which are not public therefore is ok
 #   pragma warning (disable: 4251)
 
-// disable: 'X' Function call with parameters that may be unsafe
-// Gets triggered when I include boost UUID header, for no valid reason
-#	pragma warning(disable: 4996) 
-
 #endif
 
 // Short-hand names for various built-in types

+ 8 - 43
CamelotUtility/Include/CmStdHeaders.h

@@ -13,8 +13,6 @@
 #include <cmath>
 
 #include <memory>
-#include <boost/shared_array.hpp>
-#include <boost/preprocessor.hpp>
 
 // STL containers
 #include <vector>
@@ -170,51 +168,18 @@ namespace BansheeEngine
 	}; 
 
 	//// Create a new shared pointer with a custom allocator category
-	// Implementation for 0-5 parameters uses allocate_shared
-#define MAKE_CM_NEW_SHARED(z, n, unused)                                     \
-	template<class Type, class AllocCategory BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>     \
-	std::shared_ptr<Type> cm_shared_ptr(BOOST_PP_ENUM_BINARY_PARAMS(n, T, t) ) { \
-	return std::allocate_shared<Type>(StdAlloc<AllocCategory>() BOOST_PP_ENUM_TRAILING_PARAMS (n, t));     \
-	}
-
-	BOOST_PP_REPEAT_FROM_TO(0, 6, MAKE_CM_NEW_SHARED, ~)
-
-#undef MAKE_CM_NEW_SHARED
-
-	// Implementation for more than 5 params uses shared_ptr constructor as allocate_shared only accepts up to 5 params
-#define MAKE_CM_NEW_SHARED(z, n, unused)                                     \
-	template<class Type, class AllocCategory BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>     \
-	std::shared_ptr<Type> cm_shared_ptr(BOOST_PP_ENUM_BINARY_PARAMS(n, T, t) ) { \
-	return std::shared_ptr<Type>(cm_new<Type, AllocCategory>(BOOST_PP_ENUM_PARAMS (n, t)), &cm_delete<AllocCategory, Type>, StdAlloc<AllocCategory>());     \
-	}
-
-	BOOST_PP_REPEAT_FROM_TO(6, 15, MAKE_CM_NEW_SHARED, ~)
-
-#undef MAKE_CM_NEW_SHARED
-
-	//// Create a new shared pointer with a general allocator category
-	// Implementation for 0-5 parameters uses allocate_shared
-#define MAKE_CM_NEW_SHARED(z, n, unused)                                     \
-	template<class Type BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>     \
-	std::shared_ptr<Type> cm_shared_ptr(BOOST_PP_ENUM_BINARY_PARAMS(n, T, t) ) { \
-	return std::allocate_shared<Type>(StdAlloc<GenAlloc>() BOOST_PP_ENUM_TRAILING_PARAMS (n, t));     \
+	template<class Type, class AllocCategory, class... Args> 
+	std::shared_ptr<Type> cm_shared_ptr(Args... args) 
+	{
+		return std::allocate_shared<Type>(StdAlloc<AllocCategory>(), args...); 
 	}
 
-	BOOST_PP_REPEAT_FROM_TO(0, 6, MAKE_CM_NEW_SHARED, ~)
-
-#undef MAKE_CM_NEW_SHARED
-
-	// Implementation for more than 5 params uses shared_ptr constructor as allocate_shared only accepts up to 5 params
-#define MAKE_CM_NEW_SHARED(z, n, unused)                                     \
-	template<class Type BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>     \
-	std::shared_ptr<Type> cm_shared_ptr(BOOST_PP_ENUM_BINARY_PARAMS(n, T, t) ) { \
-	return std::shared_ptr<Type>(cm_new<Type, GenAlloc>(BOOST_PP_ENUM_PARAMS (n, t)), &cm_delete<GenAlloc, Type>, StdAlloc<GenAlloc>());     \
+	template<class Type, class... Args>
+	std::shared_ptr<Type> cm_shared_ptr(Args... args)
+	{
+		return std::allocate_shared<Type>(StdAlloc<GenAlloc>(), args...);
 	}
 
-	BOOST_PP_REPEAT_FROM_TO(6, 15, MAKE_CM_NEW_SHARED, ~)
-
-#undef MAKE_CM_NEW_SHARED
-
 	template<class Type, class MainAlloc>
 	std::shared_ptr<Type> cm_shared_ptr(Type* data) 
 	{

+ 2 - 2
CamelotUtility/Include/CmStringTable.h

@@ -2,7 +2,7 @@
 
 #include "CmPrerequisitesUtil.h"
 #include "CmModule.h"
-#include "boost/signals.hpp"
+#include "BsEvent.h"
 
 namespace BansheeEngine
 {
@@ -208,7 +208,7 @@ namespace BansheeEngine
 		struct Common
 		{
 			WString identifier;
-			boost::signal<void()> onStringDataModified;
+			Event<void()> onStringDataModified;
 		};
 
 		struct ParamOffset

+ 3 - 2
CamelotUtility/Include/CmTypes.h

@@ -2,8 +2,9 @@
 
 #include "CmPlatformDefines.h"
 
-// Contains commonly used types
-
+/**
+ * @brief	Commonly used types.
+ */
 namespace BansheeEngine
 {
 	typedef char INT8;

+ 1 - 1
CamelotUtility/Source/CmHString.cpp

@@ -100,7 +100,7 @@ namespace BansheeEngine
 		mData->onStringModified();
 	}
 
-	boost::signals::connection HString::addOnStringModifiedCallback(std::function<void()> callback) const
+	HEvent HString::addOnStringModifiedCallback(std::function<void()> callback) const
 	{
 		return mData->onStringModified.connect(callback);
 	}

+ 0 - 1
CamelotUtility/Source/CmLog.cpp

@@ -1,6 +1,5 @@
 #include "CmLog.h"
 #include "CmException.h"
-#include "boost/signal.hpp"
 
 namespace BansheeEngine
 {

+ 0 - 4
Dependencies.txt

@@ -1,8 +1,4 @@
 Banshee relies on the following 3rd party libraries:
- - Boost 1.49
-    - http://www.boost.org
- - Cg 3.1
-    - http://developer.nvidia.com/cg-toolkit
  - Mono 3.2.3
     - http://www.mono-project.com
 	- See MonoIntegrationGuide.txt on how to compile & integrate Mono

+ 3 - 3
SBansheeEditor/Include/BsScriptEditorWindow.h

@@ -44,9 +44,9 @@ namespace BansheeEngine
 		String mName;
 		EditorWidgetBase* mEditorWidget;
 		Vector<ScriptGUIPanel*>::type mPanels;
-		boost::signals::connection mOnWidgetMovedConn;
-		boost::signals::connection mOnWidgetResizedConn;
-		boost::signals::connection mOnParentChangedConn;
+		HEvent mOnWidgetMovedConn;
+		HEvent mOnWidgetResizedConn;
+		HEvent mOnParentChangedConn;
 
 		static MonoMethod* onResizedMethod;
 

+ 7 - 7
SBansheeEditor/SBansheeEditor.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -34,40 +34,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>

+ 7 - 7
SBansheeEngine/SBansheeEngine.vcxproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="DebugRelease|Win32">
       <Configuration>DebugRelease</Configuration>
@@ -34,40 +34,40 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</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>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugRelease|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>NotSet</CharacterSet>
   </PropertyGroup>