Ver Fonte

Added Cmake lists for all projects
WIP resources manual

BearishSun há 9 anos atrás
pai
commit
5a619be16a
48 ficheiros alterados com 3406 adições e 108 exclusões
  1. 1 2
      Build/VS2015/BansheeEngine.sln
  2. 1 1
      Documentation/Manuals/Native/manuals.md
  3. 88 0
      Documentation/Manuals/Native/resources.md
  4. 0 58
      Documentation/Mono-3.8.0-IntegrationGuide.txt
  5. 0 0
      Documentation/Mono-4.4.0-IntegrationGuide.txt
  6. 121 0
      Scripts/generate_cmake_sources.py
  7. 42 0
      Source/BansheeCore/CMakeLists.txt
  8. 540 0
      Source/BansheeCore/CMakeSources.cmake
  9. 33 0
      Source/BansheeD3D11RenderAPI/CMakeLists.txt
  10. 85 0
      Source/BansheeD3D11RenderAPI/CMakeSources.cmake
  11. 40 0
      Source/BansheeD3D9RenderAPI/CMakeLists.txt
  12. 74 0
      Source/BansheeD3D9RenderAPI/CMakeSources.cmake
  13. 32 0
      Source/BansheeEditor/CMakeLists.txt
  14. 290 0
      Source/BansheeEditor/CMakeSources.cmake
  15. 33 0
      Source/BansheeEditorExec/CMakeLists.txt
  16. 15 0
      Source/BansheeEditorExec/CMakeSources.cmake
  17. 24 0
      Source/BansheeEngine/CMakeLists.txt
  18. 317 0
      Source/BansheeEngine/CMakeSources.cmake
  19. 39 0
      Source/BansheeFBXImporter/CMakeLists.txt
  20. 21 0
      Source/BansheeFBXImporter/CMakeSources.cmake
  21. 39 0
      Source/BansheeFontImporter/CMakeLists.txt
  22. 17 0
      Source/BansheeFontImporter/CMakeSources.cmake
  23. 39 0
      Source/BansheeFreeImgImporter/CMakeLists.txt
  24. 17 0
      Source/BansheeFreeImgImporter/CMakeSources.cmake
  25. 34 0
      Source/BansheeGLRenderAPI/CMakeLists.txt
  26. 98 0
      Source/BansheeGLRenderAPI/CMakeSources.cmake
  27. 39 0
      Source/BansheeMono/CMakeLists.txt
  28. 33 0
      Source/BansheeMono/CMakeSources.cmake
  29. 39 0
      Source/BansheeOISInput/CMakeLists.txt
  30. 17 0
      Source/BansheeOISInput/CMakeSources.cmake
  31. 60 0
      Source/BansheePhysX/CMakeLists.txt
  32. 57 0
      Source/BansheePhysX/CMakeSources.cmake
  33. 41 0
      Source/BansheeSL/CMakeLists.txt
  34. 29 0
      Source/BansheeSL/CMakeSources.cmake
  35. 16 17
      Source/BansheeUtility/CMakeLists.txt
  36. 303 0
      Source/BansheeUtility/CMakeSources.cmake
  37. 52 27
      Source/CMakeLists.txt
  38. 29 0
      Source/ExampleProject/CMakeLists.txt
  39. 16 0
      Source/ExampleProject/CMakeSources.cmake
  40. 32 0
      Source/Game/CMakeLists.txt
  41. 15 0
      Source/Game/CMakeSources.cmake
  42. 0 3
      Source/MBansheeEngine/AsyncOp.cs
  43. 25 0
      Source/RenderBeast/CMakeLists.txt
  44. 32 0
      Source/RenderBeast/CMakeSources.cmake
  45. 28 0
      Source/SBansheeEditor/CMakeLists.txt
  46. 157 0
      Source/SBansheeEditor/CMakeSources.cmake
  47. 27 0
      Source/SBansheeEngine/CMakeLists.txt
  48. 319 0
      Source/SBansheeEngine/CMakeSources.cmake

+ 1 - 2
Build/VS2015/BansheeEngine.sln

@@ -6,8 +6,7 @@ MinimumVisualStudioVersion = 10.0.40219.1
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Notes", "_Notes", "{1D081E5A-615A-4C06-B2DF-0D8D9390DE02}"
 	ProjectSection(SolutionItems) = preProject
 		..\..\Documentation\CompilingDependenciesManually.txt = ..\..\Documentation\CompilingDependenciesManually.txt
-		..\..\Documentation\Mono-3.8.0-IntegrationGuide.txt = ..\..\Documentation\Mono-3.8.0-IntegrationGuide.txt
-		Mono-4.4.0-IntegrationGuide.txt = Mono-4.4.0-IntegrationGuide.txt
+		..\..\Documentation\Mono-4.4.0-IntegrationGuide.txt = ..\..\Documentation\Mono-4.4.0-IntegrationGuide.txt
 		..\..\Documentation\NVTTCompilationGuide.txt = ..\..\Documentation\NVTTCompilationGuide.txt
 	EndProjectSection
 EndProject

+ 1 - 1
Documentation/Manuals/Native/manuals.md

@@ -23,7 +23,7 @@ Name                                      | Description
 [Custom GUI elements](@ref customGUI)     | Shows you how to create custom GUI elements, manually render text or modify GUI system in a general way.
 [Custom importers](@ref customImporters)  | Shows you how to create importers that handle conversion of third party resources into engine ready formats.
 [Custom plugins](@ref customPlugins)      | Shows you how to create custom plugins that can be loaded by Banshee.
-[Custom renderer](@ref customRenderer)    | Shows you how to create a custom renderer so you may fully customize the look of your application.
+[Custom renderer](@ref renderer)    	  | Shows you how to create a custom renderer so you may fully customize the look of your application.
 [Quick reference](@ref quickref)          | Provides a few bits of commonly required information, that might be hard to remember otherwise.
 [Porting](@ref porting)                   | Information about how to go on about porting Banshee to a different operating system.
 [Code style](@ref style)                  | Information about code style used when writing Banshee.

+ 88 - 0
Documentation/Manuals/Native/resources.md

