Browse Source

Using std::function and std::bind instead of boost
Reduced GUI label default style height

Marko Pintera 11 years ago
parent
commit
d55f242a1c
79 changed files with 424 additions and 396 deletions
  1. 6 6
      BansheeEditor/BansheeEditor.vcxproj
  2. 5 4
      BansheeEditor/Source/BsDockManager.cpp
  3. 2 2
      BansheeEditor/Source/BsEditorApplication.cpp
  4. 1 1
      BansheeEditor/Source/BsEditorGUI.cpp
  5. 6 5
      BansheeEditor/Source/BsEditorWidgetContainer.cpp
  6. 1 1
      BansheeEditor/Source/BsEditorWindow.cpp
  7. 1 1
      BansheeEditor/Source/BsEditorWindowBase.cpp
  8. 2 1
      BansheeEditor/Source/BsGUIGameObjectField.cpp
  9. 6 6
      BansheeEditor/Source/BsGUIMenuBar.cpp
  10. 8 7
      BansheeEditor/Source/BsGUIResourceTreeView.cpp
  11. 1 1
      BansheeEditor/Source/BsGUISceneTreeView.cpp
  12. 5 4
      BansheeEditor/Source/BsGUITabbedTitleBar.cpp
  13. 4 3
      BansheeEditor/Source/BsGUITreeView.cpp
  14. 4 3
      BansheeEditor/Source/BsProjectLibrary.cpp
  15. 6 0
      BansheeEditorExec/BansheeEditorExec.vcxproj
  16. 6 6
      BansheeEngine/BansheeEngine.vcxproj
  17. 1 1
      BansheeEngine/Source/BsApplication.cpp
  18. 1 1
      BansheeEngine/Source/BsBuiltinResources.cpp
  19. 3 2
      BansheeEngine/Source/BsDragAndDropManager.cpp
  20. 2 2
      BansheeEngine/Source/BsGUIButtonBase.cpp
  21. 1 1
      BansheeEngine/Source/BsGUIContextMenu.cpp
  22. 6 6
      BansheeEngine/Source/BsGUIDropDownBox.cpp
  23. 3 3
      BansheeEngine/Source/BsGUIInputBox.cpp
  24. 2 2
      BansheeEngine/Source/BsGUILabel.cpp
  25. 2 2
      BansheeEngine/Source/BsGUIListBox.cpp
  26. 13 11
      BansheeEngine/Source/BsGUIManager.cpp
  27. 3 2
      BansheeEngine/Source/BsGUIScrollArea.cpp
  28. 4 3
      BansheeEngine/Source/BsGUIScrollBar.cpp
  29. 1 1
      BansheeEngine/Source/BsGUIWidget.cpp
  30. 1 1
      BansheeEngine/Source/BsProfilerOverlay.cpp
  31. 3 2
      BansheeEngine/Source/BsVirtualInput.cpp
  32. 6 6
      BansheeForwardRenderer/BansheeForwardRenderer.vcxproj
  33. 6 6
      BansheeMono/BansheeMono.vcxproj
  34. 6 6
      BansheeOctreeSM/BansheeOctreeSM.vcxproj
  35. 6 6
      CamelotCore/CamelotCore.vcxproj
  36. 11 11
      CamelotCore/Include/CmCommandQueue.h
  37. 4 4
      CamelotCore/Include/CmCoreObject.h
  38. 2 2
      CamelotCore/Include/CmCoreThread.h
  39. 36 34
      CamelotCore/Include/CmCoreThreadAccessor.h
  40. 4 2
      CamelotCore/Include/CmTextureRTTI.h
  41. 4 4
      CamelotCore/Source/CmApplication.cpp
  42. 5 5
      CamelotCore/Source/CmCommandQueue.cpp
  43. 12 10
      CamelotCore/Source/CmCoreObject.cpp
  44. 5 3
      CamelotCore/Source/CmCoreThread.cpp
  45. 11 11
      CamelotCore/Source/CmInput.cpp
  46. 3 3
      CamelotCore/Source/CmMeshHeap.cpp
  47. 2 2
      CamelotCore/Source/CmMeshRTTI.h
  48. 10 8
      CamelotCore/Source/CmOSInputHandler.cpp
  49. 4 4
      CamelotCore/Source/CmRenderSystem.cpp
  50. 5 3
      CamelotCore/Source/CmRenderWindowManager.cpp
  51. 1 1
      CamelotCore/Source/CmViewport.cpp
  52. 1 1
      CamelotCore/Source/CmWin32FolderMonitor.cpp
  53. 6 6
      CamelotD3D11RenderSystem/CamelotD3D11RenderSystem.vcxproj
  54. 6 6
      CamelotD3D9Renderer/CamelotD3D9Renderer.vcxproj
  55. 6 6
      CamelotFBXImporter/CamelotFBXImporter.vcxproj
  56. 6 6
      CamelotFontImporter/CamelotTTFImporter.vcxproj
  57. 4 2
      CamelotFontImporter/Source/CmFontImporter.cpp
  58. 6 6
      CamelotFreeImgImporter/CamelotFreeImgImporter.vcxproj
  59. 3 1
      CamelotFreeImgImporter/Source/CmFreeImgImporter.cpp
  60. 6 6
      CamelotGLRenderer/CamelotGLRenderer.vcxproj
  61. 6 6
      CamelotOISInput/CamelotOISInput.vcxproj
  62. 6 6
      CamelotUtility/CamelotUtility.vcxproj
  63. 3 3
      CamelotUtility/Include/CmBinarySerializer.h
  64. 1 1
      CamelotUtility/Include/CmHString.h
  65. 3 3
      CamelotUtility/Include/CmRTTIManagedDataBlockField.h
  66. 8 8
      CamelotUtility/Include/CmRTTIPlainField.h
  67. 6 6
      CamelotUtility/Include/CmRTTIReflectableField.h
  68. 6 6
      CamelotUtility/Include/CmRTTIReflectablePtrField.h
  69. 59 45
      CamelotUtility/Include/CmRTTIType.h
  70. 0 27
      CamelotUtility/Include/CmThreadDefines.h
  71. 3 3
      CamelotUtility/Source/CmBinarySerializer.cpp
  72. 3 2
      CamelotUtility/Source/CmFileSerializer.cpp
  73. 4 4
      CamelotUtility/Source/CmHString.cpp
  74. 4 2
      CamelotUtility/Source/CmMemorySerializer.cpp
  75. 6 6
      SBansheeEditor/SBansheeEditor.vcxproj
  76. 1 0
      SBansheeEditor/Source/BsScriptEditorWindow.cpp
  77. 6 6
      SBansheeEngine/SBansheeEngine.vcxproj
  78. 1 0
      SBansheeEngine/Source/BsScriptGUIListBox.cpp
  79. 1 0
      SBansheeEngine/Source/BsScriptGUIToggle.cpp

+ 6 - 6
BansheeEditor/BansheeEditor.vcxproj

@@ -131,7 +131,7 @@
       </PrecompiledHeader>
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;_DEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
@@ -149,7 +149,7 @@
       </PrecompiledHeader>
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;_DEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
@@ -170,7 +170,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;NDEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
@@ -194,7 +194,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;NDEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
@@ -218,7 +218,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;NDEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
@@ -242,7 +242,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;NDEBUG;_CONSOLE;BS_ED_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotD3D9Renderer\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>

+ 5 - 4
BansheeEditor/Source/BsDockManager.cpp

@@ -28,6 +28,7 @@
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
 using namespace BansheeEngine;
 using namespace BansheeEngine;
+using namespace std::placeholders;
 
 
 namespace BansheeEditor
 namespace BansheeEditor
 {
 {
@@ -138,7 +139,7 @@ namespace BansheeEditor
 		mIsLeaf = true;
 		mIsLeaf = true;
 		mWidgets = cm_new<EditorWidgetContainer>(widgetParent, parentWindow, nullptr);
 		mWidgets = cm_new<EditorWidgetContainer>(widgetParent, parentWindow, nullptr);
 
 
-		mWidgets->onWidgetClosed.connect(boost::bind(&DockManager::DockContainer::widgetRemoved, this));
+		mWidgets->onWidgetClosed.connect(std::bind(&DockManager::DockContainer::widgetRemoved, this));
 
 
 		if(mSlider != nullptr)
 		if(mSlider != nullptr)
 		{
 		{
@@ -155,7 +156,7 @@ namespace BansheeEditor
 		mIsLeaf = true;
 		mIsLeaf = true;
 		mWidgets = existingContainer;
 		mWidgets = existingContainer;
 
 
-		mWidgets->onWidgetClosed.connect(boost::bind(&DockManager::DockContainer::widgetRemoved, this));
+		mWidgets->onWidgetClosed.connect(std::bind(&DockManager::DockContainer::widgetRemoved, this));
 
 
 		if(mSlider != nullptr)
 		if(mSlider != nullptr)
 		{
 		{
@@ -228,7 +229,7 @@ namespace BansheeEditor
 			mSlider->_setWidgetDepth(widgetParent->getDepth());
 			mSlider->_setWidgetDepth(widgetParent->getDepth());
 		}
 		}
 
 
-		mSlider->onDragged.connect(boost::bind(&DockManager::DockContainer::sliderDragged, this, _1));
+		mSlider->onDragged.connect(std::bind(&DockManager::DockContainer::sliderDragged, this, _1));
 
 
 		setArea(mArea.x, mArea.y, mArea.width, mArea.height);
 		setArea(mArea.x, mArea.y, mArea.width, mArea.height);
 	}
 	}
@@ -365,7 +366,7 @@ namespace BansheeEditor
 
 
 		mDropOverlayMat = BuiltinMaterialManager::instance().createDockDropOverlayMaterial();
 		mDropOverlayMat = BuiltinMaterialManager::instance().createDockDropOverlayMaterial();
 
 
-		RendererManager::instance().getActive()->addRenderCallback(mParent->getTarget(), boost::bind(&DockManager::render, this, _1, _2));
+		RendererManager::instance().getActive()->addRenderCallback(mParent->getTarget(), std::bind(&DockManager::render, this, _1, _2));
 	}
 	}
 
 
 	DockManager::~DockManager()
 	DockManager::~DockManager()

+ 2 - 2
BansheeEditor/Source/BsEditorApplication.cpp

@@ -298,7 +298,7 @@ namespace BansheeEditor
 
 
 		//GUIArea* modalArea = GUIArea::createStretchedXY(*modalGUI, 0, 0, 0, 0, 500);
 		//GUIArea* modalArea = GUIArea::createStretchedXY(*modalGUI, 0, 0, 0, 0, 500);
 		//GUIButton* modalButton = GUIButton::create(*modalGUI, HString(L"Close"));
 		//GUIButton* modalButton = GUIButton::create(*modalGUI, HString(L"Close"));
-		//modalButton->onClick.connect(boost::bind(&EditorApplication::closeModalWindow, modalWindow, modalSceneObject));
+		//modalButton->onClick.connect(std::bind(&EditorApplication::closeModalWindow, modalWindow, modalSceneObject));
 
 
 		//modalArea->getLayout().addElement(modalButton);
 		//modalArea->getLayout().addElement(modalButton);
 
 
@@ -307,7 +307,7 @@ namespace BansheeEditor
 		/* 							END DEBUG CODE                      		*/
 		/* 							END DEBUG CODE                      		*/
 		/************************************************************************/
 		/************************************************************************/
 
 
-		gApplication().mainLoopCallback.connect(boost::bind(&EditorApplication::update, this));
+		gApplication().mainLoopCallback.connect(std::bind(&EditorApplication::update, this));
 
 
 		DbgEditorWidget1::open(); // DEBUG ONLY
 		DbgEditorWidget1::open(); // DEBUG ONLY
 		DbgEditorWidget2::open(); // DEBUG ONLY
 		DbgEditorWidget2::open(); // DEBUG ONLY

+ 1 - 1
BansheeEditor/Source/BsEditorGUI.cpp

@@ -167,7 +167,7 @@ namespace BansheeEditor
 		labelStyle.fontSize = DefaultFontSize;
 		labelStyle.fontSize = DefaultFontSize;
 		labelStyle.fixedWidth = false;
 		labelStyle.fixedWidth = false;
 		labelStyle.fixedHeight = true;
 		labelStyle.fixedHeight = true;
-		labelStyle.height = 16;
+		labelStyle.height = 11;
 		labelStyle.minWidth = 10;
 		labelStyle.minWidth = 10;
 
 
 		mSkin.setStyle(GUILabel::getGUITypeName(), labelStyle);
 		mSkin.setStyle(GUILabel::getGUITypeName(), labelStyle);

+ 6 - 5
BansheeEditor/Source/BsEditorWidgetContainer.cpp

@@ -11,6 +11,7 @@
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
 using namespace BansheeEngine;
 using namespace BansheeEngine;
+using namespace std::placeholders;
 
 
 namespace BansheeEditor
 namespace BansheeEditor
 {
 {
@@ -23,10 +24,10 @@ namespace BansheeEditor
 		mTitleBarArea = GUIArea::create(*parent, 0, 0, 0, 0, 9900);
 		mTitleBarArea = GUIArea::create(*parent, 0, 0, 0, 0, 9900);
 
 
 		mTitleBar = GUITabbedTitleBar::create(*parent, renderWindow);
 		mTitleBar = GUITabbedTitleBar::create(*parent, renderWindow);
-		mTitleBar->onTabActivated.connect(boost::bind(&EditorWidgetContainer::tabActivated, this, _1));
-		mTitleBar->onTabClosed.connect(boost::bind(&EditorWidgetContainer::tabClosed, this, _1));
-		mTitleBar->onTabDraggedOff.connect(boost::bind(&EditorWidgetContainer::tabDraggedOff, this, _1));
-		mTitleBar->onTabDraggedOn.connect(boost::bind(&EditorWidgetContainer::tabDraggedOn, this, _1));
+		mTitleBar->onTabActivated.connect(std::bind(&EditorWidgetContainer::tabActivated, this, _1));
+		mTitleBar->onTabClosed.connect(std::bind(&EditorWidgetContainer::tabClosed, this, _1));
+		mTitleBar->onTabDraggedOff.connect(std::bind(&EditorWidgetContainer::tabDraggedOff, this, _1));
+		mTitleBar->onTabDraggedOn.connect(std::bind(&EditorWidgetContainer::tabDraggedOn, this, _1));
 
 
 		mTitleBarArea->getLayout().addElement(mTitleBar);
 		mTitleBarArea->getLayout().addElement(mTitleBar);
 	}
 	}
@@ -200,7 +201,7 @@ namespace BansheeEditor
 		removeInternal(*widget);
 		removeInternal(*widget);
 
 
 		DragAndDropManager::instance().startDrag((UINT32)DragAndDropType::EditorWidget, (void*)widget, 
 		DragAndDropManager::instance().startDrag((UINT32)DragAndDropType::EditorWidget, (void*)widget, 
-			boost::bind(&EditorWidgetContainer::tabDroppedCallback, _1), false);
+			std::bind(&EditorWidgetContainer::tabDroppedCallback, _1), false);
 
 
 		if(!onWidgetClosed.empty())
 		if(!onWidgetClosed.empty())
 			onWidgetClosed();
 			onWidgetClosed();

+ 1 - 1
BansheeEditor/Source/BsEditorWindow.cpp

@@ -13,7 +13,7 @@ namespace BansheeEditor
 	{
 	{
 		updateSize();
 		updateSize();
 		
 		
-		mWidgets->onWidgetClosed.connect(boost::bind(&EditorWindow::widgetRemoved, this));
+		mWidgets->onWidgetClosed.connect(std::bind(&EditorWindow::widgetRemoved, this));
 	}
 	}
 
 
 	EditorWindow::~EditorWindow()
 	EditorWindow::~EditorWindow()

+ 1 - 1
BansheeEditor/Source/BsEditorWindowBase.cpp

@@ -81,7 +81,7 @@ namespace BansheeEditor
 		mWindowFrame = mSceneObject->addComponent<WindowFrameWidget>(mCamera->getViewport().get(), renderWindow.get(), EditorGUI::instance().getSkin());
 		mWindowFrame = mSceneObject->addComponent<WindowFrameWidget>(mCamera->getViewport().get(), renderWindow.get(), EditorGUI::instance().getSkin());
 		mWindowFrame->setDepth(129);
 		mWindowFrame->setDepth(129);
 
 
-		mResizedConn = mCamera->getViewport()->onResized.connect(boost::bind(&EditorWindowBase::resized, this));
+		mResizedConn = mCamera->getViewport()->onResized.connect(std::bind(&EditorWindowBase::resized, this));
 	}
 	}
 
 
 	void EditorWindowBase::setPosition(CM::INT32 x, CM::INT32 y)
 	void EditorWindowBase::setPosition(CM::INT32 x, CM::INT32 y)

+ 2 - 1
BansheeEditor/Source/BsGUIGameObjectField.cpp

@@ -13,6 +13,7 @@
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
 using namespace BansheeEngine;
 using namespace BansheeEngine;
+using namespace std::placeholders;
 
 
 namespace BansheeEditor
 namespace BansheeEditor
 {
 {
@@ -50,7 +51,7 @@ namespace BansheeEditor
 		mLayout->addElement(mDropButton);
 		mLayout->addElement(mDropButton);
 		mLayout->addElement(mClearButton);
 		mLayout->addElement(mClearButton);
 
 
-		mDropButton->onDataDropped.connect(boost::bind(&GUIGameObjectField::dataDropped, this, _1));
+		mDropButton->onDataDropped.connect(std::bind(&GUIGameObjectField::dataDropped, this, _1));
 	}
 	}
 
 
 	GUIGameObjectField::~GUIGameObjectField()
 	GUIGameObjectField::~GUIGameObjectField()

+ 6 - 6
BansheeEditor/Source/BsGUIMenuBar.cpp

@@ -49,9 +49,9 @@ namespace BansheeEditor
 		mainLayout.addElement(mCloseBtn);
 		mainLayout.addElement(mCloseBtn);
 		mainLayout.addSpace(3);
 		mainLayout.addSpace(3);
 
 
-		mMinBtn->onClick.connect(boost::bind(&GUIMenuBar::onMinimizeClicked, this));
-		mMaxBtn->onClick.connect(boost::bind(&GUIMenuBar::onMaximizeClicked, this));
-		mCloseBtn->onClick.connect(boost::bind(&GUIMenuBar::onCloseClicked, this));
+		mMinBtn->onClick.connect(std::bind(&GUIMenuBar::onMinimizeClicked, this));
+		mMaxBtn->onClick.connect(std::bind(&GUIMenuBar::onMaximizeClicked, this));
+		mCloseBtn->onClick.connect(std::bind(&GUIMenuBar::onCloseClicked, this));
 
 
 		refreshNonClientAreas();
 		refreshNonClientAreas();
 	}
 	}
@@ -135,8 +135,8 @@ namespace BansheeEditor
 		newSubMenu.menu = cm_new<GUIMenu>();
 		newSubMenu.menu = cm_new<GUIMenu>();
 
 
 		GUIButton* newButton = GUIButton::create(*mParentWidget, HString(name), mParentWidget->getSkin().getStyle("MenuBarBtn"));
 		GUIButton* newButton = GUIButton::create(*mParentWidget, HString(name), mParentWidget->getSkin().getStyle("MenuBarBtn"));
-		newButton->onClick.connect(boost::bind(&GUIMenuBar::openSubMenu, this, name));
-		newButton->onHover.connect(boost::bind(&GUIMenuBar::onSubMenuHover, this, name));
+		newButton->onClick.connect(std::bind(&GUIMenuBar::openSubMenu, this, name));
+		newButton->onHover.connect(std::bind(&GUIMenuBar::onSubMenuHover, this, name));
 		mMainArea->getLayout().insertElement(mMainArea->getLayout().getNumChildren() - NUM_ELEMENTS_AFTER_CONTENT, newButton);
 		mMainArea->getLayout().insertElement(mMainArea->getLayout().getNumChildren() - NUM_ELEMENTS_AFTER_CONTENT, newButton);
 
 
 		newSubMenu.button = newButton;
 		newSubMenu.button = newButton;
@@ -254,7 +254,7 @@ namespace BansheeEditor
 		GUIDropDownAreaPlacement placement = GUIDropDownAreaPlacement::aroundBoundsHorz(subMenu->button->getBounds());
 		GUIDropDownAreaPlacement placement = GUIDropDownAreaPlacement::aroundBoundsHorz(subMenu->button->getBounds());
 
 
 		GameObjectHandle<GUIDropDownBox> dropDownBox = GUIDropDownBoxManager::instance().openDropDownBox(widget.getTarget(), 
 		GameObjectHandle<GUIDropDownBox> dropDownBox = GUIDropDownBoxManager::instance().openDropDownBox(widget.getTarget(), 
-			placement, dropDownData, widget.getSkin(), GUIDropDownType::MenuBar, boost::bind(&GUIMenuBar::onSubMenuClosed, this));
+			placement, dropDownData, widget.getSkin(), GUIDropDownType::MenuBar, std::bind(&GUIMenuBar::onSubMenuClosed, this));
 
 
 		subMenu->button->_setOn(true);
 		subMenu->button->_setOn(true);
 
 

+ 8 - 7
BansheeEditor/Source/BsGUIResourceTreeView.cpp

@@ -14,6 +14,7 @@
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
 using namespace BansheeEngine;
 using namespace BansheeEngine;