@@ -0,0 +1,88 @@
+Resources						{#resources}
+===============
+[TOC]
+
+Resources are objects that can be saved and loaded to/from a disk, can be referenced in a unique manner, and have their lifetime managed by the resources manager. Objects like @ref BansheeEngine::Texture "Texture", @ref BansheeEngine::Mesh "Mesh" or @ref BansheeEngine::Shader "Shader" are all resources.
+
+A resource in Banshee is represented by the @ref BansheeEngine::Resource "Resource" class. A @ref BansheeEngine::Resource "Resource" is a @ref BansheeEngine::CoreObject "CoreObject" and if you're not familiar with core objects you should read the [core object](@ref coreThread) manual.
+
+All resources in Banshee are managed by the @ref BansheeEngine::Resources "Resources" manager. Use @ref BansheeEngine::gResources "gResources()" to access its instance easily.
+
+# Loading {#resources_a}
+To load a resource call @ref BansheeEngine::Resources::load "Resource::load" with a file path to the resource. If the path is valid a handle to the resource will be returned.
+
+You can also call @ref BansheeEngine::Resources::loadAsync "Resource::loadAsync". Unlike the previous method this method will not block the current thread and will instead proceed with loading the resource on a separate thread. You will receive an uninitialized resource handle. You must use @ref BansheeEngine::ResourceHandleBase::isLoaded "HResource::isLoaded" to check if the handle is loaded before using it, or @ref BansheeEngine::ResourceHandleBase::blockUntilLoaded "HResource::blockUntilLoaded" to force the current thread to wait until it is loaded.
+
+An example of both synchronous and asynchronous loads:
+~~~~~~~~~~~~~{.cpp}
+// Load a texture synchronously
+HTexture textureA = gResources().load<Texture>("textureA.asset");
+
+// Load a texture asynchronously
+HTexture textureB = gResources().loadAsync<Texture>("textureB.asset");
+
+while(!textureB.isLoaded())
+{
+	// Do something else
+}
+~~~~~~~~~~~~~
+
+The system internally keeps track of all resources, so calling load multiple times in a row will return a previously loaded resource if one exists.
+
+## Resource handles {#resources_a_a}
+As we saw in the previous example resources are referenced by @ref BansheeEngine::ResourceHandleBase "resource handles". Different handles exist for each resource type, and they always being with a prefix "H" followed by the resource name, e.g. @ref BansheeEngine::ResourceHandleBase "HTexture".
+
+Handles act like pointers, and you can access the resource within the handle by using the pointer member "->" operator. Using this operator is only valid if the handle points to a loaded resource (@ref BansheeEngine::ResourceHandleBase::isLoaded "HResource::isLoaded" returns true). Using the normal member access "." operator works on the handle data directly and is always safe.
+
+Handles are used instead of pointers because:
+ - Lifetime of the resource can be automatically managed
+ - User can keep a reference to an unloaded resources
+ - Are handled specially when serializing/deserializing objects
+ 
+A little more elaboration for the last point. If you have read the [RTTI](@ref rtti) manual you know that objects can reference different field types. And resource handles can be referenced by "Reflectable" field types, allowing you to easily save/load references to resources within your objects with no additional code.
+
+Each handle internally stores a GUID that uniquely identifies the resource. You can access it by calling @ref BansheeEngine::ResourceHandleBase::getUUID() "HResource::getUUID".
+
+## Resource dependencies {#resource_a_b}
+We mentioned in the last section that objects (including resources) can reference resources. For example a @ref BansheeEngine::Font "Font" resource will reference @ref BansheeEngine::Texture "Texture" resources which store its pre-rendered font glyphs.
+
+When loading a resource you have a choice to load only that exact resource, or if you wish to load all of its dependencies as well. This is handled by the `loadDependencies` parameter of both @ref BansheeEngine::Resources::load "Resource::load" and @ref BansheeEngine::Resources::loadAsync "Resource::loadAsync". If you load a resource without dependencies, and need them later you can just call @ref BansheeEngine::Resources::load "Resource::load" or @ref BansheeEngine::Resources::loadAsync "Resource::loadAsync" on that same resource with `loadDependencies` set to true.
+
+## Resource lifetime {#resource_a_c}
+Once a resource is loaded it will stay loaded until all references (handles) to it go out of scope. Once the last handle goes out of scope the system will unload the resource.
+
+If you wish to keep a handle to a resource that doesn't keep it loaded, you can use @ref BansheeEngine::TResourceHandle<T, true> "WeakResourceHandle<T>". You retrieve such a handle by calling @ref BansheeEngine::TResourceHandle<T, WeakHandle>::getWeak "HResource::getWeak" method on a normal handle. You can convert a weak handle into a normal handle by calling @ref BansheeEngine::TResourceHandle<T, WeakHandle>::lock "HResource::lock". Before doing so you should verify that the resource is still loaded.
+
+Weak handles can also be used for referencing resources for serialization/deserialization, same as normal handles can. However a weak handle will never force the referenced resource to load, even if `loadDependencies` parameter is set to true when loading. You must call @ref BansheeEngine::Resources::load(const WeakResourceHandle<T>&, bool, bool) "Resource::load" to manually load such a resource.
+
+You can also force a resource to stay loaded, even after all the handles go out of scope. You do it by setting `keepInternalReference` of @ref BansheeEngine::Resources::load "Resource::load" or @ref BansheeEngine::Resources::loadAsync "Resource::loadAsync" to true. In order to free such a resource you should call @ref BansheeEngine::Resources::release "Resources::release". Be aware that each call to @ref BansheeEngine::Resources::load "Resource::load" or @ref BansheeEngine::Resources::loadAsync "Resource::loadAsync" with this parameter enabled will require a separate @ref BansheeEngine::Resources::release "Resources::release" call. @ref BansheeEngine::Resources::release "Resources::release" will not release the resource immediately if there are still active handles to it, it will merely remove the internal reference so the resource can be freed when the handles go out of scope.
+
+You can also use @ref BansheeEngine::Resources::unloadAllUnused "Resources::unloadAllUnused" which will unload any resource that has no handles referencing it.
+
+# Saving {#resources_b}
+To save a resource to the disk call @ref BansheeEngine::Resources::save(const HResource&, const Path&, bool) "Resources::save". You need to provide a handle to the resource, and a path to save the resource to.
+
+If a resource already exists on the disk (i.e. it was created by @ref BansheeEngine::Resources::load "Resource::load" instead of manually), you can instead call @ref BansheeEngine::Resources::save(const HResource&) "Resources::save" to overwrite the existing file.
+
+An example:
+~~~~~~~~~~~~~{.cpp}
+HTexture texture = Texture::create(TEX_TYPE_2D, 1280, 720, 0, PF_R8G8B8A8);
+... fill texture with some data ...
+
+gResources().save(texture, "myTexture.asset");
+~~~~~~~~~~~~~
+
+# Creating your own resource
+
+// General info, registering with Resources
+// Custom resource handle
+// RTTI - Link to manual
+// Exposing resource to scripting
+
+# Advanced
+
+// Resource dependencies
+// Resource listener
+
+
+// TODO - Resource manifest

+ 0 - 58
Documentation/Mono-3.8.0-IntegrationGuide.txt

@@ -1,58 +0,0 @@
----------------------------------Compiling runtime-------------------------------------
-
- - Retrieve Mono 3.8.0 source from GitHub (NOT the tar ball)
-    - Tar ball has a broken Visual Studio build. (You can try to fix it, likely only a small modification. I didn't bother.)
- - Open in VS2012 as is, or open in later VS and upgrade all projects to latest toolkit (v120 and v140 tested and working)
- - Add "mono/utils/mono-conc-hashtable.c"  and "mono/utils/mono-conc-hashtable.c" to libmonoutils project
- - For x64 release version make sure to disable "omit stack frames" optimization
-
- - Move & modify:
-  MonoClass* mono_class_bind_generic_parameters (MonoClass *klass, int type_argc, MonoType **types, gboolean is_dynamic) MONO_INTERNAL; 
-from object-internals.h
-to:
-  MONO_API MonoClass* mono_class_bind_generic_parameters (MonoClass *klass, int type_argc, MonoType **types, mono_bool is_dynamic);
-in object.h
-
-In reflection.c change:
-  MonoClass* mono_class_bind_generic_parameters (MonoClass *klass, int type_argc, MonoType **types, gboolean is_dynamic)
-to:
-  MonoClass* mono_class_bind_generic_parameters (MonoClass *klass, int type_argc, MonoType **types, mono_bool is_dynamic)
-
-In mini-amd64.h:
-  Find where definitions of MONO_ARCH_NOMAP32BIT are for various platforms, and below them add:
-   #ifdef HOST_WIN32
-   #define MONO_ARCH_NOMAP32BIT
-   #endif
-
- - Compile mono project with desired configuration (debug/release, 32/64 bit, SGen builds were not tested). You will receive mono-2.0.dll and mono-2.0.lib as output.
- - Add mono-2.0.dll to (BansheeRootDir)/bin/(Platform)/(Configuration)
- - Add mono-2.0.lib to (BansheeRootDir)/Dependencies/lib/(Platform)/(Configuration)
-
------------------------------Compiling libraries & compiler-------------------------------------
-
-- Install Mono 3.2.3 (This is the latest binary release for Windows, you can use newer if there is one).
-- Add the "(InstallDir)\Mono-3.2.3\bin" to your PATH environment variable.
-- Install Cygwin 32-bit version using these command line parameters:
- setup-x86.exe -qnNdO -R "C:\cygwin" -s "http://cygwin.mirror.constant.com" 
-  -l "C:\cygwin\var\cache\setup" -P autoconf -P automake -P bison -P gcc-core 
-  -P gcc-g++ -P mingw-runtime -P mingw-binutils -P mingw-gcc-core -P mingw-gcc-g++ 
-  -P mingw-pthreads -P mingw-w32api -P libtool -P make -P python -P gettext-devel 
-  -P gettext -P intltool -P libiconv -P pkg-config -P git -P wget -P curl
-
-- Configure Cygwin mounting options by editing /etc/fstab and add "noacl" option like so:
- - "none /cygdrive cygdrive binary,noacl,posix=0,user 0 0"
-
-- Retrieve Mono 3.8.0 source tar ball (NOT from github, opposite from above)
-   - Github one has a broken Cygwin build. (You can try to fix it, likely only a small modification. I didn't bother.)
-- Go to your mono 3.8 source directory in Cygwin and enter these commands in order:
- - "./autogen.sh --prefix="(OutputDir)" --with-preview=yes"" (Replace (OutputDir) with a folder where you want to output the binaries, e.g. "C:\MonoInstall")
- - "./configure --host=i686-pc-mingw32"
- - "make"
- - "make install"
-- Your built mono should now be output to (OutputDir) folder. (If it's not in that folder then check your Cygwin install folder under /usr/local)
-- Copy contents of (OutputDir)/include/mono/mono-2.0/mono to (BansheeRootDir)/Dependencies/Include/Mono
-  - Make sure to modify "object.h" as you did above when building the binaries
-- Copy folder (OutputDir)/etc to (BansheeRootDir)/bin/Mono
-- Copy assembly folders (OutputDir)/lib/mono/4.0 and (OutputDir)/lib/mono/4.5 to (BansheeRootDir)/bin/Mono/lib/mono/4.0 and (BansheeRootDir)/bin/Mono/lib/mono/4.5, respectively
- - If you wish, you can clean up the assemblies within those folders are many might not be used. The minimum needed are "mscorlib.dll", "System.dll" and "System.Core.dll".
-- Copy the compiler (mcs.exe) from (OutputDir)/lib/mono/4.5 to (BansheeRootDir)/bin/Mono/compiler

+ 0 - 0
Build/VS2015/Mono-4.4.0-IntegrationGuide.txt → Documentation/Mono-4.4.0-IntegrationGuide.txt


+ 121 - 0
Scripts/generate_cmake_sources.py

@@ -0,0 +1,121 @@
+#!/usr/bin/python
+
+# Script that parses Visual Studio projects and generates a list of source
+# and header files used by those projects. The generated files are in CMake
+# format. This script is primarily meant to be used by those who use the
+# VS projects as their primary workflow, but want to keep the CMake build
+# up to date. Simply run this script to re-generate the source/header file
+# list in CMakeLists.txt for all projects.
+#
+# The output is generated as CMakeSources.cmake in every project's sub-directory,
+# which is generally included and used by CMakeLists.txt.
+#
+# This will only generate a list of include/source files, and will not preserve
+# any other VS options (like compiler/linker settings). For those you must edit
+# CMakeLists.txt manually. This script will however preserve VS filters (folders).
+
+import os
+import sys
+import shutil
+import xml.etree.ElementTree
+
+def getLocalPath(path):
+    remainingPath = path
+    localPath = ''
+
+    while True:
+        split = os.path.split(remainingPath)
+    
+        remainingPath = split[0]
+        tail = split[1]
+        
+        if localPath:
+            localPath = tail + '/' + localPath
+        else:
+            localPath = tail;
+        
+        if tail == 'Source' or tail == 'Include':
+            break
+
+        if not remainingPath:
+            localPath = os.path.split(path)[1]
+            break
+
+    return localPath
+
+def getFilterVarName(prefix, filter):
+    output = filter.replace('Source Files\\', 'SRC_')
+    output = output.replace('Header Files\\', 'INC_')
+
+    output = output.replace('Source Files', 'SRC_NOFILTER')
+    output = output.replace('Header Files', 'INC_NOFILTER')
+
+    output = output.replace('\\', '_')
+    output = output.replace('/', '_')
+
+    return prefix + output.upper()
+
+def processEntries(tag, group, filters):
+    for child in group.iter('{http://schemas.microsoft.com/developer/msbuild/2003}' + tag):
+        filterElem = child.find('{http://schemas.microsoft.com/developer/msbuild/2003}Filter')
+
+        if filterElem is not None:
+            filterName = filterElem.text
+            if filterName not in filters:
+                filters[filterName] = []
+                
+            filters[filterName].append(getLocalPath(child.get('Include')))
+
+# Process a .filter file and output a corresponding .txt file containing the necessary CMake commands
+def processFile(file):
+    tree = xml.etree.ElementTree.parse(file)
+    root = tree.getroot()
+
+    filters = {}
+
+    for group in root.iter('{http://schemas.microsoft.com/developer/msbuild/2003}ItemGroup'):
+        processEntries('ClInclude', group, filters)
+        processEntries('ClCompile', group, filters)      
+
+    outputName = os.path.splitext(file)[0]
+    outputName = os.path.splitext(outputName)[0]
+    outputName = os.path.split(outputName)[1]
+    
+    varPrefix = 'BS_' + outputName.upper() + '_'
+    outputFolder = '..\\Source\\' + outputName + '\\CMakeSources.cmake'
+
+    with open(outputFolder, 'w') as outputFile:
+        # Output variables containing all the .h and .cpp files
+        for key in filters.keys():
+            outputFile.write('set(%s\n' % getFilterVarName(varPrefix, key))
+
+            for entry in filters[key]:
+                outputFile.write('\t\"%s\"\n' % entry)
+            
+            outputFile.write(')\n\n')
+
+        # Output source groups (filters)
+        for key in filters.keys():
+            filter = key.replace('\\', '\\\\')
+            outputFile.write('source_group(\"{0}\" FILES ${{{1}}})\n'.format(filter, getFilterVarName(varPrefix, key)))
+
+        outputFile.write('\n')
+
+        # Output a variable containing all variables from the previous step so we can use it for compiling
+        outputFile.write('set(%sSRC\n' % varPrefix)
+        for key in filters.keys():
+            outputFile.write('\t${%s}\n' % getFilterVarName(varPrefix, key))
+
+        outputFile.write(')')
+
+# Go through all .filter files
+def processAllFiles():
+    solutionFolder = '..\\Build\\VS2015'
+
+    for root, dirs, files in os.walk(solutionFolder):
+        for file in files:
+            if(file.lower().endswith('.filters')):
+                filePath = os.path.join(root, file)
+                processFile(filePath)
+
+processAllFiles()

+ 42 - 0
Source/BansheeCore/CMakeLists.txt

@@ -0,0 +1,42 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeCore_INC 
+	"Include" 
+	"../BansheeUtility/Include" 
+	"../../Dependencies/Include")
+
+if(WIN32)
+	set(BansheeCore_INC ${BansheeCore_INC} "Include/Win32")
+endif()
+
+include_directories(${BansheeCore_INC})	
+	
+# Target
+add_library(BansheeCore SHARED ${BS_BANSHEECORE_SRC})
+
+# Defines
+target_compile_definitions(BansheeCore PRIVATE -DBS_CORE_EXPORTS)
+
+# Libraries
+## External lib: NVTT
+add_library(nvtt STATIC IMPORTED)
+set_target_properties(nvtt PROPERTIES IMPORTED_LOCATION_DEBUG ${BS_LIBRARY_DEPENDENCIES_DIR_DEBUG}/nvtt${BS_LIBRARY_EXTENSION})
+set_target_properties(nvtt PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${BS_LIBRARY_DEPENDENCIES_DIR_OPTIMIZEDDEBUG}/nvtt${BS_LIBRARY_EXTENSION})
+set_target_properties(nvtt PROPERTIES IMPORTED_LOCATION_RELEASE ${BS_LIBRARY_DEPENDENCIES_DIR_RELEASE}/nvtt${BS_LIBRARY_EXTENSION})	
+	
+target_link_libraries(BansheeCore nvtt)	
+	
+## Local libs
+target_link_libraries(BansheeCore BansheeUtility)	
+	
+## OS libs
+if(WIN32)
+target_link_libraries(BansheeCore Winmm)
+else()
+	# TODO_OTHER_PLATFORMS_GO_HERE
+endif()
+
+# IDE specific
+set_property(TARGET BansheeCore PROPERTY FOLDER Layers)

+ 540 - 0
Source/BansheeCore/CMakeSources.cmake

@@ -0,0 +1,540 @@
+set(BS_BANSHEECORE_INC_COMPONENTS
+	"Include/BsCBoxCollider.h"
+	"Include/BsCCollider.h"
+	"Include/BsCRigidbody.h"
+	"Include/BsCSphereCollider.h"
+	"Include/BsCCapsuleCollider.h"
+	"Include/BsCPlaneCollider.h"
+	"Include/BsCMeshCollider.h"
+	"Include/BsCJoint.h"
+	"Include/BsCFixedJoint.h"
+	"Include/BsCHingeJoint.h"
+	"Include/BsCDistanceJoint.h"
+	"Include/BsCSliderJoint.h"
+	"Include/BsCSphericalJoint.h"
+	"Include/BsCD6Joint.h"
+	"Include/BsCCharacterController.h"
+)
+
+set(BS_BANSHEECORE_INC_PHYSICS
+	"Include/BsPhysicsManager.h"
+	"Include/BsPhysics.h"
+	"Include/BsPhysicsMaterial.h"
+	"Include/BsRigidbody.h"
+	"Include/BsBoxCollider.h"
+	"Include/BsSphereCollider.h"
+	"Include/BsCapsuleCollider.h"
+	"Include/BsPlaneCollider.h"
+	"Include/BsFCollider.h"
+	"Include/BsPhysicsMesh.h"
+	"Include/BsMeshCollider.h"
+	"Include/BsFJoint.h"
+	"Include/BsJoint.h"
+	"Include/BsFixedJoint.h"
+	"Include/BsDistanceJoint.h"
+	"Include/BsHingeJoint.h"
+	"Include/BsSliderJoint.h"
+	"Include/BsSphericalJoint.h"
+	"Include/BsD6Joint.h"
+	"Include/BsCharacterController.h"
+	"Include/BsCollider.h"
+	"Include/BsPhysicsCommon.h"
+)
+
+set(BS_BANSHEECORE_INC_CORETHREAD
+	"Include/BsCoreThreadAccessor.h"
+	"Include/BsCoreThread.h"
+	"Include/BsCoreObjectManager.h"
+	"Include/BsCoreObject.h"
+	"Include/BsCommandQueue.h"
+	"Include/BsCoreObjectCore.h"
+)
+
+set(BS_BANSHEECORE_INC_IMPORTER
+	"Include/BsSpecificImporter.h"
+	"Include/BsImportOptions.h"
+	"Include/BsImporter.h"
+	"Include/BsTextureImportOptions.h"
+	"Include/BsShaderIncludeImporter.h"
+	"Include/BsMeshImportOptions.h"
+	"Include/BsShaderImportOptions.h"
+)
+
+set(BS_BANSHEECORE_INC_SCENE
+	"Include/BsComponent.h"
+	"Include/BsGameObject.h"
+	"Include/BsGameObjectHandle.h"
+	"Include/BsGameObjectManager.h"
+	"Include/BsSceneObject.h"
+	"Include/BsCoreSceneManager.h"
+	"Include/BsPrefab.h"
+	"Include/BsPrefabDiff.h"
+	"Include/BsPrefabUtility.h"
+)
+
+set(BS_BANSHEECORE_INC_INPUT
+	"Include/BsRawInputHandler.h"
+	"Include/BsOSInputHandler.h"
+	"Include/BsInputFwd.h"
+	"Include/BsInput.h"
+)
+
+set(BS_BANSHEECORE_INC_PLATFORM
+	"Include/Win32/BsWin32FolderMonitor.h"
+	"Include/Win32/BsWin32DropTarget.h"
+	"Include/BsPlatform.h"
+	"Include/BsFolderMonitor.h"
+	"Include/Win32/BsWin32Defs.h"
+	"Include/Win32/BSWin32PlatformData.h"
+	"Include/Win32/BsWin32Platform.h"
+)
+
+set(BS_BANSHEECORE_INC_RENDERER
+	"Include/BsRendererManager.h"
+	"Include/BsRendererFactory.h"
+	"Include/BsCoreRenderer.h"
+	"Include/BsRendererMeshData.h"
+	"Include/BsParamBlocks.h"
+)
+
+set(BS_BANSHEECORE_SRC_LOCALIZATION
+	"Source/BsHString.cpp"
+	"Source/BsStringTable.cpp"
+	"Source/BsStringTableManager.cpp"
+)
+
+set(BS_BANSHEECORE_SRC_RTTI
+	"Source/BsMaterialRTTI.cpp"
+)
+
+set(BS_BANSHEECORE_INC_PROFILING
+	"Include/BsProfilerCPU.h"
+	"Include/BsProfilerGPU.h"
+	"Include/BsProfilingManager.h"
+	"Include/BsRenderStats.h"
+)
+
+set(BS_BANSHEECORE_INC_RENDERAPI
+	"Include/BsVideoModeInfo.h"
+	"Include/BsVertexDeclaration.h"
+	"Include/BsVertexData.h"
+	"Include/BsVertexBuffer.h"
+	"Include/BsTimerQuery.h"
+	"Include/BsTextureView.h"
+	"Include/BsSubMesh.h"
+	"Include/BsSamplerState.h"
+	"Include/BsRenderWindowManager.h"
+	"Include/BsRenderWindow.h"
+	"Include/BsRenderTexture.h"
+	"Include/BsRenderTarget.h"
+	"Include/BsRenderStateManager.h"
+	"Include/BsRasterizerState.h"
+	"Include/BsQueryManager.h"
+	"Include/BsPixelBuffer.h"
+	"Include/BsOcclusionQuery.h"
+	"Include/BsMultiRenderTexture.h"
+	"Include/BsMeshManager.h"
+	"Include/BsIndexBuffer.h"
+	"Include/BsHardwareBufferManager.h"
+	"Include/BsHardwareBuffer.h"
+	"Include/BsGpuProgramManager.h"
+	"Include/BsGpuProgram.h"
+	"Include/BsGpuParams.h"
+	"Include/BsGpuParamDesc.h"
+	"Include/BsGpuParamBlockBuffer.h"
+	"Include/BsGpuParam.h"
+	"Include/BsGpuBufferView.h"
+	"Include/BsGpuBuffer.h"
+	"Include/BsEventQuery.h"
+	"Include/BsDrawOps.h"
+	"Include/BsDepthStencilState.h"
+	"Include/BsBlendState.h"
+	"Include/BsRenderAPI.h"
+	"Include/BsRenderAPIManager.h"
+	"Include/BsRenderAPIFactory.h"
+	"Include/BsRenderAPICapabilities.h"
+	"Include/BsViewport.h"
+)
+
+set(BS_BANSHEECORE_SRC_CORETHREAD
+	"Source/BsCommandQueue.cpp"
+	"Source/BsCoreObject.cpp"
+	"Source/BsCoreObjectManager.cpp"
+	"Source/BsCoreThread.cpp"
+	"Source/BsCoreThreadAccessor.cpp"
+	"Source/BsCoreObjectCore.cpp"
+)
+
+set(BS_BANSHEECORE_INC_NOFILTER
+	"Include/BsCoreApplication.h"
+	"Include/BsCorePrerequisites.h"
+)
+
+set(BS_BANSHEECORE_INC_MATERIAL
+	"Include/BsTechnique.h"
+	"Include/BsShader.h"
+	"Include/BsPass.h"
+	"Include/BsMaterialManager.h"
+	"Include/BsMaterial.h"
+	"Include/BsMaterialParam.h"
+	"Include/BsShaderManager.h"
+	"Include/BsMaterialParams.h"
+	"Include/BsShaderDefines.h"
+)
+
+set(BS_BANSHEECORE_INC_RESOURCES
+	"Include/BsVertexDataDesc.h"
+	"Include/BsTransientMesh.h"
+	"Include/BsTextureManager.h"
+	"Include/BsTexture.h"
+	"Include/BsResources.h"
+	"Include/BsResourceManifest.h"
+	"Include/BsResourceHandle.h"
+	"Include/BsResource.h"
+	"Include/BsPixelData.h"
+	"Include/BsMeshHeap.h"
+	"Include/BsMeshData.h"
+	"Include/BsMeshBase.h"
+	"Include/BsMesh.h"
+	"Include/BsGpuResourceData.h"
+	"Include/BsResourceMetaData.h"
+	"Include/BsSavedResourceData.h"
+	"Include/BsShaderInclude.h"
+	"Include/BsResourceListenerManager.h"
+	"Include/BsIResourceListener.h"
+)
+
+set(BS_BANSHEECORE_SRC_UTILITY
+	"Source/BsUtility.cpp"
+	"Source/BsMeshUtility.cpp"
+	"Source/BsDeferredCallManager.cpp"
+	"Source/BsDrawOps.cpp"
+	"Source/BsIconUtility.cpp"
+	"Source/BsUUID.cpp"
+	"Source/BsPixelUtil.cpp"
+)
+
+set(BS_BANSHEECORE_INC_TEXT
+	"Include/BsTextData.h"
+	"Include/BsFontManager.h"
+	"Include/BsFontImportOptions.h"
+	"Include/BsFontDesc.h"
+	"Include/BsFont.h"
+)
+
+set(BS_BANSHEECORE_SRC_PROFILING
+	"Source/BsProfilerCPU.cpp"
+	"Source/BsProfilerGPU.cpp"
+	"Source/BsProfilingManager.cpp"
+)
+
+set(BS_BANSHEECORE_SRC_COMPONENTS
+	"Source/BsCBoxCollider.cpp"
+	"Source/BsCCollider.cpp"
+	"Source/BsCRigidbody.cpp"
+	"Source/BsCSphereCollider.cpp"
+	"Source/BsCPlaneCollider.cpp"
+	"Source/BsCCapsuleCollider.cpp"
+	"Source/BsCMeshCollider.cpp"
+	"Source/BsCJoint.cpp"
+	"Source/BsCFixedJoint.cpp"
+	"Source/BsCHingeJoint.cpp"
+	"Source/BsCDistanceJoint.cpp"
+	"Source/BsCSliderJoint.cpp"
+	"Source/BsCSphericalJoint.cpp"
+	"Source/BsCD6Joint.cpp"
+	"Source/BsCCharacterController.cpp"
+)
+
+set(BS_BANSHEECORE_SRC_PLATFORM
+	"Source/Win32/BsWin32FolderMonitor.cpp"
+	"Source/BsPlatform.cpp"
+	"Source/Win32/BsWin32Platform.cpp"
+	"Source/Win32/BsWin32BrowseDialogs.cpp"
+)
+
+set(BS_BANSHEECORE_SRC_IMPORTER
+	"Source/BsImporter.cpp"
+	"Source/BsImportOptions.cpp"
+	"Source/BsSpecificImporter.cpp"
+	"Source/BsTextureImportOptions.cpp"
+	"Source/BsShaderIncludeImporter.cpp"
+	"Source/BsMeshImportOptions.cpp"
+	"Source/BsShaderImportOptions.cpp"
+)
+
+set(BS_BANSHEECORE_INC_UTILITY
+	"Include/BsCommonTypes.h"
+	"Include/BsUtility.h"
+	"Include/BsMeshUtility.h"
+	"Include/BsDeferredCallManager.h"
+	"Include/BsIconUtility.h"
+	"Include/BsUUID.h"
+	"Include/BsPixelUtil.h"
+	"Include/BsPixelVolume.h"
+)
+
+set(BS_BANSHEECORE_INC_RTTI
+	"Include/BsBlendStateRTTI.h"
+	"Include/BsComponentRTTI.h"
+	"Include/BsDepthStencilStateRTTI.h"
+	"Include/BsFontImportOptionsRTTI.h"
+	"Include/BsFontRTTI.h"
+	"Include/BsGameObjectHandleRTTI.h"
+	"Include/BsGameObjectRTTI.h"
+	"Include/BsGpuProgramRTTI.h"
+	"Include/BsGpuResourceDataRTTI.h"
+	"Include/BsImportOptionsRTTI.h"
+	"Include/BsMaterialRTTI.h"
+	"Include/BsMeshBaseRTTI.h"
+	"Include/BsMeshDataRTTI.h"
+	"Include/BsPassRTTI.h"
+	"Include/BsPixelDataRTTI.h"
+	"Include/BsRasterizerStateRTTI.h"
+	"Include/BsResourceHandleRTTI.h"
+	"Include/BsResourceManifestRTTI.h"
+	"Include/BsResourceRTTI.h"
+	"Include/BsSamplerStateRTTI.h"
+	"Include/BsSceneObjectRTTI.h"
+	"Include/BsShaderRTTI.h"
+	"Include/BsTechniqueRTTI.h"
+	"Include/BsTextureRTTI.h"
+	"Include/BsVertexDataDescRTTI.h"
+	"Include/BsVertexDeclarationRTTI.h"
+	"Include/BsTextureImportOptionsRTTI.h"
+	"Include/BsResourceMetaDataRTTI.h"
+	"Include/BsViewportRTTI.h"
+	"Include/BsSavedResourceDataRTTI.h"
+	"Include/BsShaderIncludeRTTI.h"
+	"Include/BsMeshImportOptionsRTTI.h"
+	"Include/BsPrefabRTTI.h"
+	"Include/BsPrefabDiffRTTI.h"
+	"Include/BsStringTableRTTI.h"
+	"Include/BsMaterialParamsRTTI.h"
+	"Include/BsMeshRTTI.h"
+	"Include/BsPhysicsMaterialRTTI.h"
+	"Include/BsCBoxColliderRTTI.h"
+	"Include/BsCColliderRTTI.h"
+	"Include/BsCRigidbodyRTTI.h"
+	"Include/BsCSphereColliderRTTI.h"
+	"Include/BsCPlaneColliderRTTI.h"
+	"Include/BsCCapsuleColliderRTTI.h"
+	"Include/BsCMeshColliderRTTI.h"
+	"Include/BsCJointRTTI.h"
+	"Include/BsCFixedJointRTTI.h"
+	"Include/BsCHingeJointRTTI.h"
+	"Include/BsCDistanceJointRTTI.h"
+	"Include/BsCSliderJointRTTI.h"
+	"Include/BsCSphericalJointRTTI.h"
+	"Include/BsCD6JointRTTI.h"
+	"Include/BsCCharacterControllerRTTI.h"
+	"Include/BsShaderImportOptionsRTTI.h"
+	"Include/BsPhysicsMeshRTTI.h"
+)
+
+set(BS_BANSHEECORE_SRC_RENDERER
+	"Source/BsRendererManager.cpp"
+	"Source/BsCoreRenderer.cpp"
+	"Source/BsRendererMeshData.cpp"
+)
+
+set(BS_BANSHEECORE_SRC_RESOURCES
+	"Source/BsGpuResourceData.cpp"
+	"Source/BsMesh.cpp"
+	"Source/BsMeshBase.cpp"
+	"Source/BsMeshData.cpp"
+	"Source/BsMeshHeap.cpp"
+	"Source/BsPixelData.cpp"
+	"Source/BsResource.cpp"
+	"Source/BsResourceHandle.cpp"
+	"Source/BsResourceManifest.cpp"
+	"Source/BsResources.cpp"
+	"Source/BsTexture.cpp"
+	"Source/BsTextureManager.cpp"
+	"Source/BsTransientMesh.cpp"
+	"Source/BsVertexDataDesc.cpp"
+	"Source/BsResourceMetaData.cpp"
+	"Source/BsSavedResourceData.cpp"
+	"Source/BsShaderInclude.cpp"
+	"Source/BsResourceListenerManager.cpp"
+	"Source/BsIResourceListener.cpp"
+)
+
+set(BS_BANSHEECORE_SRC_MATERIAL
+	"Source/BsMaterial.cpp"
+	"Source/BsMaterialManager.cpp"
+	"Source/BsPass.cpp"
+	"Source/BsShader.cpp"
+	"Source/BsTechnique.cpp"
+	"Source/BsMaterialParam.cpp"
+	"Source/BsShaderManager.cpp"
+	"Source/BsMaterialParams.cpp"
+	"Source/BsShaderDefines.cpp"
+)
+
+set(BS_BANSHEECORE_SRC_INPUT
+	"Source/BsInput.cpp"
+	"Source/BsOSInputHandler.cpp"
+)
+
+set(BS_BANSHEECORE_INC_LOCALIZATION
+	"Include/BsHString.h"
+	"Include/BsStringTable.h"
+	"Include/BsStringTableManager.h"
+)
+
+set(BS_BANSHEECORE_SRC_TEXT
+	"Source/BsFont.cpp"
+	"Source/BsFontImportOptions.cpp"
+	"Source/BsFontManager.cpp"
+	"Source/BsTextData.cpp"
+)
+
+set(BS_BANSHEECORE_SRC_RENDERAPI
+	"Source/BsBlendState.cpp"
+	"Source/BsDepthStencilState.cpp"
+	"Source/BsEventQuery.cpp"
+	"Source/BsGpuBuffer.cpp"
+	"Source/BsGpuBufferView.cpp"
+	"Source/BsGpuParam.cpp"
+	"Source/BsGpuParamBlockBuffer.cpp"
+	"Source/BsGpuParams.cpp"
+	"Source/BsGpuProgram.cpp"
+	"Source/BsGpuProgramManager.cpp"
+	"Source/BsHardwareBufferManager.cpp"
+	"Source/BsIndexBuffer.cpp"
+	"Source/BsMeshManager.cpp"
+	"Source/BsMultiRenderTexture.cpp"
+	"Source/BsOcclusionQuery.cpp"
+	"Source/BsPixelBuffer.cpp"
+	"Source/BsQueryManager.cpp"
+	"Source/BsRasterizerState.cpp"
+	"Source/BsRenderStateManager.cpp"
+	"Source/BsRenderTarget.cpp"
+	"Source/BsRenderTexture.cpp"
+	"Source/BsRenderWindow.cpp"
+	"Source/BsRenderWindowManager.cpp"
+	"Source/BsSamplerState.cpp"
+	"Source/BsTextureView.cpp"
+	"Source/BsTimerQuery.cpp"
+	"Source/BsVertexBuffer.cpp"
+	"Source/BsVertexData.cpp"
+	"Source/BsVertexDeclaration.cpp"
+	"Source/BsVideoModeInfo.cpp"
+	"Source/BsRenderAPI.cpp"
+	"Source/BsRenderAPIManager.cpp"
+	"Source/BsRenderAPICapabilities.cpp"
+	"Source/BsViewport.cpp"
+)
+
+set(BS_BANSHEECORE_SRC_NOFILTER
+	"Source/BsCoreApplication.cpp"
+)
+
+set(BS_BANSHEECORE_SRC_PHYSICS
+	"Source/BsPhysicsManager.cpp"
+	"Source/BsPhysics.cpp"
+	"Source/BsPhysicsMaterial.cpp"
+	"Source/BsCollider.cpp"
+	"Source/BsRigidbody.cpp"
+	"Source/BsBoxCollider.cpp"
+	"Source/BsSphereCollider.cpp"
+	"Source/BsPlaneCollider.cpp"
+	"Source/BsCapsuleCollider.cpp"
+	"Source/BsFCollider.cpp"
+	"Source/BsPhysicsMesh.cpp"
+	"Source/BsMeshCollider.cpp"
+	"Source/BsFJoint.cpp"
+	"Source/BsJoint.cpp"
+	"Source/BsFixedJoint.cpp"
+	"Source/BsDistanceJoint.cpp"
+	"Source/BsHingeJoint.cpp"
+	"Source/BsSliderJoint.cpp"
+	"Source/BsSphericalJoint.cpp"
+	"Source/BsD6Joint.cpp"
+	"Source/BsCharacterController.cpp"
+)
+
+set(BS_BANSHEECORE_SRC_SCENE
+	"Source/BsComponent.cpp"
+	"Source/BsGameObject.cpp"
+	"Source/BsGameObjectHandle.cpp"
+	"Source/BsGameObjectManager.cpp"
+	"Source/BsSceneObject.cpp"
+	"Source/BsCoreSceneManager.cpp"
+	"Source/BsPrefab.cpp"
+	"Source/BsPrefabDiff.cpp"
+	"Source/BsPrefabUtility.cpp"
+)
+
+source_group("Header Files\\Components" FILES ${BS_BANSHEECORE_INC_COMPONENTS})
+source_group("Header Files\\Physics" FILES ${BS_BANSHEECORE_INC_PHYSICS})
+source_group("Header Files\\CoreThread" FILES ${BS_BANSHEECORE_INC_CORETHREAD})
+source_group("Header Files\\Importer" FILES ${BS_BANSHEECORE_INC_IMPORTER})
+source_group("Header Files\\Scene" FILES ${BS_BANSHEECORE_INC_SCENE})
+source_group("Header Files\\Input" FILES ${BS_BANSHEECORE_INC_INPUT})
+source_group("Header Files\\Platform" FILES ${BS_BANSHEECORE_INC_PLATFORM})
+source_group("Header Files\\Renderer" FILES ${BS_BANSHEECORE_INC_RENDERER})
+source_group("Source Files\\Localization" FILES ${BS_BANSHEECORE_SRC_LOCALIZATION})
+source_group("Source Files\\RTTI" FILES ${BS_BANSHEECORE_SRC_RTTI})
+source_group("Header Files\\Profiling" FILES ${BS_BANSHEECORE_INC_PROFILING})
+source_group("Header Files\\RenderAPI" FILES ${BS_BANSHEECORE_INC_RENDERAPI})
+source_group("Source Files\\CoreThread" FILES ${BS_BANSHEECORE_SRC_CORETHREAD})
+source_group("Header Files" FILES ${BS_BANSHEECORE_INC_NOFILTER})
+source_group("Header Files\\Material" FILES ${BS_BANSHEECORE_INC_MATERIAL})
+source_group("Header Files\\Resources" FILES ${BS_BANSHEECORE_INC_RESOURCES})
+source_group("Source Files\\Utility" FILES ${BS_BANSHEECORE_SRC_UTILITY})
+source_group("Header Files\\Text" FILES ${BS_BANSHEECORE_INC_TEXT})
+source_group("Source Files\\Profiling" FILES ${BS_BANSHEECORE_SRC_PROFILING})
+source_group("Source Files\\Components" FILES ${BS_BANSHEECORE_SRC_COMPONENTS})
+source_group("Source Files\\Platform" FILES ${BS_BANSHEECORE_SRC_PLATFORM})
+source_group("Source Files\\Importer" FILES ${BS_BANSHEECORE_SRC_IMPORTER})
+source_group("Header Files\\Utility" FILES ${BS_BANSHEECORE_INC_UTILITY})
+source_group("Header Files\\RTTI" FILES ${BS_BANSHEECORE_INC_RTTI})
+source_group("Source Files\\Renderer" FILES ${BS_BANSHEECORE_SRC_RENDERER})
+source_group("Source Files\\Resources" FILES ${BS_BANSHEECORE_SRC_RESOURCES})
+source_group("Source Files\\Material" FILES ${BS_BANSHEECORE_SRC_MATERIAL})
+source_group("Source Files\\Input" FILES ${BS_BANSHEECORE_SRC_INPUT})
+source_group("Header Files\\Localization" FILES ${BS_BANSHEECORE_INC_LOCALIZATION})
+source_group("Source Files\\Text" FILES ${BS_BANSHEECORE_SRC_TEXT})
+source_group("Source Files\\RenderAPI" FILES ${BS_BANSHEECORE_SRC_RENDERAPI})
+source_group("Source Files" FILES ${BS_BANSHEECORE_SRC_NOFILTER})
+source_group("Source Files\\Physics" FILES ${BS_BANSHEECORE_SRC_PHYSICS})
+source_group("Source Files\\Scene" FILES ${BS_BANSHEECORE_SRC_SCENE})
+
+set(BS_BANSHEECORE_SRC
+	${BS_BANSHEECORE_INC_COMPONENTS}
+	${BS_BANSHEECORE_INC_PHYSICS}
+	${BS_BANSHEECORE_INC_CORETHREAD}
+	${BS_BANSHEECORE_INC_IMPORTER}
+	${BS_BANSHEECORE_INC_SCENE}
+	${BS_BANSHEECORE_INC_INPUT}
+	${BS_BANSHEECORE_INC_PLATFORM}
+	${BS_BANSHEECORE_INC_RENDERER}
+	${BS_BANSHEECORE_SRC_LOCALIZATION}
+	${BS_BANSHEECORE_SRC_RTTI}
+	${BS_BANSHEECORE_INC_PROFILING}
+	${BS_BANSHEECORE_INC_RENDERAPI}
+	${BS_BANSHEECORE_SRC_CORETHREAD}
+	${BS_BANSHEECORE_INC_NOFILTER}
+	${BS_BANSHEECORE_INC_MATERIAL}
+	${BS_BANSHEECORE_INC_RESOURCES}
+	${BS_BANSHEECORE_SRC_UTILITY}
+	${BS_BANSHEECORE_INC_TEXT}
+	${BS_BANSHEECORE_SRC_PROFILING}
+	${BS_BANSHEECORE_SRC_COMPONENTS}
+	${BS_BANSHEECORE_SRC_PLATFORM}
+	${BS_BANSHEECORE_SRC_IMPORTER}
+	${BS_BANSHEECORE_INC_UTILITY}
+	${BS_BANSHEECORE_INC_RTTI}
+	${BS_BANSHEECORE_SRC_RENDERER}
+	${BS_BANSHEECORE_SRC_RESOURCES}
+	${BS_BANSHEECORE_SRC_MATERIAL}
+	${BS_BANSHEECORE_SRC_INPUT}
+	${BS_BANSHEECORE_INC_LOCALIZATION}
+	${BS_BANSHEECORE_SRC_TEXT}
+	${BS_BANSHEECORE_SRC_RENDERAPI}
+	${BS_BANSHEECORE_SRC_NOFILTER}
+	${BS_BANSHEECORE_SRC_PHYSICS}
+	${BS_BANSHEECORE_SRC_SCENE}
+)

+ 33 - 0
Source/BansheeD3D11RenderAPI/CMakeLists.txt

@@ -0,0 +1,33 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeD3D11RenderAPI_INC 
+	"Include" 
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../../Dependencies/Include")
+
+include_directories(${BansheeD3D11RenderAPI_INC})	
+	
+# Target
+add_library(BansheeD3D11RenderAPI SHARED ${BS_BANSHEED3D11RENDERAPI_SRC})
+
+# Defines
+target_compile_definitions(BansheeD3D11RenderAPI PRIVATE -DBS_RSD3D11_EXPORTS)
+
+# Libraries
+if(BS_64BIT)
+	link_directories("$(DXSDK_DIR)Lib/x64")
+else()
+	link_directories("$(DXSDK_DIR)Lib/x86")
+endif()
+	
+## External lib: DirectX 11
+target_link_libraries(BansheeD3D11RenderAPI d3d11 dxgi dxguid D3DCompiler)	
+	
+## Local libs
+target_link_libraries(BansheeD3D11RenderAPI BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheeD3D11RenderAPI PROPERTY FOLDER Plugins)

+ 85 - 0
Source/BansheeD3D11RenderAPI/CMakeSources.cmake

@@ -0,0 +1,85 @@
+set(BS_BANSHEED3D11RENDERAPI_INC_NOFILTER
+	"Include/BsD3D11VideoModeInfo.h"
+	"Include/BsD3D11VertexBuffer.h"
+	"Include/BsD3D11TimerQuery.h"
+	"Include/BsD3D11TextureView.h"
+	"Include/BsD3D11TextureManager.h"
+	"Include/BsD3D11Texture.h"
+	"Include/BsD3D11SamplerState.h"
+	"Include/BsD3D11RenderWindowManager.h"
+	"Include/BsD3D11RenderWindow.h"
+	"Include/BsD3D11RenderUtility.h"
+	"Include/BsD3D11RenderTexture.h"
+	"Include/BsD3D11RenderStateManager.h"
+	"Include/BsD3D11RasterizerState.h"
+	"Include/BsD3D11QueryManager.h"
+	"Include/BsD3D11Prerequisites.h"
+	"Include/BsD3D11OcclusionQuery.h"
+	"Include/BsD3D11MultiRenderTexture.h"
+	"Include/BsD3D11Mappings.h"
+	"Include/BsD3D11InputLayoutManager.h"
+	"Include/BsD3D11IndexBuffer.h"
+	"Include/BsD3D11HLSLProgramFactory.h"
+	"Include/BsD3D11HLSLParamParser.h"
+	"Include/BsD3D11HardwareBufferManager.h"
+	"Include/BsD3D11HardwareBuffer.h"
+	"Include/BsD3D11GpuProgram.h"
+	"Include/BsD3D11GpuParamBlockBuffer.h"
+	"Include/BsD3D11GpuBufferView.h"
+	"Include/BsD3D11GpuBuffer.h"
+	"Include/BsD3D11EventQuery.h"
+	"Include/BsD3D11DriverList.h"
+	"Include/BsD3D11Driver.h"
+	"Include/BsD3D11Device.h"
+	"Include/BsD3D11DepthStencilState.h"
+	"Include/BsD3D11BlendState.h"
+	"Include/BsD3D11RenderAPI.h"
+	"Include/BsD3D11RenderAPIFactory.h"
+)
+
+set(BS_BANSHEED3D11RENDERAPI_SRC_NOFILTER
+	"Source/BsD3D11VideoModeInfo.cpp"
+	"Source/BsD3D11VertexBuffer.cpp"
+	"Source/BsD3D11TimerQuery.cpp"
+	"Source/BsD3D11TextureView.cpp"
+	"Source/BsD3D11TextureManager.cpp"
+	"Source/BsD3D11Texture.cpp"
+	"Source/BsD3D11SamplerState.cpp"
+	"Source/BsD3D11RenderWindowManager.cpp"
+	"Source/BsD3D11RenderWindow.cpp"
+	"Source/BsD3D11RenderUtility.cpp"
+	"Source/BsD3D11RenderTexture.cpp"
+	"Source/BsD3D11RenderStateManager.cpp"
+	"Source/BsD3D11RasterizerState.cpp"
+	"Source/BsD3D11QueryManager.cpp"
+	"Source/BsD3D11Plugin.cpp"
+	"Source/BsD3D11OcclusionQuery.cpp"
+	"Source/BsD3D11MultiRenderTexture.cpp"
+	"Source/BsD3D11Mappings.cpp"
+	"Source/BsD3D11InputLayoutManager.cpp"
+	"Source/BsD3D11IndexBuffer.cpp"
+	"Source/BsD3D11HLSLProgramFactory.cpp"
+	"Source/BsD3D11HLSLParamParser.cpp"
+	"Source/BsD3D11HardwareBufferManager.cpp"
+	"Source/BsD3D11HardwareBuffer.cpp"
+	"Source/BsD3D11GpuProgram.cpp"
+	"Source/BsD3D11GpuParamBlockBuffer.cpp"
+	"Source/BsD3D11GpuBufferView.cpp"
+	"Source/BsD3D11GpuBuffer.cpp"
+	"Source/BsD3D11EventQuery.cpp"
+	"Source/BsD3D11DriverList.cpp"
+	"Source/BsD3D11Driver.cpp"
+	"Source/BsD3D11Device.cpp"
+	"Source/BsD3D11DepthStencilState.cpp"
+	"Source/BsD3D11BlendState.cpp"
+	"Source/BsD3D11RenderAPI.cpp"
+	"Source/BsD3D11RenderAPIFactory.cpp"
+)
+
+source_group("Header Files" FILES ${BS_BANSHEED3D11RENDERAPI_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_BANSHEED3D11RENDERAPI_SRC_NOFILTER})
+
+set(BS_BANSHEED3D11RENDERAPI_SRC
+	${BS_BANSHEED3D11RENDERAPI_INC_NOFILTER}
+	${BS_BANSHEED3D11RENDERAPI_SRC_NOFILTER}
+)

+ 40 - 0
Source/BansheeD3D9RenderAPI/CMakeLists.txt

@@ -0,0 +1,40 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeD3D9RenderAPI_INC 
+	"Include" 
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../../Dependencies/Include"
+	"$ENV{DXSDK_DIR}Include")
+
+include_directories(${BansheeD3D9RenderAPI_INC})	
+	
+# Target
+add_library(BansheeD3D9RenderAPI SHARED ${BS_BANSHEED3D9RENDERAPI_SRC})
+
+# Defines
+target_compile_definitions(BansheeD3D9RenderAPI PRIVATE -DBS_RSD3D9_EXPORTS)
+
+# Libraries
+
+if(BS_64BIT)
+	set(BS_DX9_LIB_PATH "$ENV{DXSDK_DIR}Lib/x64/")
+else()
+	set(BS_DX9_LIB_PATH "$ENV{DXSDK_DIR}Lib/x86/")
+endif()
+	
+## External lib: DirectX 9
+target_link_libraries(BansheeD3D9RenderAPI 
+	${BS_DX9_LIB_PATH}d3d9.lib
+	${BS_DX9_LIB_PATH}d3dx9.lib
+	${BS_DX9_LIB_PATH}DxErr.lib
+	${BS_DX9_LIB_PATH}dxguid.lib
+	legacy_stdio_definitions.lib)	
+	
+## Local libs
+target_link_libraries(BansheeD3D9RenderAPI BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheeD3D9RenderAPI PROPERTY FOLDER Plugins)

+ 74 - 0
Source/BansheeD3D9RenderAPI/CMakeSources.cmake

@@ -0,0 +1,74 @@
+set(BS_BANSHEED3D9RENDERAPI_INC_NOFILTER
+	"Include/BsD3D9VideoModeInfo.h"
+	"Include/BsD3D9VertexDeclaration.h"
+	"Include/BsD3D9VertexBuffer.h"
+	"Include/BsD3D9TimerQuery.h"
+	"Include/BsD3D9TextureManager.h"
+	"Include/BsD3D9Texture.h"
+	"Include/BsD3D9ResourceManager.h"
+	"Include/BsD3D9Resource.h"
+	"Include/BsD3D9RenderWindowManager.h"
+	"Include/BsD3D9RenderWindow.h"
+	"Include/BsD3D9RenderTexture.h"
+	"Include/BsD3D9QueryManager.h"
+	"Include/BsD3D9Prerequisites.h"
+	"Include/BsD3D9PixelBuffer.h"
+	"Include/BsD3D9OcclusionQuery.h"
+	"Include/BsD3D9MultiRenderTexture.h"
+	"Include/BsD3D9Mappings.h"
+	"Include/BsD3D9IndexBuffer.h"
+	"Include/BsD3D9HLSLProgramFactory.h"
+	"Include/BsD3D9HLSLParamParser.h"
+	"Include/BsD3D9HardwareBufferManager.h"
+	"Include/BsD3D9GpuProgram.h"
+	"Include/BsD3D9GpuBuffer.h"
+	"Include/BsD3D9EventQuery.h"
+	"Include/BsD3D9DriverList.h"
+	"Include/BsD3D9Driver.h"
+	"Include/BsD3D9DeviceManager.h"
+	"Include/BsD3D9Device.h"
+	"Include/BsD3D9EmulatedParamBlocks.h"
+	"Include/BsD3D9RenderAPI.h"
+	"Include/BsD3D9RenderAPIFactory.h"
+)
+
+set(BS_BANSHEED3D9RENDERAPI_SRC_NOFILTER
+	"Source/BsD3D9VideoModeInfo.cpp"
+	"Source/BsD3D9VertexDeclaration.cpp"
+	"Source/BsD3D9VertexBuffer.cpp"
+	"Source/BsD3D9TimerQuery.cpp"
+	"Source/BsD3D9TextureManager.cpp"
+	"Source/BsD3D9Texture.cpp"
+	"Source/BsD3D9ResourceManager.cpp"
+	"Source/BsD3D9Resource.cpp"
+	"Source/BsD3D9RenderWindowManager.cpp"
+	"Source/BsD3D9RenderWindow.cpp"
+	"Source/BsD3D9RenderTexture.cpp"
+	"Source/BsD3D9QueryManager.cpp"
+	"Source/BsD3D9PixelBuffer.cpp"
+	"Source/BsD3D9OcclusionQuery.cpp"
+	"Source/BsD3D9MultiRenderTexture.cpp"
+	"Source/BsD3D9Mappings.cpp"
+	"Source/BsD3D9IndexBuffer.cpp"
+	"Source/BsD3D9HLSLProgramFactory.cpp"
+	"Source/BsD3D9HardwareBufferManager.cpp"
+	"Source/BsD3D9GpuProgram.cpp"
+	"Source/BsD3D9GpuBuffer.cpp"
+	"Source/BsD3D9EventQuery.cpp"
+	"Source/BsD3D9DriverList.cpp"
+	"Source/BsD3D9Driver.cpp"
+	"Source/BsD3D9DeviceManager.cpp"
+	"Source/BsD3D9Device.cpp"
+	"Source/BsD3D9EmulatedParamBlocks.cpp"
+	"Source/BsD3D9RenderAPI.cpp"
+	"Source/BsD3D9RenderAPIFactory.cpp"
+	"Source/BsD3D9Plugin.cpp"
+)
+
+source_group("Header Files" FILES ${BS_BANSHEED3D9RENDERAPI_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_BANSHEED3D9RENDERAPI_SRC_NOFILTER})
+
+set(BS_BANSHEED3D9RENDERAPI_SRC
+	${BS_BANSHEED3D9RENDERAPI_INC_NOFILTER}
+	${BS_BANSHEED3D9RENDERAPI_SRC_NOFILTER}
+)

+ 32 - 0
Source/BansheeEditor/CMakeLists.txt

@@ -0,0 +1,32 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeEditor_INC 
+	"Include" 
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../BansheeEngine/Include"
+	"../../Dependencies/Include")
+
+include_directories(${BansheeEditor_INC})	
+	
+# Target
+add_library(BansheeEditor SHARED ${BS_BANSHEEEDITOR_SRC})
+
+# Defines
+target_compile_definitions(BansheeEditor PRIVATE -DBS_ED_EXPORTS)
+
+# Libraries
+## Local libs
+target_link_libraries(BansheeEditor BansheeUtility BansheeCore BansheeEngine)	
+	
+## OS libs
+if(WIN32)
+target_link_libraries(BansheeEditor Advapi32)
+else()
+	# TODO_OTHER_PLATFORMS_GO_HERE
+endif()
+
+# IDE specific
+set_property(TARGET BansheeEditor PROPERTY FOLDER Layers)

+ 290 - 0
Source/BansheeEditor/CMakeSources.cmake

@@ -0,0 +1,290 @@
+set(BS_BANSHEEEDITOR_INC_SETTINGS
+	"Include/BsEditorSettings.h"
+	"Include/BsSettings.h"
+	"Include/BsProjectSettings.h"
+)
+
+set(BS_BANSHEEEDITOR_SRC_LIBRARY
+	"Source/BsProjectLibrary.cpp"
+	"Source/BsProjectLibraryEntries.cpp"
+	"Source/BsProjectResourceMeta.cpp"
+	"Source/BsEditorShaderIncludeHandler.cpp"
+)
+
+set(BS_BANSHEEEDITOR_INC_EDITORWINDOW
+	"Include/BsDockManager.h"
+	"Include/BsDockManagerLayout.h"
+	"Include/BsDropDownWindow.h"
+	"Include/BsDropDownWindowManager.h"
+	"Include/BsEditorWidget.h"
+	"Include/BsEditorWidgetContainer.h"
+	"Include/BsEditorWidgetLayout.h"
+	"Include/BsEditorWidgetManager.h"
+	"Include/BsEditorWindow.h"
+	"Include/BsEditorWindowBase.h"
+	"Include/BsEditorWindowManager.h"
+	"Include/BsMainEditorWindow.h"
+	"Include/BsModalWindow.h"
+)
+
+set(BS_BANSHEEEDITOR_SRC_CODEEDITOR
+	"Source/BsCodeEditor.cpp"
+	"Source/Win32/BsVSCodeEditor.cpp"
+)
+
+set(BS_BANSHEEEDITOR_INC_SCENE
+	"Include/BsGizmoManager.h"
+	"Include/BsSceneGrid.h"
+	"Include/BsScenePicking.h"
+	"Include/BsSelection.h"
+	"Include/BsSelectionRenderer.h"
+)
+
+set(BS_BANSHEEEDITOR_SRC_GUI
+	"Source/BsGUIColor.cpp"
+	"Source/BsGUIColorField.cpp"
+	"Source/BsGUIDockSlider.cpp"
+	"Source/BsGUIDropButton.cpp"
+	"Source/BsGUIFieldBase.cpp"
+	"Source/BsGUIFloatField.cpp"
+	"Source/BsGUIHoverHitBox.cpp"
+	"Source/BsGUIIntField.cpp"
+	"Source/BsGUIListBoxField.cpp"
+	"Source/BsGUIMenuBar.cpp"
+	"Source/BsGUIResourceTreeView.cpp"
+	"Source/BsGUISceneTreeView.cpp"
+	"Source/BsGUISliderField.cpp"
+	"Source/BsGUIStatusBar.cpp"
+	"Source/BsGUITabbedTitleBar.cpp"
+	"Source/BsGUITabButton.cpp"
+	"Source/BsGUITextField.cpp"
+	"Source/BsGUIToggleField.cpp"
+	"Source/BsGUITreeView.cpp"
+	"Source/BsGUITreeViewEditBox.cpp"
+	"Source/BsGUIVector2Field.cpp"
+	"Source/BsGUIVector3Field.cpp"
+	"Source/BsGUIVector4Field.cpp"
+	"Source/BsGUIWindowFrame.cpp"
+	"Source/BsGUIWindowFrameWidget.cpp"
+)
+
+set(BS_BANSHEEEDITOR_INC_LIBRARY
+	"Include/BsProjectLibrary.h"
+	"Include/BsProjectLibraryEntries.h"
+	"Include/BsProjectResourceMeta.h"
+	"Include/BsEditorShaderIncludeHandler.h"
+)
+
+set(BS_BANSHEEEDITOR_INC_GUI
+	"Include/BsGUIColor.h"
+	"Include/BsGUIColorField.h"
+	"Include/BsGUIDockSlider.h"
+	"Include/BsGUIDropButton.h"
+	"Include/BsGUIFieldBase.h"
+	"Include/BsGUIFloatField.h"
+	"Include/BsGUIHoverHitBox.h"
+	"Include/BsGUIIntField.h"
+	"Include/BsGUIListBoxField.h"
+	"Include/BsGUIMenuBar.h"
+	"Include/BsGUIResourceTreeView.h"
+	"Include/BsGUISceneTreeView.h"
+	"Include/BsGUISliderField.h"
+	"Include/BsGUIStatusBar.h"
+	"Include/BsGUITabbedTitleBar.h"
+	"Include/BsGUITabButton.h"
+	"Include/BsGUITextField.h"
+	"Include/BsGUIToggleField.h"
+	"Include/BsGUITreeView.h"
+	"Include/BsGUITreeViewEditBox.h"
+	"Include/BsGUIVector2Field.h"
+	"Include/BsGUIVector3Field.h"
+	"Include/BsGUIVector4Field.h"
+	"Include/BsGUIWindowFrame.h"
+	"Include/BsGUIWindowFrameWidget.h"
+)
+
+set(BS_BANSHEEEDITOR_INC_UNDOREDO
+	"Include/BsEditorCommand.h"
+	"Include/BsCmdReparentSO.h"
+	"Include/BsCmdInputFieldValueChange.h"
+	"Include/BsCmdRecordSO.h"
+	"Include/BsCmdUtility.h"
+	"Include/BsCmdDeleteSO.h"
+	"Include/BsCmdCreateSO.h"
+	"Include/BsCmdCloneSO.h"
+	"Include/BsCmdInstantiateSO.h"
+	"Include/BsCmdBreakPrefab.h"
+	"Include/BsUndoRedo.h"
+)
+
+set(BS_BANSHEEEDITOR_INC_RTTI
+	"Include/BsPlatformInfoRTTI.h"
+	"Include/BsBuildDataRTTI.h"
+	"Include/BsDockManagerLayoutRTTI.h"
+	"Include/BsEditorWidgetLayoutRTTI.h"
+	"Include/BsProjectLibraryEntriesRTTI.h"
+	"Include/BsProjectResourceMetaRTTI.h"
+	"Include/BsEditorSettingsRTTI.h"
+	"Include/BsSettingsRTTI.h"
+	"Include/BsProjectSettingsRTTI.h"
+	"Include/BsGUIWindowFrameWidgetRTTI.h"
+)
+
+set(BS_BANSHEEEDITOR_SRC_NOFILTER
+	"Source/BsEditorApplication.cpp"
+)
+
+set(BS_BANSHEEEDITOR_SRC_SCENEVIEW
+	"Source/BsGizmoManager.cpp"
+	"Source/BsSelectionRenderer.cpp"
+	"Source/BsSelection.cpp"
+	"Source/BsScenePicking.cpp"
+	"Source/BsSceneGrid.cpp"
+)
+
+set(BS_BANSHEEEDITOR_INC_NOFILTER
+	"Include/BsEditorApplication.h"
+	"Include/BsEditorPrerequisites.h"
+)
+
+set(BS_BANSHEEEDITOR_INC_HANDLES
+	"Include/BsHandleDrawManager.h"
+	"Include/BsHandleManager.h"
+	"Include/BsHandleSlider.h"
+	"Include/BsHandleSliderDisc.h"
+	"Include/BsHandleSliderLine.h"
+	"Include/BsHandleSliderManager.h"
+	"Include/BsHandleSliderPlane.h"
+)
+
+set(BS_BANSHEEEDITOR_SRC_UTILITY
+	"Source/BsEditorUtility.cpp"
+)
+
+set(BS_BANSHEEEDITOR_SRC_EDITORWINDOW
+	"Source/BsDockManager.cpp"
+	"Source/BsDockManagerLayout.cpp"
+	"Source/BsDropDownWindow.cpp"
+	"Source/BsDropDownWindowManager.cpp"
+	"Source/BsModalWindow.cpp"
+	"Source/BsMainEditorWindow.cpp"
+	"Source/BsEditorWindowManager.cpp"
+	"Source/BsEditorWindowBase.cpp"
+	"Source/BsEditorWindow.cpp"
+	"Source/BsEditorWidgetManager.cpp"
+	"Source/BsEditorWidgetLayout.cpp"
+	"Source/BsEditorWidgetContainer.cpp"
+	"Source/BsEditorWidget.cpp"
+)
+
+set(BS_BANSHEEEDITOR_INC_UTILITY
+	"Include/BsEditorUtility.h"
+	"Include/BsBuiltinEditorResources.h"
+)
+
+set(BS_BANSHEEEDITOR_SRC_TESTING
+	"Source/BsEditorTestSuite.cpp"
+)
+
+set(BS_BANSHEEEDITOR_SRC_SETTINGS
+	"Source/BsEditorSettings.cpp"
+	"Source/BsProjectSettings.cpp"
+	"Source/BsSettings.cpp"
+)
+
+set(BS_BANSHEEEDITOR_SRC_UNDOREDO
+	"Source/BsEditorCommand.cpp"
+	"Source/BsCmdReparentSO.cpp"
+	"Source/BsCmdRecordSO.cpp"
+	"Source/BsCmdUtility.cpp"
+	"Source/BsCmdDeleteSO.cpp"
+	"Source/BsCmdCreateSO.cpp"
+	"Source/BsCmdCloneSO.cpp"
+	"Source/BsCmdInstantiateSO.cpp"
+	"Source/BsCmdBreakPrefab.cpp"
+	"Source/BsUndoRedo.cpp"
+)
+
+set(BS_BANSHEEEDITOR_INC_CODEEDITOR
+	"Include/BsCodeEditor.h"
+	"Include/Win32/BsVSCodeEditor.h"
+)
+
+set(BS_BANSHEEEDITOR_INC_BUILD
+	"Include/BsBuildManager.h"
+	"Include/BsPlatformInfo.h"
+)
+
+set(BS_BANSHEEEDITOR_SRC_BUILD
+	"Source/BsBuildManager.cpp"
+	"Source/BsBuiltinEditorResources.cpp"
+	"Source/BsPlatformInfo.cpp"
+)
+
+set(BS_BANSHEEEDITOR_SRC_HANDLES
+	"Source/BsHandleDrawManager.cpp"
+	"Source/BsHandleManager.cpp"
+	"Source/BsHandleSlider.cpp"
+	"Source/BsHandleSliderDisc.cpp"
+	"Source/BsHandleSliderLine.cpp"
+	"Source/BsHandleSliderManager.cpp"
+	"Source/BsHandleSliderPlane.cpp"
+)
+
+set(BS_BANSHEEEDITOR_INC_TESTING
+	"Include/BsEditorTestSuite.h"
+)
+
+source_group("Header Files\\Settings" FILES ${BS_BANSHEEEDITOR_INC_SETTINGS})
+source_group("Source Files\\Library" FILES ${BS_BANSHEEEDITOR_SRC_LIBRARY})
+source_group("Header Files\\EditorWindow" FILES ${BS_BANSHEEEDITOR_INC_EDITORWINDOW})
+source_group("Source Files\\CodeEditor" FILES ${BS_BANSHEEEDITOR_SRC_CODEEDITOR})
+source_group("Header Files\\Scene" FILES ${BS_BANSHEEEDITOR_INC_SCENE})
+source_group("Source Files\\GUI" FILES ${BS_BANSHEEEDITOR_SRC_GUI})
+source_group("Header Files\\Library" FILES ${BS_BANSHEEEDITOR_INC_LIBRARY})
+source_group("Header Files\\GUI" FILES ${BS_BANSHEEEDITOR_INC_GUI})
+source_group("Header Files\\UndoRedo" FILES ${BS_BANSHEEEDITOR_INC_UNDOREDO})
+source_group("Header Files\\RTTI" FILES ${BS_BANSHEEEDITOR_INC_RTTI})
+source_group("Source Files" FILES ${BS_BANSHEEEDITOR_SRC_NOFILTER})
+source_group("Source Files\\SceneView" FILES ${BS_BANSHEEEDITOR_SRC_SCENEVIEW})
+source_group("Header Files" FILES ${BS_BANSHEEEDITOR_INC_NOFILTER})
+source_group("Header Files\\Handles" FILES ${BS_BANSHEEEDITOR_INC_HANDLES})
+source_group("Source Files\\Utility" FILES ${BS_BANSHEEEDITOR_SRC_UTILITY})
+source_group("Source Files\\EditorWindow" FILES ${BS_BANSHEEEDITOR_SRC_EDITORWINDOW})
+source_group("Header Files\\Utility" FILES ${BS_BANSHEEEDITOR_INC_UTILITY})
+source_group("Source Files\\Testing" FILES ${BS_BANSHEEEDITOR_SRC_TESTING})
+source_group("Source Files\\Settings" FILES ${BS_BANSHEEEDITOR_SRC_SETTINGS})
+source_group("Source Files\\UndoRedo" FILES ${BS_BANSHEEEDITOR_SRC_UNDOREDO})
+source_group("Header Files\\CodeEditor" FILES ${BS_BANSHEEEDITOR_INC_CODEEDITOR})
+source_group("Header Files\\Build" FILES ${BS_BANSHEEEDITOR_INC_BUILD})
+source_group("Source Files\\Build" FILES ${BS_BANSHEEEDITOR_SRC_BUILD})
+source_group("Source Files\\Handles" FILES ${BS_BANSHEEEDITOR_SRC_HANDLES})
+source_group("Header Files\\Testing" FILES ${BS_BANSHEEEDITOR_INC_TESTING})
+
+set(BS_BANSHEEEDITOR_SRC
+	${BS_BANSHEEEDITOR_INC_SETTINGS}
+	${BS_BANSHEEEDITOR_SRC_LIBRARY}
+	${BS_BANSHEEEDITOR_INC_EDITORWINDOW}
+	${BS_BANSHEEEDITOR_SRC_CODEEDITOR}
+	${BS_BANSHEEEDITOR_INC_SCENE}
+	${BS_BANSHEEEDITOR_SRC_GUI}
+	${BS_BANSHEEEDITOR_INC_LIBRARY}
+	${BS_BANSHEEEDITOR_INC_GUI}
+	${BS_BANSHEEEDITOR_INC_UNDOREDO}
+	${BS_BANSHEEEDITOR_INC_RTTI}
+	${BS_BANSHEEEDITOR_SRC_NOFILTER}
+	${BS_BANSHEEEDITOR_SRC_SCENEVIEW}
+	${BS_BANSHEEEDITOR_INC_NOFILTER}
+	${BS_BANSHEEEDITOR_INC_HANDLES}
+	${BS_BANSHEEEDITOR_SRC_UTILITY}
+	${BS_BANSHEEEDITOR_SRC_EDITORWINDOW}
+	${BS_BANSHEEEDITOR_INC_UTILITY}
+	${BS_BANSHEEEDITOR_SRC_TESTING}
+	${BS_BANSHEEEDITOR_SRC_SETTINGS}
+	${BS_BANSHEEEDITOR_SRC_UNDOREDO}
+	${BS_BANSHEEEDITOR_INC_CODEEDITOR}
+	${BS_BANSHEEEDITOR_INC_BUILD}
+	${BS_BANSHEEEDITOR_SRC_BUILD}
+	${BS_BANSHEEEDITOR_SRC_HANDLES}
+	${BS_BANSHEEEDITOR_INC_TESTING}
+)

+ 33 - 0
Source/BansheeEditorExec/CMakeLists.txt

@@ -0,0 +1,33 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeEditorExec_INC 
+	"Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../BansheeEngine/Include"
+	"../BansheeEditor/Include"
+	"../../Dependencies/Include")
+
+include_directories(${BansheeEditorExec_INC})	
+	
+# Target
+add_library(BansheeEditorExec SHARED ${BS_BANSHEEEDITOREXEC_SRC})
+
+# Libraries
+## Local libs
+target_link_libraries(BansheeEditorExec BansheeEditor BansheeEngine BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheeEditorExec PROPERTY FOLDER Executable)
+
+# Plugin dependencies
+add_dependencies(BansheeEditorExec BansheeFBXImporter BansheeFontImporter BansheeFreeImgImporter BansheeGLRenderAPI BansheeMono BansheeOISInput BansheePhysX BansheeSL RenderBeast SBansheeEngine SBansheeEditor Game)
+
+if(WIN32)
+	add_dependencies(BansheeEditorExec BansheeD3D11RenderAPI BansheeD3D9RenderAPI)
+endif()
+
+# Compiler flags
+target_compile_options(BansheeEditorExec PUBLIC /wd4509)