+using namespace std::placeholders;
 
 
 namespace BansheeEditor
 namespace BansheeEditor
 {
 {
@@ -35,8 +36,8 @@ namespace BansheeEditor
 		:GUITreeView(parent, backgroundStyle, elementBtnStyle, foldoutBtnStyle, selectionBackgroundStyle, editBoxStyle, dragHighlightStyle,
 		:GUITreeView(parent, backgroundStyle, elementBtnStyle, foldoutBtnStyle, selectionBackgroundStyle, editBoxStyle, dragHighlightStyle,
 		dragSepHighlightStyle, layoutOptions), mDraggedResources(nullptr), mCurrentWindow(nullptr), mDropTarget(nullptr), mDropTargetDragActive(false)
 		dragSepHighlightStyle, layoutOptions), mDraggedResources(nullptr), mCurrentWindow(nullptr), mDropTarget(nullptr), mDropTargetDragActive(false)
 	{
 	{
-		ProjectLibrary::instance().onEntryAdded.connect(boost::bind(&GUIResourceTreeView::entryAdded, this, _1));
-		ProjectLibrary::instance().onEntryRemoved.connect(boost::bind(&GUIResourceTreeView::entryRemoved, this, _1));
+		ProjectLibrary::instance().onEntryAdded.connect(std::bind(&GUIResourceTreeView::entryAdded, this, _1));
+		ProjectLibrary::instance().onEntryRemoved.connect(std::bind(&GUIResourceTreeView::entryRemoved, this, _1));
 
 
 		const ProjectLibrary::LibraryEntry* rootEntry = ProjectLibrary::instance().getRootEntry();
 		const ProjectLibrary::LibraryEntry* rootEntry = ProjectLibrary::instance().getRootEntry();
 
 
@@ -287,10 +288,10 @@ namespace BansheeEditor
 			mCurrentWindow = parentWindow;
 			mCurrentWindow = parentWindow;
 			mDropTarget = &Platform::createDropTarget(mCurrentWindow, _getOffset().x, _getOffset().y, _getWidth(), _getHeight());
 			mDropTarget = &Platform::createDropTarget(mCurrentWindow, _getOffset().x, _getOffset().y, _getWidth(), _getHeight());
 
 
-			mDropTargetEnterConn = mDropTarget->onEnter.connect(boost::bind(&GUIResourceTreeView::dropTargetDragMove, this, _1, _2));
-			mDropTargetMoveConn = mDropTarget->onDragOver.connect(boost::bind(&GUIResourceTreeView::dropTargetDragMove, this, _1, _2));
-			mDropTargetLeaveConn = mDropTarget->onLeave.connect(boost::bind(&GUIResourceTreeView::dropTargetDragLeave, this));
-			mDropTargetDroppedConn = mDropTarget->onDrop.connect(boost::bind(&GUIResourceTreeView::dropTargetDragDropped, this, _1, _2));
+			mDropTargetEnterConn = mDropTarget->onEnter.connect(std::bind(&GUIResourceTreeView::dropTargetDragMove, this, _1, _2));
+			mDropTargetMoveConn = mDropTarget->onDragOver.connect(std::bind(&GUIResourceTreeView::dropTargetDragMove, this, _1, _2));
+			mDropTargetLeaveConn = mDropTarget->onLeave.connect(std::bind(&GUIResourceTreeView::dropTargetDragLeave, this));
+			mDropTargetDroppedConn = mDropTarget->onDrop.connect(std::bind(&GUIResourceTreeView::dropTargetDragDropped, this, _1, _2));
 		}
 		}
 		else
 		else
 			mDropTarget = nullptr;
 			mDropTarget = nullptr;
@@ -413,7 +414,7 @@ namespace BansheeEditor
 		mDraggedResources = internalDraggedResources;
 		mDraggedResources = internalDraggedResources;
 
 
 		DragAndDropManager::instance().startDrag((UINT32)DragAndDropType::Resources, (void*)draggedResources, 
 		DragAndDropManager::instance().startDrag((UINT32)DragAndDropType::Resources, (void*)draggedResources, 
-			boost::bind(&GUIResourceTreeView::dragAndDropFinalize, this), true);
+			std::bind(&GUIResourceTreeView::dragAndDropFinalize, this), true);
 	}
 	}
 
 
 	void GUIResourceTreeView::dragAndDropEnded(TreeElement* overTreeElement)
 	void GUIResourceTreeView::dragAndDropEnded(TreeElement* overTreeElement)

+ 1 - 1
BansheeEditor/Source/BsGUISceneTreeView.cpp

@@ -226,7 +226,7 @@ namespace BansheeEditor
 		}
 		}
 
 
 		DragAndDropManager::instance().startDrag((UINT32)DragAndDropType::SceneObject, (void*)draggedSceneObjects, 
 		DragAndDropManager::instance().startDrag((UINT32)DragAndDropType::SceneObject, (void*)draggedSceneObjects, 
-			boost::bind(&GUISceneTreeView::dragAndDropFinalize, this), true);
+			std::bind(&GUISceneTreeView::dragAndDropFinalize, this), true);
 	}
 	}
 
 
 	void GUISceneTreeView::dragAndDropEnded(TreeElement* overTreeElement)
 	void GUISceneTreeView::dragAndDropEnded(TreeElement* overTreeElement)

+ 5 - 4
BansheeEditor/Source/BsGUITabbedTitleBar.cpp

@@ -16,6 +16,7 @@
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
 using namespace BansheeEngine;
 using namespace BansheeEngine;
+using namespace std::placeholders;
 
 
 namespace BansheeEditor
 namespace BansheeEditor
 {
 {
@@ -51,7 +52,7 @@ namespace BansheeEditor
 		mCloseBtn = GUIButton::create(parent, HString(L""), mCloseBtnStyle);
 		mCloseBtn = GUIButton::create(parent, HString(L""), mCloseBtnStyle);
 		_registerChildElement(mCloseBtn);
 		_registerChildElement(mCloseBtn);
 
 
-		mCloseBtn->onClick.connect(boost::bind(&GUITabbedTitleBar::tabClosed, this));
+		mCloseBtn->onClick.connect(std::bind(&GUITabbedTitleBar::tabClosed, this));
 
 
 		mTabToggleGroup = GUIToggle::createToggleGroup();
 		mTabToggleGroup = GUIToggle::createToggleGroup();
 	}
 	}
@@ -95,9 +96,9 @@ namespace BansheeEditor
 
 
 		UINT32 uniqueIdx = mUniqueTabIdx++;
 		UINT32 uniqueIdx = mUniqueTabIdx++;
 
 
-		newTabToggle->onToggled.connect(boost::bind(&GUITabbedTitleBar::tabToggled, this, uniqueIdx, _1));
-		newTabToggle->onDragged.connect(boost::bind(&GUITabbedTitleBar::tabDragged, this, _1, _2));
-		newTabToggle->onDragEnd.connect(boost::bind(&GUITabbedTitleBar::tabDragEnd, this, _1, _2));
+		newTabToggle->onToggled.connect(std::bind(&GUITabbedTitleBar::tabToggled, this, uniqueIdx, _1));
+		newTabToggle->onDragged.connect(std::bind(&GUITabbedTitleBar::tabDragged, this, _1, _2));
+		newTabToggle->onDragEnd.connect(std::bind(&GUITabbedTitleBar::tabDragEnd, this, _1, _2));
 
 
 		mTabButtons.insert(mTabButtons.begin() + position, newTabToggle);
 		mTabButtons.insert(mTabButtons.begin() + position, newTabToggle);
 
 

+ 4 - 3
BansheeEditor/Source/BsGUITreeView.cpp

@@ -18,6 +18,7 @@
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
 using namespace BansheeEngine;
 using namespace BansheeEngine;
+using namespace std::placeholders;
 
 
 namespace BansheeEditor
 namespace BansheeEditor
 {
 {
@@ -115,8 +116,8 @@ namespace BansheeEditor
 		mNameEditBox = GUITreeViewEditBox::create(parent, mEditBoxStyle);
 		mNameEditBox = GUITreeViewEditBox::create(parent, mEditBoxStyle);
 		mNameEditBox->disableRecursively();
 		mNameEditBox->disableRecursively();
 
 
-		mNameEditBox->onInputConfirmed.connect(boost::bind(&GUITreeView::onEditAccepted, this));
-		mNameEditBox->onInputCanceled.connect(boost::bind(&GUITreeView::onEditCanceled, this));
+		mNameEditBox->onInputConfirmed.connect(std::bind(&GUITreeView::onEditAccepted, this));
+		mNameEditBox->onInputCanceled.connect(std::bind(&GUITreeView::onEditCanceled, this));
 
 
 		mDragHighlight = GUITexture::create(parent, mDragHighlightStyle);
 		mDragHighlight = GUITexture::create(parent, mDragHighlightStyle);
 		mDragSepHighlight = GUITexture::create(parent, mDragSepHighlightStyle);
 		mDragSepHighlight = GUITexture::create(parent, mDragSepHighlightStyle);
@@ -623,7 +624,7 @@ namespace BansheeEditor
 					element->mFoldoutBtn = GUIToggle::create(_getParentWidget(), GUIContent(HString(L"")), mFoldoutBtnStyle);
 					element->mFoldoutBtn = GUIToggle::create(_getParentWidget(), GUIContent(HString(L"")), mFoldoutBtnStyle);
 					_registerChildElement(element->mFoldoutBtn);
 					_registerChildElement(element->mFoldoutBtn);
 
 
-					element->mFoldoutBtn->onToggled.connect(boost::bind(&GUITreeView::elementToggled, this, element, _1));
+					element->mFoldoutBtn->onToggled.connect(std::bind(&GUITreeView::elementToggled, this, element, _1));
 
 
 					if(element->mIsExpanded)
 					if(element->mIsExpanded)
 						element->mFoldoutBtn->toggleOn();
 						element->mFoldoutBtn->toggleOn();

+ 4 - 3
BansheeEditor/Source/BsProjectLibrary.cpp

@@ -16,6 +16,7 @@
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
 using namespace BansheeEngine;
 using namespace BansheeEngine;
+using namespace std::placeholders;
 
 
 namespace BansheeEditor
 namespace BansheeEditor
 {
 {
@@ -57,9 +58,9 @@ namespace BansheeEditor
 				(UINT32)FolderChange::Creation | (UINT32)FolderChange::LastWrite);
 				(UINT32)FolderChange::Creation | (UINT32)FolderChange::LastWrite);
 		mMonitor->startMonitor(mResourcesFolder, true, folderChanges);
 		mMonitor->startMonitor(mResourcesFolder, true, folderChanges);
 
 
-		mMonitor->onAdded.connect(boost::bind(&ProjectLibrary::onMonitorFileModified, this, _1));
-		mMonitor->onRemoved.connect(boost::bind(&ProjectLibrary::onMonitorFileModified, this, _1));
-		mMonitor->onModified.connect(boost::bind(&ProjectLibrary::onMonitorFileModified, this, _1));
+		mMonitor->onAdded.connect(std::bind(&ProjectLibrary::onMonitorFileModified, this, _1));
+		mMonitor->onRemoved.connect(std::bind(&ProjectLibrary::onMonitorFileModified, this, _1));
+		mMonitor->onModified.connect(std::bind(&ProjectLibrary::onMonitorFileModified, this, _1));
 
 
 		load();
 		load();
 
 

+ 6 - 0
BansheeEditorExec/BansheeEditorExec.vcxproj

@@ -123,6 +123,7 @@
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -137,6 +138,7 @@
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -154,6 +156,7 @@
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>false</GenerateDebugInformation>
       <GenerateDebugInformation>false</GenerateDebugInformation>
@@ -173,6 +176,7 @@
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>false</GenerateDebugInformation>
       <GenerateDebugInformation>false</GenerateDebugInformation>
@@ -192,6 +196,7 @@
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -211,6 +216,7 @@
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeEditor\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>

+ 6 - 6
BansheeEngine/BansheeEngine.vcxproj

@@ -122,7 +122,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -136,7 +136,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -152,7 +152,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
     </ClCompile>
     </ClCompile>
@@ -172,7 +172,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
     </ClCompile>
     </ClCompile>
@@ -192,7 +192,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
     </ClCompile>
     </ClCompile>
@@ -212,7 +212,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
     </ClCompile>
     </ClCompile>

+ 1 - 1
BansheeEngine/Source/BsApplication.cpp

@@ -61,7 +61,7 @@ namespace BansheeEngine
 		CM::gApplication().loadPlugin("BansheeMono", &mMonoPlugin);
 		CM::gApplication().loadPlugin("BansheeMono", &mMonoPlugin);
 		CM::gApplication().loadPlugin("SBansheeEngine", &mSBansheeEnginePlugin); // Scripting interface
 		CM::gApplication().loadPlugin("SBansheeEngine", &mSBansheeEnginePlugin); // Scripting interface
 		
 		
-		updateCallbackConn = CM::gApplication().mainLoopCallback.connect(boost::bind(&Application::update, this));
+		updateCallbackConn = CM::gApplication().mainLoopCallback.connect(std::bind(&Application::update, this));
 
 
 		Cursor::instance().setCursor(CursorType::Arrow);
 		Cursor::instance().setCursor(CursorType::Arrow);
 	}
 	}

+ 1 - 1
BansheeEngine/Source/BsBuiltinResources.cpp

@@ -189,7 +189,7 @@ namespace BansheeEngine
 		labelStyle.fontSize = DefaultFontSize;
 		labelStyle.fontSize = DefaultFontSize;
 		labelStyle.fixedWidth = false;
 		labelStyle.fixedWidth = false;
 		labelStyle.fixedHeight = true;
 		labelStyle.fixedHeight = true;
-		labelStyle.height = 16;
+		labelStyle.height = 11;
 		labelStyle.minWidth = 10;
 		labelStyle.minWidth = 10;
 
 
 		mSkin.setStyle(GUILabel::getGUITypeName(), labelStyle);
 		mSkin.setStyle(GUILabel::getGUITypeName(), labelStyle);

+ 3 - 2
BansheeEngine/Source/BsDragAndDropManager.cpp

@@ -3,14 +3,15 @@
 #include "CmApplication.h"
 #include "CmApplication.h"
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
+using namespace std::placeholders;
 
 
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {
 	DragAndDropManager::DragAndDropManager()
 	DragAndDropManager::DragAndDropManager()
 		:mIsDragInProgress(false), mDragTypeId(0), mData(nullptr), mCaptureChanged(false), mCaptureActive(0), mNeedsValidDropTarget(false)
 		:mIsDragInProgress(false), mDragTypeId(0), mData(nullptr), mCaptureChanged(false), mCaptureActive(0), mNeedsValidDropTarget(false)
 	{
 	{
-		Platform::onMouseCaptureChanged.connect(boost::bind(&DragAndDropManager::mouseCaptureChanged, this));
-		Input::instance().onCursorReleased.connect(boost::bind(&DragAndDropManager::cursorReleased, this, _1));
+		Platform::onMouseCaptureChanged.connect(std::bind(&DragAndDropManager::mouseCaptureChanged, this));
+		Input::instance().onCursorReleased.connect(std::bind(&DragAndDropManager::cursorReleased, this, _1));
 	}
 	}
 
 
 	void DragAndDropManager::addDropCallback(std::function<void(bool)> dropCallback)
 	void DragAndDropManager::addDropCallback(std::function<void(bool)> dropCallback)

+ 2 - 2
BansheeEngine/Source/BsGUIButtonBase.cpp

@@ -36,7 +36,7 @@ namespace BansheeEngine
 		mImageDesc.borderTop = mStyle->border.top;
 		mImageDesc.borderTop = mStyle->border.top;
 		mImageDesc.borderBottom = mStyle->border.bottom;
 		mImageDesc.borderBottom = mStyle->border.bottom;
 
 
-		mLocStringUpdatedConn = mContent.getText().addOnStringModifiedCallback(boost::bind(&GUIButtonBase::markContentAsDirty, this));
+		mLocStringUpdatedConn = mContent.getText().addOnStringModifiedCallback(std::bind(&GUIButtonBase::markContentAsDirty, this));
 	}
 	}
 
 
 	GUIButtonBase::~GUIButtonBase()
 	GUIButtonBase::~GUIButtonBase()
@@ -53,7 +53,7 @@ namespace BansheeEngine
 	void GUIButtonBase::setContent(const GUIContent& content)
 	void GUIButtonBase::setContent(const GUIContent& content)
 	{
 	{
 		mLocStringUpdatedConn.disconnect();
 		mLocStringUpdatedConn.disconnect();
-		mLocStringUpdatedConn = content.getText().addOnStringModifiedCallback(boost::bind(&GUIButtonBase::markContentAsDirty, this));
+		mLocStringUpdatedConn = content.getText().addOnStringModifiedCallback(std::bind(&GUIButtonBase::markContentAsDirty, this));
 
 
 		mContent = content;
 		mContent = content;
 
 

+ 1 - 1
BansheeEngine/Source/BsGUIContextMenu.cpp

@@ -22,7 +22,7 @@ namespace BansheeEngine
 		GUIDropDownAreaPlacement placement = GUIDropDownAreaPlacement::aroundPosition(position);
 		GUIDropDownAreaPlacement placement = GUIDropDownAreaPlacement::aroundPosition(position);
 
 
 		GameObjectHandle<GUIDropDownBox> dropDownBox = GUIDropDownBoxManager::instance().openDropDownBox(widget.getTarget(), 
 		GameObjectHandle<GUIDropDownBox> dropDownBox = GUIDropDownBoxManager::instance().openDropDownBox(widget.getTarget(), 
-			placement, getDropDownData(), widget.getSkin(), GUIDropDownType::ContextMenu, boost::bind(&GUIContextMenu::onMenuClosed, this));
+			placement, getDropDownData(), widget.getSkin(), GUIDropDownType::ContextMenu, std::bind(&GUIContextMenu::onMenuClosed, this));
 
 
 		mContextMenuOpen = true;
 		mContextMenuOpen = true;
 	}
 	}

+ 6 - 6
BansheeEngine/Source/BsGUIDropDownBox.cpp

@@ -109,7 +109,7 @@ namespace BansheeEngine
 		mLocalizedEntryNames = dropDownData.localizedNames;
 		mLocalizedEntryNames = dropDownData.localizedNames;
 
 
 		mHitBox = GUIDropDownHitBox::create(*this, false);
 		mHitBox = GUIDropDownHitBox::create(*this, false);
-		mHitBox->onFocusLost.connect(boost::bind(&GUIDropDownBox::dropDownFocusLost, this));
+		mHitBox->onFocusLost.connect(std::bind(&GUIDropDownBox::dropDownFocusLost, this));
 		mHitBox->setFocus(true);
 		mHitBox->setFocus(true);
 		mHitBox->_setWidgetDepth(0);
 		mHitBox->_setWidgetDepth(0);
 		mHitBox->_setAreaDepth(0);
 		mHitBox->_setAreaDepth(0);
@@ -368,7 +368,7 @@ namespace BansheeEngine
 			if(mScrollUpBtn == nullptr)
 			if(mScrollUpBtn == nullptr)
 			{
 			{
 				mScrollUpBtn = GUIButton::create(*mOwner, GUIContent(HString(L""), mOwner->mScrollUpBtnArrow), mOwner->mScrollUpStyle);
 				mScrollUpBtn = GUIButton::create(*mOwner, GUIContent(HString(L""), mOwner->mScrollUpBtnArrow), mOwner->mScrollUpStyle);
-				mScrollUpBtn->onClick.connect(boost::bind(&DropDownSubMenu::scrollUp, this));
+				mScrollUpBtn->onClick.connect(std::bind(&DropDownSubMenu::scrollUp, this));
 			}
 			}
 
 
 			mContentLayout->addElement(mScrollUpBtn);			
 			mContentLayout->addElement(mScrollUpBtn);			
@@ -416,7 +416,7 @@ namespace BansheeEngine
 				else
 				else
 				{
 				{
 					expEntryBtn = GUIButton::create(*mOwner, getElementLocalizedName(i), mOwner->mEntryExpBtnStyle);
 					expEntryBtn = GUIButton::create(*mOwner, getElementLocalizedName(i), mOwner->mEntryExpBtnStyle);
-					expEntryBtn->onHover.connect(boost::bind(&DropDownSubMenu::openSubMenu, this, expEntryBtn, i));
+					expEntryBtn->onHover.connect(std::bind(&DropDownSubMenu::openSubMenu, this, expEntryBtn, i));
 				}
 				}
 
 
 				mContentLayout->addElement(expEntryBtn);
 				mContentLayout->addElement(expEntryBtn);
@@ -433,8 +433,8 @@ namespace BansheeEngine
 				else
 				else
 				{
 				{
 					entryBtn = GUIButton::create(*mOwner, getElementLocalizedName(i), mOwner->mEntryBtnStyle);
 					entryBtn = GUIButton::create(*mOwner, getElementLocalizedName(i), mOwner->mEntryBtnStyle);
-					entryBtn->onHover.connect(boost::bind(&DropDownSubMenu::closeSubMenu, this));
-					entryBtn->onClick.connect(boost::bind(&DropDownSubMenu::elementClicked, this,  i));
+					entryBtn->onHover.connect(std::bind(&DropDownSubMenu::closeSubMenu, this));
+					entryBtn->onClick.connect(std::bind(&DropDownSubMenu::elementClicked, this,  i));
 				}
 				}
 
 
 				mContentLayout->addElement(entryBtn);
 				mContentLayout->addElement(entryBtn);
@@ -462,7 +462,7 @@ namespace BansheeEngine
 			if(mScrollDownBtn == nullptr)
 			if(mScrollDownBtn == nullptr)
 			{
 			{
 				mScrollDownBtn = GUIButton::create(*mOwner, GUIContent(HString(L""), mOwner->mScrollDownBtnArrow), mOwner->mScrollDownStyle);
 				mScrollDownBtn = GUIButton::create(*mOwner, GUIContent(HString(L""), mOwner->mScrollDownBtnArrow), mOwner->mScrollDownStyle);
-				mScrollDownBtn->onClick.connect(boost::bind(&DropDownSubMenu::scrollDown, this));
+				mScrollDownBtn->onClick.connect(std::bind(&DropDownSubMenu::scrollDown, this));
 			}
 			}
 
 
 			mContentLayout->addElement(mScrollDownBtn);			
 			mContentLayout->addElement(mScrollDownBtn);			

+ 3 - 3
BansheeEngine/Source/BsGUIInputBox.cpp

@@ -1065,9 +1065,9 @@ namespace BansheeEngine
 
 
 		if(!initialized)
 		if(!initialized)
 		{
 		{
-			mContextMenu.addMenuItem(L"Cut", boost::bind(&GUIInputBox::cutText, const_cast<GUIInputBox*>(this)));
-			mContextMenu.addMenuItem(L"Copy", boost::bind(&GUIInputBox::copyText, const_cast<GUIInputBox*>(this)));
-			mContextMenu.addMenuItem(L"Paste", boost::bind(&GUIInputBox::pasteText, const_cast<GUIInputBox*>(this)));
+			mContextMenu.addMenuItem(L"Cut", std::bind(&GUIInputBox::cutText, const_cast<GUIInputBox*>(this)));
+			mContextMenu.addMenuItem(L"Copy", std::bind(&GUIInputBox::copyText, const_cast<GUIInputBox*>(this)));
+			mContextMenu.addMenuItem(L"Paste", std::bind(&GUIInputBox::pasteText, const_cast<GUIInputBox*>(this)));
 
 
 			mContextMenu.setLocalizedName(L"Cut", HString(L"Cut"));
 			mContextMenu.setLocalizedName(L"Cut", HString(L"Cut"));
 			mContextMenu.setLocalizedName(L"Copy", HString(L"Copy"));
 			mContextMenu.setLocalizedName(L"Copy", HString(L"Copy"));

+ 2 - 2
BansheeEngine/Source/BsGUILabel.cpp

@@ -22,7 +22,7 @@ namespace BansheeEngine
 		mDesc.horzAlign = mStyle->textHorzAlign;
 		mDesc.horzAlign = mStyle->textHorzAlign;
 		mDesc.vertAlign = mStyle->textVertAlign;
 		mDesc.vertAlign = mStyle->textVertAlign;
 
 
-		mLocStringUpdatedConn = mContent.getText().addOnStringModifiedCallback(boost::bind(&GUILabel::markContentAsDirty, this));
+		mLocStringUpdatedConn = mContent.getText().addOnStringModifiedCallback(std::bind(&GUILabel::markContentAsDirty, this));
 	}
 	}
 
 
 	GUILabel::~GUILabel()
 	GUILabel::~GUILabel()
@@ -76,7 +76,7 @@ namespace BansheeEngine
 	void GUILabel::setContent(const GUIContent& content)
 	void GUILabel::setContent(const GUIContent& content)
 	{
 	{
 		mLocStringUpdatedConn.disconnect();
 		mLocStringUpdatedConn.disconnect();
-		mLocStringUpdatedConn = content.getText().addOnStringModifiedCallback(boost::bind(&GUILabel::markContentAsDirty, this));
+		mLocStringUpdatedConn = content.getText().addOnStringModifiedCallback(std::bind(&GUILabel::markContentAsDirty, this));
 
 
 		mContent = content;
 		mContent = content;
 		
 		

+ 2 - 2
BansheeEngine/Source/BsGUIListBox.cpp

@@ -109,7 +109,7 @@ namespace BansheeEngine
 		for(auto& elem : mElements)
 		for(auto& elem : mElements)
 		{
 		{
 			WString identifier = toWString(i);
 			WString identifier = toWString(i);
-			dropDownData.entries.push_back(GUIDropDownDataEntry::button(identifier, boost::bind(&GUIListBox::elementSelected, this, i)));
+			dropDownData.entries.push_back(GUIDropDownDataEntry::button(identifier, std::bind(&GUIListBox::elementSelected, this, i)));
 			dropDownData.localizedNames[identifier] = elem;
 			dropDownData.localizedNames[identifier] = elem;
 			i++;
 			i++;
 		}
 		}
@@ -118,7 +118,7 @@ namespace BansheeEngine
 		GUIDropDownAreaPlacement placement = GUIDropDownAreaPlacement::aroundBoundsHorz(getBounds());
 		GUIDropDownAreaPlacement placement = GUIDropDownAreaPlacement::aroundBoundsHorz(getBounds());
 
 
 		GameObjectHandle<GUIDropDownBox> dropDownBox = GUIDropDownBoxManager::instance().openDropDownBox(widget.getTarget(), 
 		GameObjectHandle<GUIDropDownBox> dropDownBox = GUIDropDownBoxManager::instance().openDropDownBox(widget.getTarget(), 
-			placement, dropDownData, widget.getSkin(), GUIDropDownType::MenuBar, boost::bind(&GUIListBox::onListBoxClosed, this));
+			placement, dropDownData, widget.getSkin(), GUIDropDownType::MenuBar, std::bind(&GUIListBox::onListBoxClosed, this));
 
 
 		_setOn(true);
 		_setOn(true);
 		mIsListBoxOpen = true;
 		mIsListBoxOpen = true;

+ 13 - 11
BansheeEngine/Source/BsGUIManager.cpp

@@ -35,6 +35,8 @@
 #include "BsCursor.h"
 #include "BsCursor.h"
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
+using namespace std::placeholders;
+
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {
 	struct GUIGroupElement
 	struct GUIGroupElement
@@ -69,24 +71,24 @@ namespace BansheeEngine
 		mTextSelectionColor(1.0f, 0.6588f, 0.0f), mInputCaret(nullptr), mInputSelection(nullptr), mDragState(DragState::NoDrag),
 		mTextSelectionColor(1.0f, 0.6588f, 0.0f), mInputCaret(nullptr), mInputSelection(nullptr), mDragState(DragState::NoDrag),
 		mActiveCursor(CursorType::Arrow)
 		mActiveCursor(CursorType::Arrow)
 	{
 	{
-		mOnCursorMovedConn = gInput().onCursorMoved.connect(boost::bind(&GUIManager::onCursorMoved, this, _1));
-		mOnCursorPressedConn = gInput().onCursorPressed.connect(boost::bind(&GUIManager::onCursorPressed, this, _1));
-		mOnCursorReleasedConn = gInput().onCursorReleased.connect(boost::bind(&GUIManager::onCursorReleased, this, _1));
-		mOnCursorDoubleClick = gInput().onDoubleClick.connect(boost::bind(&GUIManager::onCursorDoubleClick, this, _1));
-		mOnTextInputConn = gInput().onCharInput.connect(boost::bind(&GUIManager::onTextInput, this, _1)); 
-		mOnInputCommandConn = gInput().onInputCommand.connect(boost::bind(&GUIManager::onInputCommandEntered, this, _1)); 
-		mOnVirtualButtonDown = VirtualInput::instance().onButtonDown.connect(boost::bind(&GUIManager::onVirtualButtonDown, this, _1));
+		mOnCursorMovedConn = gInput().onCursorMoved.connect(std::bind(&GUIManager::onCursorMoved, this, _1));
+		mOnCursorPressedConn = gInput().onCursorPressed.connect(std::bind(&GUIManager::onCursorPressed, this, _1));
+		mOnCursorReleasedConn = gInput().onCursorReleased.connect(std::bind(&GUIManager::onCursorReleased, this, _1));
+		mOnCursorDoubleClick = gInput().onDoubleClick.connect(std::bind(&GUIManager::onCursorDoubleClick, this, _1));
+		mOnTextInputConn = gInput().onCharInput.connect(std::bind(&GUIManager::onTextInput, this, _1)); 
+		mOnInputCommandConn = gInput().onInputCommand.connect(std::bind(&GUIManager::onInputCommandEntered, this, _1)); 
+		mOnVirtualButtonDown = VirtualInput::instance().onButtonDown.connect(std::bind(&GUIManager::onVirtualButtonDown, this, _1));
 
 
-		mWindowGainedFocusConn = RenderWindowManager::instance().onFocusGained.connect(boost::bind(&GUIManager::onWindowFocusGained, this, _1));
-		mWindowLostFocusConn = RenderWindowManager::instance().onFocusLost.connect(boost::bind(&GUIManager::onWindowFocusLost, this, _1));
+		mWindowGainedFocusConn = RenderWindowManager::instance().onFocusGained.connect(std::bind(&GUIManager::onWindowFocusGained, this, _1));
+		mWindowLostFocusConn = RenderWindowManager::instance().onFocusLost.connect(std::bind(&GUIManager::onWindowFocusLost, this, _1));
 
 
-		mMouseLeftWindowConn = Platform::onMouseLeftWindow.connect(boost::bind(&GUIManager::onMouseLeftWindow, this, _1));
+		mMouseLeftWindowConn = Platform::onMouseLeftWindow.connect(std::bind(&GUIManager::onMouseLeftWindow, this, _1));
 
 
 		mInputCaret = cm_new<GUIInputCaret, PoolAlloc>();
 		mInputCaret = cm_new<GUIInputCaret, PoolAlloc>();
 		mInputSelection = cm_new<GUIInputSelection, PoolAlloc>();
 		mInputSelection = cm_new<GUIInputSelection, PoolAlloc>();
 
 
 		DragAndDropManager::startUp(cm_new<DragAndDropManager>());
 		DragAndDropManager::startUp(cm_new<DragAndDropManager>());
-		mDragEndedConn = DragAndDropManager::instance().onDragEnded.connect(boost::bind(&GUIManager::onMouseDragEnded, this, _1));
+		mDragEndedConn = DragAndDropManager::instance().onDragEnded.connect(std::bind(&GUIManager::onMouseDragEnded, this, _1));
 
 
 		GUIDropDownBoxManager::startUp(cm_new<GUIDropDownBoxManager>());
 		GUIDropDownBoxManager::startUp(cm_new<GUIDropDownBoxManager>());
 
 

+ 3 - 2
BansheeEngine/Source/BsGUIScrollArea.cpp

@@ -11,6 +11,7 @@
 #include "CmException.h"
 #include "CmException.h"
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
+using namespace std::placeholders;
 
 
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {
@@ -152,7 +153,7 @@ namespace BansheeEngine
 
 
 				_registerChildElement(mVertScroll);
 				_registerChildElement(mVertScroll);
 
 
-				mVertScroll->onScrollPositionChanged.connect(boost::bind(&GUIScrollArea::vertScrollUpdate, this, _1));
+				mVertScroll->onScrollPositionChanged.connect(std::bind(&GUIScrollArea::vertScrollUpdate, this, _1));
 			}
 			}
 
 
 			INT32 scrollBarOffset = (UINT32)std::max(0, (INT32)width - (INT32)ScrollBarWidth);
 			INT32 scrollBarOffset = (UINT32)std::max(0, (INT32)width - (INT32)ScrollBarWidth);
@@ -212,7 +213,7 @@ namespace BansheeEngine
 
 
 				_registerChildElement(mHorzScroll);
 				_registerChildElement(mHorzScroll);
 
 
-				mHorzScroll->onScrollPositionChanged.connect(boost::bind(&GUIScrollArea::horzScrollUpdate, this, _1));
+				mHorzScroll->onScrollPositionChanged.connect(std::bind(&GUIScrollArea::horzScrollUpdate, this, _1));
 			}
 			}
 
 
 			INT32 scrollBarOffset = (UINT32)std::max(0, (INT32)height - (INT32)ScrollBarWidth);
 			INT32 scrollBarOffset = (UINT32)std::max(0, (INT32)height - (INT32)ScrollBarWidth);

+ 4 - 3
BansheeEngine/Source/BsGUIScrollBar.cpp

@@ -12,6 +12,7 @@
 #include "CmException.h"
 #include "CmException.h"
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
+using namespace std::placeholders;
 
 
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {
@@ -51,10 +52,10 @@ namespace BansheeEngine
 		mLayout->addElement(mDownBtn);
 		mLayout->addElement(mDownBtn);
 		mLayout->addSpace(2);
 		mLayout->addSpace(2);
 
 
-		mHandleBtn->onHandleMoved.connect(boost::bind(&GUIScrollBar::handleMoved, this, _1));
+		mHandleBtn->onHandleMoved.connect(std::bind(&GUIScrollBar::handleMoved, this, _1));
 
 
-		mUpBtn->onClick.connect(boost::bind(&GUIScrollBar::upButtonClicked, this));
-		mDownBtn->onClick.connect(boost::bind(&GUIScrollBar::downButtonClicked, this));
+		mUpBtn->onClick.connect(std::bind(&GUIScrollBar::upButtonClicked, this));
+		mDownBtn->onClick.connect(std::bind(&GUIScrollBar::downButtonClicked, this));
 	}
 	}
 
 
 	GUIScrollBar::~GUIScrollBar()
 	GUIScrollBar::~GUIScrollBar()

+ 1 - 1
BansheeEngine/Source/BsGUIWidget.cpp

@@ -35,7 +35,7 @@ namespace BansheeEngine
 
 
 		mTarget = target;
 		mTarget = target;
 
 
-		mOwnerTargetResizedConn = mTarget->onResized.connect(boost::bind(&GUIWidget::ownerTargetResized, this));
+		mOwnerTargetResizedConn = mTarget->onResized.connect(std::bind(&GUIWidget::ownerTargetResized, this));
 
 
 		GUIManager::instance().registerWidget(this);
 		GUIManager::instance().registerWidget(this);
 	}
 	}

+ 1 - 1
BansheeEngine/Source/BsProfilerOverlay.cpp

@@ -255,7 +255,7 @@ namespace BansheeEngine
 
 
 		mTarget = target;
 		mTarget = target;
 
 
-		mTargetResizedConn = target->onResized.connect(boost::bind(&ProfilerOverlay::targetResized, this));
+		mTargetResizedConn = target->onResized.connect(std::bind(&ProfilerOverlay::targetResized, this));
 
 
 		if(mWidgetSO)
 		if(mWidgetSO)
 			mWidgetSO->destroy();
 			mWidgetSO->destroy();

+ 3 - 2
BansheeEngine/Source/BsVirtualInput.cpp