+ 15 - 0
Source/BansheeEditorExec/CMakeSources.cmake

@@ -0,0 +1,15 @@
+set(BS_BANSHEEEDITOREXEC_INC_NOFILTER
+	"resource.h"
+)
+
+set(BS_BANSHEEEDITOREXEC_SRC_NOFILTER
+	"BsEditorExec.cpp"
+)
+
+source_group("Header Files" FILES ${BS_BANSHEEEDITOREXEC_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_BANSHEEEDITOREXEC_SRC_NOFILTER})
+
+set(BS_BANSHEEEDITOREXEC_SRC
+	${BS_BANSHEEEDITOREXEC_INC_NOFILTER}
+	${BS_BANSHEEEDITOREXEC_SRC_NOFILTER}
+)

+ 24 - 0
Source/BansheeEngine/CMakeLists.txt

@@ -0,0 +1,24 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeEngine_INC 
+	"Include" 
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../../Dependencies/Include")
+
+include_directories(${BansheeEngine_INC})	
+	
+# Target
+add_library(BansheeEngine SHARED ${BS_BANSHEEENGINE_SRC})
+
+# Defines
+target_compile_definitions(BansheeEngine PRIVATE -DBS_EXPORTS)
+
+# Libraries
+## Local libs
+target_link_libraries(BansheeEngine BansheeUtility BansheeCore)	
+
+# IDE specific
+set_property(TARGET BansheeEngine PROPERTY FOLDER Layers)

+ 317 - 0
Source/BansheeEngine/CMakeSources.cmake

@@ -0,0 +1,317 @@
+set(BS_BANSHEEENGINE_INC_COMPONENTS
+	"Include/BsCCamera.h"
+	"Include/BsCRenderable.h"
+	"Include/BsCLight.h"
+)
+
+set(BS_BANSHEEENGINE_SRC_RESOURCES
+	"Source/BsScriptCodeImportOptions.cpp"
+	"Source/BsScriptCodeImporter.cpp"
+	"Source/BsScriptCode.cpp"
+	"Source/BsPlainTextImporter.cpp"
+	"Source/BsPlainText.cpp"
+	"Source/BsBuiltinResources.cpp"
+	"Source/BsEngineShaderIncludeHandler.cpp"
+	"Source/BsGameResourceManager.cpp"
+)
+
+set(BS_BANSHEEENGINE_SRC_SCRIPT
+	"Source/BsScriptManager.cpp"
+)
+
+set(BS_BANSHEEENGINE_INC_INPUT
+	"Include/BsInputConfiguration.h"
+	"Include/BsVirtualInput.h"
+)
+
+set(BS_BANSHEEENGINE_SRC_GUI
+	"Source/BsGUIElement.cpp"
+	"Source/BsGUILabel.cpp"
+	"Source/BsGUIManager.cpp"
+	"Source/BsGUISkin.cpp"
+	"Source/BsGUILayout.cpp"
+	"Source/BsGUILayoutX.cpp"
+	"Source/BsGUILayoutY.cpp"
+	"Source/BsGUIButton.cpp"
+	"Source/BsGUITexture.cpp"
+	"Source/BsGUIToggle.cpp"
+	"Source/BsGUIInputBox.cpp"
+	"Source/BsGUIMouseEvent.cpp"
+	"Source/BsGUIInputCaret.cpp"
+	"Source/BsGUIInputSelection.cpp"
+	"Source/BsGUIInputTool.cpp"
+	"Source/BsGUIElementBase.cpp"
+	"Source/BsGUIScrollBarVert.cpp"
+	"Source/BsGUIScrollBarHorz.cpp"
+	"Source/BsGUIScrollArea.cpp"
+	"Source/BsGUIScrollBar.cpp"
+	"Source/BsGUIToggleGroup.cpp"
+	"Source/BsDragAndDropManager.cpp"
+	"Source/BsGUIViewport.cpp"
+	"Source/BsGUIContent.cpp"
+	"Source/BsGUIListBox.cpp"
+	"Source/BsGUIMenu.cpp"
+	"Source/BsGUIHelper.cpp"
+	"Source/BsGUIDropDownBoxManager.cpp"
+	"Source/BsGUIContextMenu.cpp"
+	"Source/BsGUIButtonBase.cpp"
+	"Source/BsGUITextInputEvent.cpp"
+	"Source/BsProfilerOverlay.cpp"
+	"Source/BsGUIOptions.cpp"
+	"Source/BsGUIRenderTexture.cpp"
+	"Source/BsGUIElementContainer.cpp"
+	"Source/BsGUIDropDownHitBox.cpp"
+	"Source/BsGUILayoutUtility.cpp"
+	"Source/BsGUISliderHandle.cpp"
+	"Source/BsGUISlider.cpp"
+	"Source/BsGUIProgressBar.cpp"
+	"Source/BsGUISpace.cpp"
+	"Source/BsGUIDropDownContent.cpp"
+	"Source/BsGUIElementStyle.cpp"
+	"Source/BsGUIDimensions.cpp"
+	"Source/BsGUIPanel.cpp"
+	"Source/BsGUIDropDownMenu.cpp"
+	"Source/BsDropDownAreaPlacement.cpp"
+	"Source/BsGUITooltipManager.cpp"
+	"Source/BsGUITooltip.cpp"
+	"Source/BsGUIWidget.cpp"
+	"Source/BsShortcutKey.cpp"
+	"Source/BsShortcutManager.cpp"
+	"Source/BsCGUIWidget.cpp"
+)
+
+set(BS_BANSHEEENGINE_INC_PLATFORM
+	"Include/BsCursor.h"
+	"Include/BsSplashScreen.h"
+)
+
+set(BS_BANSHEEENGINE_INC_RENDERER
+	"Include/BsCamera.h"
+	"Include/BsLight.h"
+	"Include/BsRenderable.h"
+	"Include/BsRenderableElement.h"
+	"Include/BsRenderableHandler.h"
+	"Include/BsRenderer.h"
+	"Include/BsRendererMaterial.h"
+	"Include/BsRendererMaterialManager.h"
+	"Include/BsRenderQueue.h"
+	"Include/BsSceneManager.h"
+	"Include/BsRendererUtility.h"
+)
+
+set(BS_BANSHEEENGINE_SRC_RTTI
+	"Source/BsGUISkinRTTI.cpp"
+)
+
+set(BS_BANSHEEENGINE_SRC_2D
+	"Source/BsImageSprite.cpp"
+	"Source/BsSprite.cpp"
+	"Source/BsSpriteTexture.cpp"
+	"Source/BsTextSprite.cpp"
+)
+
+set(BS_BANSHEEENGINE_SRC_UTILITY
+	"Source/BsDrawHelper.cpp"
+	"Source/BsGameSettings.cpp"
+	"Source/BsHEString.cpp"
+	"Source/BsPaths.cpp"
+	"Source/BsShapeMeshes2D.cpp"
+	"Source/BsShapeMeshes3D.cpp"
+)
+
+set(BS_BANSHEEENGINE_INC_2D
+	"Include/BsImageSprite.h"
+	"Include/BsSprite.h"
+	"Include/BsSpriteTexture.h"
+	"Include/BsTextSprite.h"
+)
+
+set(BS_BANSHEEENGINE_INC_RTTI
+	"Include/BsSpriteTextureRTTI.h"
+	"Include/BsPlainTextRTTI.h"
+	"Include/BsScriptCodeRTTI.h"
+	"Include/BsScriptCodeImportOptionsRTTI.h"
+	"Include/BsGUIElementStyleRTTI.h"
+	"Include/BsGUISkinRTTI.h"
+	"Include/BsProfilerOverlayRTTI.h"
+	"Include/BsCCameraRTTI.h"
+	"Include/BsCRenderableRTTI.h"
+	"Include/BsCLightRTTI.h"
+	"Include/BsCameraRTTI.h"
+	"Include/BsRenderableRTTI.h"
+	"Include/BsLightRTTI.h"
+	"Include/BsCGUIWidgetRTTI.h"
+	"Include/BsGameSettingsRTTI.h"
+	"Include/BsResourceMappingRTTI.h"
+)
+
+set(BS_BANSHEEENGINE_INC_NOFILTER
+	"Include/BsApplication.h"
+	"Include/BsPrerequisites.h"
+)
+
+set(BS_BANSHEEENGINE_INC_RESOURCES
+	"Include/BsPlainText.h"
+	"Include/BsPlainTextImporter.h"
+	"Include/BsScriptCode.h"
+	"Include/BsScriptCodeImporter.h"
+	"Include/BsScriptCodeImportOptions.h"
+	"Include/BsBuiltinResources.h"
+	"Include/BsEngineShaderIncludeHandler.h"
+	"Include/BsGameResourceManager.h"
+)
+
+set(BS_BANSHEEENGINE_SRC_COMPONENTS
+	"Source/BsCCamera.cpp"
+	"Source/BsCRenderable.cpp"
+	"Source/BsCLight.cpp"
+)
+
+set(BS_BANSHEEENGINE_INC_SCRIPT
+	"Include/BsScriptManager.h"
+)
+
+set(BS_BANSHEEENGINE_INC_UTILITY
+	"Include/BsDrawHelper.h"
+	"Include/BsEnums.h"
+	"Include/BsGameSettings.h"
+	"Include/BsHEString.h"
+	"Include/BsPaths.h"
+	"Include/BsRectOffset.h"
+	"Include/BsShapeMeshes2D.h"
+	"Include/BsShapeMeshes3D.h"
+)
+
+set(BS_BANSHEEENGINE_SRC_RENDERER
+	"Source/BsCamera.cpp"
+	"Source/BsLight.cpp"
+	"Source/BsRenderable.cpp"
+	"Source/BsRenderableHandler.cpp"
+	"Source/BsRenderer.cpp"
+	"Source/BsRendererMaterial.cpp"
+	"Source/BsRendererMaterialManager.cpp"
+	"Source/BsRenderQueue.cpp"
+	"Source/BsSceneManager.cpp"
+	"Source/BsRendererUtility.cpp"
+)
+
+set(BS_BANSHEEENGINE_SRC_INPUT
+	"Source/BsInputConfiguration.cpp"
+	"Source/BsVirtualInput.cpp"
+)
+
+set(BS_BANSHEEENGINE_INC_GUI
+	"Include/BsGUIElement.h"
+	"Include/BsGUIElementStyle.h"
+	"Include/BsGUILabel.h"
+	"Include/BsGUIManager.h"
+	"Include/BsGUISkin.h"
+	"Include/BsGUILayout.h"
+	"Include/BsGUILayoutX.h"
+	"Include/BsGUILayoutY.h"
+	"Include/BsGUISpace.h"
+	"Include/BsGUIButton.h"
+	"Include/BsGUITexture.h"
+	"Include/BsGUIToggle.h"
+	"Include/BsGUIInputBox.h"
+	"Include/BsGUICommandEvent.h"
+	"Include/BsGUIInputCaret.h"
+	"Include/BsGUIInputSelection.h"
+	"Include/BsGUIInputTool.h"
+	"Include/BsGUIElementBase.h"
+	"Include/BsGUIScrollBarVert.h"
+	"Include/BsGUIScrollBarHorz.h"
+	"Include/BsGUIScrollArea.h"
+	"Include/BsGUIScrollBar.h"
+	"Include/BsGUIToggleGroup.h"
+	"Include/BsDragAndDropManager.h"
+	"Include/BsGUIViewport.h"
+	"Include/BsGUIContent.h"
+	"Include/BsGUIListBox.h"
+	"Include/BsGUIMenu.h"
+	"Include/BsGUIContextMenu.h"
+	"Include/BsGUIHelper.h"
+	"Include/BsGUIDropDownBoxManager.h"
+	"Include/BsGUIButtonBase.h"
+	"Include/BsGUITextInputEvent.h"
+	"Include/BsGUIMouseEvent.h"
+	"Include/BsProfilerOverlay.h"
+	"Include/BsGUIOptions.h"
+	"Include/BsGUIRenderTexture.h"
+	"Include/BsGUIElementContainer.h"
+	"Include/BsGUIDropDownHitBox.h"
+	"Include/BsGUIVirtualButtonEvent.h"
+	"Include/BsGUILayoutUtility.h"
+	"Include/BsGUISliderHandle.h"
+	"Include/BsGUISlider.h"
+	"Include/BsGUIProgressBar.h"
+	"Include/BsGUIDropDownContent.h"
+	"Include/BsGUIDimensions.h"
+	"Include/BsGUIPanel.h"
+	"Include/BsGUILayoutData.h"
+	"Include/BsGUIDropDownMenu.h"
+	"Include/BsDropDownAreaPlacement.h"
+	"Include/BsGUITooltipManager.h"
+	"Include/BsGUITooltip.h"
+	"Include/BsGUIWidget.h"
+	"Include/BsCGUIWidget.h"
+	"Include/BsShortcutManager.h"
+	"Include/BsShortcutKey.h"
+)
+
+set(BS_BANSHEEENGINE_SRC_NOFILTER
+	"Source/BsApplication.cpp"
+)
+
+set(BS_BANSHEEENGINE_SRC_PLATFORM
+	"Source/BsCursor.cpp"
+	"Source/BsSplashScreen.cpp"
+)
+
+source_group("Header Files\\Components" FILES ${BS_BANSHEEENGINE_INC_COMPONENTS})
+source_group("Source Files\\Resources" FILES ${BS_BANSHEEENGINE_SRC_RESOURCES})
+source_group("Source Files\\Script" FILES ${BS_BANSHEEENGINE_SRC_SCRIPT})
+source_group("Header Files\\Input" FILES ${BS_BANSHEEENGINE_INC_INPUT})
+source_group("Source Files\\GUI" FILES ${BS_BANSHEEENGINE_SRC_GUI})
+source_group("Header Files\\Platform" FILES ${BS_BANSHEEENGINE_INC_PLATFORM})
+source_group("Header Files\\Renderer" FILES ${BS_BANSHEEENGINE_INC_RENDERER})
+source_group("Source Files\\RTTI" FILES ${BS_BANSHEEENGINE_SRC_RTTI})
+source_group("Source Files\\2D" FILES ${BS_BANSHEEENGINE_SRC_2D})
+source_group("Source Files\\Utility" FILES ${BS_BANSHEEENGINE_SRC_UTILITY})
+source_group("Header Files\\2D" FILES ${BS_BANSHEEENGINE_INC_2D})
+source_group("Header Files\\RTTI" FILES ${BS_BANSHEEENGINE_INC_RTTI})
+source_group("Header Files" FILES ${BS_BANSHEEENGINE_INC_NOFILTER})
+source_group("Header Files\\Resources" FILES ${BS_BANSHEEENGINE_INC_RESOURCES})
+source_group("Source Files\\Components" FILES ${BS_BANSHEEENGINE_SRC_COMPONENTS})
+source_group("Header Files\\Script" FILES ${BS_BANSHEEENGINE_INC_SCRIPT})
+source_group("Header Files\\Utility" FILES ${BS_BANSHEEENGINE_INC_UTILITY})
+source_group("Source Files\\Renderer" FILES ${BS_BANSHEEENGINE_SRC_RENDERER})
+source_group("Source Files\\Input" FILES ${BS_BANSHEEENGINE_SRC_INPUT})
+source_group("Header Files\\GUI" FILES ${BS_BANSHEEENGINE_INC_GUI})
+source_group("Source Files" FILES ${BS_BANSHEEENGINE_SRC_NOFILTER})
+source_group("Source Files\\Platform" FILES ${BS_BANSHEEENGINE_SRC_PLATFORM})
+
+set(BS_BANSHEEENGINE_SRC
+	${BS_BANSHEEENGINE_INC_COMPONENTS}
+	${BS_BANSHEEENGINE_SRC_RESOURCES}
+	${BS_BANSHEEENGINE_SRC_SCRIPT}
+	${BS_BANSHEEENGINE_INC_INPUT}
+	${BS_BANSHEEENGINE_SRC_GUI}
+	${BS_BANSHEEENGINE_INC_PLATFORM}
+	${BS_BANSHEEENGINE_INC_RENDERER}
+	${BS_BANSHEEENGINE_SRC_RTTI}
+	${BS_BANSHEEENGINE_SRC_2D}
+	${BS_BANSHEEENGINE_SRC_UTILITY}
+	${BS_BANSHEEENGINE_INC_2D}
+	${BS_BANSHEEENGINE_INC_RTTI}
+	${BS_BANSHEEENGINE_INC_NOFILTER}
+	${BS_BANSHEEENGINE_INC_RESOURCES}
+	${BS_BANSHEEENGINE_SRC_COMPONENTS}
+	${BS_BANSHEEENGINE_INC_SCRIPT}
+	${BS_BANSHEEENGINE_INC_UTILITY}
+	${BS_BANSHEEENGINE_SRC_RENDERER}
+	${BS_BANSHEEENGINE_SRC_INPUT}
+	${BS_BANSHEEENGINE_INC_GUI}
+	${BS_BANSHEEENGINE_SRC_NOFILTER}
+	${BS_BANSHEEENGINE_SRC_PLATFORM}
+)