@@ -3,6 +3,7 @@
 #include "CmTime.h"
 #include "CmTime.h"
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
+using namespace std::placeholders;
 
 
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {
@@ -11,8 +12,8 @@ namespace BansheeEngine
 	{
 	{
 		mInputConfiguration = createConfiguration();
 		mInputConfiguration = createConfiguration();
 
 
-		Input::instance().onButtonDown.connect(boost::bind(&VirtualInput::buttonDown, this, _1));
-		Input::instance().onButtonUp.connect(boost::bind(&VirtualInput::buttonUp, this, _1));
+		Input::instance().onButtonDown.connect(std::bind(&VirtualInput::buttonDown, this, _1));
+		Input::instance().onButtonUp.connect(std::bind(&VirtualInput::buttonUp, this, _1));
 	}
 	}
 
 
 	std::shared_ptr<InputConfiguration> VirtualInput::createConfiguration()
 	std::shared_ptr<InputConfiguration> VirtualInput::createConfiguration()

+ 6 - 6
BansheeForwardRenderer/BansheeForwardRenderer.vcxproj

@@ -122,7 +122,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -137,7 +137,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -154,7 +154,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -175,7 +175,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
@@ -196,7 +196,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -217,7 +217,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>

+ 6 - 6
BansheeMono/BansheeMono.vcxproj

@@ -123,7 +123,7 @@
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -138,7 +138,7 @@
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -156,7 +156,7 @@
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
-      <PreprocessorDefinitions>BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>false</GenerateDebugInformation>
       <GenerateDebugInformation>false</GenerateDebugInformation>
@@ -176,7 +176,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -197,7 +197,7 @@
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
-      <PreprocessorDefinitions>BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>false</GenerateDebugInformation>
       <GenerateDebugInformation>false</GenerateDebugInformation>
@@ -216,7 +216,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_MONO_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>

+ 6 - 6
BansheeOctreeSM/BansheeOctreeSM.vcxproj

@@ -123,7 +123,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -137,7 +137,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -154,7 +154,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
     </ClCompile>
     </ClCompile>
@@ -174,7 +174,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
     </ClCompile>
     </ClCompile>
@@ -194,7 +194,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
     </ClCompile>
     </ClCompile>
@@ -214,7 +214,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotUtility/Include;../CamelotCore/Include;../BansheeEngine/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;BS_SM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
     </ClCompile>
     </ClCompile>

+ 6 - 6
CamelotCore/CamelotCore.vcxproj

@@ -143,7 +143,7 @@
       </PrecompiledHeader>
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;_DEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
@@ -161,7 +161,7 @@
       </PrecompiledHeader>
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;_DEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
@@ -181,7 +181,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;NDEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -205,7 +205,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;NDEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
@@ -230,7 +230,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;NDEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -254,7 +254,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;WIN32;NDEBUG;_CONSOLE;CM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../CamelotUtility/Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+ 11 - 11
CamelotCore/Include/CmCommandQueue.h

@@ -60,21 +60,21 @@ namespace CamelotFramework
 	struct QueuedCommand
 	struct QueuedCommand
 	{
 	{
 #if CM_DEBUG_MODE
 #if CM_DEBUG_MODE
-		QueuedCommand(boost::function<void(AsyncOp&)> _callback, UINT32 _debugId, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
+		QueuedCommand(std::function<void(AsyncOp&)> _callback, UINT32 _debugId, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
 			:callbackWithReturnValue(_callback), debugId(_debugId), returnsValue(true), notifyWhenComplete(_notifyWhenComplete), callbackId(_callbackId), asyncOp(cm_new<AsyncOp>()), ownsData(true)
 			:callbackWithReturnValue(_callback), debugId(_debugId), returnsValue(true), notifyWhenComplete(_notifyWhenComplete), callbackId(_callbackId), asyncOp(cm_new<AsyncOp>()), ownsData(true)
 		{ }
 		{ }
 
 
-		QueuedCommand(boost::function<void()> _callback, UINT32 _debugId, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
+		QueuedCommand(std::function<void()> _callback, UINT32 _debugId, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
 			:callback(_callback), debugId(_debugId), returnsValue(false), notifyWhenComplete(_notifyWhenComplete), callbackId(_callbackId), asyncOp(nullptr), ownsData(true)
 			:callback(_callback), debugId(_debugId), returnsValue(false), notifyWhenComplete(_notifyWhenComplete), callbackId(_callbackId), asyncOp(nullptr), ownsData(true)
 		{ }
 		{ }
 
 
 		UINT32 debugId;
 		UINT32 debugId;
 #else
 #else
-		QueuedCommand(boost::function<void(AsyncOp&)> _callback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
+		QueuedCommand(std::function<void(AsyncOp&)> _callback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
 			:callbackWithReturnValue(_callback), returnsValue(true), notifyWhenComplete(_notifyWhenComplete), callbackId(_callbackId), asyncOp(cm_new<AsyncOp>()), ownsData(true)
 			:callbackWithReturnValue(_callback), returnsValue(true), notifyWhenComplete(_notifyWhenComplete), callbackId(_callbackId), asyncOp(cm_new<AsyncOp>()), ownsData(true)
 		{ }
 		{ }
 
 
-		QueuedCommand(boost::function<void()> _callback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
+		QueuedCommand(std::function<void()> _callback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
 			:callback(_callback), returnsValue(false), notifyWhenComplete(_notifyWhenComplete), callbackId(_callbackId), asyncOp(nullptr), ownsData(true)
 			:callback(_callback), returnsValue(false), notifyWhenComplete(_notifyWhenComplete), callbackId(_callbackId), asyncOp(nullptr), ownsData(true)
 		{ }
 		{ }
 #endif
 #endif
@@ -113,8 +113,8 @@ namespace CamelotFramework
 			return *this;
 			return *this;
 		}
 		}
 
 
-		boost::function<void()> callback;
-		boost::function<void(AsyncOp&)> callbackWithReturnValue;
+		std::function<void()> callback;
+		std::function<void(AsyncOp&)> callbackWithReturnValue;
 		AsyncOp* asyncOp;
 		AsyncOp* asyncOp;
 		bool returnsValue;
 		bool returnsValue;
 		UINT32 callbackId;
 		UINT32 callbackId;
@@ -146,7 +146,7 @@ namespace CamelotFramework
 		 * @param	notifyCallback  	Callback that will be called if a command that has "notifyOnComplete" flag set.
 		 * @param	notifyCallback  	Callback that will be called if a command that has "notifyOnComplete" flag set.
 		 * 								The callback will receive "callbackId" of the command.
 		 * 								The callback will receive "callbackId" of the command.
 		 */
 		 */
-		void playback(Queue<QueuedCommand>::type* commands, boost::function<void(UINT32)> notifyCallback);
+		void playbackWithNotify(Queue<QueuedCommand>::type* commands, std::function<void(UINT32)> notifyCallback);
 
 
 		/**
 		/**
 		 * @brief	Plays all provided commands. To get the commands call flush().
 		 * @brief	Plays all provided commands. To get the commands call flush().
@@ -186,7 +186,7 @@ namespace CamelotFramework
 		 * 			it completes AsyncOp::isResolved will return true and return data will be valid (if
 		 * 			it completes AsyncOp::isResolved will return true and return data will be valid (if
 		 * 			the callback provided any).
 		 * 			the callback provided any).
 		 */
 		 */
-		AsyncOp queueReturn(boost::function<void(AsyncOp&)> commandCallback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0);
+		AsyncOp queueReturn(std::function<void(AsyncOp&)> commandCallback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0);
 
 
 		/**
 		/**
 		 * @brief	Queue up a new command to execute. Make sure the provided function has all of its
 		 * @brief	Queue up a new command to execute. Make sure the provided function has all of its
@@ -199,7 +199,7 @@ namespace CamelotFramework
 		 * @param	_callbackId		   	(optional) Identifier for the callback so you can then later find
 		 * @param	_callbackId		   	(optional) Identifier for the callback so you can then later find
 		 * 								it if needed.
 		 * 								it if needed.
 		 */
 		 */
-		void queue(boost::function<void()> commandCallback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0);
+		void queue(std::function<void()> commandCallback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0);
 
 
 		/**
 		/**
 		 * @brief	Returns a copy of all queued commands and makes room for new ones. Must be called from the thread
 		 * @brief	Returns a copy of all queued commands and makes room for new ones. Must be called from the thread
@@ -291,7 +291,7 @@ namespace CamelotFramework
 		/**
 		/**
 		 * @copydoc CommandQueueBase::queueReturn
 		 * @copydoc CommandQueueBase::queueReturn
 		 */
 		 */
-		AsyncOp queueReturn(boost::function<void(AsyncOp&)> commandCallback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
+		AsyncOp queueReturn(std::function<void(AsyncOp&)> commandCallback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
 		{
 		{
 #if CM_DEBUG_MODE
 #if CM_DEBUG_MODE
 #if CM_THREAD_SUPPORT != 0
 #if CM_THREAD_SUPPORT != 0
@@ -310,7 +310,7 @@ namespace CamelotFramework
 		/**
 		/**
 		 * @copydoc CommandQueueBase::queue
 		 * @copydoc CommandQueueBase::queue
 		 */
 		 */
-		void queue(boost::function<void()> commandCallback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
+		void queue(std::function<void()> commandCallback, bool _notifyWhenComplete = false, UINT32 _callbackId = 0)
 		{
 		{
 #if CM_DEBUG_MODE
 #if CM_DEBUG_MODE
 #if CM_THREAD_SUPPORT != 0
 #if CM_THREAD_SUPPORT != 0

+ 4 - 4
CamelotCore/Include/CmCoreObject.h

@@ -127,7 +127,7 @@ o		 *
 		 * 			make sure the object is not deleted before the command executes. Can be null if the 
 		 * 			make sure the object is not deleted before the command executes. Can be null if the 
 		 * 			function is static or global.
 		 * 			function is static or global.
 		 */
 		 */
-		static void queueGpuCommand(std::shared_ptr<CoreObject>& obj, boost::function<void()> func);
+		static void queueGpuCommand(std::shared_ptr<CoreObject>& obj, std::function<void()> func);
 
 
 		/**
 		/**
 		 * @brief	Queues a command to be executed on the core thread, with a return value in the form of AsyncOp.
 		 * @brief	Queues a command to be executed on the core thread, with a return value in the form of AsyncOp.
@@ -138,7 +138,7 @@ o		 *
 		 * 			make sure the object is not deleted before the command executes. Can be null if the
 		 * 			make sure the object is not deleted before the command executes. Can be null if the
 		 * 			function is static or global.
 		 * 			function is static or global.
 		 */
 		 */
-		static AsyncOp queueReturnGpuCommand(std::shared_ptr<CoreObject>& obj, boost::function<void(AsyncOp&)> func);
+		static AsyncOp queueReturnGpuCommand(std::shared_ptr<CoreObject>& obj, std::function<void(AsyncOp&)> func);
 
 
 		bool isScheduledToBeInitialized() const { return (mFlags & CGO_SCHEDULED_FOR_INIT) != 0; }
 		bool isScheduledToBeInitialized() const { return (mFlags & CGO_SCHEDULED_FOR_INIT) != 0; }
 		bool isScheduledToBeDeleted() const { return (mFlags & CGO_SCHEDULED_FOR_DELETE) != 0; }
 		bool isScheduledToBeDeleted() const { return (mFlags & CGO_SCHEDULED_FOR_DELETE) != 0; }
@@ -160,8 +160,8 @@ o		 *
 		static void queueInitializeGpuCommand(std::shared_ptr<CoreObject>& obj);
 		static void queueInitializeGpuCommand(std::shared_ptr<CoreObject>& obj);
 		static void queueDestroyGpuCommand(std::shared_ptr<CoreObject>& obj);
 		static void queueDestroyGpuCommand(std::shared_ptr<CoreObject>& obj);
 
 
-		static void executeGpuCommand(std::shared_ptr<CoreObject>& obj, boost::function<void()> func);
-		static void executeReturnGpuCommand(std::shared_ptr<CoreObject>& obj, boost::function<void(AsyncOp&)> func, AsyncOp& op); 
+		static void executeGpuCommand(std::shared_ptr<CoreObject>& obj, std::function<void()> func);
+		static void executeReturnGpuCommand(std::shared_ptr<CoreObject>& obj, std::function<void(AsyncOp&)> func, AsyncOp& op); 
 	};
 	};
 
 
 #define MAKE_CM_NEW_CORE(z, n, unused)                                     \
 #define MAKE_CM_NEW_CORE(z, n, unused)                                     \

+ 2 - 2
CamelotCore/Include/CmCoreThread.h

@@ -78,7 +78,7 @@ public:
 		* 	
 		* 	
 		* @see		CommandQueue::queueReturn
 		* @see		CommandQueue::queueReturn
 		*/
 		*/
-	CM_EXPORT AsyncOp queueReturnCommand(boost::function<void(AsyncOp&)> commandCallback, bool blockUntilComplete = false);
+	CM_EXPORT AsyncOp queueReturnCommand(std::function<void(AsyncOp&)> commandCallback, bool blockUntilComplete = false);
 
 
 	/**
 	/**
 	* @brief	Queues a new command that will be added to the global command queue.You are allowed to call this from any thread,
 	* @brief	Queues a new command that will be added to the global command queue.You are allowed to call this from any thread,
@@ -88,7 +88,7 @@ public:
 		* 							   and they all need to be executed in order before the current command is reached, which might take a long time.
 		* 							   and they all need to be executed in order before the current command is reached, which might take a long time.
 		* @see		CommandQueue::queue
 		* @see		CommandQueue::queue
 		*/
 		*/
-	CM_EXPORT void queueCommand(boost::function<void()> commandCallback, bool blockUntilComplete = false);
+	CM_EXPORT void queueCommand(std::function<void()> commandCallback, bool blockUntilComplete = false);
 
 
 	/**
 	/**
 	 * @brief	Called once every frame.
 	 * @brief	Called once every frame.

+ 36 - 34
CamelotCore/Include/CmCoreThreadAccessor.h

@@ -40,115 +40,115 @@ namespace CamelotFramework
 		/** @copydoc RenderSystem::disableTextureUnit() */
 		/** @copydoc RenderSystem::disableTextureUnit() */
 		void disableTextureUnit(GpuProgramType gptype, UINT16 texUnit)
 		void disableTextureUnit(GpuProgramType gptype, UINT16 texUnit)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::disableTextureUnit, RenderSystem::instancePtr(), gptype, texUnit));
+			mCommandQueue->queue(std::bind(&RenderSystem::disableTextureUnit, RenderSystem::instancePtr(), gptype, texUnit));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::setTexture() */
 		/** @copydoc RenderSystem::setTexture() */
 		void setTexture(GpuProgramType gptype, UINT16 unit, bool enabled, const TexturePtr &texPtr)
 		void setTexture(GpuProgramType gptype, UINT16 unit, bool enabled, const TexturePtr &texPtr)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::setTexture, RenderSystem::instancePtr(), gptype, unit, enabled, texPtr));
+			mCommandQueue->queue(std::bind(&RenderSystem::setTexture, RenderSystem::instancePtr(), gptype, unit, enabled, texPtr));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::setSamplerState() */
 		/** @copydoc RenderSystem::setSamplerState() */
 		void setSamplerState(GpuProgramType gptype, UINT16 texUnit, const SamplerStatePtr& samplerState)
 		void setSamplerState(GpuProgramType gptype, UINT16 texUnit, const SamplerStatePtr& samplerState)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::setSamplerState, RenderSystem::instancePtr(), gptype, texUnit, samplerState));
+			mCommandQueue->queue(std::bind(&RenderSystem::setSamplerState, RenderSystem::instancePtr(), gptype, texUnit, samplerState));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::setBlendState() */
 		/** @copydoc RenderSystem::setBlendState() */
 		void setBlendState(const BlendStatePtr& blendState)
 		void setBlendState(const BlendStatePtr& blendState)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::setBlendState, RenderSystem::instancePtr(), blendState));
+			mCommandQueue->queue(std::bind(&RenderSystem::setBlendState, RenderSystem::instancePtr(), blendState));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::setRasterizerState() */
 		/** @copydoc RenderSystem::setRasterizerState() */
 		void setRasterizerState(const RasterizerStatePtr& rasterizerState)
 		void setRasterizerState(const RasterizerStatePtr& rasterizerState)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::setRasterizerState, RenderSystem::instancePtr(), rasterizerState));
+			mCommandQueue->queue(std::bind(&RenderSystem::setRasterizerState, RenderSystem::instancePtr(), rasterizerState));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::setRasterizerState() */
 		/** @copydoc RenderSystem::setRasterizerState() */
 		void setDepthStencilState(const DepthStencilStatePtr& depthStencilState, UINT32 stencilRefValue)
 		void setDepthStencilState(const DepthStencilStatePtr& depthStencilState, UINT32 stencilRefValue)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::setDepthStencilState, RenderSystem::instancePtr(), depthStencilState, stencilRefValue));
+			mCommandQueue->queue(std::bind(&RenderSystem::setDepthStencilState, RenderSystem::instancePtr(), depthStencilState, stencilRefValue));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::setViewport() */
 		/** @copydoc RenderSystem::setViewport() */
 		void setViewport(const ViewportPtr& vp)
 		void setViewport(const ViewportPtr& vp)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::setViewport, RenderSystem::instancePtr(), vp));
+			mCommandQueue->queue(std::bind(&RenderSystem::setViewport, RenderSystem::instancePtr(), vp));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::setDrawOperation() */
 		/** @copydoc RenderSystem::setDrawOperation() */
 		void setDrawOperation(DrawOperationType op)
 		void setDrawOperation(DrawOperationType op)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::setDrawOperation, RenderSystem::instancePtr(), op));
+			mCommandQueue->queue(std::bind(&RenderSystem::setDrawOperation, RenderSystem::instancePtr(), op));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::setClipPlanes() */
 		/** @copydoc RenderSystem::setClipPlanes() */
 		void setClipPlanes(const PlaneList& clipPlanes)
 		void setClipPlanes(const PlaneList& clipPlanes)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::setClipPlanes, RenderSystem::instancePtr(), clipPlanes));
+			mCommandQueue->queue(std::bind(&RenderSystem::setClipPlanes, RenderSystem::instancePtr(), clipPlanes));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::addClipPlane(const Plane&) */
 		/** @copydoc RenderSystem::addClipPlane(const Plane&) */
 		void addClipPlane(const Plane& p)
 		void addClipPlane(const Plane& p)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::addClipPlane, RenderSystem::instancePtr(), p));
+			mCommandQueue->queue(std::bind(&RenderSystem::addClipPlane, RenderSystem::instancePtr(), p));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::addClipPlane(float, float, float, float) */
 		/** @copydoc RenderSystem::addClipPlane(float, float, float, float) */
 		void addClipPlane(float A, float B, float C, float D)
 		void addClipPlane(float A, float B, float C, float D)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::addClipPlane, RenderSystem::instancePtr(), A, B, C, D));
+			mCommandQueue->queue(std::bind(&RenderSystem::addClipPlane, RenderSystem::instancePtr(), A, B, C, D));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::resetClipPlanes() */
 		/** @copydoc RenderSystem::resetClipPlanes() */
 		void resetClipPlanes()
 		void resetClipPlanes()
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::resetClipPlanes, RenderSystem::instancePtr()));
+			mCommandQueue->queue(std::bind(&RenderSystem::resetClipPlanes, RenderSystem::instancePtr()));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::setScissorTest() */
 		/** @copydoc RenderSystem::setScissorTest() */
 		void setScissorTest(UINT32 left = 0, UINT32 top = 0, UINT32 right = 800, UINT32 bottom = 600)
 		void setScissorTest(UINT32 left = 0, UINT32 top = 0, UINT32 right = 800, UINT32 bottom = 600)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::setScissorRect, RenderSystem::instancePtr(), left, top, right, bottom));
+			mCommandQueue->queue(std::bind(&RenderSystem::setScissorRect, RenderSystem::instancePtr(), left, top, right, bottom));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::setRenderTarget() */
 		/** @copydoc RenderSystem::setRenderTarget() */
 		void setRenderTarget(RenderTargetPtr target)
 		void setRenderTarget(RenderTargetPtr target)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::setRenderTarget, RenderSystem::instancePtr(), target));
+			mCommandQueue->queue(std::bind(&RenderSystem::setRenderTarget, RenderSystem::instancePtr(), target));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::bindGpuProgram() */
 		/** @copydoc RenderSystem::bindGpuProgram() */
 		void bindGpuProgram(HGpuProgram prg)
 		void bindGpuProgram(HGpuProgram prg)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::bindGpuProgram, RenderSystem::instancePtr(), prg));
+			mCommandQueue->queue(std::bind(&RenderSystem::bindGpuProgram, RenderSystem::instancePtr(), prg));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::unbindGpuProgram() */
 		/** @copydoc RenderSystem::unbindGpuProgram() */
 		void unbindGpuProgram(GpuProgramType gptype)
 		void unbindGpuProgram(GpuProgramType gptype)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::unbindGpuProgram, RenderSystem::instancePtr(), gptype));
+			mCommandQueue->queue(std::bind(&RenderSystem::unbindGpuProgram, RenderSystem::instancePtr(), gptype));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::bindGpuParams() */
 		/** @copydoc RenderSystem::bindGpuParams() */
 		void bindGpuParams(GpuProgramType gptype, const GpuParamsPtr& params)
 		void bindGpuParams(GpuProgramType gptype, const GpuParamsPtr& params)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::bindGpuParams, RenderSystem::instancePtr(), gptype, BindableGpuParams(params, gCoreThread().getFrameAlloc())));
+			mCommandQueue->queue(std::bind(&RenderSystem::bindGpuParams, RenderSystem::instancePtr(), gptype, BindableGpuParams(params, gCoreThread().getFrameAlloc())));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::beginFrame() */
 		/** @copydoc RenderSystem::beginFrame() */
 		void beginRender(void)
 		void beginRender(void)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::beginFrame, RenderSystem::instancePtr()));
+			mCommandQueue->queue(std::bind(&RenderSystem::beginFrame, RenderSystem::instancePtr()));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::endFrame() */
 		/** @copydoc RenderSystem::endFrame() */
 		void endRender(void)
 		void endRender(void)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::endFrame, RenderSystem::instancePtr()));
+			mCommandQueue->queue(std::bind(&RenderSystem::endFrame, RenderSystem::instancePtr()));
 		}
 		}
 
 
 		/**
 		/**
@@ -156,7 +156,7 @@ namespace CamelotFramework
 		 */
 		 */
 		void clearRenderTarget(UINT32 buffers, const Color& color = Color::Black, float depth = 1.0f, UINT16 stencil = 0)
 		void clearRenderTarget(UINT32 buffers, const Color& color = Color::Black, float depth = 1.0f, UINT16 stencil = 0)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::clearRenderTarget, RenderSystem::instancePtr(), buffers, color, depth, stencil));
+			mCommandQueue->queue(std::bind(&RenderSystem::clearRenderTarget, RenderSystem::instancePtr(), buffers, color, depth, stencil));
 		}
 		}
 
 
 		/**
 		/**
@@ -164,31 +164,31 @@ namespace CamelotFramework
 		 */
 		 */
 		void clearViewport(UINT32 buffers, const Color& color = Color::Black, float depth = 1.0f, UINT16 stencil = 0)
 		void clearViewport(UINT32 buffers, const Color& color = Color::Black, float depth = 1.0f, UINT16 stencil = 0)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::clearViewport, RenderSystem::instancePtr(), buffers, color, depth, stencil));
+			mCommandQueue->queue(std::bind(&RenderSystem::clearViewport, RenderSystem::instancePtr(), buffers, color, depth, stencil));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::swapBuffers() */
 		/** @copydoc RenderSystem::swapBuffers() */
 		void swapBuffers(RenderTargetPtr target)
 		void swapBuffers(RenderTargetPtr target)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::swapBuffers, RenderSystem::instancePtr(), target));
+			mCommandQueue->queue(std::bind(&RenderSystem::swapBuffers, RenderSystem::instancePtr(), target));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::render() */
 		/** @copydoc RenderSystem::render() */
 		void render(const MeshBasePtr& mesh, UINT32 indexOffset = 0, UINT32 indexCount = 0, bool useIndices = true, DrawOperationType drawOp = DOT_TRIANGLE_LIST)
 		void render(const MeshBasePtr& mesh, UINT32 indexOffset = 0, UINT32 indexCount = 0, bool useIndices = true, DrawOperationType drawOp = DOT_TRIANGLE_LIST)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::render, RenderSystem::instancePtr(), mesh, indexOffset, indexCount, useIndices, drawOp));
+			mCommandQueue->queue(std::bind(&RenderSystem::render, RenderSystem::instancePtr(), mesh, indexOffset, indexCount, useIndices, drawOp));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::draw() */
 		/** @copydoc RenderSystem::draw() */
 		void draw(UINT32 vertexOffset, UINT32 vertexCount)
 		void draw(UINT32 vertexOffset, UINT32 vertexCount)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::draw, RenderSystem::instancePtr(), vertexOffset, vertexCount));
+			mCommandQueue->queue(std::bind(&RenderSystem::draw, RenderSystem::instancePtr(), vertexOffset, vertexCount));
 		}
 		}
 
 
 		/** @copydoc RenderSystem::drawIndexed() */
 		/** @copydoc RenderSystem::drawIndexed() */
 		void drawIndexed(UINT32 startIndex, UINT32 indexCount, UINT32 vertexOffset, UINT32 vertexCount)
 		void drawIndexed(UINT32 startIndex, UINT32 indexCount, UINT32 vertexOffset, UINT32 vertexCount)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderSystem::drawIndexed, RenderSystem::instancePtr(), startIndex, indexCount, vertexOffset, vertexCount));
+			mCommandQueue->queue(std::bind(&RenderSystem::drawIndexed, RenderSystem::instancePtr(), startIndex, indexCount, vertexOffset, vertexCount));
 		}
 		}
 
 
 		/**
 		/**
@@ -208,7 +208,8 @@ namespace CamelotFramework
 		{
 		{
 			data->lock();
 			data->lock();
 
 
-			return mCommandQueue->queueReturn(boost::bind(&RenderSystem::writeSubresource, RenderSystem::instancePtr(), resource, subresourceIdx, data, discardEntireBuffer, _1));
+			return mCommandQueue->queueReturn(std::bind(&RenderSystem::writeSubresource, RenderSystem::instancePtr(), resource, 
+				subresourceIdx, data, discardEntireBuffer, std::placeholders::_1));
 		}
 		}
 
 
 		/**
 		/**
@@ -222,33 +223,34 @@ namespace CamelotFramework
 		{
 		{
 			data->lock();
 			data->lock();
 
 
-			return mCommandQueue->queueReturn(boost::bind(&RenderSystem::readSubresource, RenderSystem::instancePtr(), resource, subresourceIdx, data, _1));
+			return mCommandQueue->queueReturn(std::bind(&RenderSystem::readSubresource, RenderSystem::instancePtr(), 
+				resource, subresourceIdx, data, std::placeholders::_1));
 		}
 		}
 
 
 		void resizeWindow(RenderWindowPtr& renderWindow, UINT32 width, UINT32 height)
 		void resizeWindow(RenderWindowPtr& renderWindow, UINT32 width, UINT32 height)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderWindow::resize, renderWindow.get(), width, height));
+			mCommandQueue->queue(std::bind(&RenderWindow::resize, renderWindow.get(), width, height));
 		}
 		}
 
 
 		void moveWindow(RenderWindowPtr& renderWindow, INT32 left, INT32 top)
 		void moveWindow(RenderWindowPtr& renderWindow, INT32 left, INT32 top)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderWindow::move, renderWindow.get(), left, top));
+			mCommandQueue->queue(std::bind(&RenderWindow::move, renderWindow.get(), left, top));
 		}
 		}
 
 
 		void hideWindow(RenderWindowPtr& renderWindow)
 		void hideWindow(RenderWindowPtr& renderWindow)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderWindow::setHidden, renderWindow.get(), true));
+			mCommandQueue->queue(std::bind(&RenderWindow::setHidden, renderWindow.get(), true));
 		}
 		}
 
 
 		void showWindow(RenderWindowPtr& renderWindow)
 		void showWindow(RenderWindowPtr& renderWindow)
 		{
 		{
-			mCommandQueue->queue(boost::bind(&RenderWindow::setHidden, renderWindow.get(), false));
+			mCommandQueue->queue(std::bind(&RenderWindow::setHidden, renderWindow.get(), false));
 		}
 		}
 
 
 		/**
 		/**
 		* @brief	Queues a new generic command that will be added to the command queue.
 		* @brief	Queues a new generic command that will be added to the command queue.
 		*/
 		*/
-		AsyncOp queueReturnCommand(boost::function<void(AsyncOp&)> commandCallback)
+		AsyncOp queueReturnCommand(std::function<void(AsyncOp&)> commandCallback)
 		{
 		{
 			return mCommandQueue->queueReturn(commandCallback);
 			return mCommandQueue->queueReturn(commandCallback);
 		}
 		}