+ 39 - 0
Source/BansheeFBXImporter/CMakeLists.txt

@@ -0,0 +1,39 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeFBXImporter_INC 
+	"Include" 
+	"Dependencies/Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../../Dependencies/Include")
+
+include_directories(${BansheeFBXImporter_INC})	
+	
+# Target
+add_library(BansheeFBXImporter SHARED ${BS_BANSHEEFBXIMPORTER_SRC})
+
+# Defines
+target_compile_definitions(BansheeFBXImporter PRIVATE -DBS_FBX_EXPORTS)
+
+# Libraries
+if(BS_64BIT)
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x64)
+else()
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x86)
+endif()
+
+## External lib: FBX
+add_library(FBX STATIC IMPORTED)
+set_target_properties(FBX PROPERTIES IMPORTED_LOCATION_DEBUG ${BS_LOCAL_LIB_PATH}/Debug/libfbxsdk-md${BS_LIBRARY_EXTENSION})
+set_target_properties(FBX PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${BS_LOCAL_LIB_PATH}/OptimizedDebug/libfbxsdk-md${BS_LIBRARY_EXTENSION})
+set_target_properties(FBX PROPERTIES IMPORTED_LOCATION_RELEASE ${BS_LOCAL_LIB_PATH}/Release/libfbxsdk-md${BS_LIBRARY_EXTENSION})	
+	
+target_link_libraries(BansheeFBXImporter FBX)	
+
+## Local libs
+target_link_libraries(BansheeFBXImporter BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheeFBXImporter PROPERTY FOLDER Plugins)

+ 21 - 0
Source/BansheeFBXImporter/CMakeSources.cmake

@@ -0,0 +1,21 @@
+set(BS_BANSHEEFBXIMPORTER_INC_NOFILTER
+	"Include/BsFBXPrerequisites.h"
+	"Include/BsFBXImporter.h"
+	"Include/BsFBXImportData.h"
+	"Include/BsFBXUtility.h"
+)
+
+set(BS_BANSHEEFBXIMPORTER_SRC_NOFILTER
+	"Source/BsFBXPlugin.cpp"
+	"Source/BsFBXImporter.cpp"
+	"Source/BsFBXUtility.cpp"
+	"Source/BsFBXImportData.cpp"
+)
+
+source_group("Header Files" FILES ${BS_BANSHEEFBXIMPORTER_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_BANSHEEFBXIMPORTER_SRC_NOFILTER})
+
+set(BS_BANSHEEFBXIMPORTER_SRC
+	${BS_BANSHEEFBXIMPORTER_INC_NOFILTER}
+	${BS_BANSHEEFBXIMPORTER_SRC_NOFILTER}
+)

+ 39 - 0
Source/BansheeFontImporter/CMakeLists.txt

@@ -0,0 +1,39 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeFontImporter_INC 
+	"Include" 
+	"Dependencies/Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../../Dependencies/Include")
+
+include_directories(${BansheeFontImporter_INC})	
+	
+# Target
+add_library(BansheeFontImporter SHARED ${BS_BANSHEEFONTIMPORTER_SRC})
+
+# Defines
+target_compile_definitions(BansheeFontImporter PRIVATE -DBS_FONT_EXPORTS -DUSE_FREETYPE2_STATIC)
+
+# Libraries
+if(BS_64BIT)
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x64)
+else()
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x86)
+endif()
+
+## External lib: FreeType
+add_library(FreeType STATIC IMPORTED)
+set_target_properties(FreeType PROPERTIES IMPORTED_LOCATION_DEBUG ${BS_LOCAL_LIB_PATH}/Debug/freetype${BS_LIBRARY_EXTENSION})
+set_target_properties(FreeType PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${BS_LOCAL_LIB_PATH}/OptimizedDebug/freetype${BS_LIBRARY_EXTENSION})
+set_target_properties(FreeType PROPERTIES IMPORTED_LOCATION_RELEASE ${BS_LOCAL_LIB_PATH}/Release/freetype${BS_LIBRARY_EXTENSION})	
+	
+target_link_libraries(BansheeFontImporter FreeType)	
+
+## Local libs
+target_link_libraries(BansheeFontImporter BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheeFontImporter PROPERTY FOLDER Plugins)

+ 17 - 0
Source/BansheeFontImporter/CMakeSources.cmake

@@ -0,0 +1,17 @@
+set(BS_BANSHEEFONTIMPORTER_INC_NOFILTER
+	"Include/BsFontPrerequisites.h"
+	"Include/BsFontImporter.h"
+)
+
+set(BS_BANSHEEFONTIMPORTER_SRC_NOFILTER
+	"Source/BsFontPlugin.cpp"
+	"Source/BsFontImporter.cpp"
+)
+
+source_group("Header Files" FILES ${BS_BANSHEEFONTIMPORTER_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_BANSHEEFONTIMPORTER_SRC_NOFILTER})
+
+set(BS_BANSHEEFONTIMPORTER_SRC
+	${BS_BANSHEEFONTIMPORTER_INC_NOFILTER}
+	${BS_BANSHEEFONTIMPORTER_SRC_NOFILTER}
+)

+ 39 - 0
Source/BansheeFreeImgImporter/CMakeLists.txt

@@ -0,0 +1,39 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeFreeImgImporter_INC 
+	"Include" 
+	"Dependencies/Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../../Dependencies/Include")
+
+include_directories(${BansheeFreeImgImporter_INC})	
+	
+# Target
+add_library(BansheeFreeImgImporter SHARED ${BS_BANSHEEFREEIMGIMPORTER_SRC})
+
+# Defines
+target_compile_definitions(BansheeFreeImgImporter PRIVATE -DBS_FREEIMG_EXPORTS -D_MBCS -DFREEIMAGE_LIB)
+
+# Libraries
+if(BS_64BIT)
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x64)
+else()
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x86)
+endif()
+
+## External lib: FreeImage
+add_library(FreeImage STATIC IMPORTED)
+set_target_properties(FreeImage PROPERTIES IMPORTED_LOCATION_DEBUG ${BS_LOCAL_LIB_PATH}/Debug/FreeImage${BS_LIBRARY_EXTENSION})
+set_target_properties(FreeImage PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${BS_LOCAL_LIB_PATH}/OptimizedDebug/FreeImage${BS_LIBRARY_EXTENSION})
+set_target_properties(FreeImage PROPERTIES IMPORTED_LOCATION_RELEASE ${BS_LOCAL_LIB_PATH}/Release/FreeImage${BS_LIBRARY_EXTENSION})	
+	
+target_link_libraries(BansheeFreeImgImporter FreeImage)	
+
+## Local libs
+target_link_libraries(BansheeFreeImgImporter BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheeFreeImgImporter PROPERTY FOLDER Plugins)

+ 17 - 0
Source/BansheeFreeImgImporter/CMakeSources.cmake

@@ -0,0 +1,17 @@
+set(BS_BANSHEEFREEIMGIMPORTER_INC_NOFILTER
+	"Include/BsFreeImgPrerequisites.h"
+	"Include/BsFreeImgImporter.h"
+)
+
+set(BS_BANSHEEFREEIMGIMPORTER_SRC_NOFILTER
+	"Source/BsFreeImgPlugin.cpp"
+	"Source/BsFreeImgImporter.cpp"
+)
+
+source_group("Header Files" FILES ${BS_BANSHEEFREEIMGIMPORTER_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_BANSHEEFREEIMGIMPORTER_SRC_NOFILTER})
+
+set(BS_BANSHEEFREEIMGIMPORTER_SRC
+	${BS_BANSHEEFREEIMGIMPORTER_INC_NOFILTER}
+	${BS_BANSHEEFREEIMGIMPORTER_SRC_NOFILTER}
+)

+ 34 - 0
Source/BansheeGLRenderAPI/CMakeLists.txt

@@ -0,0 +1,34 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeGLRenderAPI_INC 
+	"Include" 
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../../Dependencies/Include"
+	"Source/GLSL/include")
+
+if(WIN32)
+	set(BansheeGLRenderAPI_INC ${BansheeGLRenderAPI_INC} "Source/win32")
+else()
+# TODO_OTHER_PLATFORMS_GO_HERE
+endif()
+	
+include_directories(${BansheeGLRenderAPI_INC})	
+	
+# Target
+add_library(BansheeGLRenderAPI SHARED ${BS_BANSHEEGLRENDERAPI_SRC})
+
+# Defines
+target_compile_definitions(BansheeGLRenderAPI PRIVATE -DBS_RSGL_EXPORTS -DGLEW_STATIC)
+
+# Libraries
+## External lib: OpenGL
+target_link_libraries(BansheeGLRenderAPI glu32 opengl32)	
+
+## Local libs
+target_link_libraries(BansheeGLRenderAPI BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheeGLRenderAPI PROPERTY FOLDER Plugins)

+ 98 - 0
Source/BansheeGLRenderAPI/CMakeSources.cmake

@@ -0,0 +1,98 @@
+set(BS_BANSHEEGLRENDERAPI_SRC_GLSL
+	"Source/GLSL/src/BsGLSLProgramPipelineManager.cpp"
+	"Source/GLSL/src/BsGLSLProgramFactory.cpp"
+	"Source/GLSL/src/BsGLSLGpuProgram.cpp"
+	"Source/BsGLSLParamParser.cpp"
+)
+
+set(BS_BANSHEEGLRENDERAPI_INC_NOFILTER
+	"Include/BsGLVertexArrayObjectManager.h"
+	"Include/BsGLVertexBuffer.h"
+	"Include/BsGLTimerQuery.h"
+	"Include/BsGLTextureManager.h"
+	"Include/BsGLTexture.h"
+	"Include/BsGLSupport.h"
+	"Include/BsGLRenderWindowManager.h"
+	"Include/BsGLRenderTexture.h"
+	"Include/BsGLQueryManager.h"
+	"Include/BsGLPrerequisites.h"
+	"Include/BsGLPixelFormat.h"
+	"Include/BsGLPixelBuffer.h"
+	"Include/BsGLOcclusionQuery.h"
+	"Include/BsGLMultiRenderTexture.h"
+	"Include/BsGLIndexBuffer.h"
+	"Include/BsGLHardwareBufferManager.h"
+	"Include/BsGLGpuParamBlockBuffer.h"
+	"Include/BsGLGpuBuffer.h"
+	"Include/BsGLFrameBufferObject.h"
+	"Include/BsGLEventQuery.h"
+	"Include/BsGLContext.h"
+	"Include/BsGLRenderAPI.h"
+	"Include/BsGLRenderAPIFactory.h"
+	"Include/BsGLUtil.h"
+)
+
+set(BS_BANSHEEGLRENDERAPI_SRC_WIN32
+	"Source/win32/BsWin32Context.cpp"
+	"Source/Win32/BsWin32GLSupport.cpp"
+	"Source/Win32/BsWin32RenderWindow.cpp"
+	"Source/Win32/BsWin32VideoModeInfo.cpp"
+)
+
+set(BS_BANSHEEGLRENDERAPI_SRC_NOFILTER
+	"Source/glew.cpp"
+	"Source/BsGLVertexArrayObjectManager.cpp"
+	"Source/BsGLVertexBuffer.cpp"
+	"Source/BsGLTimerQuery.cpp"
+	"Source/BsGLTextureManager.cpp"
+	"Source/BsGLTexture.cpp"
+	"Source/BsGLSupport.cpp"
+	"Source/BsGLRenderWindowManager.cpp"
+	"Source/BsGLRenderTexture.cpp"
+	"Source/BsGLQueryManager.cpp"
+	"Source/BsGLPixelFormat.cpp"
+	"Source/BsGLPixelBuffer.cpp"
+	"Source/BsGLOcclusionQuery.cpp"
+	"Source/BsGLMultiRenderTexture.cpp"
+	"Source/BsGLIndexBuffer.cpp"
+	"Source/BsGLHardwareBufferManager.cpp"
+	"Source/BsGLGpuParamBlockBuffer.cpp"
+	"Source/BsGLGpuBuffer.cpp"
+	"Source/BsGLFrameBufferObject.cpp"
+	"Source/BsGLEventQuery.cpp"
+	"Source/BsGLContext.cpp"
+	"Source/BsGLRenderAPI.cpp"
+	"Source/BsGLRenderAPIFactory.cpp"
+	"Source/BsGLPlugin.cpp"
+)
+
+set(BS_BANSHEEGLRENDERAPI_INC_GLSL
+	"Source/GLSL/include/BsGLSLProgramPipelineManager.h"
+	"Source/GLSL/include/BsGLSLProgramFactory.h"
+	"Source/GLSL/include/BsGLSLParamParser.h"
+	"Source/GLSL/include/BsGLSLGpuProgram.h"
+)
+
+set(BS_BANSHEEGLRENDERAPI_INC_WIN32
+	"Include/Win32/BsWin32Context.h"
+	"Include/Win32/BsWin32GLSupport.h"
+	"Include/Win32/BsWin32Prerequisites.h"
+	"Include/Win32/BsWin32RenderWindow.h"
+	"Include/Win32/BsWin32VideoModeInfo.h"
+)
+
+source_group("Source Files\\GLSL" FILES ${BS_BANSHEEGLRENDERAPI_SRC_GLSL})
+source_group("Header Files" FILES ${BS_BANSHEEGLRENDERAPI_INC_NOFILTER})
+source_group("Source Files\\Win32" FILES ${BS_BANSHEEGLRENDERAPI_SRC_WIN32})
+source_group("Source Files" FILES ${BS_BANSHEEGLRENDERAPI_SRC_NOFILTER})
+source_group("Header Files\\GLSL" FILES ${BS_BANSHEEGLRENDERAPI_INC_GLSL})
+source_group("Header Files\\Win32" FILES ${BS_BANSHEEGLRENDERAPI_INC_WIN32})
+
+set(BS_BANSHEEGLRENDERAPI_SRC
+	${BS_BANSHEEGLRENDERAPI_SRC_GLSL}
+	${BS_BANSHEEGLRENDERAPI_INC_NOFILTER}
+	${BS_BANSHEEGLRENDERAPI_SRC_WIN32}
+	${BS_BANSHEEGLRENDERAPI_SRC_NOFILTER}
+	${BS_BANSHEEGLRENDERAPI_INC_GLSL}
+	${BS_BANSHEEGLRENDERAPI_INC_WIN32}
+)

+ 39 - 0
Source/BansheeMono/CMakeLists.txt

@@ -0,0 +1,39 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeMono_INC 
+	"Include" 
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../BansheeEngine/Include"
+	"../../Dependencies/Include")
+
+include_directories(${BansheeMono_INC})	
+	
+# Target
+add_library(BansheeMono SHARED ${BS_BANSHEEMONO_SRC})
+
+# Defines
+target_compile_definitions(BansheeMono PRIVATE -DBS_MONO_EXPORTS)
+
+# Libraries
+if(BS_64BIT)
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x64)
+else()
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x86)
+endif()
+
+## External lib: Mono
+add_library(Mono STATIC IMPORTED)
+set_target_properties(Mono PROPERTIES IMPORTED_LOCATION_DEBUG ${BS_LIBRARY_DEPENDENCIES_DIR_DEBUG}/mono-2.0${BS_LIBRARY_EXTENSION})
+set_target_properties(Mono PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${BS_LIBRARY_DEPENDENCIES_DIR_OPTIMIZEDEBUG}/mono-2.0${BS_LIBRARY_EXTENSION})
+set_target_properties(Mono PROPERTIES IMPORTED_LOCATION_RELEASE ${BS_LIBRARY_DEPENDENCIES_DIR_RELEASE}/mono-2.0${BS_LIBRARY_EXTENSION})	
+	
+target_link_libraries(BansheeMono Mono)	
+
+## Local libs
+target_link_libraries(BansheeMono BansheeEngine BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheeMono PROPERTY FOLDER Plugins)

+ 33 - 0
Source/BansheeMono/CMakeSources.cmake

@@ -0,0 +1,33 @@
+set(BS_BANSHEEMONO_INC_NOFILTER
+	"Include/BsMonoPrerequisites.h"
+	"Include/BsMonoAssembly.h"
+	"Include/BsMonoClass.h"
+	"Include/BsMonoField.h"
+	"Include/BsMonoManager.h"
+	"Include/BsMonoMethod.h"
+	"Include/BsMonoProperty.h"
+	"Include/BsMonoUtil.h"
+	"Include/BsScriptMeta.h"
+	"Include/BsMonoArray.h"
+)
+
+set(BS_BANSHEEMONO_SRC_NOFILTER
+	"Source/BsMonoAssembly.cpp"
+	"Source/BsMonoClass.cpp"
+	"Source/BsMonoField.cpp"
+	"Source/BsMonoManager.cpp"
+	"Source/BsMonoMethod.cpp"
+	"Source/BsMonoProperty.cpp"
+	"Source/BsMonoPlugin.cpp"
+	"Source/BsScriptMeta.cpp"
+	"Source/BsMonoUtil.cpp"
+	"Source/BsMonoArray.cpp"
+)
+
+source_group("Header Files" FILES ${BS_BANSHEEMONO_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_BANSHEEMONO_SRC_NOFILTER})
+
+set(BS_BANSHEEMONO_SRC
+	${BS_BANSHEEMONO_INC_NOFILTER}
+	${BS_BANSHEEMONO_SRC_NOFILTER}
+)

+ 39 - 0
Source/BansheeOISInput/CMakeLists.txt

@@ -0,0 +1,39 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeOISInput_INC 
+	"Include"
+	"Dependencies/Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../../Dependencies/Include")
+
+include_directories(${BansheeOISInput_INC})	
+	
+# Target
+add_library(BansheeOISInput SHARED ${BS_BANSHEEOISINPUT_SRC})
+
+# Defines
+target_compile_definitions(BansheeOISInput PRIVATE -DBS_OIS_EXPORTS -DOIS_DYNAMIC_LIB -DOIS_NONCLIENT_BUILD)
+
+# Libraries
+if(BS_64BIT)
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x64)
+else()
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x86)
+endif()
+
+## External lib: OIS
+add_library(OIS STATIC IMPORTED)
+set_target_properties(OIS PROPERTIES IMPORTED_LOCATION_DEBUG ${BS_LOCAL_LIB_PATH}/Debug/BansheeOIS${BS_LIBRARY_EXTENSION})
+set_target_properties(OIS PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${BS_LOCAL_LIB_PATH}/OptimizedDebug/BansheeOIS${BS_LIBRARY_EXTENSION})
+set_target_properties(OIS PROPERTIES IMPORTED_LOCATION_RELEASE ${BS_LOCAL_LIB_PATH}/Release/BansheeOIS${BS_LIBRARY_EXTENSION})	
+	
+target_link_libraries(BansheeOISInput OIS)	
+
+## Local libs
+target_link_libraries(BansheeOISInput BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheeOISInput PROPERTY FOLDER Plugins)

+ 17 - 0
Source/BansheeOISInput/CMakeSources.cmake