@@ -256,7 +258,7 @@ namespace CamelotFramework
 		/**
 		/**
 		* @brief	Queues a new generic command that will be added to the command queue.
 		* @brief	Queues a new generic command that will be added to the command queue.
 		*/
 		*/
-		void queueCommand(boost::function<void()> commandCallback)
+		void queueCommand(std::function<void()> commandCallback)
 		{
 		{
 			mCommandQueue->queue(commandCallback);
 			mCommandQueue->queue(commandCallback);
 		}
 		}
@@ -269,7 +271,7 @@ namespace CamelotFramework
 		{
 		{
 			Queue<QueuedCommand>::type* commands = mCommandQueue->flush();
 			Queue<QueuedCommand>::type* commands = mCommandQueue->flush();
 
 
-			gCoreThread().queueCommand(boost::bind(&CommandQueueBase::playback, mCommandQueue, commands), blockUntilComplete);
+			gCoreThread().queueCommand(std::bind(&CommandQueueBase::playback, mCommandQueue, commands), blockUntilComplete);
 		}
 		}
 
 
 		/**
 		/**

+ 4 - 2
CamelotCore/Include/CmTextureRTTI.h

@@ -41,7 +41,8 @@ namespace CamelotFramework
 			// We want the data right away so queue directly to main core thread queue and block until we get it
 			// We want the data right away so queue directly to main core thread queue and block until we get it
 			pixelData->lock();
 			pixelData->lock();
 			gCoreThread().queueReturnCommand(
 			gCoreThread().queueReturnCommand(
-				boost::bind(&RenderSystem::readSubresource, RenderSystem::instancePtr(), sharedTexPtr, subresourceIdx, std::static_pointer_cast<GpuResourceData>(pixelData), _1), true);
+				std::bind(&RenderSystem::readSubresource, RenderSystem::instancePtr(), sharedTexPtr, subresourceIdx, 
+				std::static_pointer_cast<GpuResourceData>(pixelData), std::placeholders::_1), true);
 
 
 			return pixelData;
 			return pixelData;
 		}
 		}
@@ -115,7 +116,8 @@ namespace CamelotFramework
 				GpuResourcePtr sharedTexPtr = std::static_pointer_cast<GpuResource>(texture->getThisPtr());
 				GpuResourcePtr sharedTexPtr = std::static_pointer_cast<GpuResource>(texture->getThisPtr());
 
 
 				pixelData->at(i)->lock();
 				pixelData->at(i)->lock();
-				gCoreThread().queueReturnCommand(boost::bind(&RenderSystem::writeSubresource, RenderSystem::instancePtr(), sharedTexPtr, subresourceIdx, pixelData->at(i), false, _1));
+				gCoreThread().queueReturnCommand(std::bind(&RenderSystem::writeSubresource, RenderSystem::instancePtr(), 
+					sharedTexPtr, subresourceIdx, pixelData->at(i), false, std::placeholders::_1));
 			}
 			}
 
 
 			cm_delete<PoolAlloc>(pixelData);
 			cm_delete<PoolAlloc>(pixelData);

+ 4 - 4
CamelotCore/Source/CmApplication.cpp

@@ -104,8 +104,8 @@ namespace CamelotFramework
 
 
 			PROFILE_CALL(gSceneManager().update(), "SceneManager");
 			PROFILE_CALL(gSceneManager().update(), "SceneManager");
 
 
-			gCoreThread().queueCommand(boost::bind(&Application::beginCoreProfiling, this));
-			gCoreThread().queueCommand(boost::bind(&QueryManager::update, QueryManager::instancePtr()));
+			gCoreThread().queueCommand(std::bind(&Application::beginCoreProfiling, this));
+			gCoreThread().queueCommand(std::bind(&QueryManager::update, QueryManager::instancePtr()));
 
 
 			if(!mainLoopCallback.empty())
 			if(!mainLoopCallback.empty())
 				mainLoopCallback();
 				mainLoopCallback();
@@ -127,8 +127,8 @@ namespace CamelotFramework
 
 
 			gCoreThread().queueCommand(&Platform::coreUpdate);
 			gCoreThread().queueCommand(&Platform::coreUpdate);
 			gCoreThread().submitAccessors();
 			gCoreThread().submitAccessors();
-			gCoreThread().queueCommand(boost::bind(&Application::endCoreProfiling, this));
-			gCoreThread().queueCommand(boost::bind(&Application::frameRenderingFinishedCallback, this));
+			gCoreThread().queueCommand(std::bind(&Application::endCoreProfiling, this));
+			gCoreThread().queueCommand(std::bind(&Application::frameRenderingFinishedCallback, this));
 
 
 			gTime().update();
 			gTime().update();
 
 

+ 5 - 5
CamelotCore/Source/CmCommandQueue.cpp

@@ -38,7 +38,7 @@ namespace CamelotFramework
 		}
 		}
 	}
 	}
 
 
-	AsyncOp CommandQueueBase::queueReturn(boost::function<void(AsyncOp&)> commandCallback, bool _notifyWhenComplete, UINT32 _callbackId)
+	AsyncOp CommandQueueBase::queueReturn(std::function<void(AsyncOp&)> commandCallback, bool _notifyWhenComplete, UINT32 _callbackId)
 	{
 	{
 #if CM_DEBUG_MODE
 #if CM_DEBUG_MODE
 		breakIfNeeded(mCommandQueueIdx, mMaxDebugIdx);
 		breakIfNeeded(mCommandQueueIdx, mMaxDebugIdx);
@@ -58,7 +58,7 @@ namespace CamelotFramework
 		return *newCommand.asyncOp;
 		return *newCommand.asyncOp;
 	}
 	}
 
 
-	void CommandQueueBase::queue(boost::function<void()> commandCallback, bool _notifyWhenComplete, UINT32 _callbackId)
+	void CommandQueueBase::queue(std::function<void()> commandCallback, bool _notifyWhenComplete, UINT32 _callbackId)
 	{
 	{
 #if CM_DEBUG_MODE
 #if CM_DEBUG_MODE
 		breakIfNeeded(mCommandQueueIdx, mMaxDebugIdx);
 		breakIfNeeded(mCommandQueueIdx, mMaxDebugIdx);
@@ -93,7 +93,7 @@ namespace CamelotFramework
 		return oldCommands;
 		return oldCommands;
 	}
 	}
 
 
-	void CommandQueueBase::playback(CamelotFramework::Queue<QueuedCommand>::type* commands, boost::function<void(UINT32)> notifyCallback)
+	void CommandQueueBase::playbackWithNotify(CamelotFramework::Queue<QueuedCommand>::type* commands, std::function<void(UINT32)> notifyCallback)
 	{
 	{
 		THROW_IF_NOT_CORE_THREAD;
 		THROW_IF_NOT_CORE_THREAD;
 
 
@@ -121,7 +121,7 @@ namespace CamelotFramework
 				command.callback();
 				command.callback();
 			}
 			}
 
 
-			if(command.notifyWhenComplete && !notifyCallback.empty())
+			if(command.notifyWhenComplete && notifyCallback != nullptr)
 			{
 			{
 				notifyCallback(command.callbackId);
 				notifyCallback(command.callbackId);
 			}
 			}
@@ -134,7 +134,7 @@ namespace CamelotFramework
 
 
 	void CommandQueueBase::playback(CamelotFramework::Queue<QueuedCommand>::type* commands)
 	void CommandQueueBase::playback(CamelotFramework::Queue<QueuedCommand>::type* commands)
 	{
 	{
-		playback(commands, boost::function<void(UINT32)>());
+		playbackWithNotify(commands, std::function<void(UINT32)>());
 	}
 	}
 
 
 	void CommandQueueBase::cancelAll()
 	void CommandQueueBase::cancelAll()

+ 12 - 10
CamelotCore/Source/CmCoreObject.cpp

@@ -4,6 +4,8 @@
 #include "CmCoreThreadAccessor.h"
 #include "CmCoreThreadAccessor.h"
 #include "CmDebug.h"
 #include "CmDebug.h"
 
 
+using namespace std::placeholders;
+
 namespace CamelotFramework
 namespace CamelotFramework
 {
 {
 	CM_STATIC_THREAD_SYNCHRONISER_CLASS_INSTANCE(mCoreGpuObjectLoadedCondition, CoreObject)
 	CM_STATIC_THREAD_SYNCHRONISER_CLASS_INSTANCE(mCoreGpuObjectLoadedCondition, CoreObject)
@@ -158,43 +160,43 @@ namespace CamelotFramework
 #endif
 #endif
 	}
 	}
 
 
-	void CoreObject::queueGpuCommand(std::shared_ptr<CoreObject>& obj, boost::function<void()> func)
+	void CoreObject::queueGpuCommand(std::shared_ptr<CoreObject>& obj, std::function<void()> func)
 	{
 	{
 		// We call another internal method and go through an additional layer of abstraction in order to keep an active
 		// We call another internal method and go through an additional layer of abstraction in order to keep an active
 		// reference to the obj (saved in the bound function).
 		// reference to the obj (saved in the bound function).
 		// We could have called the function directly using "this" pointer but then we couldn't have used a shared_ptr for the object,
 		// We could have called the function directly using "this" pointer but then we couldn't have used a shared_ptr for the object,
 		// in which case there is a possibility that the object would be released and deleted while still being in the command queue.
 		// in which case there is a possibility that the object would be released and deleted while still being in the command queue.
-		gCoreAccessor().queueCommand(boost::bind(&CoreObject::executeGpuCommand, obj, func));
+		gCoreAccessor().queueCommand(std::bind(&CoreObject::executeGpuCommand, obj, func));
 	}
 	}
 
 
-	AsyncOp CoreObject::queueReturnGpuCommand(std::shared_ptr<CoreObject>& obj, boost::function<void(AsyncOp&)> func)
+	AsyncOp CoreObject::queueReturnGpuCommand(std::shared_ptr<CoreObject>& obj, std::function<void(AsyncOp&)> func)
 	{
 	{
 		// See queueGpuCommand
 		// See queueGpuCommand
-		return gCoreAccessor().queueReturnCommand(boost::bind(&CoreObject::executeReturnGpuCommand, obj, func, _1));
+		return gCoreAccessor().queueReturnCommand(std::bind(&CoreObject::executeReturnGpuCommand, obj, func, _1));
 	}
 	}
 
 
 	void CoreObject::queueInitializeGpuCommand(std::shared_ptr<CoreObject>& obj)
 	void CoreObject::queueInitializeGpuCommand(std::shared_ptr<CoreObject>& obj)
 	{
 	{
-		boost::function<void()> func = boost::bind(&CoreObject::initialize_internal, obj.get());
+		std::function<void()> func = std::bind(&CoreObject::initialize_internal, obj.get());
 
 
-		CoreThread::instance().queueCommand(boost::bind(&CoreObject::executeGpuCommand, obj, func));
+		CoreThread::instance().queueCommand(std::bind(&CoreObject::executeGpuCommand, obj, func));
 	}
 	}
 
 
 	void CoreObject::queueDestroyGpuCommand(std::shared_ptr<CoreObject>& obj)
 	void CoreObject::queueDestroyGpuCommand(std::shared_ptr<CoreObject>& obj)
 	{
 	{
-		boost::function<void()> func = boost::bind(&CoreObject::destroy_internal, obj.get());
+		std::function<void()> func = std::bind(&CoreObject::destroy_internal, obj.get());
 
 
-		gCoreAccessor().queueCommand(boost::bind(&CoreObject::executeGpuCommand, obj, func));
+		gCoreAccessor().queueCommand(std::bind(&CoreObject::executeGpuCommand, obj, func));
 	}
 	}
 
 
-	void CoreObject::executeGpuCommand(std::shared_ptr<CoreObject>& obj, boost::function<void()> func)
+	void CoreObject::executeGpuCommand(std::shared_ptr<CoreObject>& obj, std::function<void()> func)
 	{
 	{
 		volatile std::shared_ptr<CoreObject> objParam = obj; // Makes sure obj isn't optimized out?
 		volatile std::shared_ptr<CoreObject> objParam = obj; // Makes sure obj isn't optimized out?
 
 
 		func();
 		func();
 	}
 	}
 
 
-	void CoreObject::executeReturnGpuCommand(std::shared_ptr<CoreObject>& obj, boost::function<void(AsyncOp&)> func, AsyncOp& op)
+	void CoreObject::executeReturnGpuCommand(std::shared_ptr<CoreObject>& obj, std::function<void(AsyncOp&)> func, AsyncOp& op)
 	{
 	{
 		volatile std::shared_ptr<CoreObject> objParam = obj; // Makes sure obj isn't optimized out?
 		volatile std::shared_ptr<CoreObject> objParam = obj; // Makes sure obj isn't optimized out?
 
 

+ 5 - 3
CamelotCore/Source/CmCoreThread.cpp

@@ -1,5 +1,7 @@
 #include "CmCoreThread.h"
 #include "CmCoreThread.h"
 
 
+using namespace std::placeholders;
+
 namespace CamelotFramework
 namespace CamelotFramework
 {
 {
 	CM_THREADLOCAL CoreThread::AccessorContainer* CoreThread::mAccessor = nullptr;
 	CM_THREADLOCAL CoreThread::AccessorContainer* CoreThread::mAccessor = nullptr;
@@ -106,7 +108,7 @@ namespace CamelotFramework
 			}
 			}
 
 
 			// Play commands
 			// Play commands
-			mCommandQueue->playback(commands, boost::bind(&CoreThread::commandCompletedNotify, this, _1)); 
+			mCommandQueue->playbackWithNotify(commands, std::bind(&CoreThread::commandCompletedNotify, this, _1)); 
 		}
 		}
 
 
 		cm_delete(mSyncedCoreAccessor);
 		cm_delete(mSyncedCoreAccessor);
@@ -178,7 +180,7 @@ namespace CamelotFramework
 		mSyncedCoreAccessor->submitToCoreThread(blockUntilComplete);
 		mSyncedCoreAccessor->submitToCoreThread(blockUntilComplete);
 	}
 	}
 
 
-	AsyncOp CoreThread::queueReturnCommand(boost::function<void(AsyncOp&)> commandCallback, bool blockUntilComplete)
+	AsyncOp CoreThread::queueReturnCommand(std::function<void(AsyncOp&)> commandCallback, bool blockUntilComplete)
 	{
 	{
 		AsyncOp op;
 		AsyncOp op;
 
 
@@ -209,7 +211,7 @@ namespace CamelotFramework
 		return op;
 		return op;
 	}
 	}
 
 
-	void CoreThread::queueCommand(boost::function<void()> commandCallback, bool blockUntilComplete)
+	void CoreThread::queueCommand(std::function<void()> commandCallback, bool blockUntilComplete)
 	{
 	{
 		if(CM_THREAD_CURRENT_ID == getCoreThreadId())
 		if(CM_THREAD_CURRENT_ID == getCoreThreadId())
 		{
 		{

+ 11 - 11
CamelotCore/Source/CmInput.cpp

@@ -5,7 +5,7 @@
 #include "CmDebug.h"
 #include "CmDebug.h"
 #include "CmRenderWindowManager.h"
 #include "CmRenderWindowManager.h"
 
 
-#include <boost/bind.hpp>
+using namespace std::placeholders;
 
 
 namespace CamelotFramework
 namespace CamelotFramework
 {
 {
@@ -31,14 +31,14 @@ namespace CamelotFramework
 
 
 		mOSInputHandler = cm_shared_ptr<OSInputHandler>();
 		mOSInputHandler = cm_shared_ptr<OSInputHandler>();
 
 
-		mOSInputHandler->onCharInput.connect(boost::bind(&Input::charInput, this, _1));
-		mOSInputHandler->onCursorMoved.connect(boost::bind(&Input::cursorMoved, this, _1));
-		mOSInputHandler->onCursorPressed.connect(boost::bind(&Input::cursorPressed, this, _1));
-		mOSInputHandler->onCursorReleased.connect(boost::bind(&Input::cursorReleased, this, _1));
-		mOSInputHandler->onDoubleClick.connect(boost::bind(&Input::cursorDoubleClick, this, _1));
-		mOSInputHandler->onInputCommand.connect(boost::bind(&Input::inputCommandEntered, this, _1));
+		mOSInputHandler->onCharInput.connect(std::bind(&Input::charInput, this, _1));
+		mOSInputHandler->onCursorMoved.connect(std::bind(&Input::cursorMoved, this, _1));
+		mOSInputHandler->onCursorPressed.connect(std::bind(&Input::cursorPressed, this, _1));
+		mOSInputHandler->onCursorReleased.connect(std::bind(&Input::cursorReleased, this, _1));
+		mOSInputHandler->onDoubleClick.connect(std::bind(&Input::cursorDoubleClick, this, _1));
+		mOSInputHandler->onInputCommand.connect(std::bind(&Input::inputCommandEntered, this, _1));
 
 
-		RenderWindowManager::instance().onFocusGained.connect(boost::bind(&Input::inputWindowChanged, this, _1));
+		RenderWindowManager::instance().onFocusGained.connect(std::bind(&Input::inputWindowChanged, this, _1));
 	}
 	}
 
 
 	Input::~Input()
 	Input::~Input()
@@ -56,10 +56,10 @@ namespace CamelotFramework
 
 
 			if(mRawInputHandler != nullptr)
 			if(mRawInputHandler != nullptr)
 			{
 			{
-				mRawInputHandler->onButtonDown.connect(boost::bind(&Input::buttonDown, this, _1, _2));
-				mRawInputHandler->onButtonUp.connect(boost::bind(&Input::buttonUp, this, _1, _2));
+				mRawInputHandler->onButtonDown.connect(std::bind(&Input::buttonDown, this, _1, _2));
+				mRawInputHandler->onButtonUp.connect(std::bind(&Input::buttonUp, this, _1, _2));
 
 
-				mRawInputHandler->onAxisMoved.connect(boost::bind(&Input::axisMoved, this, _1, _2));
+				mRawInputHandler->onAxisMoved.connect(std::bind(&Input::axisMoved, this, _1, _2));
 			}
 			}
 		}
 		}
 	}
 	}

+ 3 - 3
CamelotCore/Source/CmMeshHeap.cpp

@@ -76,7 +76,7 @@ namespace CamelotFramework
 
 
 		mMeshes[meshIdx] = transientMeshPtr;
 		mMeshes[meshIdx] = transientMeshPtr;
 
 
-		queueGpuCommand(getThisPtr(), boost::bind(&MeshHeap::allocInternal, this, meshIdx, meshData));
+		queueGpuCommand(getThisPtr(), std::bind(&MeshHeap::allocInternal, this, meshIdx, meshData));
 
 
 		return transientMeshPtr;
 		return transientMeshPtr;
 	}
 	}
@@ -90,7 +90,7 @@ namespace CamelotFramework
 		mesh->markAsDestroyed();
 		mesh->markAsDestroyed();
 		mMeshes.erase(iterFind);
 		mMeshes.erase(iterFind);
 
 
-		queueGpuCommand(getThisPtr(), boost::bind(&MeshHeap::deallocInternal, this, mesh->mId));
+		queueGpuCommand(getThisPtr(), std::bind(&MeshHeap::deallocInternal, this, mesh->mId));
 	}
 	}
 
 
 	void MeshHeap::allocInternal(UINT32 meshId, const MeshDataPtr& meshData)
 	void MeshHeap::allocInternal(UINT32 meshId, const MeshDataPtr& meshData)
@@ -555,7 +555,7 @@ namespace CamelotFramework
 		QueryData& queryData = mEventQueries[allocData.eventQueryIdx];
 		QueryData& queryData = mEventQueries[allocData.eventQueryIdx];
 		queryData.queryId = mNextQueryId++;
 		queryData.queryId = mNextQueryId++;
 		queryData.query->onTriggered.disconnect_all_slots();
 		queryData.query->onTriggered.disconnect_all_slots();
-		queryData.query->onTriggered.connect(boost::bind(&MeshHeap::queryTriggered, this, meshId, queryData.queryId));
+		queryData.query->onTriggered.connect(std::bind(&MeshHeap::queryTriggered, this, meshId, queryData.queryId));
 		queryData.query->begin();
 		queryData.query->begin();
 	}
 	}
 
 

+ 2 - 2
CamelotCore/Source/CmMeshRTTI.h

@@ -25,8 +25,8 @@ namespace CamelotFramework
 			GpuResourcePtr sharedMeshPtr = std::static_pointer_cast<GpuResource>(obj->getThisPtr());
 			GpuResourcePtr sharedMeshPtr = std::static_pointer_cast<GpuResource>(obj->getThisPtr());
 
 
 			meshData->lock();
 			meshData->lock();
-			gCoreThread().queueReturnCommand(boost::bind(&RenderSystem::readSubresource, RenderSystem::instancePtr(), 
-				sharedMeshPtr, 0, std::static_pointer_cast<GpuResourceData>(meshData), _1), true);
+			gCoreThread().queueReturnCommand(std::bind(&RenderSystem::readSubresource, RenderSystem::instancePtr(), 
+				sharedMeshPtr, 0, std::static_pointer_cast<GpuResourceData>(meshData), std::placeholders::_1), true);
 
 
 			return meshData;
 			return meshData;
 		}
 		}

+ 10 - 8
CamelotCore/Source/CmOSInputHandler.cpp

@@ -3,19 +3,21 @@
 #include "CmInput.h"
 #include "CmInput.h"
 #include "CmMath.h"
 #include "CmMath.h"
 
 
+using namespace std::placeholders;
+
 namespace CamelotFramework
 namespace CamelotFramework
 {
 {
 	OSInputHandler::OSInputHandler()
 	OSInputHandler::OSInputHandler()
 		:mMouseScroll(0.0f)
 		:mMouseScroll(0.0f)
 	{
 	{
-		mCharInputConn = Platform::onCharInput.connect(boost::bind(&OSInputHandler::charInput, this, _1));
-		mCursorMovedConn = Platform::onCursorMoved.connect(boost::bind(&OSInputHandler::cursorMoved, this, _1, _2));
-		mCursorPressedConn = Platform::onCursorButtonPressed.connect(boost::bind(&OSInputHandler::cursorPressed, this, _1, _2, _3));
-		mCursorReleasedConn = Platform::onCursorButtonReleased.connect(boost::bind(&OSInputHandler::cursorReleased, this, _1, _2, _3));
-		mCursorDoubleClickConn = Platform::onCursorDoubleClick.connect(boost::bind(&OSInputHandler::cursorDoubleClick, this, _1, _2));
-		mInputCommandConn = Platform::onInputCommand.connect(boost::bind(&OSInputHandler::inputCommandEntered, this, _1));
-
-		mMouseWheelScrolledConn  = Platform::onMouseWheelScrolled.connect(boost::bind(&OSInputHandler::mouseWheelScrolled, this, _1));
+		mCharInputConn = Platform::onCharInput.connect(std::bind(&OSInputHandler::charInput, this, _1));
+		mCursorMovedConn = Platform::onCursorMoved.connect(std::bind(&OSInputHandler::cursorMoved, this, _1, _2));
+		mCursorPressedConn = Platform::onCursorButtonPressed.connect(std::bind(&OSInputHandler::cursorPressed, this, _1, _2, _3));
+		mCursorReleasedConn = Platform::onCursorButtonReleased.connect(std::bind(&OSInputHandler::cursorReleased, this, _1, _2, _3));
+		mCursorDoubleClickConn = Platform::onCursorDoubleClick.connect(std::bind(&OSInputHandler::cursorDoubleClick, this, _1, _2));
+		mInputCommandConn = Platform::onInputCommand.connect(std::bind(&OSInputHandler::inputCommandEntered, this, _1));
+
+		mMouseWheelScrolledConn  = Platform::onMouseWheelScrolled.connect(std::bind(&OSInputHandler::mouseWheelScrolled, this, _1));
 	}
 	}
 
 
 	OSInputHandler::~OSInputHandler()
 	OSInputHandler::~OSInputHandler()

+ 4 - 4
CamelotCore/Source/CmRenderSystem.cpp

@@ -43,10 +43,10 @@ THE SOFTWARE.
 #include "CmGpuResource.h"
 #include "CmGpuResource.h"
 #include "CmCoreThread.h"
 #include "CmCoreThread.h"
 #include "CmMesh.h"
 #include "CmMesh.h"
-#include "boost/bind.hpp"
-
 #include "CmProfiler.h"
 #include "CmProfiler.h"
 
 
+using namespace std::placeholders;
+
 namespace CamelotFramework {
 namespace CamelotFramework {
 
 
     static const TexturePtr sNullTexPtr;
     static const TexturePtr sNullTexPtr;
@@ -74,7 +74,7 @@ namespace CamelotFramework {
 	{
 	{
 		mPrimaryWindowDesc = primaryWindowDesc;
 		mPrimaryWindowDesc = primaryWindowDesc;
 
 
-		AsyncOp op = gCoreThread().queueReturnCommand(boost::bind(&RenderSystem::initialize_internal, this, _1), true);
+		AsyncOp op = gCoreThread().queueReturnCommand(std::bind(&RenderSystem::initialize_internal, this, _1), true);
 
 
 		return op.getReturnValue<RenderWindowPtr>();
 		return op.getReturnValue<RenderWindowPtr>();
 	}
 	}
@@ -90,7 +90,7 @@ namespace CamelotFramework {
 
 
 	void RenderSystem::destroy()
 	void RenderSystem::destroy()
 	{
 	{
-		gCoreAccessor().queueCommand(boost::bind(&RenderSystem::destroy_internal, this));
+		gCoreAccessor().queueCommand(std::bind(&RenderSystem::destroy_internal, this));
 		gCoreThread().submitAccessors(true);
 		gCoreThread().submitAccessors(true);
 	}
 	}
 
 

+ 5 - 3
CamelotCore/Source/CmRenderWindowManager.cpp

@@ -1,14 +1,16 @@
 #include "CmRenderWindowManager.h"
 #include "CmRenderWindowManager.h"
 #include "CmPlatform.h"
 #include "CmPlatform.h"
 
 
+using namespace std::placeholders;
+
 namespace CamelotFramework
 namespace CamelotFramework
 {
 {
 	RenderWindowManager::RenderWindowManager()
 	RenderWindowManager::RenderWindowManager()
 		:mWindowInFocus(nullptr), mNewWindowInFocus(nullptr)
 		:mWindowInFocus(nullptr), mNewWindowInFocus(nullptr)
 	{
 	{
-		Platform::onWindowFocusReceived.connect(boost::bind(&RenderWindowManager::windowFocusReceived, this, _1));
-		Platform::onWindowFocusLost.connect(boost::bind(&RenderWindowManager::windowFocusLost, this, _1));
-		Platform::onWindowMovedOrResized.connect(boost::bind(&RenderWindowManager::windowMovedOrResized, this, _1));
+		Platform::onWindowFocusReceived.connect(std::bind(&RenderWindowManager::windowFocusReceived, this, _1));
+		Platform::onWindowFocusLost.connect(std::bind(&RenderWindowManager::windowFocusLost, this, _1));
+		Platform::onWindowMovedOrResized.connect(std::bind(&RenderWindowManager::windowMovedOrResized, this, _1));
 	}
 	}
 
 
 	RenderWindowPtr RenderWindowManager::create(RENDER_WINDOW_DESC& desc, RenderWindowPtr parentWindow)
 	RenderWindowPtr RenderWindowManager::create(RENDER_WINDOW_DESC& desc, RenderWindowPtr parentWindow)

+ 1 - 1
CamelotCore/Source/CmViewport.cpp

@@ -23,7 +23,7 @@ namespace CamelotFramework
 		if(target != nullptr)
 		if(target != nullptr)
 		{
 		{
 			// Note: RenderTarget resize will only get triggered for RenderWindows, RenderTextures are immutable
 			// Note: RenderTarget resize will only get triggered for RenderWindows, RenderTextures are immutable
-			mTargetResizedConn = target->onResized.connect(boost::bind(&Viewport::targetResized, this));
+			mTargetResizedConn = target->onResized.connect(std::bind(&Viewport::targetResized, this));
 		}
 		}
 
 
         updateArea();
         updateArea();

+ 1 - 1
CamelotCore/Source/CmWin32FolderMonitor.cpp

@@ -382,7 +382,7 @@ namespace CamelotFramework
 
 
 		if(mPimpl->mWorkerThread == nullptr)
 		if(mPimpl->mWorkerThread == nullptr)
 		{
 		{
-			CM_THREAD_CREATE(t, (boost::bind(&FolderMonitor::workerThreadMain, this)));
+			CM_THREAD_CREATE(t, (std::bind(&FolderMonitor::workerThreadMain, this)));
 			mPimpl->mWorkerThread = t;
 			mPimpl->mWorkerThread = t;
 
 
 			if(mPimpl->mWorkerThread == nullptr)
 			if(mPimpl->mWorkerThread == nullptr)

+ 6 - 6
CamelotD3D11RenderSystem/CamelotD3D11RenderSystem.vcxproj

@@ -122,7 +122,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -137,7 +137,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -154,7 +154,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -175,7 +175,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
@@ -196,7 +196,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -217,7 +217,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D11_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>

+ 6 - 6
CamelotD3D9Renderer/CamelotD3D9Renderer.vcxproj

@@ -123,7 +123,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -138,7 +138,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -155,7 +155,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -176,7 +176,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
@@ -197,7 +197,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -218,7 +218,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_RSD3D9_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>

+ 6 - 6
CamelotFBXImporter/CamelotFBXImporter.vcxproj

@@ -122,7 +122,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -137,7 +137,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -154,7 +154,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -175,7 +175,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
@@ -196,7 +196,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -217,7 +217,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FBX_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>

+ 6 - 6
CamelotFontImporter/CamelotTTFImporter.vcxproj

@@ -123,7 +123,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -137,7 +137,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -154,7 +154,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
     </ClCompile>
     </ClCompile>
@@ -174,7 +174,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
     </ClCompile>
     </ClCompile>
@@ -194,7 +194,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
     </ClCompile>
     </ClCompile>
@@ -214,7 +214,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FONT_EXPORTS;_WINDLL;USE_FREETYPE2_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
     </ClCompile>
     </ClCompile>

+ 4 - 2
CamelotFontImporter/Source/CmFontImporter.cpp

@@ -13,6 +13,8 @@
 #include <freetype/freetype.h>
 #include <freetype/freetype.h>
 #include FT_FREETYPE_H
 #include FT_FREETYPE_H
 
 
+using namespace std::placeholders;
+
 namespace CamelotFramework
 namespace CamelotFramework
 {
 {
 	FontImporter::FontImporter()
 	FontImporter::FontImporter()
@@ -281,13 +283,13 @@ namespace CamelotFramework
 					PixelUtil::bulkPixelConversion(*pixelData, *temp);
 					PixelUtil::bulkPixelConversion(*pixelData, *temp);
 
 
 					temp->lock();
 					temp->lock();
-					gCoreThread().queueReturnCommand(boost::bind(&RenderSystem::writeSubresource, 
+					gCoreThread().queueReturnCommand(std::bind(&RenderSystem::writeSubresource, 
 						RenderSystem::instancePtr(), newTex.getInternalPtr(), subresourceIdx, temp, false, _1));
 						RenderSystem::instancePtr(), newTex.getInternalPtr(), subresourceIdx, temp, false, _1));
 				}
 				}
 				else
 				else
 				{
 				{
 					pixelData->lock();
 					pixelData->lock();
-					gCoreThread().queueReturnCommand(boost::bind(&RenderSystem::writeSubresource, 
+					gCoreThread().queueReturnCommand(std::bind(&RenderSystem::writeSubresource, 
 						RenderSystem::instancePtr(), newTex.getInternalPtr(), subresourceIdx, pixelData, false, _1));
 						RenderSystem::instancePtr(), newTex.getInternalPtr(), subresourceIdx, pixelData, false, _1));
 				}
 				}
 
 

+ 6 - 6
CamelotFreeImgImporter/CamelotFreeImgImporter.vcxproj

@@ -131,7 +131,7 @@
     <ClCompile>
     <ClCompile>
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
@@ -146,7 +146,7 @@
     <ClCompile>
     <ClCompile>
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
@@ -163,7 +163,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
@@ -184,7 +184,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
@@ -205,7 +205,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
@@ -226,7 +226,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_FREEIMG_EXPORTS;_MBCS;FREEIMAGE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;./Dependencies/Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>

+ 3 - 1
CamelotFreeImgImporter/Source/CmFreeImgImporter.cpp

@@ -13,6 +13,8 @@
 
 
 #include "FreeImage.h"
 #include "FreeImage.h"
 
 
+using namespace std::placeholders;
+
 namespace CamelotFramework
 namespace CamelotFramework
 {
 {
 	void FreeImageLoadErrorHandler(FREE_IMAGE_FORMAT fif, const char *message) 
 	void FreeImageLoadErrorHandler(FREE_IMAGE_FORMAT fif, const char *message) 
@@ -139,7 +141,7 @@ namespace CamelotFramework
 			imgData->getPixels(mip, *src);
 			imgData->getPixels(mip, *src);
 
 
 			src->lock();
 			src->lock();
-			gCoreThread().queueReturnCommand(boost::bind(&RenderSystem::writeSubresource, RenderSystem::instancePtr(), newTexture, subresourceIdx, src, false, _1));
+			gCoreThread().queueReturnCommand(std::bind(&RenderSystem::writeSubresource, RenderSystem::instancePtr(), newTexture, subresourceIdx, src, false, _1));
 		}
 		}
 
 
 		fileData->close();
 		fileData->close();

+ 6 - 6
CamelotGLRenderer/CamelotGLRenderer.vcxproj

@@ -123,7 +123,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -138,7 +138,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -156,7 +156,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -177,7 +177,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
@@ -198,7 +198,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -219,7 +219,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Source/win32;./Source/GLSL/include;./Source/atifs/include;../CamelotUtility/Include;../CamelotCore/Include;./Include;../Dependencies/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;_WINDLL;GLEW_STATIC;CM_RSGL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>

+ 6 - 6
CamelotOISInput/CamelotOISInput.vcxproj

@@ -122,7 +122,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -137,7 +137,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -154,7 +154,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -175,7 +175,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
@@ -196,7 +196,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
@@ -217,7 +217,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>../CamelotCore/Include;../CamelotUtility/Include;./Include;../Dependencies/Include;./Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_OIS_EXPORTS;OIS_DYNAMIC_LIB;OIS_NONCLIENT_BUILD;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>

+ 6 - 6
CamelotUtility/CamelotUtility.vcxproj

@@ -122,7 +122,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_UTILITY_EXPORTS</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_UTILITY_EXPORTS</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -141,7 +141,7 @@
       <WarningLevel>Level3</WarningLevel>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>CM_UTILITY_EXPORTS</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_UTILITY_EXPORTS</PreprocessorDefinitions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
@@ -161,7 +161,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>CM_UTILITY_EXPORTS</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_UTILITY_EXPORTS</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
@@ -183,7 +183,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>CM_UTILITY_EXPORTS</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_UTILITY_EXPORTS</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
@@ -205,7 +205,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>CM_UTILITY_EXPORTS</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_UTILITY_EXPORTS</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>
@@ -227,7 +227,7 @@
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>CM_UTILITY_EXPORTS</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;CM_UTILITY_EXPORTS</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>./Include;../Dependencies/Include</AdditionalIncludeDirectories>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <BufferSecurityCheck>false</BufferSecurityCheck>

+ 3 - 3
CamelotUtility/Include/CmBinarySerializer.h

@@ -56,7 +56,7 @@ namespace CamelotFramework
 		 * 									If the returned buffer address is NULL, encoding is aborted.
 		 * 									If the returned buffer address is NULL, encoding is aborted.
 		 */
 		 */
 		void encode(IReflectable* object, UINT8* buffer, UINT32 bufferLength, int* bytesWritten, 
 		void encode(IReflectable* object, UINT8* buffer, UINT32 bufferLength, int* bytesWritten, 
-			boost::function<UINT8*(UINT8* buffer, int bytesWritten, UINT32& newBufferSize)> flushBufferCallback);
+			std::function<UINT8*(UINT8* buffer, int bytesWritten, UINT32& newBufferSize)> flushBufferCallback);
 
 
 		/**
 		/**
 		 * @brief	Decodes an object from a binary format.
 		 * @brief	Decodes an object from a binary format.
@@ -109,7 +109,7 @@ namespace CamelotFramework
 		 * @brief	Encodes a single IReflectable object. 
 		 * @brief	Encodes a single IReflectable object. 
 		 */
 		 */
 		UINT8* encodeInternal(IReflectable* object, UINT32 objectId, UINT8* buffer, UINT32& bufferLength, int* bytesWritten, 
 		UINT8* encodeInternal(IReflectable* object, UINT32 objectId, UINT8* buffer, UINT32& bufferLength, int* bytesWritten, 
-			boost::function<UINT8*(UINT8* buffer, int bytesWritten, UINT32& newBufferSize)> flushBufferCallback);
+			std::function<UINT8*(UINT8* buffer, int bytesWritten, UINT32& newBufferSize)> flushBufferCallback);
 
 
 		/**
 		/**
 		 * @brief	Decodes a single IReflectable object.
 		 * @brief	Decodes a single IReflectable object.
@@ -151,7 +151,7 @@ namespace CamelotFramework
 		 * @brief	Helper method for encoding a complex object and copying its data to a buffer.
 		 * @brief	Helper method for encoding a complex object and copying its data to a buffer.
 		 */
 		 */
 		UINT8* complexTypeToBuffer(IReflectable* object, UINT8* buffer, UINT32& bufferLength, int* bytesWritten, 
 		UINT8* complexTypeToBuffer(IReflectable* object, UINT8* buffer, UINT32& bufferLength, int* bytesWritten, 
-			boost::function<UINT8*(UINT8* buffer, int bytesWritten, UINT32& newBufferSize)> flushBufferCallback);
+			std::function<UINT8*(UINT8* buffer, int bytesWritten, UINT32& newBufferSize)> flushBufferCallback);
 
 
 		/**
 		/**
 		 * @brief	Helper method for decoding a complex object from the provided data buffer.
 		 * @brief	Helper method for decoding a complex object from the provided data buffer.

+ 1 - 1
CamelotUtility/Include/CmHString.h

@@ -47,7 +47,7 @@ namespace CamelotFramework
 
 
 		void setParameter(UINT32 idx, const WString& value);
 		void setParameter(UINT32 idx, const WString& value);
 		
 		
-		boost::signals::connection addOnStringModifiedCallback(boost::function<void()> callback) const;
+		boost::signals::connection addOnStringModifiedCallback(std::function<void()> callback) const;
 
 
 		static const HString& dummy();
 		static const HString& dummy();
 	private:
 	private:

+ 3 - 3
CamelotUtility/Include/CmRTTIManagedDataBlockField.h

@@ -63,14 +63,14 @@ namespace CamelotFramework
 		virtual ManagedDataBlock getValue(void* object)
 		virtual ManagedDataBlock getValue(void* object)
 		{
 		{
 			ObjectType* castObj = static_cast<ObjectType*>(object);
 			ObjectType* castObj = static_cast<ObjectType*>(object);
-			boost::function<ManagedDataBlock(ObjectType*)> f = boost::any_cast<boost::function<ManagedDataBlock(ObjectType*)>>(valueGetter);
+			std::function<ManagedDataBlock(ObjectType*)> f = boost::any_cast<std::function<ManagedDataBlock(ObjectType*)>>(valueGetter);
 			return f(castObj);
 			return f(castObj);
 		}
 		}
 
 
 		virtual void setValue(void* object, ManagedDataBlock value)
 		virtual void setValue(void* object, ManagedDataBlock value)
 		{
 		{
 			ObjectType* castObj = static_cast<ObjectType*>(object);
 			ObjectType* castObj = static_cast<ObjectType*>(object);
-			boost::function<void(ObjectType*, ManagedDataBlock)> f = boost::any_cast<boost::function<void(ObjectType*, ManagedDataBlock)>>(valueSetter);
+			std::function<void(ObjectType*, ManagedDataBlock)> f = boost::any_cast<std::function<void(ObjectType*, ManagedDataBlock)>>(valueSetter);
 			f(castObj, value);
 			f(castObj, value);
 		}
 		}
 
 
@@ -81,7 +81,7 @@ namespace CamelotFramework
 			else
 			else
 			{
 			{
 				ObjectType* castObj = static_cast<ObjectType*>(object);
 				ObjectType* castObj = static_cast<ObjectType*>(object);
-				boost::function<UINT8*(ObjectType*, UINT32)> f = boost::any_cast<boost::function<UINT8*(ObjectType*, UINT32)>>(mCustomAllocator);
+				std::function<UINT8*(ObjectType*, UINT32)> f = boost::any_cast<std::function<UINT8*(ObjectType*, UINT32)>>(mCustomAllocator);
 				return f(castObj, bytes);
 				return f(castObj, bytes);
 			}
 			}
 		}
 		}

+ 8 - 8
CamelotUtility/Include/CmRTTIPlainField.h

@@ -158,7 +158,7 @@ namespace CamelotFramework
 
 
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 
 
-			boost::function<DataType&(ObjectType*)> f = boost::any_cast<boost::function<DataType&(ObjectType*)>>(valueGetter);
+			std::function<DataType&(ObjectType*)> f = boost::any_cast<std::function<DataType&(ObjectType*)>>(valueGetter);
 			DataType value = f(castObject);
 			DataType value = f(castObject);
 
 
 			return RTTIPlainType<DataType>::getDynamicSize(value);
 			return RTTIPlainType<DataType>::getDynamicSize(value);
@@ -171,7 +171,7 @@ namespace CamelotFramework
 
 
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 
 
-			boost::function<DataType&(ObjectType*, UINT32)> f = boost::any_cast<boost::function<DataType&(ObjectType*, UINT32)>>(valueGetter);
+			std::function<DataType&(ObjectType*, UINT32)> f = boost::any_cast<std::function<DataType&(ObjectType*, UINT32)>>(valueGetter);
 			DataType value = f(castObject, index);
 			DataType value = f(castObject, index);
 
 
 			return RTTIPlainType<DataType>::getDynamicSize(value);
 			return RTTIPlainType<DataType>::getDynamicSize(value);
@@ -181,7 +181,7 @@ namespace CamelotFramework
 		{
 		{
 			checkIsArray(true);
 			checkIsArray(true);
 
 
-			boost::function<UINT32(ObjectType*)> f = boost::any_cast<boost::function<UINT32(ObjectType*)>>(arraySizeGetter);
+			std::function<UINT32(ObjectType*)> f = boost::any_cast<std::function<UINT32(ObjectType*)>>(arraySizeGetter);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			return f(castObject);
 			return f(castObject);
 		}
 		}
@@ -196,7 +196,7 @@ namespace CamelotFramework
 					"Specified field (" + mName + ") has no array size setter.");
 					"Specified field (" + mName + ") has no array size setter.");
 			}
 			}
 
 
-			boost::function<void(ObjectType*, UINT32)> f = boost::any_cast<boost::function<void(ObjectType*, UINT32)>>(arraySizeSetter);
+			std::function<void(ObjectType*, UINT32)> f = boost::any_cast<std::function<void(ObjectType*, UINT32)>>(arraySizeSetter);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			f(castObject, size);
 			f(castObject, size);
 		}
 		}
@@ -208,7 +208,7 @@ namespace CamelotFramework
 
 
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 
 
-			boost::function<DataType&(ObjectType*)> f = boost::any_cast<boost::function<DataType&(ObjectType*)>>(valueGetter);
+			std::function<DataType&(ObjectType*)> f = boost::any_cast<std::function<DataType&(ObjectType*)>>(valueGetter);
 			DataType value = f(castObject);
 			DataType value = f(castObject);
 
 
 			RTTIPlainType<DataType>::toMemory(value, (char*)buffer);
 			RTTIPlainType<DataType>::toMemory(value, (char*)buffer);
@@ -221,7 +221,7 @@ namespace CamelotFramework
 
 
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 
 
-			boost::function<DataType&(ObjectType*, UINT32)> f = boost::any_cast<boost::function<DataType&(ObjectType*, UINT32)>>(valueGetter);
+			std::function<DataType&(ObjectType*, UINT32)> f = boost::any_cast<std::function<DataType&(ObjectType*, UINT32)>>(valueGetter);
 			DataType value = f(castObject, index);
 			DataType value = f(castObject, index);
 
 
 			RTTIPlainType<DataType>::toMemory(value, (char*)buffer);
 			RTTIPlainType<DataType>::toMemory(value, (char*)buffer);
@@ -243,7 +243,7 @@ namespace CamelotFramework
 					"Specified field (" + mName + ") has no setter.");
 					"Specified field (" + mName + ") has no setter.");
 			}
 			}
 
 
-			boost::function<void(ObjectType*, DataType&)> f = boost::any_cast<boost::function<void(ObjectType*, DataType&)>>(valueSetter);
+			std::function<void(ObjectType*, DataType&)> f = boost::any_cast<std::function<void(ObjectType*, DataType&)>>(valueSetter);
 			f(castObject, value);
 			f(castObject, value);
 		}
 		}
 
 
@@ -263,7 +263,7 @@ namespace CamelotFramework
 					"Specified field (" + mName + ") has no setter.");
 					"Specified field (" + mName + ") has no setter.");
 			}
 			}
 
 
-			boost::function<void(ObjectType*, UINT32, DataType&)> f = boost::any_cast<boost::function<void(ObjectType*, UINT32, DataType&)>>(valueSetter);
+			std::function<void(ObjectType*, UINT32, DataType&)> f = boost::any_cast<std::function<void(ObjectType*, UINT32, DataType&)>>(valueSetter);
 			f(castObject, index, value);
 			f(castObject, index, value);
 		}
 		}
 	};
 	};

+ 6 - 6
CamelotUtility/Include/CmRTTIReflectableField.h

@@ -69,7 +69,7 @@ namespace CamelotFramework
 			checkIsArray(false);
 			checkIsArray(false);
 
 
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
-			boost::function<DataType&(ObjectType*)> f = boost::any_cast<boost::function<DataType&(ObjectType*)>>(valueGetter);
+			std::function<DataType&(ObjectType*)> f = boost::any_cast<std::function<DataType&(ObjectType*)>>(valueGetter);
 			IReflectable& castDataType = f(castObjType);
 			IReflectable& castDataType = f(castObjType);
 
 
 			return castDataType;
 			return castDataType;
@@ -80,7 +80,7 @@ namespace CamelotFramework
 			checkIsArray(true);
 			checkIsArray(true);
 
 
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
-			boost::function<DataType&(ObjectType*, UINT32)> f = boost::any_cast<boost::function<DataType&(ObjectType*, UINT32)>>(valueGetter);
+			std::function<DataType&(ObjectType*, UINT32)> f = boost::any_cast<std::function<DataType&(ObjectType*, UINT32)>>(valueGetter);
 
 
 			IReflectable& castDataType = f(castObjType, index);
 			IReflectable& castDataType = f(castObjType, index);
 			return castDataType;
 			return castDataType;
@@ -98,7 +98,7 @@ namespace CamelotFramework
 
 
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			DataType& castDataObj = static_cast<DataType&>(value);
 			DataType& castDataObj = static_cast<DataType&>(value);
-			boost::function<void(ObjectType*, DataType&)> f = boost::any_cast<boost::function<void(ObjectType*, DataType&)>>(valueSetter);
+			std::function<void(ObjectType*, DataType&)> f = boost::any_cast<std::function<void(ObjectType*, DataType&)>>(valueSetter);
 			f(castObjType, castDataObj);
 			f(castObjType, castDataObj);
 		}
 		}
 
 
@@ -114,7 +114,7 @@ namespace CamelotFramework
 
 
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			DataType& castDataObj = static_cast<DataType&>(value);
 			DataType& castDataObj = static_cast<DataType&>(value);
-			boost::function<void(ObjectType*, UINT32, DataType&)> f = boost::any_cast<boost::function<void(ObjectType*, UINT32, DataType&)>>(valueSetter);
+			std::function<void(ObjectType*, UINT32, DataType&)> f = boost::any_cast<std::function<void(ObjectType*, UINT32, DataType&)>>(valueSetter);
 			f(castObjType, index, castDataObj);
 			f(castObjType, index, castDataObj);
 		}
 		}
 
 
@@ -122,7 +122,7 @@ namespace CamelotFramework
 		{
 		{
 			checkIsArray(true);
 			checkIsArray(true);
 
 
-			boost::function<UINT32(ObjectType*)> f = boost::any_cast<boost::function<UINT32(ObjectType*)>>(arraySizeGetter);
+			std::function<UINT32(ObjectType*)> f = boost::any_cast<std::function<UINT32(ObjectType*)>>(arraySizeGetter);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			return f(castObject);
 			return f(castObject);
 		}
 		}
@@ -137,7 +137,7 @@ namespace CamelotFramework
 					"Specified field (" + mName + ") has no array size setter.");
 					"Specified field (" + mName + ") has no array size setter.");
 			}
 			}
 
 
-			boost::function<void(ObjectType*, UINT32)> f = boost::any_cast<boost::function<void(ObjectType*, UINT32)>>(arraySizeSetter);
+			std::function<void(ObjectType*, UINT32)> f = boost::any_cast<std::function<void(ObjectType*, UINT32)>>(arraySizeSetter);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			f(castObject, size);
 			f(castObject, size);
 		}
 		}

+ 6 - 6
CamelotUtility/Include/CmRTTIReflectablePtrField.h

@@ -71,7 +71,7 @@ namespace CamelotFramework
 			checkIsArray(false);
 			checkIsArray(false);
 
 
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
-			boost::function<std::shared_ptr<DataType>(ObjectType*)> f = boost::any_cast<boost::function<std::shared_ptr<DataType>(ObjectType*)>>(valueGetter);
+			std::function<std::shared_ptr<DataType>(ObjectType*)> f = boost::any_cast<std::function<std::shared_ptr<DataType>(ObjectType*)>>(valueGetter);
 			std::shared_ptr<IReflectable> castDataType = f(castObjType);
 			std::shared_ptr<IReflectable> castDataType = f(castObjType);
 
 
 			return castDataType;
 			return castDataType;
@@ -82,7 +82,7 @@ namespace CamelotFramework
 			checkIsArray(true);
 			checkIsArray(true);
 
 
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
-			boost::function<std::shared_ptr<DataType>(ObjectType*, UINT32)> f = boost::any_cast<boost::function<std::shared_ptr<DataType>(ObjectType*, UINT32)>>(valueGetter);
+			std::function<std::shared_ptr<DataType>(ObjectType*, UINT32)> f = boost::any_cast<std::function<std::shared_ptr<DataType>(ObjectType*, UINT32)>>(valueGetter);
 
 
 			std::shared_ptr<IReflectable> castDataType = f(castObjType, index);
 			std::shared_ptr<IReflectable> castDataType = f(castObjType, index);
 			return castDataType;
 			return castDataType;
@@ -100,7 +100,7 @@ namespace CamelotFramework
 
 
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			std::shared_ptr<DataType> castDataObj = std::static_pointer_cast<DataType>(value);
 			std::shared_ptr<DataType> castDataObj = std::static_pointer_cast<DataType>(value);
-			boost::function<void(ObjectType*, std::shared_ptr<DataType>)> f = boost::any_cast<boost::function<void(ObjectType*, std::shared_ptr<DataType>)>>(valueSetter);
+			std::function<void(ObjectType*, std::shared_ptr<DataType>)> f = boost::any_cast<std::function<void(ObjectType*, std::shared_ptr<DataType>)>>(valueSetter);
 			f(castObjType, castDataObj);
 			f(castObjType, castDataObj);
 		}
 		}
 
 
@@ -116,7 +116,7 @@ namespace CamelotFramework
 
 
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			ObjectType* castObjType = static_cast<ObjectType*>(object);
 			std::shared_ptr<DataType> castDataObj = std::static_pointer_cast<DataType>(value);
 			std::shared_ptr<DataType> castDataObj = std::static_pointer_cast<DataType>(value);
-			boost::function<void(ObjectType*, UINT32, std::shared_ptr<DataType>)> f = boost::any_cast<boost::function<void(ObjectType*, UINT32, std::shared_ptr<DataType>)>>(valueSetter);
+			std::function<void(ObjectType*, UINT32, std::shared_ptr<DataType>)> f = boost::any_cast<std::function<void(ObjectType*, UINT32, std::shared_ptr<DataType>)>>(valueSetter);
 			f(castObjType, index, castDataObj);
 			f(castObjType, index, castDataObj);
 		}
 		}
 
 
@@ -124,7 +124,7 @@ namespace CamelotFramework
 		{
 		{
 			checkIsArray(true);
 			checkIsArray(true);
 
 
-			boost::function<UINT32(ObjectType*)> f = boost::any_cast<boost::function<UINT32(ObjectType*)>>(arraySizeGetter);
+			std::function<UINT32(ObjectType*)> f = boost::any_cast<std::function<UINT32(ObjectType*)>>(arraySizeGetter);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			return f(castObject);
 			return f(castObject);
 		}
 		}
@@ -139,7 +139,7 @@ namespace CamelotFramework
 					"Specified field (" + mName + ") has no array size setter.");
 					"Specified field (" + mName + ") has no array size setter.");
 			}
 			}
 
 
-			boost::function<void(ObjectType*, UINT32)> f = boost::any_cast<boost::function<void(ObjectType*, UINT32)>>(arraySizeSetter);
+			std::function<void(ObjectType*, UINT32)> f = boost::any_cast<std::function<void(ObjectType*, UINT32)>>(arraySizeSetter);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			ObjectType* castObject = static_cast<ObjectType*>(object);
 			f(castObject, size);
 			f(castObject, size);
 		}
 		}

+ 59 - 45
CamelotUtility/Include/CmRTTIType.h

@@ -4,8 +4,6 @@
 #include <algorithm>
 #include <algorithm>
 #include <unordered_map>
 #include <unordered_map>
 
 
-#include <boost/function.hpp>
-#include <boost/bind.hpp>
 #include <boost/type_traits.hpp>
 #include <boost/type_traits.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/preprocessor/punctuation/comma.hpp>
 #include <boost/preprocessor/punctuation/comma.hpp>
@@ -449,8 +447,8 @@ namespace CamelotFramework
 			void (ObjectType::*setter)(DataType&) = nullptr, UINT64 flags = 0)
 			void (ObjectType::*setter)(DataType&) = nullptr, UINT64 flags = 0)
 		{
 		{
 			addPlainField<ObjectType, DataType>(name, uniqueId, 
 			addPlainField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<DataType&(ObjectType*)>(getter), 
-				boost::function<void(ObjectType*, DataType&)>(setter), flags);
+				std::function<DataType&(ObjectType*)>(getter), 
+				std::function<void(ObjectType*, DataType&)>(setter), flags);
 		}
 		}
 
 
 		template<class ObjectType, class DataType>
 		template<class ObjectType, class DataType>
@@ -458,8 +456,8 @@ namespace CamelotFramework
 			void (ObjectType::*setter)(DataType&) = nullptr, UINT64 flags = 0)
 			void (ObjectType::*setter)(DataType&) = nullptr, UINT64 flags = 0)
 		{
 		{
 			addReflectableField<ObjectType, DataType>(name, uniqueId, 
 			addReflectableField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<DataType&(ObjectType*)>(getter), 
-				boost::function<void(ObjectType*, DataType&)>(setter), flags);
+				std::function<DataType&(ObjectType*)>(getter), 
+				std::function<void(ObjectType*, DataType&)>(setter), flags);
 		}
 		}
 
 
 		template<class ObjectType, class DataType>
 		template<class ObjectType, class DataType>
@@ -467,8 +465,8 @@ namespace CamelotFramework
 			void (ObjectType::*setter)(std::shared_ptr<DataType>) = nullptr, UINT64 flags = 0)
 			void (ObjectType::*setter)(std::shared_ptr<DataType>) = nullptr, UINT64 flags = 0)
 		{
 		{
 			addReflectablePtrField<ObjectType, DataType>(name, uniqueId, 
 			addReflectablePtrField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<std::shared_ptr<DataType>(ObjectType*)>(getter), 
-				boost::function<void(ObjectType*, std::shared_ptr<DataType>)>(setter), flags);
+				std::function<std::shared_ptr<DataType>(ObjectType*)>(getter), 
+				std::function<void(ObjectType*, std::shared_ptr<DataType>)>(setter), flags);
 		}
 		}
 
 
 		template<class ObjectType, class DataType>
 		template<class ObjectType, class DataType>
@@ -476,10 +474,10 @@ namespace CamelotFramework
 			void (ObjectType::*setter)(UINT32, DataType&) = nullptr, void(ObjectType::*setSize)(UINT32) = nullptr, UINT64 flags = 0)
 			void (ObjectType::*setter)(UINT32, DataType&) = nullptr, void(ObjectType::*setSize)(UINT32) = nullptr, UINT64 flags = 0)
 		{
 		{
 			addPlainArrayField<ObjectType, DataType>(name, uniqueId, 
 			addPlainArrayField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<DataType&(ObjectType*, UINT32)>(getter), 
-				boost::function<UINT32(ObjectType*)>(getSize), 
-				boost::function<void(ObjectType*, UINT32, DataType&)>(setter), 
-				boost::function<void(ObjectType*, UINT32)>(setSize), flags);
+				std::function<DataType&(ObjectType*, UINT32)>(getter), 
+				std::function<UINT32(ObjectType*)>(getSize), 
+				std::function<void(ObjectType*, UINT32, DataType&)>(setter), 
+				std::function<void(ObjectType*, UINT32)>(setSize), flags);
 		}	
 		}	
 
 
 		template<class ObjectType, class DataType>
 		template<class ObjectType, class DataType>
@@ -487,10 +485,10 @@ namespace CamelotFramework
 			void (ObjectType::*setter)(UINT32, DataType&) = nullptr, void(ObjectType::*setSize)(UINT32) = nullptr, UINT64 flags = 0)
 			void (ObjectType::*setter)(UINT32, DataType&) = nullptr, void(ObjectType::*setSize)(UINT32) = nullptr, UINT64 flags = 0)
 		{
 		{
 			addReflectableArrayField<ObjectType, DataType>(name, uniqueId, 
 			addReflectableArrayField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<DataType&(ObjectType*, UINT32)>(getter), 
-				boost::function<UINT32(ObjectType*)>(getSize), 
-				boost::function<void(ObjectType*, UINT32, DataType&)>(setter), 
-				boost::function<void(ObjectType*, UINT32)>(setSize), flags);
+				std::function<DataType&(ObjectType*, UINT32)>(getter), 
+				std::function<UINT32(ObjectType*)>(getSize), 
+				std::function<void(ObjectType*, UINT32, DataType&)>(setter), 
+				std::function<void(ObjectType*, UINT32)>(setSize), flags);
 		}
 		}
 
 
 		template<class ObjectType, class DataType>
 		template<class ObjectType, class DataType>
@@ -498,10 +496,10 @@ namespace CamelotFramework
 			void (ObjectType::*setter)(UINT32, std::shared_ptr<DataType>) = nullptr, void(ObjectType::*setSize)(UINT32) = nullptr, UINT64 flags = 0)
 			void (ObjectType::*setter)(UINT32, std::shared_ptr<DataType>) = nullptr, void(ObjectType::*setSize)(UINT32) = nullptr, UINT64 flags = 0)
 		{
 		{
 			addReflectablePtrArrayField<ObjectType, DataType>(name, uniqueId, 
 			addReflectablePtrArrayField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<std::shared_ptr<DataType>(ObjectType*, UINT32)>(getter), 
-				boost::function<UINT32(ObjectType*)>(getSize), 
-				boost::function<void(ObjectType*, UINT32, std::shared_ptr<DataType>)>(setter), 
-				boost::function<void(ObjectType*, UINT32)>(setSize), flags);
+				std::function<std::shared_ptr<DataType>(ObjectType*, UINT32)>(getter), 
+				std::function<UINT32(ObjectType*)>(getSize), 
+				std::function<void(ObjectType*, UINT32, std::shared_ptr<DataType>)>(setter), 
+				std::function<void(ObjectType*, UINT32)>(setSize), flags);
 		}
 		}
 
 
 		template<class ObjectType>
 		template<class ObjectType>
@@ -509,8 +507,8 @@ namespace CamelotFramework
 			void (ObjectType::*setter)(ManagedDataBlock) = nullptr, UINT64 flags = 0, UINT8* (customAllocator)(ObjectType*, UINT32) = 0)
 			void (ObjectType::*setter)(ManagedDataBlock) = nullptr, UINT64 flags = 0, UINT8* (customAllocator)(ObjectType*, UINT32) = 0)
 		{
 		{
 			addDataBlockField<ObjectType>(name, uniqueId, 
 			addDataBlockField<ObjectType>(name, uniqueId, 
-				boost::function<ManagedDataBlock(ObjectType*)>(getter),  
-				boost::function<void(ObjectType*, ManagedDataBlock)>(setter), flags, customAllocator);
+				std::function<ManagedDataBlock(ObjectType*)>(getter),  
+				std::function<void(ObjectType*, ManagedDataBlock)>(setter), flags, customAllocator);
 		}	
 		}	
 
 
 	protected:
 	protected:
@@ -525,6 +523,8 @@ namespace CamelotFramework
 			DataType& (InterfaceType::*getter)(ObjectType*), 
 			DataType& (InterfaceType::*getter)(ObjectType*), 
 			void (InterfaceType::*setter)(ObjectType*, DataType&), UINT64 flags = 0)
 			void (InterfaceType::*setter)(ObjectType*, DataType&), UINT64 flags = 0)
 		{
 		{
+			using namespace std::placeholders;
+
 			BOOST_STATIC_ASSERT_MSG((boost::is_base_of<CamelotFramework::RTTIType<Type, BaseType, MyRTTIType>, InterfaceType>::value), 
 			BOOST_STATIC_ASSERT_MSG((boost::is_base_of<CamelotFramework::RTTIType<Type, BaseType, MyRTTIType>, InterfaceType>::value), 
 				"Class with the get/set methods must derive from CamelotFramework::RTTIType.");
 				"Class with the get/set methods must derive from CamelotFramework::RTTIType.");
 
 
@@ -532,8 +532,8 @@ namespace CamelotFramework
 				"Data type derives from IReflectable but it is being added as a plain field.");
 				"Data type derives from IReflectable but it is being added as a plain field.");
 
 
 			addPlainField<ObjectType, DataType>(name, uniqueId, 
 			addPlainField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<DataType&(ObjectType*)>(boost::bind(getter, static_cast<InterfaceType*>(this), _1)), 
-				boost::function<void(ObjectType*, DataType&)>(boost::bind(setter, static_cast<InterfaceType*>(this), _1, _2)), flags);
+				std::function<DataType&(ObjectType*)>(std::bind(getter, static_cast<InterfaceType*>(this), _1)), 
+				std::function<void(ObjectType*, DataType&)>(std::bind(setter, static_cast<InterfaceType*>(this), _1, _2)), flags);
 		}
 		}
 
 
 		template<class InterfaceType, class ObjectType, class DataType>
 		template<class InterfaceType, class ObjectType, class DataType>
@@ -541,9 +541,11 @@ namespace CamelotFramework
 			DataType& (InterfaceType::*getter)(ObjectType*), 
 			DataType& (InterfaceType::*getter)(ObjectType*), 
 			void (InterfaceType::*setter)(ObjectType*, DataType&), UINT64 flags = 0)
 			void (InterfaceType::*setter)(ObjectType*, DataType&), UINT64 flags = 0)
 		{
 		{
+			using namespace std::placeholders;
+
 			addReflectableField<ObjectType, DataType>(name, uniqueId, 
 			addReflectableField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<DataType&(ObjectType*)>(boost::bind(getter, static_cast<InterfaceType*>(this), _1)), 
-				boost::function<void(ObjectType*, DataType&)>(boost::bind(setter, static_cast<InterfaceType*>(this), _1, _2)), flags);
+				std::function<DataType&(ObjectType*)>(std::bind(getter, static_cast<InterfaceType*>(this), _1)), 
+				std::function<void(ObjectType*, DataType&)>(std::bind(setter, static_cast<InterfaceType*>(this), _1, _2)), flags);
 		}
 		}
 
 
 		template<class InterfaceType, class ObjectType, class DataType>
 		template<class InterfaceType, class ObjectType, class DataType>
@@ -551,9 +553,11 @@ namespace CamelotFramework
 			std::shared_ptr<DataType> (InterfaceType::*getter)(ObjectType*), 
 			std::shared_ptr<DataType> (InterfaceType::*getter)(ObjectType*), 
 			void (InterfaceType::*setter)(ObjectType*, std::shared_ptr<DataType>), UINT64 flags = 0)
 			void (InterfaceType::*setter)(ObjectType*, std::shared_ptr<DataType>), UINT64 flags = 0)
 		{
 		{
+			using namespace std::placeholders;
+
 			addReflectablePtrField<ObjectType, DataType>(name, uniqueId, 
 			addReflectablePtrField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<std::shared_ptr<DataType>(ObjectType*)>(boost::bind(getter, static_cast<InterfaceType*>(this), _1)), 
-				boost::function<void(ObjectType*, std::shared_ptr<DataType>)>(boost::bind(setter, static_cast<InterfaceType*>(this), _1, _2)), flags);
+				std::function<std::shared_ptr<DataType>(ObjectType*)>(std::bind(getter, static_cast<InterfaceType*>(this), _1)), 
+				std::function<void(ObjectType*, std::shared_ptr<DataType>)>(std::bind(setter, static_cast<InterfaceType*>(this), _1, _2)), flags);
 		}
 		}
 
 
 		template<class InterfaceType, class ObjectType, class DataType>
 		template<class InterfaceType, class ObjectType, class DataType>
@@ -563,6 +567,8 @@ namespace CamelotFramework
 			void (InterfaceType::*setter)(ObjectType*, UINT32, DataType&), 
 			void (InterfaceType::*setter)(ObjectType*, UINT32, DataType&), 
 			void(InterfaceType::*setSize)(ObjectType*, UINT32), UINT64 flags = 0)
 			void(InterfaceType::*setSize)(ObjectType*, UINT32), UINT64 flags = 0)
 		{
 		{
+			using namespace std::placeholders;
+
 			BOOST_STATIC_ASSERT_MSG((boost::is_base_of<CamelotFramework::RTTIType<Type, BaseType, MyRTTIType>, InterfaceType>::value), 
 			BOOST_STATIC_ASSERT_MSG((boost::is_base_of<CamelotFramework::RTTIType<Type, BaseType, MyRTTIType>, InterfaceType>::value), 
 				"Class with the get/set methods must derive from CamelotFramework::RTTIType.");
 				"Class with the get/set methods must derive from CamelotFramework::RTTIType.");
 
 
@@ -570,10 +576,10 @@ namespace CamelotFramework
 				"Data type derives from IReflectable but it is being added as a plain field.");
 				"Data type derives from IReflectable but it is being added as a plain field.");
 
 
 			addPlainArrayField<ObjectType, DataType>(name, uniqueId, 
 			addPlainArrayField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<DataType&(ObjectType*, UINT32)>(boost::bind(getter, static_cast<InterfaceType*>(this), _1, _2)), 
-				boost::function<UINT32(ObjectType*)>(boost::bind(getSize, static_cast<InterfaceType*>(this), _1)), 
-				boost::function<void(ObjectType*, UINT32, DataType&)>(boost::bind(setter, static_cast<InterfaceType*>(this), _1, _2, _3)), 
-				boost::function<void(ObjectType*, UINT32)>(boost::bind(setSize, static_cast<InterfaceType*>(this), _1, _2)), flags);
+				std::function<DataType&(ObjectType*, UINT32)>(std::bind(getter, static_cast<InterfaceType*>(this), _1, _2)), 
+				std::function<UINT32(ObjectType*)>(std::bind(getSize, static_cast<InterfaceType*>(this), _1)), 
+				std::function<void(ObjectType*, UINT32, DataType&)>(std::bind(setter, static_cast<InterfaceType*>(this), _1, _2, _3)), 
+				std::function<void(ObjectType*, UINT32)>(std::bind(setSize, static_cast<InterfaceType*>(this), _1, _2)), flags);
 		}	
 		}	
 
 
 		template<class InterfaceType, class ObjectType, class DataType>
 		template<class InterfaceType, class ObjectType, class DataType>
@@ -583,11 +589,13 @@ namespace CamelotFramework
 			void (InterfaceType::*setter)(ObjectType*, UINT32, DataType&), 
 			void (InterfaceType::*setter)(ObjectType*, UINT32, DataType&), 
 			void(InterfaceType::*setSize)(ObjectType*, UINT32), UINT64 flags = 0)
 			void(InterfaceType::*setSize)(ObjectType*, UINT32), UINT64 flags = 0)
 		{
 		{
+			using namespace std::placeholders;
+
 			addReflectableArrayField<ObjectType, DataType>(name, uniqueId, 
 			addReflectableArrayField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<DataType&(ObjectType*, UINT32)>(boost::bind(getter, static_cast<InterfaceType*>(this), _1, _2)), 
-				boost::function<UINT32(ObjectType*)>(boost::bind(getSize, static_cast<InterfaceType*>(this), _1)), 
-				boost::function<void(ObjectType*, UINT32, DataType&)>(boost::bind(setter, static_cast<InterfaceType*>(this), _1, _2, _3)), 
-				boost::function<void(ObjectType*, UINT32)>(boost::bind(setSize, static_cast<InterfaceType*>(this), _1, _2)), flags);
+				std::function<DataType&(ObjectType*, UINT32)>(std::bind(getter, static_cast<InterfaceType*>(this), _1, _2)), 
+				std::function<UINT32(ObjectType*)>(std::bind(getSize, static_cast<InterfaceType*>(this), _1)), 
+				std::function<void(ObjectType*, UINT32, DataType&)>(std::bind(setter, static_cast<InterfaceType*>(this), _1, _2, _3)), 
+				std::function<void(ObjectType*, UINT32)>(std::bind(setSize, static_cast<InterfaceType*>(this), _1, _2)), flags);
 		}
 		}
 
 
 		template<class InterfaceType, class ObjectType, class DataType>
 		template<class InterfaceType, class ObjectType, class DataType>
@@ -597,11 +605,13 @@ namespace CamelotFramework
 			void (InterfaceType::*setter)(ObjectType*, UINT32, std::shared_ptr<DataType>), 
 			void (InterfaceType::*setter)(ObjectType*, UINT32, std::shared_ptr<DataType>), 
 			void(InterfaceType::*setSize)(ObjectType*, UINT32), UINT64 flags = 0)
 			void(InterfaceType::*setSize)(ObjectType*, UINT32), UINT64 flags = 0)
 		{
 		{
+			using namespace std::placeholders;
+
 			addReflectablePtrArrayField<ObjectType, DataType>(name, uniqueId, 
 			addReflectablePtrArrayField<ObjectType, DataType>(name, uniqueId, 
-				boost::function<std::shared_ptr<DataType>(ObjectType*, UINT32)>(boost::bind(getter, static_cast<InterfaceType*>(this), _1, _2)), 
-				boost::function<UINT32(ObjectType*)>(boost::bind(getSize, static_cast<InterfaceType*>(this), _1)), 
-				boost::function<void(ObjectType*, UINT32, std::shared_ptr<DataType>)>(boost::bind(setter, static_cast<InterfaceType*>(this), _1, _2, _3)), 
-				boost::function<void(ObjectType*, UINT32)>(boost::bind(setSize, static_cast<InterfaceType*>(this), _1, _2)), flags);
+				std::function<std::shared_ptr<DataType>(ObjectType*, UINT32)>(std::bind(getter, static_cast<InterfaceType*>(this), _1, _2)), 
+				std::function<UINT32(ObjectType*)>(std::bind(getSize, static_cast<InterfaceType*>(this), _1)), 
+				std::function<void(ObjectType*, UINT32, std::shared_ptr<DataType>)>(std::bind(setter, static_cast<InterfaceType*>(this), _1, _2, _3)), 
+				std::function<void(ObjectType*, UINT32)>(std::bind(setSize, static_cast<InterfaceType*>(this), _1, _2)), flags);
 		}
 		}
 
 
 		template<class InterfaceType, class ObjectType>
 		template<class InterfaceType, class ObjectType>
@@ -609,18 +619,22 @@ namespace CamelotFramework
 			void (InterfaceType::*setter)(ObjectType*, ManagedDataBlock), UINT64 flags = 0, 
 			void (InterfaceType::*setter)(ObjectType*, ManagedDataBlock), UINT64 flags = 0, 
 			UINT8* (customAllocator)(ObjectType*, UINT32) = 0)
 			UINT8* (customAllocator)(ObjectType*, UINT32) = 0)
 		{
 		{
+			using namespace std::placeholders;
+
 			if(customAllocator != 0)
 			if(customAllocator != 0)
 			{
 			{
+				std::function<UINT8*(ObjectType*, UINT32)> customAllocFunc = std::bind(customAllocator, _1, _2);
+
 				addDataBlockField<ObjectType>(name, uniqueId, 
 				addDataBlockField<ObjectType>(name, uniqueId, 
-					boost::function<ManagedDataBlock(ObjectType*)>(boost::bind(getter, static_cast<InterfaceType*>(this), _1)),  
-					boost::function<void(ObjectType*, ManagedDataBlock)>(boost::bind(setter, static_cast<InterfaceType*>(this), _1, _2)), flags, 
-					boost::function<UINT8*(ObjectType*, UINT32)>(customAllocator));
+					std::function<ManagedDataBlock(ObjectType*)>(std::bind(getter, static_cast<InterfaceType*>(this), _1)),  
+					std::function<void(ObjectType*, ManagedDataBlock)>(std::bind(setter, static_cast<InterfaceType*>(this), _1, _2)), flags, 
+					customAllocFunc);
 			}
 			}
 			else
 			else
 			{
 			{
 				addDataBlockField<ObjectType>(name, uniqueId, 
 				addDataBlockField<ObjectType>(name, uniqueId, 
-					boost::function<ManagedDataBlock(ObjectType*)>(boost::bind(getter, static_cast<InterfaceType*>(this), _1)),  
-					boost::function<void(ObjectType*, ManagedDataBlock)>(boost::bind(setter, static_cast<InterfaceType*>(this), _1, _2)), flags);
+					std::function<ManagedDataBlock(ObjectType*)>(std::bind(getter, static_cast<InterfaceType*>(this), _1)),  
+					std::function<void(ObjectType*, ManagedDataBlock)>(std::bind(setter, static_cast<InterfaceType*>(this), _1, _2)), flags);
 			}
 			}
 		}	
 		}	
 
 

+ 0 - 27
CamelotUtility/Include/CmThreadDefines.h

@@ -1,34 +1,7 @@
-/*-------------------------------------------------------------------------
-This source file is a part of OGRE
-(Object-oriented Graphics Rendering Engine)
-
-For the latest info, see http://www.ogre3d.org/
-
-Copyright (c) 2000-2011 Torus Knot Software Ltd
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE
--------------------------------------------------------------------------*/
 #pragma once
 #pragma once
 
 
 #define CM_AUTO_MUTEX_NAME mutex
 #define CM_AUTO_MUTEX_NAME mutex
 
 
-#include <boost/bind.hpp>
-
 #if CM_THREAD_SUPPORT
 #if CM_THREAD_SUPPORT
 
 
 #include <thread>
 #include <thread>

+ 3 - 3
CamelotUtility/Source/CmBinarySerializer.cpp

@@ -43,7 +43,7 @@ namespace CamelotFramework
 	{
 	{
 	}
 	}
 
 
-	void BinarySerializer::encode(IReflectable* object, UINT8* buffer, UINT32 bufferLength, int* bytesWritten, boost::function<UINT8*(UINT8*, int, UINT32&)> flushBufferCallback)
+	void BinarySerializer::encode(IReflectable* object, UINT8* buffer, UINT32 bufferLength, int* bytesWritten, std::function<UINT8*(UINT8*, int, UINT32&)> flushBufferCallback)
 	{
 	{
 		mObjectsToEncode.clear();
 		mObjectsToEncode.clear();
 		mObjectAddrToId.clear();
 		mObjectAddrToId.clear();
@@ -167,7 +167,7 @@ namespace CamelotFramework
 	}
 	}
 
 
 	UINT8* BinarySerializer::encodeInternal(IReflectable* object, UINT32 objectId, UINT8* buffer, UINT32& bufferLength, 
 	UINT8* BinarySerializer::encodeInternal(IReflectable* object, UINT32 objectId, UINT8* buffer, UINT32& bufferLength, 
-		int* bytesWritten, boost::function<UINT8*(UINT8*, int, UINT32&)> flushBufferCallback)
+		int* bytesWritten, std::function<UINT8*(UINT8*, int, UINT32&)> flushBufferCallback)
 	{
 	{
 		static const UINT32 META_SIZE = 4; // Meta field size
 		static const UINT32 META_SIZE = 4; // Meta field size
 		static const UINT32 NUM_ELEM_FIELD_SIZE = 4; // Size of the field storing number of array elements
 		static const UINT32 NUM_ELEM_FIELD_SIZE = 4; // Size of the field storing number of array elements
@@ -1024,7 +1024,7 @@ exit:
 	}
 	}
 
 
 	UINT8* BinarySerializer::complexTypeToBuffer(IReflectable* object, UINT8* buffer, UINT32& bufferLength, 
 	UINT8* BinarySerializer::complexTypeToBuffer(IReflectable* object, UINT8* buffer, UINT32& bufferLength, 
-		int* bytesWritten, boost::function<UINT8*(UINT8*, int, UINT32&)> flushBufferCallback)
+		int* bytesWritten, std::function<UINT8*(UINT8*, int, UINT32&)> flushBufferCallback)
 	{
 	{
 		static const UINT32 COMPLEX_TYPE_FIELD_SIZE = 4; // Size of the field storing the size of a child complex type
 		static const UINT32 COMPLEX_TYPE_FIELD_SIZE = 4; // Size of the field storing the size of a child complex type
 
 

+ 3 - 2
CamelotUtility/Source/CmFileSerializer.cpp

@@ -5,7 +5,8 @@
 #include "CmBinarySerializer.h"
 #include "CmBinarySerializer.h"
 
 
 #include <numeric>
 #include <numeric>
-#include <boost/bind.hpp>
+
+using namespace std::placeholders;
 
 
 namespace CamelotFramework
 namespace CamelotFramework
 {
 {
@@ -25,7 +26,7 @@ namespace CamelotFramework
 
 
 		BinarySerializer bs;
 		BinarySerializer bs;
 		int totalBytesWritten = 0;
 		int totalBytesWritten = 0;
-		bs.encode(object, mWriteBuffer, WRITE_BUFFER_SIZE, &totalBytesWritten, boost::bind(&FileSerializer::flushBuffer, this, _1, _2, _3));
+		bs.encode(object, mWriteBuffer, WRITE_BUFFER_SIZE, &totalBytesWritten, std::bind(&FileSerializer::flushBuffer, this, _1, _2, _3));
 
 
 		mOutputStream.close();
 		mOutputStream.close();
 		mOutputStream.clear();
 		mOutputStream.clear();

+ 4 - 4
CamelotUtility/Source/CmHString.cpp

@@ -24,7 +24,7 @@ namespace CamelotFramework
 		if(stringData->commonData != mStringData->commonData)
 		if(stringData->commonData != mStringData->commonData)
 		{
 		{
 			mUpdateConn.disconnect();
 			mUpdateConn.disconnect();
-			mUpdateConn = stringData->commonData->onStringDataModified.connect(boost::bind(&HString::StringData::updateString, this));
+			mUpdateConn = stringData->commonData->onStringDataModified.connect(std::bind(&HString::StringData::updateString, this));
 		}
 		}
 
 
 		mStringData = stringData;
 		mStringData = stringData;
@@ -42,7 +42,7 @@ namespace CamelotFramework
 		if(mData->mStringData->numParameters > 0)
 		if(mData->mStringData->numParameters > 0)
 			mData->mParameters = cm_newN<WString>(mData->mStringData->numParameters);
 			mData->mParameters = cm_newN<WString>(mData->mStringData->numParameters);
 
 
-		mData->mUpdateConn = mData->mStringData->commonData->onStringDataModified.connect(boost::bind(&HString::StringData::updateString, mData.get()));
+		mData->mUpdateConn = mData->mStringData->commonData->onStringDataModified.connect(std::bind(&HString::StringData::updateString, mData.get()));
 	}
 	}
 
 
 	HString::HString(const WString& identifierString)
 	HString::HString(const WString& identifierString)
@@ -54,7 +54,7 @@ namespace CamelotFramework
 		if(mData->mStringData->numParameters > 0)
 		if(mData->mStringData->numParameters > 0)
 			mData->mParameters = cm_newN<WString>(mData->mStringData->numParameters);
 			mData->mParameters = cm_newN<WString>(mData->mStringData->numParameters);
 
 
-		mData->mUpdateConn = mData->mStringData->commonData->onStringDataModified.connect(boost::bind(&HString::StringData::updateString, mData.get()));
+		mData->mUpdateConn = mData->mStringData->commonData->onStringDataModified.connect(std::bind(&HString::StringData::updateString, mData.get()));
 	}
 	}
 
 
 	HString::HString(const HString& copy)
 	HString::HString(const HString& copy)