@@ -0,0 +1,17 @@
+set(BS_BANSHEEOISINPUT_INC_NOFILTER
+	"Include/BsInputHandlerOIS.h"
+	"Include/BsOISPrerequisites.h"
+)
+
+set(BS_BANSHEEOISINPUT_SRC_NOFILTER
+	"Source/BsInputHandlerOIS.cpp"
+	"Source/BsOISPlugin.cpp"
+)
+
+source_group("Header Files" FILES ${BS_BANSHEEOISINPUT_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_BANSHEEOISINPUT_SRC_NOFILTER})
+
+set(BS_BANSHEEOISINPUT_SRC
+	${BS_BANSHEEOISINPUT_INC_NOFILTER}
+	${BS_BANSHEEOISINPUT_SRC_NOFILTER}
+)

+ 60 - 0
Source/BansheePhysX/CMakeLists.txt

@@ -0,0 +1,60 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheePhysX_INC 
+	"Include"
+	"Dependencies/Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include")
+
+include_directories(${BansheePhysX_INC})	
+	
+# Target
+add_library(BansheePhysX SHARED ${BS_BANSHEEPHYSX_SRC})
+
+# Defines
+target_compile_definitions(BansheePhysX PRIVATE -DBS_PHYSX_EXPORTS)
+
+# Libraries
+if(BS_64BIT)
+	set(BS_LOCAL_LIB_SUFFIX _x64)
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x64)
+else()
+	set(BS_LOCAL_LIB_SUFFIX _x86)
+	set(BS_LOCAL_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/lib/x86)
+endif()
+
+## External lib: PhysX
+add_library(PhysX STATIC IMPORTED)
+set_target_properties(PhysX PROPERTIES IMPORTED_LOCATION_DEBUG ${BS_LOCAL_LIB_PATH}/Debug/PhysX3CHECKED${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})
+set_target_properties(PhysX PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${BS_LOCAL_LIB_PATH}/OptimizedDebug/PhysX3${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})
+set_target_properties(PhysX PROPERTIES IMPORTED_LOCATION_RELEASE ${BS_LOCAL_LIB_PATH}/Release/PhysX3${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})	
+	
+add_library(PhysXCommon STATIC IMPORTED)
+set_target_properties(PhysXCommon PROPERTIES IMPORTED_LOCATION_DEBUG ${BS_LOCAL_LIB_PATH}/Debug/PhysX3CommonCHECKED${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})
+set_target_properties(PhysXCommon PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${BS_LOCAL_LIB_PATH}/OptimizedDebug/PhysX3Common${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})
+set_target_properties(PhysXCommon PROPERTIES IMPORTED_LOCATION_RELEASE ${BS_LOCAL_LIB_PATH}/Release/PhysX3Common${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})
+
+add_library(PhysXCooking STATIC IMPORTED)
+set_target_properties(PhysXCooking PROPERTIES IMPORTED_LOCATION_DEBUG ${BS_LOCAL_LIB_PATH}/Debug/PhysX3CookingCHECKED${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})
+set_target_properties(PhysXCooking PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${BS_LOCAL_LIB_PATH}/OptimizedDebug/PhysX3Cooking${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})
+set_target_properties(PhysXCooking PROPERTIES IMPORTED_LOCATION_RELEASE ${BS_LOCAL_LIB_PATH}/Release/PhysX3Cooking${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})
+
+add_library(PhysXCharacterKinematic STATIC IMPORTED)
+set_target_properties(PhysXCharacterKinematic PROPERTIES IMPORTED_LOCATION_DEBUG ${BS_LOCAL_LIB_PATH}/Debug/PhysX3CharacterKinematicCHECKED${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})
+set_target_properties(PhysXCharacterKinematic PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${BS_LOCAL_LIB_PATH}/OptimizedDebug/PhysX3CharacterKinematic${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})
+set_target_properties(PhysXCharacterKinematic PROPERTIES IMPORTED_LOCATION_RELEASE ${BS_LOCAL_LIB_PATH}/Release/PhysX3CharacterKinematic${BS_LOCAL_LIB_SUFFIX}${BS_LIBRARY_EXTENSION})
+
+add_library(PhysXExtensions STATIC IMPORTED)
+set_target_properties(PhysXExtensions PROPERTIES IMPORTED_LOCATION_DEBUG ${BS_LOCAL_LIB_PATH}/Debug/PhysX3ExtensionsCHECKED${BS_LIBRARY_EXTENSION})
+set_target_properties(PhysXExtensions PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${BS_LOCAL_LIB_PATH}/OptimizedDebug/PhysX3Extensions${BS_LIBRARY_EXTENSION})
+set_target_properties(PhysXExtensions PROPERTIES IMPORTED_LOCATION_RELEASE ${BS_LOCAL_LIB_PATH}/Release/PhysX3Extensions${BS_LIBRARY_EXTENSION})
+	
+target_link_libraries(BansheePhysX PhysX PhysXCommon PhysXCooking PhysXCharacterKinematic PhysXExtensions)	
+
+## Local libs
+target_link_libraries(BansheePhysX BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheePhysX PROPERTY FOLDER Plugins)

+ 57 - 0
Source/BansheePhysX/CMakeSources.cmake

@@ -0,0 +1,57 @@
+set(BS_BANSHEEPHYSX_INC_NOFILTER
+	"Include/BsPhysXPrerequisites.h"
+	"Include/BsPhysX.h"
+	"Include/BsPhysXMaterial.h"
+	"Include/BsPhysXRigidbody.h"
+	"Include/BsPhysXBoxCollider.h"
+	"Include/BsFPhysXCollider.h"
+	"Include/BsPhysXSphereCollider.h"
+	"Include/BsPhysXPlaneCollider.h"
+	"Include/BsPhysXCapsuleCollider.h"
+	"Include/BsPhysXMesh.h"
+	"Include/BsPhysXMeshCollider.h"
+	"Include/BsFPhysXJoint.h"
+	"Include/BsPhysXFixedJoint.h"
+	"Include/BsPhysXDistanceJoint.h"
+	"Include/BsPhysXHingeJoint.h"
+	"Include/BsPhysXSliderJoint.h"
+	"Include/BsPhysXSphericalJoint.h"
+	"Include/BsPhysXD6Joint.h"
+	"Include/BsPhysXCharacterController.h"
+)
+
+set(BS_BANSHEEPHYSX_SRC_NOFILTER
+	"Source/BsPhysXPlugin.cpp"
+	"Source/BsPhysX.cpp"
+	"Source/BsPhysXMaterial.cpp"
+	"Source/BsPhysXRigidbody.cpp"
+	"Source/BsPhysXBoxCollider.cpp"
+	"Source/BsFPhysXCollider.cpp"
+	"Source/BsPhysXSphereCollider.cpp"
+	"Source/BsPhysXPlaneCollider.cpp"
+	"Source/BsPhysXCapsuleCollider.cpp"
+	"Source/BsPhysXMesh.cpp"
+	"Source/BsPhysXMeshCollider.cpp"
+	"Source/BsFPhysXJoint.cpp"
+	"Source/BsPhysXFixedJoint.cpp"
+	"Source/BsPhysXDistanceJoint.cpp"
+	"Source/BsPhysXHingeJoint.cpp"
+	"Source/BsPhysXSliderJoint.cpp"
+	"Source/BsPhysXSphericalJoint.cpp"
+	"Source/BsPhysXD6Joint.cpp"
+	"Source/BsPhysXCharacterController.cpp"
+)
+
+set(BS_BANSHEEPHYSX_INC_RTTI
+	"Include/BsPhysXMeshRTTI.h"
+)
+
+source_group("Header Files" FILES ${BS_BANSHEEPHYSX_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_BANSHEEPHYSX_SRC_NOFILTER})
+source_group("Header Files\\RTTI" FILES ${BS_BANSHEEPHYSX_INC_RTTI})
+
+set(BS_BANSHEEPHYSX_SRC
+	${BS_BANSHEEPHYSX_INC_NOFILTER}
+	${BS_BANSHEEPHYSX_SRC_NOFILTER}
+	${BS_BANSHEEPHYSX_INC_RTTI}
+)

+ 41 - 0
Source/BansheeSL/CMakeLists.txt

@@ -0,0 +1,41 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeSL_INC 
+	"Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../BansheeEngine/Include"
+	"../../Dependencies/Include")
+
+include_directories(${BansheeSL_INC})	
+	
+# Target
+add_library(BansheeSL SHARED ${BS_BANSHEESL_SRC})
+
+# Defines
+target_compile_definitions(BansheeSL PRIVATE -DBS_SL_EXPORTS)
+
+# Pre-built step
+if(WIN32)
+add_custom_command(TARGET BansheeSL PRE_BUILD 
+	COMMAND ../../../Source/BansheeSL/Dependencies/tools/flex/flex.exe --wincompat ../../../Source/BansheeSL/BsLexerFX.l
+	COMMAND ../../../Source/BansheeSL/Dependencies/tools/bison/bison.exe ../../../Source/BansheeSL/BsParserFX.y
+	COMMAND xcopy /Y /I BsLexerFX.h \"../../../Source/BansheeSL/Include\"
+	COMMAND xcopy /Y /I BsLexerFX.c \"../../../Source/BansheeSL/Source\"
+	COMMAND xcopy /Y /I BsParserFX.h \"../../../Source/BansheeSL/Include\"
+	COMMAND xcopy /Y /I BsParserFX.c \"../../../Source/BansheeSL/Source\"
+	COMMAND del BsLexerFX.h BsLexerFX.c BsParserFX.h BsParserFX.c
+	COMMENT "Building lexer/parser..."
+)
+else()
+# TODO_OTHER_PLATFORMS_GO_HERE
+endif()
+
+# Libraries
+## Local libs
+target_link_libraries(BansheeSL BansheeEngine BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheeSL PROPERTY FOLDER Plugins)

+ 29 - 0
Source/BansheeSL/CMakeSources.cmake

@@ -0,0 +1,29 @@
+set(BS_BANSHEESL_INC_NOFILTER
+	"Include/BsSLPrerequisites.h"
+	"Include/BsASTFX.h"
+	"Include/BsMMAlloc.h"
+	"Include/BsSLImporter.h"
+	"Include/BsSLFXCompiler.h"
+	"Include/BsIncludeHandler.h"
+	"Include/BsLexerFX.h"
+	"Include/BsParserFX.h"
+)
+
+set(BS_BANSHEESL_SRC_NOFILTER
+	"Source/BsSLPlugin.cpp"
+	"Source/BsASTFX.c"
+	"Source/BsSLImporter.cpp"
+	"Source/BsSLFXCompiler.cpp"
+	"Source/BsIncludeHandler.cpp"
+	"Source/BSMMAlloc.c"
+	"Source/BsLexerFX.c"
+	"Source/BsParserFX.c"
+)
+
+source_group("Header Files" FILES ${BS_BANSHEESL_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_BANSHEESL_SRC_NOFILTER})
+
+set(BS_BANSHEESL_SRC
+	${BS_BANSHEESL_INC_NOFILTER}
+	${BS_BANSHEESL_SRC_NOFILTER}
+)

+ 16 - 17
Source/BansheeUtility/CMakeLists.txt

@@ -1,25 +1,20 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
 # Includes
-set(BansheeUtility_INC "Include" "Include/ThirdParty" "../../Dependencies/include")
+set(BansheeUtility_INC 
+	"Include" 
+	"Include/ThirdParty" 
+	"../../Dependencies/Include")
 
 if(WIN32)
 	set(BansheeUtility_INC ${BansheeUtility_INC} "Include/Win32")
+else()
+	# TODO_OTHER_PLATFORMS_GO_HERE
 endif()
 
 include_directories(${BansheeUtility_INC})	
 	
-# Sources
-set(BansheeUtility_SRC_FOLDERS "Source/*.cpp" "Source/ThirdParty/*.cpp")
-
-if(WIN32)
-	set(BansheeUtility_SRC_FOLDERS ${BansheeUtility_SRC_FOLDERS} "Source/Win32/*.cpp")
-endif()
-
-foreach(includeFolder ${BansheeUtility_INC})
-	set(BansheeUtility_SRC_FOLDERS ${BansheeUtility_SRC_FOLDERS} "${includeFolder}/*.h")
-endforeach()
-
-file(GLOB BansheeUtility_SRC ${BansheeUtility_SRC_FOLDERS})
-
 # Configure file
 #configure_file (
 #  "BsBuildConfig.h.in"
@@ -29,12 +24,13 @@ file(GLOB BansheeUtility_SRC ${BansheeUtility_SRC_FOLDERS})
 #include_directories ("${CMAKE_CURRENT_BINARY_DIR}/Generated")
 
 # Target
-add_library(BansheeUtility SHARED ${BansheeUtility_SRC})
+add_library(BansheeUtility SHARED ${BS_BANSHEEUTILITY_SRC})
 
 # Defines
-target_compile_definitions(BansheeUtility PUBLIC -DBS_UTILITY_EXPORTS)
+target_compile_definitions(BansheeUtility PRIVATE -DBS_UTILITY_EXPORTS)
 
 # Libraries
+## OS libs
 if(WIN32)
 target_link_libraries(BansheeUtility 
 	DbgHelp
@@ -43,4 +39,7 @@ target_link_libraries(BansheeUtility
 	)
 else()
 	# TODO_OTHER_PLATFORMS_GO_HERE
-endif()
+endif()
+
+# IDE specific
+set_property(TARGET BansheeUtility PROPERTY FOLDER Layers)

+ 303 - 0
Source/BansheeUtility/CMakeSources.cmake

@@ -0,0 +1,303 @@
+set(BS_BANSHEEUTILITY_INC_THREADING
+	"Include/BsThreadDefines.h"
+	"Include/BsAsyncOp.h"
+	"Include/BsSpinLock.h"
+	"Include/BsThreadPool.h"
+	"Include/BsTaskScheduler.h"
+)
+
+set(BS_BANSHEEUTILITY_SRC_THIRDPARTY
+	"Source/ThirdParty/md5.cpp"
+)
+
+set(BS_BANSHEEUTILITY_INC_PREREQUISITES
+	"Include/BsTypes.h"
+	"Include/BsStdHeaders.h"
+	"Include/BsPrerequisitesUtil.h"
+	"Include/BsPlatformDefines.h"
+	"Include/BsFwdDeclUtil.h"
+	"Include/BsRTTIPrerequisites.h"
+)
+
+set(BS_BANSHEEUTILITY_SRC_WIN32
+	"Source/Win32/BsWin32FileSystem.cpp"
+	"Source/Win32/BsWin32CrashHandler.cpp"
+	"Source/Win32/BsWin32Timer.cpp"
+	"Source/Win32/BsWin32PlatformUtility.cpp"
+	"Source/Win32/BsWin32Window.cpp"
+)
+
+set(BS_BANSHEEUTILITY_INC_IMAGE
+	"Include/BsColor.h"
+	"Include/BsTexAtlasGenerator.h"
+)
+
+set(BS_BANSHEEUTILITY_INC_STRING
+	"Include/BsString.h"
+	"Include/BsStringFormat.h"
+	"Include/BsStringID.h"
+)
+
+set(BS_BANSHEEUTILITY_SRC_IMAGE
+	"Source/BsColor.cpp"
+	"Source/BsTexAtlasGenerator.cpp"
+)
+
+set(BS_BANSHEEUTILITY_SRC_GENERAL
+	"Source/BsDynLib.cpp"
+	"Source/BsDynLibManager.cpp"
+	"Source/BsMessageHandler.cpp"
+	"Source/BsTime.cpp"
+	"Source/BsUtil.cpp"
+)
+
+set(BS_BANSHEEUTILITY_INC_DEBUG
+	"Include/BsBitmapWriter.h"
+	"Include/BsDebug.h"
+	"Include/BsLog.h"
+)
+
+set(BS_BANSHEEUTILITY_INC_FILESYSTEM
+	"Include/BsFileSystem.h"
+	"Include/BsDataStream.h"
+	"Include/BsPath.h"
+)
+
+set(BS_BANSHEEUTILITY_SRC_FILESYSTEM
+	"Source/BsDataStream.cpp"
+	"Source/BsPath.cpp"
+)
+
+set(BS_BANSHEEUTILITY_SRC_THREADING
+	"Source/BsAsyncOp.cpp"
+	"Source/BsTaskScheduler.cpp"
+	"Source/BsThreadPool.cpp"
+)
+
+set(BS_BANSHEEUTILITY_INC_GENERAL
+	"Include/BsAny.h"
+	"Include/BsBitwise.h"
+	"Include/BsDynLib.h"
+	"Include/BsDynLibManager.h"
+	"Include/BsEvent.h"
+	"Include/BsMessageHandler.h"
+	"Include/BsMessageHandlerFwd.h"
+	"Include/BsModule.h"
+	"Include/BsPlatformUtility.h"
+	"Include/BsServiceLocator.h"
+	"Include/BsTime.h"
+	"Include/BsTimer.h"
+	"Include/BsUtil.h"
+	"Include/BsFlags.h"
+)
+
+set(BS_BANSHEEUTILITY_SRC_ALLOCATORS
+	"Source/BsFrameAlloc.cpp"
+	"Source/BsGlobalFrameAlloc.cpp"
+	"Source/BsMemStack.cpp"
+	"Source/BsMemoryAllocator.cpp"
+)
+
+set(BS_BANSHEEUTILITY_SRC_RTTI
+	"Source/BsIReflectable.cpp"
+	"Source/BsRTTIField.cpp"
+	"Source/BsRTTIType.cpp"
+)
+
+set(BS_BANSHEEUTILITY_SRC_DEBUG
+	"Source/BsBitmapWriter.cpp"
+	"Source/BsLog.cpp"
+	"Source/BsDebug.cpp"
+)
+
+set(BS_BANSHEEUTILITY_INC_RTTI
+	"Include/BsSerializedObjectRTTI.h"
+)
+
+set(BS_BANSHEEUTILITY_INC_ALLOCATORS
+	"Include/BsFrameAlloc.h"
+	"Include/BsGlobalFrameAlloc.h"
+	"Include/BsMemAllocProfiler.h"
+	"Include/BsMemoryAllocator.h"
+	"Include/BsMemStack.h"
+	"Include/BsStaticAlloc.h"
+)
+
+set(BS_BANSHEEUTILITY_INC_THIRDPARTY
+	"Include/ThirdParty/md5.h"
+)
+
+set(BS_BANSHEEUTILITY_INC_ERROR
+	"Include/BsException.h"
+	"Include/BsCrashHandler.h"
+)
+
+set(BS_BANSHEEUTILITY_SRC_MATH
+	"Source/BsAABox.cpp"
+	"Source/BsDegree.cpp"
+	"Source/BsMath.cpp"
+	"Source/BsMatrix3.cpp"
+	"Source/BsMatrix4.cpp"
+	"Source/BsPlane.cpp"
+	"Source/BsQuaternion.cpp"
+	"Source/BsRadian.cpp"
+	"Source/BsRay.cpp"
+	"Source/BsSphere.cpp"
+	"Source/BsVector2.cpp"
+	"Source/BsVector2I.cpp"
+	"Source/BsVector3.cpp"
+	"Source/BsVector4.cpp"
+	"Source/BsBounds.cpp"
+	"Source/BsConvexVolume.cpp"
+	"Source/BsTorus.cpp"
+	"Source/BsRect3.cpp"
+	"Source/BsRect2.cpp"
+	"Source/BsRect2I.cpp"
+	"Source/BsLineSegment3.cpp"
+	"Source/BsCapsule.cpp"
+)
+
+set(BS_BANSHEEUTILITY_INC_TESTING
+	"Include/BsTestSuite.h"
+	"Include/BsTestOutput.h"
+)
+
+set(BS_BANSHEEUTILITY_SRC_TESTING
+	"Source/BsTestSuite.cpp"
+	"Source/BsTestOutput.cpp"
+)
+
+set(BS_BANSHEEUTILITY_SRC_SERIALIZATION
+	"Source/BsMemorySerializer.cpp"
+	"Source/BsFileSerializer.cpp"
+	"Source/BsBinarySerializer.cpp"
+	"Source/BsBinaryDiff.cpp"
+	"Source/BsSerializedObject.cpp"
+	"Source/BsBinaryCloner.cpp"
+	"Source/BsManagedDataBlock.cpp"
+)
+
+set(BS_BANSHEEUTILITY_INC_MATH
+	"Include/BsAABox.h"
+	"Include/BsDegree.h"
+	"Include/BsMath.h"
+	"Include/BsMatrix3.h"
+	"Include/BsMatrix4.h"
+	"Include/BsPlane.h"
+	"Include/BsQuaternion.h"
+	"Include/BsRadian.h"
+	"Include/BsRay.h"
+	"Include/BsSphere.h"
+	"Include/BsVector2.h"
+	"Include/BsVector2I.h"
+	"Include/BsVector3.h"
+	"Include/BsVector4.h"
+	"Include/BsBounds.h"
+	"Include/BsConvexVolume.h"
+	"Include/BsTorus.h"
+	"Include/BsLineSegment3.h"
+	"Include/BsRect3.h"
+	"Include/BsRect2.h"
+	"Include/BsRect2I.h"
+	"Include/BsCapsule.h"
+	"Include/BsMatrixNxM.h"
+	"Include/BsVectorNI.h"
+)
+
+set(BS_BANSHEEUTILITY_SRC_ERROR
+	"Source/BsException.cpp"
+)
+
+set(BS_BANSHEEUTILITY_INC_SERIALIZATION
+	"Include/BsBinarySerializer.h"
+	"Include/BsFileSerializer.h"
+	"Include/BsMemorySerializer.h"
+	"Include/BsBinaryDiff.h"
+	"Include/BsSerializedObject.h"
+	"Include/BsBinaryCloner.h"
+	"Include/BsManagedDataBlock.h"
+)
+
+set(BS_BANSHEEUTILITY_SRC_STRING
+	"Source/BsStringID.cpp"
+	"Source/BsString.cpp"
+)
+
+set(BS_BANSHEEUTILITY_INC_REFLECTION
+	"Include/BsIReflectable.h"
+	"Include/BsRTTIField.h"
+	"Include/BsRTTIManagedDataBlockField.h"
+	"Include/BsRTTIPlainField.h"
+	"Include/BsRTTIReflectableField.h"
+	"Include/BsRTTIReflectablePtrField.h"
+	"Include/BsRTTIType.h"
+)
+
+set(BS_BANSHEEUTILITY_INC_WIN32
+	"Include/Win32/BsWin32PlatformUtility.h"
+	"Include/Win32/BsWin32Window.h"
+)
+
+source_group("Header Files\\Threading" FILES ${BS_BANSHEEUTILITY_INC_THREADING})
+source_group("Source Files\\ThirdParty" FILES ${BS_BANSHEEUTILITY_SRC_THIRDPARTY})
+source_group("Header Files\\Prerequisites" FILES ${BS_BANSHEEUTILITY_INC_PREREQUISITES})
+source_group("Source Files\\Win32" FILES ${BS_BANSHEEUTILITY_SRC_WIN32})
+source_group("Header Files\\Image" FILES ${BS_BANSHEEUTILITY_INC_IMAGE})
+source_group("Header Files\\String" FILES ${BS_BANSHEEUTILITY_INC_STRING})
+source_group("Source Files\\Image" FILES ${BS_BANSHEEUTILITY_SRC_IMAGE})
+source_group("Source Files\\General" FILES ${BS_BANSHEEUTILITY_SRC_GENERAL})
+source_group("Header Files\\Debug" FILES ${BS_BANSHEEUTILITY_INC_DEBUG})
+source_group("Header Files\\Filesystem" FILES ${BS_BANSHEEUTILITY_INC_FILESYSTEM})
+source_group("Source Files\\Filesystem" FILES ${BS_BANSHEEUTILITY_SRC_FILESYSTEM})
+source_group("Source Files\\Threading" FILES ${BS_BANSHEEUTILITY_SRC_THREADING})
+source_group("Header Files\\General" FILES ${BS_BANSHEEUTILITY_INC_GENERAL})
+source_group("Source Files\\Allocators" FILES ${BS_BANSHEEUTILITY_SRC_ALLOCATORS})
+source_group("Source Files\\RTTI" FILES ${BS_BANSHEEUTILITY_SRC_RTTI})
+source_group("Source Files\\Debug" FILES ${BS_BANSHEEUTILITY_SRC_DEBUG})
+source_group("Header Files\\RTTI" FILES ${BS_BANSHEEUTILITY_INC_RTTI})
+source_group("Header Files\\Allocators" FILES ${BS_BANSHEEUTILITY_INC_ALLOCATORS})
+source_group("Header Files\\ThirdParty" FILES ${BS_BANSHEEUTILITY_INC_THIRDPARTY})
+source_group("Header Files\\Error" FILES ${BS_BANSHEEUTILITY_INC_ERROR})
+source_group("Source Files\\Math" FILES ${BS_BANSHEEUTILITY_SRC_MATH})
+source_group("Header Files\\Testing" FILES ${BS_BANSHEEUTILITY_INC_TESTING})
+source_group("Source Files\\Testing" FILES ${BS_BANSHEEUTILITY_SRC_TESTING})
+source_group("Source Files\\Serialization" FILES ${BS_BANSHEEUTILITY_SRC_SERIALIZATION})
+source_group("Header Files\\Math" FILES ${BS_BANSHEEUTILITY_INC_MATH})
+source_group("Source Files\\Error" FILES ${BS_BANSHEEUTILITY_SRC_ERROR})
+source_group("Header Files\\Serialization" FILES ${BS_BANSHEEUTILITY_INC_SERIALIZATION})
+source_group("Source Files\\String" FILES ${BS_BANSHEEUTILITY_SRC_STRING})
+source_group("Header Files\\Reflection" FILES ${BS_BANSHEEUTILITY_INC_REFLECTION})
+source_group("Header Files\\Win32" FILES ${BS_BANSHEEUTILITY_INC_WIN32})
+
+set(BS_BANSHEEUTILITY_SRC
+	${BS_BANSHEEUTILITY_INC_THREADING}
+	${BS_BANSHEEUTILITY_SRC_THIRDPARTY}
+	${BS_BANSHEEUTILITY_INC_PREREQUISITES}
+	${BS_BANSHEEUTILITY_SRC_WIN32}
+	${BS_BANSHEEUTILITY_INC_IMAGE}
+	${BS_BANSHEEUTILITY_INC_STRING}
+	${BS_BANSHEEUTILITY_SRC_IMAGE}
+	${BS_BANSHEEUTILITY_SRC_GENERAL}
+	${BS_BANSHEEUTILITY_INC_DEBUG}
+	${BS_BANSHEEUTILITY_INC_FILESYSTEM}
+	${BS_BANSHEEUTILITY_SRC_FILESYSTEM}
+	${BS_BANSHEEUTILITY_SRC_THREADING}
+	${BS_BANSHEEUTILITY_INC_GENERAL}
+	${BS_BANSHEEUTILITY_SRC_ALLOCATORS}
+	${BS_BANSHEEUTILITY_SRC_RTTI}
+	${BS_BANSHEEUTILITY_SRC_DEBUG}
+	${BS_BANSHEEUTILITY_INC_RTTI}
+	${BS_BANSHEEUTILITY_INC_ALLOCATORS}
+	${BS_BANSHEEUTILITY_INC_THIRDPARTY}
+	${BS_BANSHEEUTILITY_INC_ERROR}
+	${BS_BANSHEEUTILITY_SRC_MATH}
+	${BS_BANSHEEUTILITY_INC_TESTING}
+	${BS_BANSHEEUTILITY_SRC_TESTING}
+	${BS_BANSHEEUTILITY_SRC_SERIALIZATION}
+	${BS_BANSHEEUTILITY_INC_MATH}
+	${BS_BANSHEEUTILITY_SRC_ERROR}
+	${BS_BANSHEEUTILITY_INC_SERIALIZATION}
+	${BS_BANSHEEUTILITY_SRC_STRING}
+	${BS_BANSHEEUTILITY_INC_REFLECTION}
+	${BS_BANSHEEUTILITY_INC_WIN32}
+)

+ 52 - 27
Source/CMakeLists.txt

@@ -18,6 +18,10 @@ else()
 	set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;OptimizedDebug;Release")
 endif()
 
+if(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
+	set(BS_64BIT true)
+endif()
+
 # Global compile & linker flags
 if(MSVC)
 	# Linker
@@ -27,7 +31,7 @@ if(MSVC)
 	set(BS_LINKER_FLAGS_OPTIMIZEDDEBUG "${BS_LINKER_FLAGS_COMMON} /LTCG:incremental /OPT:REF /DEBUG")
 	set(BS_LINKER_FLAGS_RELEASE "${BS_LINKER_FLAGS_COMMON} /LTCG /INCREMENTAL:NO /OPT:REF")
 	
-	if(CMAKE_CL_64)
+	if(BS_64BIT)
 		set(BS_LINKER_FLAGS_OPTIMIZEDDEBUG "${BS_LINKER_FLAGS_OPTIMIZEDDEBUG} /OPT:ICF")
 		set(BS_LINKER_FLAGS_RELEASE "${BS_LINKER_FLAGS_RELEASE} /OPT:ICF")
 	endif()
@@ -43,11 +47,19 @@ if(MSVC)
 	
 	# Compiler
 	set(BS_COMPILER_FLAGS_COMMON "/GS- /W3 /GR- /WX- /nologo /bigobj /wd\"4530\" /wd\"4577\"")
+	set(CMAKE_CXX_FLAGS "/DWIN32 /D_WINDOWS")
 	
 	set(CMAKE_CXX_FLAGS_DEBUG "${BS_COMPILER_FLAGS_COMMON} /ZI /Gm /Od /RTC1 /MDd")
 	set(CMAKE_CXX_FLAGS_OPTIMIZEDDEBUG "${BS_COMPILER_FLAGS_COMMON} /GL /Gy /Zi /Gm /O2 /Oi /MD")
 	set(CMAKE_CXX_FLAGS_RELEASE "${BS_COMPILER_FLAGS_COMMON} /GL /Gy /O2 /Oi /MD /MP")
 	
+elseif(CLANG) # Note: CLANG not defined anywhere yet
+	# Note: Optionally add -ffunction-sections, -fdata-sections, but with linker option --gc-sections
+	set(BS_COMPILER_FLAGS_COMMON "-fpic -fno-exceptions -fno-strict-aliasing -fno-rtti -fno-ms-compatibility -fms-extensions")
+	
+	set(CMAKE_CXX_FLAGS_DEBUG "${BS_COMPILER_FLAGS_COMMON} -g -O0")
+	set(CMAKE_CXX_FLAGS_OPTIMIZEDDEBUG "${BS_COMPILER_FLAGS_COMMON} -gline-tables-only -O2")
+	set(CMAKE_CXX_FLAGS_RELEASE "${BS_COMPILER_FLAGS_COMMON} -g0 -O2")
 else()
 # TODO_OTHER_COMPILERS_GO_HERE
 endif()
@@ -55,16 +67,14 @@ endif()
 # Output
 set(CMAKE_BINARY_DIR "${PROJECT_SOURCE_DIR}/../Build/${CMAKE_GENERATOR}/")
 
-if(WIN32)
-if(CMAKE_CL_64)
-set(BS_OUTPUT_DIR_PREFIX x64)
+if(BS_64BIT)
+	set(BS_OUTPUT_DIR_PREFIX x64)
 else()
-set(BS_OUTPUT_DIR_PREFIX Win32)
-endif()
+	set(BS_OUTPUT_DIR_PREFIX x86)
 endif()
 
-set(BS_BINARY_OUTPUT_DIR ../../bin/${BS_OUTPUT_DIR_PREFIX})
-set(BS_LIBRARY_OUTPUT_DIR ../../lib/${BS_OUTPUT_DIR_PREFIX})
+set(BS_BINARY_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/../bin/${BS_OUTPUT_DIR_PREFIX})
+set(BS_LIBRARY_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/../lib/${BS_OUTPUT_DIR_PREFIX})
 
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${BS_BINARY_OUTPUT_DIR}/Debug)
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_OPTIMIZEDDEBUG ${BS_BINARY_OUTPUT_DIR}/OptimizedDebug)
@@ -78,31 +88,46 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${BS_LIBRARY_OUTPUT_DIR}/Debug)
 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_OPTIMIZEDDEBUG ${BS_LIBRARY_OUTPUT_DIR}/OptimizedDebug)
 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${BS_LIBRARY_OUTPUT_DIR}/Release)
 
+set(BS_LIBRARY_DEPENDENCIES_DIR_DEBUG ${PROJECT_SOURCE_DIR}/../Dependencies/lib/${BS_OUTPUT_DIR_PREFIX}/Debug)
+set(BS_LIBRARY_DEPENDENCIES_DIR_OPTIMIZEDDEBUG ${PROJECT_SOURCE_DIR}/../Dependencies/lib/${BS_OUTPUT_DIR_PREFIX}/OptimizedDebug)
+set(BS_LIBRARY_DEPENDENCIES_DIR_RELEASE ${PROJECT_SOURCE_DIR}/../Dependencies/lib/${BS_OUTPUT_DIR_PREFIX}/Release)
+
+if(WIN32)
+	set(BS_LIBRARY_EXTENSION ".lib")
+else()
+	set(BS_LIBRARY_EXTENSION ".a")
+endif()
+
+set_property(GLOBAL PROPERTY USE_FOLDERS TRUE)
+
 # Sub-directories
 ## Layers
 add_subdirectory(BansheeUtility)
-#add_subdirectory(BansheeCore)
-#add_subdirectory(BansheeEngine)
-#add_subdirectory(BansheeEditor)
+add_subdirectory(BansheeCore)
+add_subdirectory(BansheeEngine)
+add_subdirectory(BansheeEditor)
 
 ## Plugins
-#add_subdirectory(BansheeD3D9RenderAPI)
-#add_subdirectory(BansheeD3D11RenderAPI)
-#add_subdirectory(BansheeGLRenderAPI)
-#add_subdirectory(BansheeFBXImporter)
-#add_subdirectory(BansheeFontImporter)
-#add_subdirectory(BansheeFreeImgImporter)
-#add_subdirectory(BansheeMono)
-#add_subdirectory(BansheeOISInput)
-#add_subdirectory(BansheePhysX)
-#add_subdirectory(BansheeSL)
-#add_subdirectory(RenderBeast)
+if(WIN32)
+	add_subdirectory(BansheeD3D9RenderAPI)
+	add_subdirectory(BansheeD3D11RenderAPI)
+endif()
+
+add_subdirectory(BansheeGLRenderAPI)
+add_subdirectory(BansheeFBXImporter)
+add_subdirectory(BansheeFontImporter)
+add_subdirectory(BansheeFreeImgImporter)
+add_subdirectory(BansheeMono)
+add_subdirectory(BansheeOISInput)
+add_subdirectory(BansheePhysX)
+add_subdirectory(BansheeSL)
+add_subdirectory(RenderBeast)
 
 ## Script interop
-#add_subdirectory(SBansheeEngine)
-#add_subdirectory(SBansheeEditor)
+add_subdirectory(SBansheeEngine)
+add_subdirectory(SBansheeEditor)
 
 ## Executables
-#add_subdirectory(BansheeEditorExec)
-#add_subdirectory(Game)
-#add_subdirectory(ExampleProject)
+add_subdirectory(BansheeEditorExec)
+add_subdirectory(Game)
+add_subdirectory(ExampleProject)

+ 29 - 0
Source/ExampleProject/CMakeLists.txt

@@ -0,0 +1,29 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(ExampleProject_INC 
+	"Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../BansheeEngine/Include"
+	"../../Dependencies/Include")
+
+include_directories(${ExampleProject_INC})	
+	
+# Target
+add_library(ExampleProject SHARED ${BS_EXAMPLEPROJECT_SRC})
+
+# Libraries
+## Local libs
+target_link_libraries(ExampleProject BansheeEngine BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET ExampleProject PROPERTY FOLDER Executable)
+
+# Plugin dependencies
+add_dependencies(Game BansheeFBXImporter BansheeFontImporter BansheeFreeImgImporter BansheeGLRenderAPI BansheeMono BansheeOISInput BansheePhysX BansheeSL RenderBeast SBansheeEngine)
+
+if(WIN32)
+	add_dependencies(Game BansheeD3D11RenderAPI BansheeD3D9RenderAPI)
+endif()

+ 16 - 0
Source/ExampleProject/CMakeSources.cmake

@@ -0,0 +1,16 @@
+set(BS_EXAMPLEPROJECT_INC_NOFILTER
+	"Include/CameraFlyer.h"
+)
+
+set(BS_EXAMPLEPROJECT_SRC_NOFILTER
+	"Source/CameraFlyer.cpp"
+	"Source/Main.cpp"
+)
+
+source_group("Header Files" FILES ${BS_EXAMPLEPROJECT_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_EXAMPLEPROJECT_SRC_NOFILTER})
+
+set(BS_EXAMPLEPROJECT_SRC
+	${BS_EXAMPLEPROJECT_INC_NOFILTER}
+	${BS_EXAMPLEPROJECT_SRC_NOFILTER}
+)

+ 32 - 0
Source/Game/CMakeLists.txt

@@ -0,0 +1,32 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(Game_INC 
+	"Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../BansheeEngine/Include"
+	"../../Dependencies/Include")
+
+include_directories(${Game_INC})	
+	
+# Target
+add_library(Game SHARED ${BS_GAME_SRC})
+
+# Libraries
+## Local libs
+target_link_libraries(Game BansheeEngine BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET Game PROPERTY FOLDER Executable)
+
+# Plugin dependencies
+add_dependencies(Game BansheeGLRenderAPI BansheeMono BansheeOISInput BansheePhysX RenderBeast SBansheeEngine)
+
+if(WIN32)
+	add_dependencies(Game BansheeD3D11RenderAPI BansheeD3D9RenderAPI)
+endif()
+
+# Compiler flags
+target_compile_options(BansheeEditorExec PUBLIC /wd4509)

+ 15 - 0
Source/Game/CMakeSources.cmake

@@ -0,0 +1,15 @@
+set(BS_GAME_INC_NOFILTER
+	"resource.h"
+)
+
+set(BS_GAME_SRC_NOFILTER
+	"Source/Main.cpp"
+)
+
+source_group("Header Files" FILES ${BS_GAME_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_GAME_SRC_NOFILTER})
+
+set(BS_GAME_SRC
+	${BS_GAME_INC_NOFILTER}
+	${BS_GAME_SRC_NOFILTER}
+)

+ 0 - 3
Source/MBansheeEngine/AsyncOp.cs

@@ -1,10 +1,7 @@
 //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
 //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
 using System;
-using System.Collections.Generic;
-using System.Linq;
 using System.Runtime.CompilerServices;
-using System.Text;
 
 namespace BansheeEngine
 {

+ 25 - 0
Source/RenderBeast/CMakeLists.txt

@@ -0,0 +1,25 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(RenderBeast_INC 
+	"Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../BansheeEngine/Include"
+	"../../Dependencies/Include")
+
+include_directories(${RenderBeast_INC})	
+	
+# Target
+add_library(RenderBeast SHARED ${BS_RENDERBEAST_SRC})
+
+# Defines
+target_compile_definitions(RenderBeast PRIVATE -DBS_BSRND_EXPORTS)
+
+# Libraries
+## Local libs
+target_link_libraries(RenderBeast BansheeEngine BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET RenderBeast PROPERTY FOLDER Plugins)

+ 32 - 0
Source/RenderBeast/CMakeSources.cmake

@@ -0,0 +1,32 @@
+set(BS_RENDERBEAST_INC_NOFILTER
+	"Include/BsRenderTexturePool.h"
+	"Include/BsRenderBeastOptions.h"
+	"Include/BsSamplerOverrides.h"
+	"Include/BsRenderBeast.h"
+	"Include/BsRenderBeastFactory.h"
+	"Include/BsRenderBeastPrerequisites.h"
+	"Include/BsRenderTargets.h"
+	"Include/BsStaticRenderableHandler.h"
+	"Include/BsLightRendering.h"
+	"Include/BsPostProcessing.h"
+)
+
+set(BS_RENDERBEAST_SRC_NOFILTER
+	"Source/BsRenderTexturePool.cpp"
+	"Source/BsSamplerOverrides.cpp"
+	"Source/BsRenderBeast.cpp"
+	"Source/BsRenderBeastFactory.cpp"
+	"Source/BsRenderBeastPlugin.cpp"
+	"Source/BsRenderTargets.cpp"
+	"Source/BsStaticRenderableHandler.cpp"
+	"Source/BsLightRendering.cpp"
+	"Source/BsPostProcessing.cpp"
+)
+
+source_group("Header Files" FILES ${BS_RENDERBEAST_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_RENDERBEAST_SRC_NOFILTER})
+
+set(BS_RENDERBEAST_SRC
+	${BS_RENDERBEAST_INC_NOFILTER}
+	${BS_RENDERBEAST_SRC_NOFILTER}
+)

+ 28 - 0
Source/SBansheeEditor/CMakeLists.txt

@@ -0,0 +1,28 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(SBansheeEditor_INC 
+	"Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../BansheeEngine/Include"
+	"../BansheeEditor/Include"
+	"../BansheeMono/Include"
+	"../SBansheeEngine/Include"
+	"../../Dependencies/Include")
+
+include_directories(${SBansheeEditor_INC})	
+	
+# Target
+add_library(SBansheeEditor SHARED ${BS_SBANSHEEEDITOR_SRC})
+
+# Defines
+target_compile_definitions(SBansheeEditor PRIVATE -DBS_SCR_BED_EXPORTS)
+
+# Libraries
+## Local libs
+target_link_libraries(SBansheeEditor SBansheeEngine BansheeMono BansheeEditor BansheeEngine BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET SBansheeEditor PROPERTY FOLDER Script)

+ 157 - 0
Source/SBansheeEditor/CMakeSources.cmake

@@ -0,0 +1,157 @@
+set(BS_SBANSHEEEDITOR_INC_NOFILTER
+	"Include/BsScriptEditorPrerequisites.h"
+	"Include/BsGUIGameObjectField.h"
+	"Include/BsGUIResourceField.h"
+	"Include/BsEditorScriptManager.h"
+	"Include/BsScriptHandleManager.h"
+	"Include/BsScriptDragDropManager.h"
+	"Include/BsMenuItemManager.h"
+	"Include/BsGUITextureField.h"
+	"Include/BsEditorResourceLoader.h"
+	"Include/BsEditorScriptLibrary.h"
+	"Include/BsToolbarItemManager.h"
+	"Include/BsScriptGizmoManager.h"
+)
+
+set(BS_SBANSHEEEDITOR_SRC_WRAPPERS_GUI
+	"Source/BsScriptGUIColorField.cpp"
+	"Source/BsScriptGUIEnumField.cpp"
+	"Source/BsScriptGUIFloatField.cpp"
+	"Source/BsScriptGUIGameObjectField.cpp"
+	"Source/BsScriptGUIIntField.cpp"
+	"Source/BsScriptGUIListBoxField.cpp"
+	"Source/BsScriptGUIResourceField.cpp"
+	"Source/BsScriptGUISceneTreeView.cpp"
+	"Source/BsScriptGUISliderField.cpp"
+	"Source/BsScriptGUITextField.cpp"
+	"Source/BsScriptGUITextureField.cpp"
+	"Source/BsScriptGUIToggleField.cpp"
+	"Source/BsScriptGUIVector2Field.cpp"
+	"Source/BsScriptGUIVector3Field.cpp"
+	"Source/BsScriptGUIVector4Field.cpp"
+)
+
+set(BS_SBANSHEEEDITOR_SRC_WRAPPERS
+	"Source/BsScriptBrowseDialog.cpp"
+	"Source/BsScriptBuildManager.cpp"
+	"Source/BsScriptCodeEditor.cpp"
+	"Source/BsScriptDragDropManager.cpp"
+	"Source/BsScriptDropDownWindow.cpp"
+	"Source/BsScriptEditorApplication.cpp"
+	"Source/BsScriptEditorBuiltin.cpp"
+	"Source/BsScriptEditorInput.cpp"
+	"Source/BsScriptEditorSettings.cpp"
+	"Source/BsScriptEditorTestSuite.cpp"
+	"Source/BsScriptEditorUtility.cpp"
+	"Source/BsScriptEditorVirtualInput.cpp"
+	"Source/BsScriptEditorWindow.cpp"
+	"Source/BsScriptFolderMonitor.cpp"
+	"Source/BsScriptGizmos.cpp"
+	"Source/BsScriptHandleDrawing.cpp"
+	"Source/BsScriptHandleSlider.cpp"
+	"Source/BsScriptHandleSliderDisc.cpp"
+	"Source/BsScriptHandleSliderLine.cpp"
+	"Source/BsScriptHandleSliderManager.cpp"
+	"Source/BsScriptHandleSliderPlane.cpp"
+	"Source/BsScriptImportOptions.cpp"
+	"Source/BsScriptInspectorUtility.cpp"
+	"Source/BsScriptModalWindow.cpp"
+	"Source/BsScriptOSDropTarget.cpp"
+	"Source/BsScriptPlatformInfo.cpp"
+	"Source/BsScriptPrefabUtility.cpp"
+	"Source/BsScriptProjectLibrary.cpp"
+	"Source/BsScriptProjectSettings.cpp"
+	"Source/BsScriptSceneGizmos.cpp"
+	"Source/BsScriptSceneGrid.cpp"
+	"Source/BsScriptSceneHandles.cpp"
+	"Source/BsScriptSceneSelection.cpp"
+	"Source/BsScriptSelection.cpp"
+	"Source/BsScriptUndoRedo.cpp"
+	"Source/BsScriptUnitTests.cpp"
+)
+
+set(BS_SBANSHEEEDITOR_SRC_NOFILTER
+	"Source/BsScriptEditorPlugin.cpp"
+	"Source/BsGUIGameObjectField.cpp"
+	"Source/BsGUIResourceField.cpp"
+	"Source/BsEditorScriptManager.cpp"
+	"Source/BsScriptGizmoManager.cpp"
+	"Source/BsScriptHandleManager.cpp"
+	"Source/BsMenuItemManager.cpp"
+	"Source/BsGUITextureField.cpp"
+	"Source/BsEditorResourceLoader.cpp"
+	"Source/BsEditorScriptLibrary.cpp"
+	"Source/BsToolbarItemManager.cpp"
+)
+
+set(BS_SBANSHEEEDITOR_INC_WRAPPERS
+	"Include/BsScriptCodeEditor.h"
+	"Include/BsScriptBrowseDialog.h"
+	"Include/BsScriptBuildManager.h"
+	"Include/BsScriptDropDownWindow.h"
+	"Include/BsScriptEditorApplication.h"
+	"Include/BsScriptEditorBuiltin.h"
+	"Include/BsScriptEditorInput.h"
+	"Include/BsScriptEditorSettings.h"
+	"Include/BsScriptEditorTestSuite.h"
+	"Include/BsScriptEditorUtility.h"
+	"Include/BsScriptEditorVirtualInput.h"
+	"Include/BsScriptEditorWindow.h"
+	"Include/BsScriptFolderMonitor.h"
+	"Include/BsScriptGizmos.h"
+	"Include/BsScriptUnitTests.h"
+	"Include/BsScriptUndoRedo.h"
+	"Include/BsScriptSelection.h"
+	"Include/BsScriptSceneSelection.h"
+	"Include/BsScriptSceneHandles.h"
+	"Include/BsScriptSceneGrid.h"
+	"Include/BsScriptSceneGizmos.h"
+	"Include/BsScriptProjectSettings.h"
+	"Include/BsScriptProjectLibrary.h"
+	"Include/BsScriptPrefabUtility.h"
+	"Include/BsScriptPlatformInfo.h"
+	"Include/BsScriptOSDropTarget.h"
+	"Include/BsScriptModalWindow.h"
+	"Include/BsScriptInspectorUtility.h"
+	"Include/BsScriptImportOptions.h"
+	"Include/BsScriptHandleSliderPlane.h"
+	"Include/BsScriptHandleSliderManager.h"
+	"Include/BsScriptHandleSliderLine.h"
+	"Include/BsScriptHandleSliderDisc.h"
+	"Include/BsScriptHandleSlider.h"
+	"Include/BsScriptHandleDrawing.h"
+)
+
+set(BS_SBANSHEEEDITOR_INC_WRAPPERS_GUI
+	"Include/BsScriptGUIColorField.h"
+	"Include/BsScriptGUIEnumField.h"
+	"Include/BsScriptGUIFloatField.h"
+	"Include/BsScriptGUIGameObjectField.h"
+	"Include/BsScriptGUIIntField.h"
+	"Include/BsScriptGUIListBoxField.h"
+	"Include/BsScriptGUIResourceField.h"
+	"Include/BsScriptGUISceneTreeView.h"
+	"Include/BsScriptGUISliderField.h"
+	"Include/BsScriptGUITextField.h"
+	"Include/BsScriptGUITextureField.h"
+	"Include/BsScriptGUIToggleField.h"
+	"Include/BsScriptGUIVector2Field.h"
+	"Include/BsScriptGUIVector3Field.h"
+	"Include/BsScriptGUIVector4Field.h"
+)
+
+source_group("Header Files" FILES ${BS_SBANSHEEEDITOR_INC_NOFILTER})
+source_group("Source Files\\Wrappers\\GUI" FILES ${BS_SBANSHEEEDITOR_SRC_WRAPPERS_GUI})
+source_group("Source Files\\Wrappers" FILES ${BS_SBANSHEEEDITOR_SRC_WRAPPERS})
+source_group("Source Files" FILES ${BS_SBANSHEEEDITOR_SRC_NOFILTER})
+source_group("Header Files\\Wrappers" FILES ${BS_SBANSHEEEDITOR_INC_WRAPPERS})
+source_group("Header Files\\Wrappers\\GUI" FILES ${BS_SBANSHEEEDITOR_INC_WRAPPERS_GUI})
+
+set(BS_SBANSHEEEDITOR_SRC
+	${BS_SBANSHEEEDITOR_INC_NOFILTER}
+	${BS_SBANSHEEEDITOR_SRC_WRAPPERS_GUI}
+	${BS_SBANSHEEEDITOR_SRC_WRAPPERS}
+	${BS_SBANSHEEEDITOR_SRC_NOFILTER}
+	${BS_SBANSHEEEDITOR_INC_WRAPPERS}
+	${BS_SBANSHEEEDITOR_INC_WRAPPERS_GUI}
+)

+ 27 - 0
Source/SBansheeEngine/CMakeLists.txt

@@ -0,0 +1,27 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(SBansheeEngine_INC 
+	"Include"
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include"
+	"../BansheeEngine/Include"
+	"../BansheeEditor/Include"
+	"../BansheeMono/Include"
+	"../../Dependencies/Include")
+
+include_directories(${SBansheeEngine_INC})	
+	
+# Target
+add_library(SBansheeEngine SHARED ${BS_SBANSHEEENGINE_SRC})
+
+# Defines
+target_compile_definitions(SBansheeEngine PRIVATE -DBS_SCR_BE_EXPORTS)
+
+# Libraries
+## Local libs
+target_link_libraries(SBansheeEngine BansheeMono BansheeEditor BansheeEngine BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET SBansheeEngine PROPERTY FOLDER Script)

+ 319 - 0
Source/SBansheeEngine/CMakeSources.cmake

@@ -0,0 +1,319 @@
+set(BS_SBANSHEEENGINE_INC_NOFILTER
+	"Include/BsScriptObject.h"
+	"Include/BsScriptEnginePrerequisites.h"
+	"Include/BsManagedComponent.h"
+	"Include/BsScriptResourceManager.h"
+	"Include/BsScriptGameObjectManager.h"
+	"Include/BsScriptObjectImpl.h"
+	"Include/BsManagedResource.h"
+	"Include/BsManagedResourceMetaData.h"
+	"Include/BsManagedResourceManager.h"
+	"Include/BsScriptObjectManager.h"
+	"Include/BsScriptStringTableManager.h"
+	"Include/BsEngineScriptLibrary.h"
+	"Include/BsPlayInEditorManager.h"
+)
+
+set(BS_SBANSHEEENGINE_SRC_WRAPPERS_GUI
+	"Source/BsScriptGUIButton.cpp"
+	"Source/BsScriptGUIContent.cpp"
+	"Source/BsScriptGUIElementStateStyle.cpp"
+	"Source/BsScriptGUIElementStyle.cpp"
+	"Source/BsScriptGUIFixedSpace.cpp"
+	"Source/BsScriptGUIFlexibleSpace.cpp"
+	"Source/BsScriptGUIInputBox.cpp"
+	"Source/BsScriptGUILabel.cpp"
+	"Source/BsScriptGUILayout.cpp"
+	"Source/BsScriptGUIListBox.cpp"
+	"Source/BsScriptGUIScrollArea.cpp"
+	"Source/BsScriptGUITexture.cpp"
+	"Source/BsScriptGUIToggle.cpp"
+	"Source/BsScriptGUIToggleGroup.cpp"
+	"Source/BsScriptGUIElement.cpp"
+	"Source/BsScriptGUILayoutUtility.cpp"
+	"Source/BsScriptGUIRenderTexture.cpp"
+	"Source/BsScriptGUISlider.cpp"
+	"Source/BsScriptGUIProgressBar.cpp"
+	"Source/BsScriptGUISkin.cpp"
+	"Source/BsScriptGUIWidget.cpp"
+	"Source/BsScriptGUI.cpp"
+)
+
+set(BS_SBANSHEEENGINE_INC_SERIALIZATION_RTTI
+	"Include/BsManagedSerializableArrayRTTI.h"
+	"Include/BsManagedSerializableDictionaryRTTI.h"
+	"Include/BsManagedSerializableListRTTI.h"
+	"Include/BsManagedSerializableObjectRTTI.h"
+	"Include/BsManagedSerializableFieldRTTI.h"
+	"Include/BsManagedSerializableObjectInfoRTTI.h"
+	"Include/BsManagedSerializableDiffRTTI.h"
+)
+
+set(BS_SBANSHEEENGINE_SRC_WRAPPERS_PHYSICS
+	"Source/BsScriptCollider.cpp"
+	"Source/BsScriptCollisionData.cpp"
+	"Source/BsScriptPhysicsQueryHit.cpp"
+	"Source/BsScriptRigidbody.cpp"
+	"Source/BsScriptBoxCollider.cpp"
+	"Source/BsScriptSphereCollider.cpp"
+	"Source/BsScriptCapsuleCollider.cpp"
+	"Source/BsScriptPlaneCollider.cpp"
+	"Source/BsScriptMeshCollider.cpp"
+	"Source/BsScriptJointCommon.cpp"
+	"Source/BsScriptControllerCollision.cpp"
+	"Source/BsScriptCharacterController.cpp"
+	"Source/BsScriptJoint.cpp"
+	"Source/BsScriptDistanceJoint.cpp"
+	"Source/BsScriptHingeJoint.cpp"
+	"Source/BsScriptSliderJoint.cpp"
+	"Source/BsScriptFixedJoint.cpp"
+	"Source/BsScriptSphericalJoint.cpp"
+	"Source/BsScriptD6Joint.cpp"
+	"Source/BsScriptPhysics.cpp"
+)
+
+set(BS_SBANSHEEENGINE_INC_WRAPPERS
+	"Include/BsScriptAsyncOp.h"
+	"Include/BsScriptBoneWeight.h"
+	"Include/BsScriptBuiltin.h"
+	"Include/BsScriptCamera.h"
+	"Include/BsScriptColor.h"
+	"Include/BsScriptComponent.h"
+	"Include/BsScriptContextMenu.h"
+	"Include/BsScriptCursor.h"
+	"Include/BsScriptDebug.h"
+	"Include/BsScriptFont.h"
+	"Include/BsScriptFontBitmap.h"
+	"Include/BsScriptGameObject.h"
+	"Include/BsScriptGUIContentImages.h"
+	"Include/BsScriptHString.h"
+	"Include/BsScriptInput.h"
+	"Include/BsScriptInputConfiguration.h"
+	"Include/BsScriptLight.h"
+	"Include/BsScriptLogEntry.h"
+	"Include/BsScriptManagedResource.h"
+	"Include/BsScriptMaterial.h"
+	"Include/BsScriptMesh.h"
+	"Include/BsScriptMeshData.h"
+	"Include/BsScriptPhysicsMaterial.h"
+	"Include/BsScriptPhysicsMesh.h"
+	"Include/BsScriptPixelData.h"
+	"Include/BsScriptPixelUtility.h"
+	"Include/BsScriptPlainText.h"
+	"Include/BsScriptPrefab.h"
+	"Include/BsScriptProfilerOverlayInternal.h"
+	"Include/BsScriptRenderable.h"
+	"Include/BsScriptRenderTarget.h"
+	"Include/BsScriptRenderTexture.h"
+	"Include/BsScriptRenderTexture2D.h"
+	"Include/BsScriptResource.h"
+	"Include/BsScriptVirtualInput.h"
+	"Include/BsScriptVirtualButton.h"
+	"Include/BsScriptVector2I.h"
+	"Include/BsScriptVector.h"
+	"Include/BsScriptTime.h"
+	"Include/BsScriptTextureCube.h"
+	"Include/BsScriptTexture3D.h"
+	"Include/BsScriptTexture2D.h"
+	"Include/BsScriptTexture.h"
+	"Include/BsScriptStringTable.h"
+	"Include/BsScriptSpriteTexture.h"
+	"Include/BsScriptShaderInclude.h"
+	"Include/BsScriptShader.h"
+	"Include/BsScriptSerializableUtility.h"
+	"Include/BsScriptSerializableProperty.h"
+	"Include/BsScriptSerializableObject.h"
+	"Include/BsScriptSerializableList.h"
+	"Include/BsScriptSerializableField.h"
+	"Include/BsScriptSerializableDictionary.h"
+	"Include/BsScriptScriptCode.h"
+	"Include/BsScriptSerializableArray.h"
+	"Include/BsScriptSceneObject.h"
+	"Include/BsScriptScene.h"
+	"Include/BsScriptResources.h"
+	"Include/BsScriptResourceRef.h"
+)
+
+set(BS_SBANSHEEENGINE_INC_WRAPPERS_GUI
+	"Include/BsScriptGUIButton.h"
+	"Include/BsScriptGUIContent.h"
+	"Include/BsScriptGUIElementStateStyle.h"
+	"Include/BsScriptGUIElementStyle.h"
+	"Include/BsScriptGUIFixedSpace.h"
+	"Include/BsScriptGUIFlexibleSpace.h"
+	"Include/BsScriptGUIInputBox.h"
+	"Include/BsScriptGUILabel.h"
+	"Include/BsScriptGUILayout.h"
+	"Include/BsScriptGUIListBox.h"
+	"Include/BsScriptGUIScrollArea.h"
+	"Include/BsScriptGUITexture.h"
+	"Include/BsScriptGUIToggle.h"
+	"Include/BsScriptGUIToggleGroup.h"
+	"Include/BsScriptGUIElement.h"
+	"Include/BsScriptGUILayoutUtility.h"
+	"Include/BsScriptGUIRenderTexture.h"
+	"Include/BsScriptGUISlider.h"
+	"Include/BsScriptGUIProgressBar.h"
+	"Include/BsScriptGUISkin.h"
+	"Include/BsScriptGUIWidget.h"
+	"Include/BsScriptGUI.h"
+)
+
+set(BS_SBANSHEEENGINE_INC_WRAPPERS_PHYSICS
+	"Include/BsScriptCollider.h"
+	"Include/BsScriptCollisionData.h"
+	"Include/BsScriptPhysicsQueryHit.h"
+	"Include/BsScriptRigidbody.h"
+	"Include/BsScriptBoxCollider.h"
+	"Include/BsScriptSphereCollider.h"
+	"Include/BsScriptCapsuleCollider.h"
+	"Include/BsScriptPlaneCollider.h"
+	"Include/BsScriptMeshCollider.h"
+	"Include/BsScriptJointCommon.h"
+	"Include/BsScriptControllerCollision.h"
+	"Include/BsScriptCharacterController.h"
+	"Include/BsScriptJoint.h"
+	"Include/BsScriptDistanceJoint.h"
+	"Source/BsScriptHingeJoint.h"
+	"Source/BsScriptSliderJoint.h"
+	"Source/BsScriptSphericalJoint.h"
+	"Source/BsScriptFixedJoint.h"
+	"Source/BsScriptD6Joint.h"
+	"Include/BsScriptPhysics.h"
+)
+
+set(BS_SBANSHEEENGINE_SRC_SERIALIZATION
+	"Source/BsManagedSerializableArray.cpp"
+	"Source/BsManagedSerializableDictionary.cpp"
+	"Source/BsManagedSerializableField.cpp"
+	"Source/BsManagedSerializableList.cpp"
+	"Source/BsManagedSerializableObject.cpp"
+	"Source/BsManagedSerializableObjectInfo.cpp"
+	"Source/BsScriptAssemblyManager.cpp"
+	"Source/BsManagedSerializableDiff.cpp"
+	"Source/BsManagedDiff.cpp"
+)
+
+set(BS_SBANSHEEENGINE_SRC_WRAPPERS
+	"Source/BsScriptAsyncOp.cpp"
+	"Source/BsScriptBoneWeight.cpp"
+	"Source/BsScriptBuiltin.cpp"
+	"Source/BsScriptCamera.cpp"
+	"Source/BsScriptColor.cpp"
+	"Source/BsScriptComponent.cpp"
+	"Source/BsScriptContextMenu.cpp"
+	"Source/BsScriptCursor.cpp"
+	"Source/BsScriptDebug.cpp"
+	"Source/BsScriptFont.cpp"
+	"Source/BsScriptFontBitmap.cpp"
+	"Source/BsScriptGameObject.cpp"
+	"Source/BsScriptGUIContentImages.cpp"
+	"Source/BsScriptHString.cpp"
+	"Source/BsScriptInput.cpp"
+	"Source/BsScriptInputConfiguration.cpp"
+	"Source/BsScriptLight.cpp"
+	"Source/BsScriptLogEntry.cpp"
+	"Source/BsScriptManagedResource.cpp"
+	"Source/BsScriptMaterial.cpp"
+	"Source/BsScriptMesh.cpp"
+	"Source/BsScriptMeshData.cpp"
+	"Source/BsScriptPhysicsMaterial.cpp"
+	"Source/BsScriptPhysicsMesh.cpp"
+	"Source/BsScriptPixelData.cpp"
+	"Source/BsScriptPixelUtility.cpp"
+	"Source/BsScriptPlainText.cpp"
+	"Source/BsScriptPrefab.cpp"
+	"Source/BsScriptProfilerOverlayInternal.cpp"
+	"Source/BsScriptVirtualInput.cpp"
+	"Source/BsScriptVirtualButton.cpp"
+	"Source/BsScriptVector2I.cpp"
+	"Source/BsScriptVector.cpp"
+	"Source/BsScriptTime.cpp"
+	"Source/BsScriptTextureCube.cpp"
+	"Source/BsScriptTexture3D.cpp"
+	"Source/BsScriptTexture2D.cpp"
+	"Source/BsScriptTexture.cpp"
+	"Source/BsScriptStringTable.cpp"
+	"Source/BsScriptSpriteTexture.cpp"
+	"Source/BsScriptShaderInclude.cpp"
+	"Source/BsScriptShader.cpp"
+	"Source/BsScriptSerializableUtility.cpp"
+	"Source/BsScriptSerializableProperty.cpp"
+	"Source/BsScriptSerializableObject.cpp"
+	"Source/BsScriptSerializableList.cpp"
+	"Source/BsScriptSerializableField.cpp"
+	"Source/BsScriptSerializableDictionary.cpp"
+	"Source/BsScriptSerializableArray.cpp"
+	"Source/BsScriptScriptCode.cpp"
+	"Source/BsScriptSceneObject.cpp"
+	"Source/BsScriptScene.cpp"
+	"Source/BsScriptResources.cpp"
+	"Source/BsScriptResourceRef.cpp"
+	"Source/BsScriptResource.cpp"
+	"Source/BsScriptRenderTexture2D.cpp"
+	"Source/BsScriptRenderTexture.cpp"
+	"Source/BsScriptRenderTarget.cpp"
+	"Source/BsScriptRenderable.cpp"
+)
+
+set(BS_SBANSHEEENGINE_INC_SERIALIZATION
+	"Include/BsManagedSerializableArray.h"
+	"Include/BsManagedSerializableDictionary.h"
+	"Include/BsManagedSerializableList.h"
+	"Include/BsManagedSerializableObject.h"
+	"Include/BsManagedSerializableField.h"
+	"Include/BsManagedSerializableObjectInfo.h"
+	"Include/BsScriptAssemblyManager.h"
+	"Include/BsManagedSerializableDiff.h"
+	"Include/BsManagedDiff.h"
+)
+
+set(BS_SBANSHEEENGINE_SRC_NOFILTER
+	"Source/BsScriptEnginePlugin.cpp"
+	"Source/BsManagedComponent.cpp"
+	"Source/BsScriptResourceManager.cpp"
+	"Source/BsScriptGameObjectManager.cpp"
+	"Source/BsScriptObjectImpl.cpp"
+	"Source/BsScriptObject.cpp"
+	"Source/BsManagedResource.cpp"
+	"Source/BsManagedResourceMetaData.cpp"
+	"Source/BsManagedResourceManager.cpp"
+	"Source/BsScriptObjectManager.cpp"
+	"Source/BsScriptStringTableManager.cpp"
+	"Source/BsEngineScriptLibrary.cpp"
+	"Source/BsPlayInEditorManager.cpp"
+)
+
+set(BS_SBANSHEEENGINE_INC_RTTI
+	"Include/BsManagedComponentRTTI.h"
+	"Include/BsManagedResourceRTTI.h"
+	"Include/BsManagedResourceMetaDataRTTI.h"
+)
+
+source_group("Header Files" FILES ${BS_SBANSHEEENGINE_INC_NOFILTER})
+source_group("Source Files\\Wrappers\\GUI" FILES ${BS_SBANSHEEENGINE_SRC_WRAPPERS_GUI})
+source_group("Header Files\\Serialization\\RTTI" FILES ${BS_SBANSHEEENGINE_INC_SERIALIZATION_RTTI})
+source_group("Source Files\\Wrappers\\Physics" FILES ${BS_SBANSHEEENGINE_SRC_WRAPPERS_PHYSICS})
+source_group("Header Files\\Wrappers" FILES ${BS_SBANSHEEENGINE_INC_WRAPPERS})
+source_group("Header Files\\Wrappers\\GUI" FILES ${BS_SBANSHEEENGINE_INC_WRAPPERS_GUI})
+source_group("Header Files\\Wrappers\\Physics" FILES ${BS_SBANSHEEENGINE_INC_WRAPPERS_PHYSICS})
+source_group("Source Files\\Serialization" FILES ${BS_SBANSHEEENGINE_SRC_SERIALIZATION})
+source_group("Source Files\\Wrappers" FILES ${BS_SBANSHEEENGINE_SRC_WRAPPERS})
+source_group("Header Files\\Serialization" FILES ${BS_SBANSHEEENGINE_INC_SERIALIZATION})
+source_group("Source Files" FILES ${BS_SBANSHEEENGINE_SRC_NOFILTER})
+source_group("Header Files\\RTTI" FILES ${BS_SBANSHEEENGINE_INC_RTTI})
+
+set(BS_SBANSHEEENGINE_SRC
+	${BS_SBANSHEEENGINE_INC_NOFILTER}
+	${BS_SBANSHEEENGINE_SRC_WRAPPERS_GUI}
+	${BS_SBANSHEEENGINE_INC_SERIALIZATION_RTTI}
+	${BS_SBANSHEEENGINE_SRC_WRAPPERS_PHYSICS}
+	${BS_SBANSHEEENGINE_INC_WRAPPERS}
+	${BS_SBANSHEEENGINE_INC_WRAPPERS_GUI}
+	${BS_SBANSHEEENGINE_INC_WRAPPERS_PHYSICS}
+	${BS_SBANSHEEENGINE_SRC_SERIALIZATION}
+	${BS_SBANSHEEENGINE_SRC_WRAPPERS}
+	${BS_SBANSHEEENGINE_INC_SERIALIZATION}
+	${BS_SBANSHEEENGINE_SRC_NOFILTER}
+	${BS_SBANSHEEENGINE_INC_RTTI}
+)