@@ -100,7 +100,7 @@ namespace CamelotFramework
 		mData->onStringModified();
 		mData->onStringModified();
 	}
 	}
 
 
-	boost::signals::connection HString::addOnStringModifiedCallback(boost::function<void()> callback) const
+	boost::signals::connection HString::addOnStringModifiedCallback(std::function<void()> callback) const
 	{
 	{
 		return mData->onStringModified.connect(callback);
 		return mData->onStringModified.connect(callback);
 	}
 	}

+ 4 - 2
CamelotUtility/Source/CmMemorySerializer.cpp

@@ -4,7 +4,7 @@
 #include "CmIReflectable.h"
 #include "CmIReflectable.h"
 #include "CmBinarySerializer.h"
 #include "CmBinarySerializer.h"
 
 
-#include <boost/bind.hpp>
+using namespace std::placeholders;
 
 
 namespace CamelotFramework
 namespace CamelotFramework
 {
 {
@@ -16,6 +16,8 @@ namespace CamelotFramework
 
 
 	UINT8* MemorySerializer::encode(IReflectable* object, UINT32& bytesWritten, std::function<void*(UINT32)> allocator)
 	UINT8* MemorySerializer::encode(IReflectable* object, UINT32& bytesWritten, std::function<void*(UINT32)> allocator)
 	{
 	{
+		using namespace std::placeholders;
+
 		BinarySerializer bs;
 		BinarySerializer bs;
 
 
 		BufferPiece piece;
 		BufferPiece piece;
@@ -24,7 +26,7 @@ namespace CamelotFramework
 
 
 		mBufferPieces.push_back(piece);
 		mBufferPieces.push_back(piece);
 
 
-		bs.encode(object, piece.buffer, WRITE_BUFFER_SIZE, (INT32*)&bytesWritten, boost::bind(&MemorySerializer::flushBuffer, this, _1, _2, _3));
+		bs.encode(object, piece.buffer, WRITE_BUFFER_SIZE, (INT32*)&bytesWritten, std::bind(&MemorySerializer::flushBuffer, this, _1, _2, _3));
 
 
 		UINT8* resultBuffer;
 		UINT8* resultBuffer;
 		if(allocator != nullptr)
 		if(allocator != nullptr)

+ 6 - 6
SBansheeEditor/SBansheeEditor.vcxproj

@@ -123,7 +123,7 @@
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -138,7 +138,7 @@
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -156,7 +156,7 @@
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
-      <PreprocessorDefinitions>BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>false</GenerateDebugInformation>
       <GenerateDebugInformation>false</GenerateDebugInformation>
@@ -175,7 +175,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -195,7 +195,7 @@
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
-      <PreprocessorDefinitions>BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>false</GenerateDebugInformation>
       <GenerateDebugInformation>false</GenerateDebugInformation>
@@ -214,7 +214,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\BansheeEditor\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;..\SBansheeEngine\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BED_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>

+ 1 - 0
SBansheeEditor/Source/BsScriptEditorWindow.cpp

@@ -10,6 +10,7 @@
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
 using namespace BansheeEngine;
 using namespace BansheeEngine;
+using namespace std::placeholders;
 
 
 namespace BansheeEditor
 namespace BansheeEditor
 {
 {

+ 6 - 6
SBansheeEngine/SBansheeEngine.vcxproj

@@ -123,7 +123,7 @@
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -138,7 +138,7 @@
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -156,7 +156,7 @@
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
-      <PreprocessorDefinitions>BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>false</GenerateDebugInformation>
       <GenerateDebugInformation>false</GenerateDebugInformation>
@@ -176,7 +176,7 @@
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DebugInformationFormat>None</DebugInformationFormat>
       <DebugInformationFormat>None</DebugInformationFormat>
-      <PreprocessorDefinitions>BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>false</GenerateDebugInformation>
       <GenerateDebugInformation>false</GenerateDebugInformation>
@@ -195,7 +195,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -214,7 +214,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <SDLCheck>true</SDLCheck>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories>.\Include;..\CamelotCore\Include;..\CamelotUtility\Include;..\Dependencies\Include;..\BansheeEngine\Include;..\BansheeMono\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_VARIADIC_MAX=8;BS_SCR_BE_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     </ClCompile>
     <Link>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>

+ 1 - 0
SBansheeEngine/Source/BsScriptGUIListBox.cpp

@@ -15,6 +15,7 @@
 #include "BsScriptHString.h"
 #include "BsScriptHString.h"
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
+using namespace std::placeholders;
 
 
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {

+ 1 - 0
SBansheeEngine/Source/BsScriptGUIToggle.cpp

@@ -18,6 +18,7 @@
 #include "BsScriptGUIContent.h"
 #include "BsScriptGUIContent.h"
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
+using namespace std::placeholders;
 
 
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {