2
0
Эх сурвалжийг харах

More work on improving documentation for doxygen generation

BearishSun 9 жил өмнө
parent
commit
fea5f00e64
44 өөрчлөгдсөн 1339 нэмэгдсэн , 1285 устгасан
  1. 1 1
      Documentation/GitHub/features.md
  2. 2 1
      Doxyfile
  3. 1 1
      Source/BansheeCore/Include/BsCoreObject.h
  4. 11 2
      Source/BansheeEditor/Include/BsCodeEditor.h
  5. 1 1
      Source/BansheeEditor/Include/BsDockManagerLayout.h
  6. 10 10
      Source/BansheeEditor/Include/BsGUIFieldBase.h
  7. 215 215
      Source/BansheeEditor/Include/BsGUIListBoxField.h
  8. 10 10
      Source/BansheeEditor/Include/BsGUISceneTreeView.h
  9. 2 4
      Source/BansheeEditor/Include/BsGUIStatusBar.h
  10. 2 2
      Source/BansheeEditor/Include/BsGUITabbedTitleBar.h
  11. 10 10
      Source/BansheeEditor/Include/BsGUITextField.h
  12. 107 106
      Source/BansheeEditor/Include/BsHandleSliderDisc.h
  13. 1 1
      Source/BansheeEditor/Include/BsScenePicking.h
  14. 101 101
      Source/BansheeEditor/Include/BsUndoRedo.h
  15. 1 1
      Source/BansheeEditor/Include/Win32/BsVSCodeEditor.h
  16. 98 97
      Source/BansheeEngine/Include/BsApplication.h
  17. 1 1
      Source/BansheeEngine/Include/BsBuiltinResources.h
  18. 240 240
      Source/BansheeEngine/Include/BsCCamera.h
  19. 128 128
      Source/BansheeEngine/Include/BsCLight.h
  20. 5 2
      Source/BansheeEngine/Include/BsCamera.h
  21. 1 1
      Source/BansheeEngine/Include/BsGUIButton.h
  22. 1 1
      Source/BansheeEngine/Include/BsGUIButtonBase.h
  23. 5 5
      Source/BansheeEngine/Include/BsGUIDropDownContent.h
  24. 2 0
      Source/BansheeEngine/Include/BsGUIDropDownHitBox.h
  25. 2 2
      Source/BansheeEngine/Include/BsGUIElementBase.h
  26. 1 1
      Source/BansheeEngine/Include/BsGUIElementContainer.h
  27. 7 7
      Source/BansheeEngine/Include/BsGUIInputBox.h
  28. 1 1
      Source/BansheeEngine/Include/BsGUIInputTool.h
  29. 3 3
      Source/BansheeEngine/Include/BsGUILabel.h
  30. 1 1
      Source/BansheeEngine/Include/BsGUIListBox.h
  31. 1 3
      Source/BansheeEngine/Include/BsGUIPanel.h
  32. 4 4
      Source/BansheeEngine/Include/BsGUIScrollArea.h
  33. 2 3
      Source/BansheeEngine/Include/BsGUIScrollBar.h
  34. 2 2
      Source/BansheeEngine/Include/BsGUISliderHandle.h
  35. 1 1
      Source/BansheeEngine/Include/BsGUITexture.h
  36. 44 14
      Source/BansheeEngine/Include/BsGUIToggle.h
  37. 105 105
      Source/BansheeEngine/Include/BsGameResourceManager.h
  38. 5 2
      Source/BansheeEngine/Include/BsLight.h
  39. 12 5
      Source/BansheeEngine/Include/BsRenderable.h
  40. 1 1
      Source/BansheeEngine/Include/BsRendererMaterialManager.h
  41. 3 4
      Source/BansheeEngine/Include/BsShapeMeshes3D.h
  42. 3 0
      Source/BansheeEngine/Include/BsSprite.h
  43. 183 183
      Source/BansheeEngine/Source/BsGUIToggle.cpp
  44. 2 2
      Source/BansheePhysX/Include/BsPhysXPrerequisites.h

+ 1 - 1
Documentation/GitHub/features.md

@@ -2,7 +2,7 @@
 
 
 All features listed here are the ones currently available (implemented). If you are interested in what's coming up in the near future check out our [roadmap](roadmap.md).
 All features listed here are the ones currently available (implemented). If you are interested in what's coming up in the near future check out our [roadmap](roadmap.md).
   
   
-**Current version: v0.3**
+Current version: **v0.3**
 ---------------------------------------------------  
 ---------------------------------------------------  
   
   
 ## Core
 ## Core

+ 2 - 1
Doxyfile

@@ -776,7 +776,8 @@ WARN_LOGFILE           =
 # Note: If this tag is empty the current directory is searched.
 # Note: If this tag is empty the current directory is searched.
 
 
 INPUT                  = Source/BansheeUtility/Include \
 INPUT                  = Source/BansheeUtility/Include \
-                         Source/BansheeCore/Include
+                         Source/BansheeCore/Include \
+                         Source/BansheeEngine/Include
 
 
 # This tag can be used to specify the character encoding of the source files
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses

+ 1 - 1
Source/BansheeCore/Include/BsCoreObject.h

@@ -202,7 +202,7 @@ namespace BansheeEngine
 
 
 		/**
 		/**
 		 * Notifies the core object manager that this object is dependant on some other CoreObject(s), and the dependencies
 		 * Notifies the core object manager that this object is dependant on some other CoreObject(s), and the dependencies
-		 * changed since the last call to this method. This will trigger a call to  getCoreDependencies() to collect the 
+		 * changed since the last call to this method. This will trigger a call to getCoreDependencies() to collect the 
 		 * new dependencies.
 		 * new dependencies.
 		 */
 		 */
 		void markDependenciesDirty();
 		void markDependenciesDirty();

+ 11 - 2
Source/BansheeEditor/Include/BsCodeEditor.h

@@ -107,10 +107,19 @@ namespace BansheeEngine
 	public:
 	public:
 		virtual ~CodeEditor() { }
 		virtual ~CodeEditor() { }
 
 
-		/** @copydoc CodeEditorManager::openFile */
+		/** 
+		 * @copydoc CodeEditorManager::openFile 
+		 *
+		 * @param[in]	solutionPath	Path to the solution file the file is a part of.
+		 */
 		virtual void openFile(const Path& solutionPath, const Path& path, UINT32 lineNumber) const = 0;
 		virtual void openFile(const Path& solutionPath, const Path& path, UINT32 lineNumber) const = 0;
 
 
-		/** @copydoc CodeEditorManager::syncSolution */
+		/** 
+		 * @copydoc CodeEditorManager::syncSolution 
+		 *
+		 * @param[in]	data		Information about the solution and the files it contains.
+		 * @param[in]	outputPath	Path to the file into which to output the solution.
+		 */
 		virtual void syncSolution(const CodeSolutionData& data, const Path& outputPath) const = 0;
 		virtual void syncSolution(const CodeSolutionData& data, const Path& outputPath) const = 0;
 	};
 	};
 
 

+ 1 - 1
Source/BansheeEditor/Include/BsDockManagerLayout.h

@@ -71,7 +71,7 @@ namespace BansheeEngine
 		 * Signals whether there is a maximized dock container in the layout.
 		 * Signals whether there is a maximized dock container in the layout.
 		 *
 		 *
 		 * @param[in]	maximized 	True if maximized.
 		 * @param[in]	maximized 	True if maximized.
-		 * @param[in]	widgetName	Name of the widgets on the maximized container.
+		 * @param[in]	widgetNames	Names of the widgets on the maximized container.
 		 */
 		 */
 		void setIsMaximized(bool maximized, const Vector<String>& widgetNames);
 		void setIsMaximized(bool maximized, const Vector<String>& widgetNames);
 
 

+ 10 - 10
Source/BansheeEditor/Include/BsGUIFieldBase.h

@@ -64,7 +64,7 @@ namespace BansheeEngine
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 *								This will override any similar options set by style.
 		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static T* create(const GUIContent& labelContent, UINT32 labelWidth, const GUIOptions& options,
 		static T* create(const GUIContent& labelContent, UINT32 labelWidth, const GUIOptions& options,
@@ -84,7 +84,7 @@ namespace BansheeEngine
 		 * @param[in]	labelContent	Content to display in the editor field label.
 		 * @param[in]	labelContent	Content to display in the editor field label.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized. This will
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized. This will
 		 *								override any similar options set by style.
 		 *								override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static T* create(const GUIContent& labelContent, const GUIOptions& options,
 		static T* create(const GUIContent& labelContent, const GUIOptions& options,
@@ -105,7 +105,7 @@ namespace BansheeEngine
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 *								This will override any similar options set by style.
 		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static T* create(const HString& labelText, UINT32 labelWidth, const GUIOptions& options,
 		static T* create(const HString& labelText, UINT32 labelWidth, const GUIOptions& options,
@@ -125,7 +125,7 @@ namespace BansheeEngine
 		 * @param[in]	labelText		String to display in the editor field label.
 		 * @param[in]	labelText		String to display in the editor field label.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 *								This will override any similar options set by style.
 		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static T* create(const HString& labelText, const GUIOptions& options,
 		static T* create(const HString& labelText, const GUIOptions& options,
@@ -144,7 +144,7 @@ namespace BansheeEngine
 		 *
 		 *
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 *								This will override any similar options set by style.
 		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static T* create(const GUIOptions& options, const String& style = StringUtil::BLANK)
 		static T* create(const GUIOptions& options, const String& style = StringUtil::BLANK)
@@ -162,7 +162,7 @@ namespace BansheeEngine
 		 *
 		 *
 		 * @param[in]	labelContent	Content to display in the editor field label.
 		 * @param[in]	labelContent	Content to display in the editor field label.
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	labelWidth		Width of the label in pixels.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static T* create(const GUIContent& labelContent, UINT32 labelWidth,
 		static T* create(const GUIContent& labelContent, UINT32 labelWidth,
@@ -179,7 +179,7 @@ namespace BansheeEngine
 		 * Creates a new GUI editor field with a label.
 		 * Creates a new GUI editor field with a label.
 		 *
 		 *
 		 * @param[in]	labelContent	Content to display in the editor field label.
 		 * @param[in]	labelContent	Content to display in the editor field label.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static T* create(const GUIContent& labelContent,
 		static T* create(const GUIContent& labelContent,
@@ -198,7 +198,7 @@ namespace BansheeEngine
 		 *
 		 *
 		 * @param[in]	labelText		String to display in the editor field label.
 		 * @param[in]	labelText		String to display in the editor field label.
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	labelWidth		Width of the label in pixels.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static T* create(const HString& labelText, UINT32 labelWidth,
 		static T* create(const HString& labelText, UINT32 labelWidth,
@@ -216,7 +216,7 @@ namespace BansheeEngine
 		 * Creates a new GUI editor field with a label.
 		 * Creates a new GUI editor field with a label.
 		 *
 		 *
 		 * @param[in]	labelText		String to display in the editor field label.
 		 * @param[in]	labelText		String to display in the editor field label.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static T* create(const HString& labelText, const String& style = StringUtil::BLANK)
 		static T* create(const HString& labelText, const String& style = StringUtil::BLANK)
@@ -232,7 +232,7 @@ namespace BansheeEngine
 		/**
 		/**
 		 * Creates a new GUI editor field without a label.
 		 * Creates a new GUI editor field without a label.
 		 *
 		 *
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static T* create(const String& style = StringUtil::BLANK)
 		static T* create(const String& style = StringUtil::BLANK)

+ 215 - 215
Source/BansheeEditor/Include/BsGUIListBoxField.h

@@ -1,216 +1,216 @@
-//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
-//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
-#pragma once
-
-#include "BsEditorPrerequisites.h"
-#include "BsGUIElementContainer.h"
-
-namespace BansheeEngine
-{
-	/** @addtogroup GUI-Editor
-	 *  @{
-	 */
-
-	/**
-	 * A composite GUI object representing an editor field. Editor fields are a combination of a label and an input field.
-	 * Label is optional. This specific implementation displays a list box field.
-	 */
-	class BS_ED_EXPORT GUIListBoxField : public GUIElementContainer
-	{
-		struct PrivatelyConstruct {};
-
-	public:
-		/** Returns type name of the GUI element used for finding GUI element styles. */
-		static const String& getGUITypeName();
-
-		/** Returns style type name of the internal GUILabel element. */
-		static const String& getLabelStyleType();
-
-		/** Style type name for the internal list box. */
-		static const String& getListBoxStyleType();
-
-		/**
-		 * Creates a new GUI list box field with a label.
-		 *
-		 * @param[in]	elements		Elements to display in the list box.
-		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param[in]	labelContent	Content to display in the editor field label.
-		 * @param[in]	labelWidth		Width of the label in pixels.
-		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
-		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
-		 *								GUIWidget the element is used on. If not specified default style is used.
-		 */
-		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent, 
-			UINT32 labelWidth, const GUIOptions& options, const String& style = StringUtil::BLANK);
-
-		/**
-		 * Creates a new GUI list box field with a label.
-		 *
-		 * @param[in]	elements		Elements to display in the list box.
-		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param[in]	labelContent	Content to display in the editor field label.
-		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
-		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
-		 *								GUIWidget the element is used on. If not specified default style is used.
-		 */
-		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent,
-			const GUIOptions& options, const String& style = StringUtil::BLANK);
-
-		/**
-		 * Creates a new GUI list box field with a label.
-		 *
-		 * @param[in]	elements		Elements to display in the list box.
-		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param[in]	labelText		String to display in the editor field label.
-		 * @param[in]	labelWidth		Width of the label in pixels.
-		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
-		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
-		 *								GUIWidget the element is used on. If not specified default style is used.
-		 */
-		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText, 
-			UINT32 labelWidth, const GUIOptions& options, const String& style = StringUtil::BLANK);
-
-		/**
-		 * Creates a new GUI list box field with a label.
-		 *
-		 * @param[in]	elements		Elements to display in the list box.
-		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param[in]	labelText		String to display in the editor field label.
-		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
-		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
-		 *								GUIWidget the element is used on. If not specified default style is used.
-		 */
-		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText, 
-			const GUIOptions& options, const String& style = StringUtil::BLANK);
-
-		/**
-		 * Creates a new GUI list box field without a label.
-		 *
-		 * @param[in]	elements		Elements to display in the list box.
-		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
-		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
-		 *								GUIWidget the element is used on. If not specified default style is used.
-		 */
-		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIOptions& options,
-			const String& style = StringUtil::BLANK);
-
-		/**
-		 * Creates a new GUI list box field with a label.
-		 *
-		 * @param[in]	elements		Elements to display in the list box.
-		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param[in]	labelContent	Content to display in the editor field label.
-		 * @param[in]	labelWidth		Width of the label in pixels.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
-		 *								GUIWidget the element is used on. If not specified default style is used.
-		 */
-		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent,
-			UINT32 labelWidth, const String& style = StringUtil::BLANK);
-
-		/**
-		 * Creates a new GUI list box field with a label.
-		 *
-		 * @param[in]	elements		Elements to display in the list box.
-		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param[in]	labelContent	Content to display in the editor field label.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
-		 *								GUIWidget the element is used on. If not specified default style is used.
-		 */
-		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent,
-			const String& style = StringUtil::BLANK);
-
-		/**
-		 * Creates a new GUI list box field with a label.
-		 *
-		 * @param[in]	elements		Elements to display in the list box.
-		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param[in]	labelText		String to display in the editor field label.
-		 * @param[in]	labelWidth		Width of the label in pixels.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
-		 *								GUIWidget the element is used on. If not specified default style is used.
-		 */
-		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText, 
-			UINT32 labelWidth, const String& style = StringUtil::BLANK);
-
-		/**
-		 * Creates a new GUI list box field with a label.
-		 *
-		 * @param[in]	elements		Elements to display in the list box.
-		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param[in]	labelText		String to display in the editor field label.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
-		 *								GUIWidget the element is used on. If not specified default style is used.
-		 */
-		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText,
-			const String& style = StringUtil::BLANK);
-
-		/**
-		 * Creates a new GUI list box field without a label.
-		 *
-		 * @param[in]	elements		Elements to display in the list box.
-		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
-		 *								GUIWidget the element is used on. If not specified default style is used.
-		 */
-		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, 
-			const String& style = StringUtil::BLANK);
-
-		GUIListBoxField(const PrivatelyConstruct& dummy, const Vector<HString>& elements, bool multiselect, 
-			const GUIContent& labelContent, UINT32 labelWidth, const String& style, const GUIDimensions& dimensions, bool withLabel);
-
-		/**	Checks whether the listbox supports multiple selected elements at once. */
-		bool isMultiselect() const;
-
-		/**	Changes the list box elements. */
-		void setElements(const Vector<HString>& elements);
-
-		/**	Selects an element with the specified index. */
-		void selectElement(UINT32 value);
-
-		/**	Deselect element the element with the specified index. Only relevant for multi-select list boxes. */
-		void deselectElement(UINT32 idx);
-
-		/**	Returns states of all element in the list box (enabled or disabled). */
-		const Vector<bool>& getElementStates() const;
-
-		/**
-		 * Sets states for all list box elements. Only valid for multi-select list boxes. Number of states must match number
-		 * of list box elements.
-		 */
-		void setElementStates(const Vector<bool>& states);
-
-		/** @copydoc GUIElement::setTint */
-		virtual void setTint(const Color& color) override;
-
-		/** Triggers when a new element is selected. Provides index to the element. */
-		Event<void(UINT32, bool)> onSelectionChanged; 
-	protected:
-		static const UINT32 DEFAULT_LABEL_WIDTH;
-
-		virtual ~GUIListBoxField();
-
-		/** @copydoc GUIElement::_updateLayoutInternal */
-		void _updateLayoutInternal(const GUILayoutData& data) override;
-
-		/** @copydoc GUIElement::_getOptimalSize */
-		Vector2I _getOptimalSize() const override;
-
-		/** @copydoc GUIElement::styleUpdated */
-		void styleUpdated() override;
-
-		/**	Triggered when the selected list box element changes. */
-		void selectionChanged(UINT32 newIndex, bool enabled);
-
-		GUIListBox* mListBox;
-		GUILayout* mLayout;
-		GUILabel* mLabel;
-	};
-
-	/** @} */
+//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
+//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
+#pragma once
+
+#include "BsEditorPrerequisites.h"
+#include "BsGUIElementContainer.h"
+
+namespace BansheeEngine
+{
+	/** @addtogroup GUI-Editor
+	 *  @{
+	 */
+
+	/**
+	 * A composite GUI object representing an editor field. Editor fields are a combination of a label and an input field.
+	 * Label is optional. This specific implementation displays a list box field.
+	 */
+	class BS_ED_EXPORT GUIListBoxField : public GUIElementContainer
+	{
+		struct PrivatelyConstruct {};
+
+	public:
+		/** Returns type name of the GUI element used for finding GUI element styles. */
+		static const String& getGUITypeName();
+
+		/** Returns style type name of the internal GUILabel element. */
+		static const String& getLabelStyleType();
+
+		/** Style type name for the internal list box. */
+		static const String& getListBoxStyleType();
+
+		/**
+		 * Creates a new GUI list box field with a label.
+		 *
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent, 
+			UINT32 labelWidth, const GUIOptions& options, const String& style = StringUtil::BLANK);
+
+		/**
+		 * Creates a new GUI list box field with a label.
+		 *
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent,
+			const GUIOptions& options, const String& style = StringUtil::BLANK);
+
+		/**
+		 * Creates a new GUI list box field with a label.
+		 *
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText, 
+			UINT32 labelWidth, const GUIOptions& options, const String& style = StringUtil::BLANK);
+
+		/**
+		 * Creates a new GUI list box field with a label.
+		 *
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText, 
+			const GUIOptions& options, const String& style = StringUtil::BLANK);
+
+		/**
+		 * Creates a new GUI list box field without a label.
+		 *
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIOptions& options,
+			const String& style = StringUtil::BLANK);
+
+		/**
+		 * Creates a new GUI list box field with a label.
+		 *
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent,
+			UINT32 labelWidth, const String& style = StringUtil::BLANK);
+
+		/**
+		 * Creates a new GUI list box field with a label.
+		 *
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent,
+			const String& style = StringUtil::BLANK);
+
+		/**
+		 * Creates a new GUI list box field with a label.
+		 *
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText, 
+			UINT32 labelWidth, const String& style = StringUtil::BLANK);
+
+		/**
+		 * Creates a new GUI list box field with a label.
+		 *
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText,
+			const String& style = StringUtil::BLANK);
+
+		/**
+		 * Creates a new GUI list box field without a label.
+		 *
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, 
+			const String& style = StringUtil::BLANK);
+
+		GUIListBoxField(const PrivatelyConstruct& dummy, const Vector<HString>& elements, bool multiselect, 
+			const GUIContent& labelContent, UINT32 labelWidth, const String& style, const GUIDimensions& dimensions, bool withLabel);
+
+		/**	Checks whether the listbox supports multiple selected elements at once. */
+		bool isMultiselect() const;
+
+		/**	Changes the list box elements. */
+		void setElements(const Vector<HString>& elements);
+
+		/**	Selects an element with the specified index. */
+		void selectElement(UINT32 value);
+
+		/**	Deselect element the element with the specified index. Only relevant for multi-select list boxes. */
+		void deselectElement(UINT32 idx);
+
+		/**	Returns states of all element in the list box (enabled or disabled). */
+		const Vector<bool>& getElementStates() const;
+
+		/**
+		 * Sets states for all list box elements. Only valid for multi-select list boxes. Number of states must match number
+		 * of list box elements.
+		 */
+		void setElementStates(const Vector<bool>& states);
+
+		/** @copydoc GUIElement::setTint */
+		virtual void setTint(const Color& color) override;
+
+		/** Triggers when a new element is selected. Provides index to the element. */
+		Event<void(UINT32, bool)> onSelectionChanged; 
+	protected:
+		static const UINT32 DEFAULT_LABEL_WIDTH;
+
+		virtual ~GUIListBoxField();
+
+		/** @copydoc GUIElement::_updateLayoutInternal */
+		void _updateLayoutInternal(const GUILayoutData& data) override;
+
+		/** @copydoc GUIElement::_getOptimalSize */
+		Vector2I _getOptimalSize() const override;
+
+		/** @copydoc GUIElement::styleUpdated */
+		void styleUpdated() override;
+
+		/**	Triggered when the selected list box element changes. */
+		void selectionChanged(UINT32 newIndex, bool enabled);
+
+		GUIListBox* mListBox;
+		GUILayout* mLayout;
+		GUILabel* mLabel;
+	};
+
+	/** @} */
 }
 }

+ 10 - 10
Source/BansheeEditor/Include/BsGUISceneTreeView.h

@@ -142,34 +142,34 @@ namespace BansheeEngine
 		 */
 		 */
 		void dragAndDropFinalize();
 		void dragAndDropFinalize();
 
 
-		/** @copydoc TreeView::getRootElement */
+		/** @copydoc GUITreeView::getRootElement */
 		virtual TreeElement& getRootElement() override { return mRootElement; }
 		virtual TreeElement& getRootElement() override { return mRootElement; }
 
 
-		/** @copydoc TreeView::getRootElementConst */
+		/** @copydoc GUITreeView::getRootElementConst */
 		virtual const TreeElement& getRootElementConst() const override { return mRootElement; }
 		virtual const TreeElement& getRootElementConst() const override { return mRootElement; }
 
 
-		/** @copydoc TreeView::updateTreeElementHierarchy */
+		/** @copydoc GUITreeView::updateTreeElementHierarchy */
 		virtual void updateTreeElementHierarchy() override;
 		virtual void updateTreeElementHierarchy() override;
 
 
-		/** @copydoc TreeView::renameTreeElement */
+		/** @copydoc GUITreeView::renameTreeElement */
 		virtual void renameTreeElement(TreeElement* element, const WString& name) override;
 		virtual void renameTreeElement(TreeElement* element, const WString& name) override;
 
 
-		/** @copydoc TreeView::deleteTreeElement */
+		/** @copydoc GUITreeView::deleteTreeElement */
 		virtual void deleteTreeElement(TreeElement* element) override;
 		virtual void deleteTreeElement(TreeElement* element) override;
 
 
-		/** @copydoc TreeView::acceptDragAndDrop */
+		/** @copydoc GUITreeView::acceptDragAndDrop */
 		virtual bool acceptDragAndDrop() const override;
 		virtual bool acceptDragAndDrop() const override;
 
 
-		/** @copydoc TreeView::dragAndDropStart */
+		/** @copydoc GUITreeView::dragAndDropStart */
 		virtual void dragAndDropStart(const Vector<TreeElement*>& elements) override;
 		virtual void dragAndDropStart(const Vector<TreeElement*>& elements) override;
 
 
-		/** @copydoc TreeView::dragAndDropEnded */
+		/** @copydoc GUITreeView::dragAndDropEnded */
 		virtual void dragAndDropEnded(TreeElement* overTreeElement) override;
 		virtual void dragAndDropEnded(TreeElement* overTreeElement) override;
 
 
-		/** @copydoc TreeView::_acceptDragAndDrop */
+		/** @copydoc GUITreeView::_acceptDragAndDrop */
 		virtual bool _acceptDragAndDrop(const Vector2I position, UINT32 typeId) const override;
 		virtual bool _acceptDragAndDrop(const Vector2I position, UINT32 typeId) const override;
 
 
-		/** @copydoc TreeView::selectionChanged */
+		/** @copydoc GUITreeView::selectionChanged */
 		virtual void selectionChanged() override;
 		virtual void selectionChanged() override;
 
 
 		/** Deletes the internal TreeElement representation without actually deleting the referenced SceneObject. */
 		/** Deletes the internal TreeElement representation without actually deleting the referenced SceneObject. */

+ 2 - 4
Source/BansheeEditor/Include/BsGUIStatusBar.h

@@ -31,7 +31,7 @@ namespace BansheeEngine
 		 *
 		 *
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 *								This will override any similar options set by style.
 		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUIStatusBar* create(const GUIOptions& options, const String& style = StringUtil::BLANK);
 		static GUIStatusBar* create(const GUIOptions& options, const String& style = StringUtil::BLANK);
@@ -39,9 +39,7 @@ namespace BansheeEngine
 		/**
 		/**
 		 * Creates a new GUI status bar.
 		 * Creates a new GUI status bar.
 		 *
 		 *
-		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
-		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUIStatusBar* create(const String& style = StringUtil::BLANK);
 		static GUIStatusBar* create(const String& style = StringUtil::BLANK);

+ 2 - 2
Source/BansheeEditor/Include/BsGUITabbedTitleBar.h

@@ -27,7 +27,7 @@ namespace BansheeEngine
 		 * Creates a new GUI foldout element.
 		 * Creates a new GUI foldout element.
 		 *
 		 *
 		 * @param[in]	backgroundStyle		GUI style to display the background in. Keep as blank for default.
 		 * @param[in]	backgroundStyle		GUI style to display the background in. Keep as blank for default.
-		 * @param[in]	backgroundStyle		GUI style to display the tab buttons in. Keep as blank for default.
+		 * @param[in]	tabBtnStyle			GUI style to display the tab buttons in. Keep as blank for default.
 		 * @param[in]	maxBtnStyle			GUI style to display the maximize button in. Keep as blank for default.
 		 * @param[in]	maxBtnStyle			GUI style to display the maximize button in. Keep as blank for default.
 		 * @param[in]	closeBtnStyle		GUI style to display the close button in. Keep as blank for default.
 		 * @param[in]	closeBtnStyle		GUI style to display the close button in. Keep as blank for default.
 		 */
 		 */
@@ -41,7 +41,7 @@ namespace BansheeEngine
 		 * @param[in]	options				Options that allow you to control how is the element positioned and sized.
 		 * @param[in]	options				Options that allow you to control how is the element positioned and sized.
 		 *									This will override any similar options set by style.
 		 *									This will override any similar options set by style.
 		 * @param[in]	backgroundStyle		GUI style to display the background in. Keep as blank for default.
 		 * @param[in]	backgroundStyle		GUI style to display the background in. Keep as blank for default.
-		 * @param[in]	backgroundStyle		GUI style to display the tab buttons in. Keep as blank for default.
+		 * @param[in]	tabBtnStyle			GUI style to display the tab buttons in. Keep as blank for default.
 		 * @param[in]	maxBtnStyle			GUI style to display the maximize button in. Keep as blank for default.
 		 * @param[in]	maxBtnStyle			GUI style to display the maximize button in. Keep as blank for default.
 		 * @param[in]	closeBtnStyle		GUI style to display the close button in. Keep as blank for default.
 		 * @param[in]	closeBtnStyle		GUI style to display the close button in. Keep as blank for default.
 		 */
 		 */

+ 10 - 10
Source/BansheeEditor/Include/BsGUITextField.h

@@ -37,7 +37,7 @@ namespace BansheeEngine
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized. This will
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized. This will
 		 *								override any similar options set by style.
 		 *								override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUITextField* create(bool multiline, const GUIContent& labelContent, UINT32 labelWidth, const GUIOptions& options,
 		static GUITextField* create(bool multiline, const GUIContent& labelContent, UINT32 labelWidth, const GUIOptions& options,
@@ -50,7 +50,7 @@ namespace BansheeEngine
 		 * @param[in]	labelContent	Content to display in the editor field label.
 		 * @param[in]	labelContent	Content to display in the editor field label.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 *								This will override any similar options set by style.
 		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUITextField* create(bool multiline, const GUIContent& labelContent, const GUIOptions& options,
 		static GUITextField* create(bool multiline, const GUIContent& labelContent, const GUIOptions& options,
@@ -64,7 +64,7 @@ namespace BansheeEngine
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 *								This will override any similar options set by style.
 		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUITextField* create(bool multiline, const HString& labelText, UINT32 labelWidth, const GUIOptions& options,
 		static GUITextField* create(bool multiline, const HString& labelText, UINT32 labelWidth, const GUIOptions& options,
@@ -77,7 +77,7 @@ namespace BansheeEngine
 		 * @param[in]	labelText		String to display in the editor field label.
 		 * @param[in]	labelText		String to display in the editor field label.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 *								This will override any similar options set by style.
 		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUITextField* create(bool multiline, const HString& labelText, const GUIOptions& options,
 		static GUITextField* create(bool multiline, const HString& labelText, const GUIOptions& options,
@@ -89,7 +89,7 @@ namespace BansheeEngine
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 *								This will override any similar options set by style.
 		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUITextField* create(bool multiline, const GUIOptions& options, const String& style = StringUtil::BLANK);
 		static GUITextField* create(bool multiline, const GUIOptions& options, const String& style = StringUtil::BLANK);
@@ -100,7 +100,7 @@ namespace BansheeEngine
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
 		 * @param[in]	labelContent	Content to display in the editor field label.
 		 * @param[in]	labelContent	Content to display in the editor field label.
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	labelWidth		Width of the label in pixels.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUITextField* create(bool multiline, const GUIContent& labelContent, UINT32 labelWidth,
 		static GUITextField* create(bool multiline, const GUIContent& labelContent, UINT32 labelWidth,
@@ -111,7 +111,7 @@ namespace BansheeEngine
 		 *
 		 *
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
 		 * @param[in]	labelContent	Content to display in the editor field label.
 		 * @param[in]	labelContent	Content to display in the editor field label.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUITextField* create(bool multiline, const GUIContent& labelContent,
 		static GUITextField* create(bool multiline, const GUIContent& labelContent,
@@ -123,7 +123,7 @@ namespace BansheeEngine
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
 		 * @param[in]	labelText		String to display in the editor field label.
 		 * @param[in]	labelText		String to display in the editor field label.
 		 * @param[in]	labelWidth		Width of the label in pixels.
 		 * @param[in]	labelWidth		Width of the label in pixels.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUITextField* create(bool multiline, const HString& labelText, UINT32 labelWidth,
 		static GUITextField* create(bool multiline, const HString& labelText, UINT32 labelWidth,
@@ -134,7 +134,7 @@ namespace BansheeEngine
 		 *
 		 *
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
 		 * @param[in]	labelText		String to display in the editor field label.
 		 * @param[in]	labelText		String to display in the editor field label.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUITextField* create(bool multiline, const HString& labelText,
 		static GUITextField* create(bool multiline, const HString& labelText,
@@ -144,7 +144,7 @@ namespace BansheeEngine
 		 * Creates a new GUI text editor field without a label.
 		 * Creates a new GUI text editor field without a label.
 		 *
 		 *
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
 		 * @param[in]	multiline		Should the input box accept multiple lines of input.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
 		static GUITextField* create(bool multiline, const String& style = StringUtil::BLANK);
 		static GUITextField* create(bool multiline, const String& style = StringUtil::BLANK);

+ 107 - 106
Source/BansheeEditor/Include/BsHandleSliderDisc.h

@@ -1,107 +1,108 @@
-//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
-//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
-#pragma once
-
-#include "BsEditorPrerequisites.h"
-#include "BsHandleSlider.h"
-#include "BsTorus.h"
-
-namespace BansheeEngine
-{
-	/** @addtogroup Handles
-	 *  @{
-	 */
-
-	/**
-	 * Handle slider that returns a delta value as you drag the pointer along a disc. For intersection purposes the disc is
-	 * internally represented by a torus.
-	 */
-	class BS_ED_EXPORT HandleSliderDisc : public HandleSlider
-	{
-	public:
-		/**
-		 * Constructs a new disc slider.
-		 *
-		 * @param[in]	normal		Normal that determines the orientation of the disc.
-		 * @param[in]	radius		Radius of the disc.
-		 * @param[in]	fixedScale	If true the handle slider will always try to maintain the same visible area in the
-		 *							viewport regardless of distance from camera.
-		 * @param[in]	layer		Layer that allows filtering of which sliders are interacted with from a specific camera.
-		 */
-		HandleSliderDisc(const Vector3& normal, float radius, bool fixedScale, UINT64 layer);
-		~HandleSliderDisc();
-
-		/** @copydoc	HandleSlider::intersects */
-		bool intersects(const Ray& ray, float& t) const override;
-
-		/** @copydoc	HandleSlider::handleInput */
-		void handleInput(const CameraPtr& camera, const Vector2I& inputDelta) override;
-
-		/**
-		 * Enables or disables a cut-off plane that can allow the disc to be intersected with only in an 180 degree arc.
-		 *
-		 * @param[in]	angle	Angle at which to start the cut-off. Points on the dist at the specified angle and the next
-		 *						180 degrees won't be interactable.	
-		 */
-		void setCutoffPlane(Degree angle, bool enabled);
-
-		/**
-		 * Returns a delta value that is the result of dragging/sliding the pointer along the disc. This changes every frame
-		 * and will be zero unless the slider is active.
-		 */
-		Radian getDelta() const { return mDelta; }
-
-		/**
-		 * Gets the initial angle at which the drag/slide operation started. This is only valid when the slider is active.
-		 */
-		Radian getStartAngle() const { return mStartAngle; }
-
-	protected:
-
-		/** @copydoc HandleSlider::activate */
-		void activate(const CameraPtr& camera, const Vector2I& pointerPos) override;
-
-		/** @copydoc HandleSlider::reset */
-		void reset() override { mDelta = 0.0f; }
-
-		/**
-		 * Calculates the closest point on an arc from a ray.
-		 *
-		 * @param[in]	inputRay	Ray to use for determining the point.
-		 * @param[in]	center		Center of the arc.
-		 * @param[in]	up			Normal vector of the arc. Must be normalized.
-		 * @param[in]	radius		Radius of the arc.
-		 * @param[in]	startAngle	Starting angle of the arc.
-		 * @param[in]	angleAmount	Length of the arc.
-		 * @return					A point on the arc closest to the provided ray.
-		 */
-		Vector3 calculateClosestPointOnArc(const Ray& inputRay, const Vector3& center, const Vector3& up,
-			float radius, Degree startAngle, Degree angleAmount);
-
-		/**
-		 * Determines an angle of a point on a circle.
-		 *
-		 * @param[in]	up		Normal vector of the circle. Must be normalized.
-		 * @param[in]	point	Point to try to find the angle for. Caller must ensure the point is actually somewhere on
-		 *						the circle otherwise the result is undefined.
-		 * @return				Angle at which the provided point lies on the circle.
-		 */
-		Degree pointOnCircleToAngle(Vector3 up, Vector3 point);
-
-		static const float TORUS_RADIUS;
-
-		Vector3 mNormal;
-		float mRadius;
-		bool mHasCutoffPlane;
-		Plane mCutoffPlane;
-
-		Vector3 mDirection;
-		Vector3 mStartPosition;
-		Degree mStartAngle;
-		Degree mDelta;
-
-		Torus mCollider;
-	};
-	
-	/** @} */
+//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
+//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
+#pragma once
+
+#include "BsEditorPrerequisites.h"
+#include "BsHandleSlider.h"
+#include "BsTorus.h"
+
+namespace BansheeEngine
+{
+	/** @addtogroup Handles
+	 *  @{
+	 */
+
+	/**
+	 * Handle slider that returns a delta value as you drag the pointer along a disc. For intersection purposes the disc is
+	 * internally represented by a torus.
+	 */
+	class BS_ED_EXPORT HandleSliderDisc : public HandleSlider
+	{
+	public:
+		/**
+		 * Constructs a new disc slider.
+		 *
+		 * @param[in]	normal		Normal that determines the orientation of the disc.
+		 * @param[in]	radius		Radius of the disc.
+		 * @param[in]	fixedScale	If true the handle slider will always try to maintain the same visible area in the
+		 *							viewport regardless of distance from camera.
+		 * @param[in]	layer		Layer that allows filtering of which sliders are interacted with from a specific camera.
+		 */
+		HandleSliderDisc(const Vector3& normal, float radius, bool fixedScale, UINT64 layer);
+		~HandleSliderDisc();
+
+		/** @copydoc	HandleSlider::intersects */
+		bool intersects(const Ray& ray, float& t) const override;
+
+		/** @copydoc	HandleSlider::handleInput */
+		void handleInput(const CameraPtr& camera, const Vector2I& inputDelta) override;
+
+		/**
+		 * Enables or disables a cut-off plane that can allow the disc to be intersected with only in an 180 degree arc.
+		 *
+		 * @param[in]	angle	Angle at which to start the cut-off. Points on the dist at the specified angle and the next
+		 *						180 degrees won't be interactable.
+		 * @param[in]	enabled	True to enable the cutoff plane, false otherwise.
+		 */
+		void setCutoffPlane(Degree angle, bool enabled);
+
+		/**
+		 * Returns a delta value that is the result of dragging/sliding the pointer along the disc. This changes every frame
+		 * and will be zero unless the slider is active.
+		 */
+		Radian getDelta() const { return mDelta; }
+
+		/**
+		 * Gets the initial angle at which the drag/slide operation started. This is only valid when the slider is active.
+		 */
+		Radian getStartAngle() const { return mStartAngle; }
+
+	protected:
+
+		/** @copydoc HandleSlider::activate */
+		void activate(const CameraPtr& camera, const Vector2I& pointerPos) override;
+
+		/** @copydoc HandleSlider::reset */
+		void reset() override { mDelta = 0.0f; }
+
+		/**
+		 * Calculates the closest point on an arc from a ray.
+		 *
+		 * @param[in]	inputRay	Ray to use for determining the point.
+		 * @param[in]	center		Center of the arc.
+		 * @param[in]	up			Normal vector of the arc. Must be normalized.
+		 * @param[in]	radius		Radius of the arc.
+		 * @param[in]	startAngle	Starting angle of the arc.
+		 * @param[in]	angleAmount	Length of the arc.
+		 * @return					A point on the arc closest to the provided ray.
+		 */
+		Vector3 calculateClosestPointOnArc(const Ray& inputRay, const Vector3& center, const Vector3& up,
+			float radius, Degree startAngle, Degree angleAmount);
+
+		/**
+		 * Determines an angle of a point on a circle.
+		 *
+		 * @param[in]	up		Normal vector of the circle. Must be normalized.
+		 * @param[in]	point	Point to try to find the angle for. Caller must ensure the point is actually somewhere on
+		 *						the circle otherwise the result is undefined.
+		 * @return				Angle at which the provided point lies on the circle.
+		 */
+		Degree pointOnCircleToAngle(Vector3 up, Vector3 point);
+
+		static const float TORUS_RADIUS;
+
+		Vector3 mNormal;
+		float mRadius;
+		bool mHasCutoffPlane;
+		Plane mCutoffPlane;
+
+		Vector3 mDirection;
+		Vector3 mStartPosition;
+		Degree mStartAngle;
+		Degree mDelta;
+
+		Torus mCollider;
+	};
+	
+	/** @} */
 }
 }

+ 1 - 1
Source/BansheeEditor/Include/BsScenePicking.h

@@ -118,7 +118,7 @@ namespace BansheeEngine
 			const ScenePicking::RenderableSet& renderables, const Vector2I& position, const Vector2I& area);
 			const ScenePicking::RenderableSet& renderables, const Vector2I& position, const Vector2I& area);
 		
 		
 		/**
 		/**
-		 * Ends picking operation started by ::corePickingBegin. Render target is resolved and objects in the picked area
+		 * Ends picking operation started by corePickingBegin(). Render target is resolved and objects in the picked area
 		 * are returned.
 		 * are returned.
 		 *
 		 *
 		 * @param[in]	target			Render target we're rendering to.
 		 * @param[in]	target			Render target we're rendering to.

+ 101 - 101
Source/BansheeEditor/Include/BsUndoRedo.h

@@ -1,101 +1,101 @@
-//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
-//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
-#pragma once
-
-#include "BsEditorPrerequisites.h"
-#include "BsModule.h"
-
-namespace BansheeEngine
-{
-	/** @addtogroup UndoRedo
-	 *  @{
-	 */
-
-	/**	Provides functionality to undo or redo recently performed operations in the editor. */
-	class BS_ED_EXPORT UndoRedo : public Module<UndoRedo>
-	{
-		/**
-		 * Contains data about a single undo/redo group. Groups allow you to create context sensitive undo/redo operations.
-		 */
-		struct GroupData
-		{
-			String name;
-			UINT32 numEntries;
-		};
-
-	public:
-		UndoRedo();
-		~UndoRedo();
-
-		/**	Executes the last command on the undo stack, undoing its operations. */
-		void undo();
-
-		/** Executes the last command on the redo stack (last command we called undo on), re-applying its operation. */
-		void redo();
-
-		/**
-		 * Creates a new undo/redo group. All new commands will be registered to this group. You may remove the group and 
-		 * all of its commands by calling popGroup().
-		 *
-		 * For example you might require global editor-wide undo/redo operations, and also more specific ones like input in
-		 * an input box. When the user is done with the input box you no longer require its undo operations and you may use
-		 * groups to easily remove them.
-		 *
-		 * @param[in]	name	Unique name for the group.
-		 */
-		void pushGroup(const String& name);
-
-		/**
-		 * Removes all the command registered to the current undo/redo group.
-		 *
-		 * @param[in]	name	Unique name for the group.
-		 */
-		void popGroup(const String& name);
-
-		/**	Registers a new undo command. */
-		void registerCommand(EditorCommand* command);
-
-		/**	Returns the unique identifier for the command on top of the undo stack. */
-		UINT32 getTopCommandId() const;
-
-		/**
-		 * Removes a command from the undo/redo list, without executing it.
-		 *
-		 * @param[in]	id	Identifier of the command returned by ::getTopCommandIdx.
-		 */
-		void popCommand(UINT32 id);
-
-		/**	Resets the undo/redo stacks. */
-		void clear();
-
-	private:
-		/**	Removes the last undo command from the undo stack, and returns it. */
-		EditorCommand* removeLastFromUndoStack();
-
-		/**	Adds a new command to the undo stack. */
-		void addToUndoStack(EditorCommand* command);
-
-		/**	Removes all entries from the undo stack. */
-		void clearUndoStack();
-
-		/**	Removes all entries from the redo stack. */
-		void clearRedoStack();
-
-		static const UINT32 MAX_STACK_ELEMENTS;
-
-		EditorCommand** mUndoStack;
-		EditorCommand** mRedoStack;
-
-		UINT32 mUndoStackPtr;
-		UINT32 mUndoNumElements;
-
-		UINT32 mRedoStackPtr;
-		UINT32 mRedoNumElements;
-
-		UINT32 mNextCommandId;
-
-		Stack<GroupData> mGroups;
-	};
-
-	/** @} */
-}
+//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
+//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
+#pragma once
+
+#include "BsEditorPrerequisites.h"
+#include "BsModule.h"
+
+namespace BansheeEngine
+{
+	/** @addtogroup UndoRedo
+	 *  @{
+	 */
+
+	/**	Provides functionality to undo or redo recently performed operations in the editor. */
+	class BS_ED_EXPORT UndoRedo : public Module<UndoRedo>
+	{
+		/**
+		 * Contains data about a single undo/redo group. Groups allow you to create context sensitive undo/redo operations.
+		 */
+		struct GroupData
+		{
+			String name;
+			UINT32 numEntries;
+		};
+
+	public:
+		UndoRedo();
+		~UndoRedo();
+
+		/**	Executes the last command on the undo stack, undoing its operations. */
+		void undo();
+
+		/** Executes the last command on the redo stack (last command we called undo on), re-applying its operation. */
+		void redo();
+
+		/**
+		 * Creates a new undo/redo group. All new commands will be registered to this group. You may remove the group and 
+		 * all of its commands by calling popGroup().
+		 *
+		 * For example you might require global editor-wide undo/redo operations, and also more specific ones like input in
+		 * an input box. When the user is done with the input box you no longer require its undo operations and you may use
+		 * groups to easily remove them.
+		 *
+		 * @param[in]	name	Unique name for the group.
+		 */
+		void pushGroup(const String& name);
+
+		/**
+		 * Removes all the command registered to the current undo/redo group.
+		 *
+		 * @param[in]	name	Unique name for the group.
+		 */
+		void popGroup(const String& name);
+
+		/**	Registers a new undo command. */
+		void registerCommand(EditorCommand* command);
+
+		/**	Returns the unique identifier for the command on top of the undo stack. */
+		UINT32 getTopCommandId() const;
+
+		/**
+		 * Removes a command from the undo/redo list, without executing it.
+		 *
+		 * @param[in]	id	Identifier of the command returned by getTopCommandIdx().
+		 */
+		void popCommand(UINT32 id);
+
+		/**	Resets the undo/redo stacks. */
+		void clear();
+
+	private:
+		/**	Removes the last undo command from the undo stack, and returns it. */
+		EditorCommand* removeLastFromUndoStack();
+
+		/**	Adds a new command to the undo stack. */
+		void addToUndoStack(EditorCommand* command);
+
+		/**	Removes all entries from the undo stack. */
+		void clearUndoStack();
+
+		/**	Removes all entries from the redo stack. */
+		void clearRedoStack();
+
+		static const UINT32 MAX_STACK_ELEMENTS;
+
+		EditorCommand** mUndoStack;
+		EditorCommand** mRedoStack;
+
+		UINT32 mUndoStackPtr;
+		UINT32 mUndoNumElements;
+
+		UINT32 mRedoStackPtr;
+		UINT32 mRedoNumElements;
+
+		UINT32 mNextCommandId;
+
+		Stack<GroupData> mGroups;
+	};
+
+	/** @} */
+}

+ 1 - 1
Source/BansheeEditor/Include/Win32/BsVSCodeEditor.h

@@ -28,7 +28,7 @@ namespace BansheeEngine
 		VSCodeEditor(VisualStudioVersion version, const Path& execPath, const WString& CLSID);
 		VSCodeEditor(VisualStudioVersion version, const Path& execPath, const WString& CLSID);
 
 
 		/** @copydoc CodeEditor::openFile */
 		/** @copydoc CodeEditor::openFile */
-		void openFile(const Path& solutionPath, const Path& filePath, UINT32 lineNumber) const override;
+		void openFile(const Path& solutionPath, const Path& path, UINT32 lineNumber) const override;
 
 
 		/** @copydoc CodeEditor::syncSolution */
 		/** @copydoc CodeEditor::syncSolution */
 		void syncSolution(const CodeSolutionData& data, const Path& outputPath) const override;
 		void syncSolution(const CodeSolutionData& data, const Path& outputPath) const override;

+ 98 - 97
Source/BansheeEngine/Include/BsApplication.h

@@ -1,98 +1,99 @@
-//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
-//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
-#pragma once
-
-#include "BsPrerequisites.h"
-#include "BsCoreApplication.h"
-#include "BsEvent.h"
-
-namespace BansheeEngine
-{
-	/** @addtogroup Application-Engine
-	 *  @{
-	 */
-
-	/**	Types of available render systems. */
-	enum class RenderAPIPlugin
-	{
-		DX11,
-		DX9,
-		OpenGL
-	};
-
-	/**	Types of available renderers. */
-	enum class RendererPlugin
-	{
-		Default
-	};
-
-	/**	Primary entry point for Banshee engine. Handles startup and shutdown. */
-	class BS_EXPORT Application : public CoreApplication
-	{
-	public:
-		Application(RENDER_WINDOW_DESC primaryWindowDesc, RenderAPIPlugin renderAPI, RendererPlugin renderer, 
-			const Vector<String>& importers);
-		virtual ~Application();
-
-		/**
-		 * Starts the Banshee engine.
-		 * 
-		 * @param[in]	primaryWindowDesc	Description of the primary render window that will be created on startup.
-		 * @param[in]	renderAPI			Render API plugin to use.
-		 * @param[in]	renderer			Renderer plugin to use.
-		 */
-		static void startUp(RENDER_WINDOW_DESC& primaryWindowDesc, RenderAPIPlugin renderAPI, 
-			RendererPlugin renderer = RendererPlugin::Default, const Vector<String>& importers = Vector<String>());
-
-		/**	Returns the absolute path to the builtin managed engine assembly file. */
-		Path getEngineAssemblyPath() const;
-
-		/**	Returns the absolute path to the game managed assembly file. */
-		Path getGameAssemblyPath() const;
-
-		/**	Returns the absolute path to the folder where script assemblies are located in. */
-		virtual Path getScriptAssemblyFolder() const;
-
-	protected:
-		/** @copydoc Module::onStartUp */
-		virtual void onStartUp() override;
-
-		/** @copydoc Module::onShutDown */
-		virtual void onShutDown() override;
-
-		/** @copydoc CoreApplication::preUpdate. */
-		virtual void preUpdate() override;
-
-		/** @copydoc CoreApplication::postUpdate. */
-		virtual void postUpdate() override;
-
-		/** @copydoc CoreApplication::startUpRenderer. */
-		virtual void startUpRenderer() override;
-
-		/** @copydoc Application::getShaderIncludeHandler */
-		ShaderIncludeHandlerPtr getShaderIncludeHandler() const override;
-
-		/**	Loads the script system and all script libraries. */
-		virtual void loadScriptSystem();
-
-		/**	Unloads script libraries and shuts down the script system. */
-		virtual void unloadScriptSystem();
-
-		/**	Returns the absolute path to the folder where built-in assemblies are located in. */
-		virtual Path getBuiltinAssemblyFolder() const;
-
-		/**	Translates render system type into library name. */
-		static String getLibNameForRenderAPI(RenderAPIPlugin plugin);
-
-		/**	Translates renderer type into library name. */
-		static String getLibNameForRenderer(RendererPlugin plugin);
-
-		DynLib* mMonoPlugin;
-		DynLib* mSBansheeEnginePlugin;
-	};
-
-	/** Easy way to access Application. */
-	BS_EXPORT Application& gApplication();
-
-	/** @} */
+//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
+//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
+#pragma once
+
+#include "BsPrerequisites.h"
+#include "BsCoreApplication.h"
+#include "BsEvent.h"
+
+namespace BansheeEngine
+{
+	/** @addtogroup Application-Engine
+	 *  @{
+	 */
+
+	/**	Types of available render systems. */
+	enum class RenderAPIPlugin
+	{
+		DX11,
+		DX9,
+		OpenGL
+	};
+
+	/**	Types of available renderers. */
+	enum class RendererPlugin
+	{
+		Default
+	};
+
+	/**	Primary entry point for Banshee engine. Handles startup and shutdown. */
+	class BS_EXPORT Application : public CoreApplication
+	{
+	public:
+		Application(RENDER_WINDOW_DESC primaryWindowDesc, RenderAPIPlugin renderAPI, RendererPlugin renderer, 
+			const Vector<String>& importers);
+		virtual ~Application();
+
+		/**
+		 * Starts the Banshee engine.
+		 * 
+		 * @param[in]	primaryWindowDesc	Description of the primary render window that will be created on startup.
+		 * @param[in]	renderAPI			Render API plugin to use.
+		 * @param[in]	renderer			Renderer plugin to use.
+		 * @param[in]	importers			A list of importer plugins to load on startup.
+		 */
+		static void startUp(RENDER_WINDOW_DESC& primaryWindowDesc, RenderAPIPlugin renderAPI, 
+			RendererPlugin renderer = RendererPlugin::Default, const Vector<String>& importers = Vector<String>());
+
+		/**	Returns the absolute path to the builtin managed engine assembly file. */
+		Path getEngineAssemblyPath() const;
+
+		/**	Returns the absolute path to the game managed assembly file. */
+		Path getGameAssemblyPath() const;
+
+		/**	Returns the absolute path to the folder where script assemblies are located in. */
+		virtual Path getScriptAssemblyFolder() const;
+
+	protected:
+		/** @copydoc Module::onStartUp */
+		virtual void onStartUp() override;
+
+		/** @copydoc Module::onShutDown */
+		virtual void onShutDown() override;
+
+		/** @copydoc CoreApplication::preUpdate */
+		virtual void preUpdate() override;
+
+		/** @copydoc CoreApplication::postUpdate */
+		virtual void postUpdate() override;
+
+		/** @copydoc CoreApplication::startUpRenderer */
+		virtual void startUpRenderer() override;
+
+		/** @copydoc CoreApplication::getShaderIncludeHandler */
+		ShaderIncludeHandlerPtr getShaderIncludeHandler() const override;
+
+		/**	Loads the script system and all script libraries. */
+		virtual void loadScriptSystem();
+
+		/**	Unloads script libraries and shuts down the script system. */
+		virtual void unloadScriptSystem();
+
+		/**	Returns the absolute path to the folder where built-in assemblies are located in. */
+		virtual Path getBuiltinAssemblyFolder() const;
+
+		/**	Translates render system type into library name. */
+		static String getLibNameForRenderAPI(RenderAPIPlugin plugin);
+
+		/**	Translates renderer type into library name. */
+		static String getLibNameForRenderer(RendererPlugin plugin);
+
+		DynLib* mMonoPlugin;
+		DynLib* mSBansheeEnginePlugin;
+	};
+
+	/** Easy way to access Application. */
+	BS_EXPORT Application& gApplication();
+
+	/** @} */
 }
 }

+ 1 - 1
Source/BansheeEngine/Include/BsBuiltinResources.h

@@ -99,7 +99,7 @@ namespace BansheeEngine
 		/**
 		/**
 		 * Loads a shader at the specified path.
 		 * Loads a shader at the specified path.
 		 * 
 		 * 
-		 * @param[in]	Path relative to the default shader folder with no file extension.
+		 * @param[in]	path	Path relative to the default shader folder with no file extension.
 		 */
 		 */
 		HShader getShader(const Path& path);
 		HShader getShader(const Path& path);
 
 

+ 240 - 240
Source/BansheeEngine/Include/BsCCamera.h

@@ -1,241 +1,241 @@
-//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
-//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
-#pragma once
-
-#include "BsPrerequisites.h"
-#include "BsCamera.h"
-#include "BsComponent.h"
-
-namespace BansheeEngine 
-{
-	/** @addtogroup Components
-	 *  @{
-	 */
-
-	/**
-	 * @copydoc	Camera
-	 * 			
-	 * Wraps a Camera as a Component.
-	 */
-    class BS_EXPORT CCamera : public Component
-    {
-    public:
-		CCamera(const HSceneObject& parent, RenderTargetPtr target = nullptr,
-			float left = 0.0f, float top = 0.0f, float width = 1.0f, float height = 1.0f);
-
-        virtual ~CCamera();
-
-		/** @copydoc Camera::getViewport */
-		ViewportPtr getViewport() const { return mInternal->getViewport(); }
-
-		/** @copydoc Camera::setHorzFOV */
-		virtual void setHorzFOV(const Radian& fovy) { mInternal->setHorzFOV(fovy); }
-
-		/** @copydoc Camera::getHorzFOV */
-		virtual const Radian& getHorzFOV() const { return mInternal->getHorzFOV(); }
-
-		/** @copydoc Camera::setNearClipDistance */
-		virtual void setNearClipDistance(float nearDist) { mInternal->setNearClipDistance(nearDist); }
-
-		/** @copydoc Camera::getNearClipDistance */
-		virtual float getNearClipDistance() const { return mInternal->getNearClipDistance(); }
-
-		/** @copydoc Camera::setFarClipDistance */
-		virtual void setFarClipDistance(float farDist) { mInternal->setFarClipDistance(farDist); }
-
-		/** @copydoc Camera::getFarClipDistance */
-		virtual float getFarClipDistance() const { return mInternal->getFarClipDistance(); }
-
-		/** @copydoc Camera::setAspectRatio */
-		virtual void setAspectRatio(float ratio) { mInternal->setAspectRatio(ratio); }
-
-		/** @copydoc Camera::getAspectRatio */
-		virtual float getAspectRatio() const { return mInternal->getAspectRatio(); }
-
-		/** @copydoc Camera::setFrustumExtents */
-		virtual void setFrustumExtents(float left, float right, float top, float bottom)
-		{
-			mInternal->setFrustumExtents(left, right, top, bottom);
-		}
-
-		/** @copydoc Camera::resetFrustumExtents */
-		virtual void resetFrustumExtents() { mInternal->resetFrustumExtents(); }
-
-		/** @copydoc Camera::getFrustumExtents */
-		virtual void getFrustumExtents(float& outleft, float& outright, float& outtop, float& outbottom) const
-		{
-			mInternal->getFrustumExtents(outleft, outright, outtop, outbottom);
-		}
-
-		/** @copydoc Camera::getProjectionMatrixRS */
-		virtual const Matrix4& getProjectionMatrixRS() const { return mInternal->getProjectionMatrixRS(); }
-
-		/** @copydoc Camera::getProjectionMatrix */
-		virtual const Matrix4& getProjectionMatrix() const { return mInternal->getProjectionMatrix(); }
-
-		/** @copydoc Camera::getViewMatrix */
-		virtual const Matrix4& getViewMatrix() const { updateView(); return mInternal->getViewMatrix(); }
-
-		/** @copydoc Camera::setCustomViewMatrix */
-		virtual void setCustomViewMatrix(bool enable, const Matrix4& viewMatrix = Matrix4::IDENTITY)
-		{
-			mInternal->setCustomViewMatrix(enable, viewMatrix);
-		}
-
-		/** @copydoc Camera::isCustomViewMatrixEnabled */
-		virtual bool isCustomViewMatrixEnabled() const { return mInternal->isCustomViewMatrixEnabled(); }
-		
-		/** @copydoc Camera::setCustomProjectionMatrix */
-		virtual void setCustomProjectionMatrix(bool enable, const Matrix4& projectionMatrix = Matrix4::IDENTITY)
-		{
-			mInternal->setCustomProjectionMatrix(enable, projectionMatrix);
-		}
-
-		/** @copydoc Camera::isCustomProjectionMatrixEnabled */
-		virtual bool isCustomProjectionMatrixEnabled() const { return mInternal->isCustomProjectionMatrixEnabled(); }
-
-		/** @copydoc Camera::getFrustum */
-		virtual const ConvexVolume& getFrustum() const { return mInternal->getFrustum(); }
-
-		/** @copydoc Camera::getWorldFrustum */
-        virtual ConvexVolume getWorldFrustum() const;
-
-		/** @copydoc Camera::getBoundingBox */
-		const AABox& getBoundingBox() const { return mInternal->getBoundingBox(); }
-
-		/** @copydoc Camera::setProjectionType */
-		virtual void setProjectionType(ProjectionType pt) { mInternal->setProjectionType(pt); }
-
-		/** @copydoc Camera::getProjectionType */
-		virtual ProjectionType getProjectionType() const { return mInternal->getProjectionType(); }
-
-		/** @copydoc Camera::setOrthoWindow */
-		virtual void setOrthoWindow(float w, float h) { mInternal->setOrthoWindow(w, h); }
-
-		/** @copydoc Camera::setOrthoWindowHeight */
-		virtual void setOrthoWindowHeight(float h) { mInternal->setOrthoWindowHeight(h); }
-
-		/** @copydoc Camera::setOrthoWindowWidth */
-		virtual void setOrthoWindowWidth(float w) { mInternal->setOrthoWindowWidth(w); }
-
-		/** @copydoc Camera::getOrthoWindowHeight */
-		virtual float getOrthoWindowHeight() const { return mInternal->getOrthoWindowHeight(); }
-
-		/** @copydoc Camera::getOrthoWindowWidth */
-		virtual float getOrthoWindowWidth() const { return mInternal->getOrthoWindowWidth(); }
-
-		/** @copydoc Camera::getPriority */
-		INT32 getPriority() const { return mInternal->getPriority(); }
-
-		/** @copydoc Camera::setPriority */
-		void setPriority(INT32 priority) { mInternal->setPriority(priority); }
-
-		/** @copydoc Camera::getLayers */
-		UINT64 getLayers() const { return mInternal->getLayers(); }
-
-		/** @copydoc Camera::setLayers */
-		void setLayers(UINT64 layers) { mInternal->setLayers(layers); }
-
-		/** @copydoc Camera::getFlags */
-		CameraFlags getFlags() const { return mInternal->getFlags(); }
-
-		/** @copydoc Camera::setFlags */
-		void setFlags(const CameraFlags& flags) { mInternal->setFlags(flags); }
-
-		/** @copydoc Camera::worldToScreenPoint */
-		Vector2I worldToScreenPoint(const Vector3& worldPoint) const { updateView(); return mInternal->worldToScreenPoint(worldPoint); }
-
-		/** @copydoc Camera::worldToNdcPoint */
-		Vector2 worldToNdcPoint(const Vector3& worldPoint) const { updateView(); return mInternal->worldToNdcPoint(worldPoint); }
-
-		/** @copydoc Camera::worldToViewPoint */
-		Vector3 worldToViewPoint(const Vector3& worldPoint) const { updateView(); return mInternal->worldToViewPoint(worldPoint); }
-
-		/** @copydoc Camera::screenToWorldPoint */
-		Vector3 screenToWorldPoint(const Vector2I& screenPoint, float depth = 0.5f) const { updateView(); return mInternal->screenToWorldPoint(screenPoint, depth); }
-
-		/** @copydoc Camera::screenToViewPoint */
-		Vector3 screenToViewPoint(const Vector2I& screenPoint, float depth = 0.5f) const { return mInternal->screenToViewPoint(screenPoint, depth); }
-
-		/** @copydoc Camera::screenToNdcPoint */
-		Vector2 screenToNdcPoint(const Vector2I& screenPoint) const { return mInternal->screenToNdcPoint(screenPoint); }
-
-		/** @copydoc Camera::viewToWorldPoint */
-		Vector3 viewToWorldPoint(const Vector3& viewPoint) const { updateView(); return mInternal->viewToWorldPoint(viewPoint); }
-
-		/** @copydoc Camera::viewToScreenPoint */
-		Vector2I viewToScreenPoint(const Vector3& viewPoint) const { return mInternal->viewToScreenPoint(viewPoint); }
-
-		/** @copydoc Camera::viewToNdcPoint */
-		Vector2 viewToNdcPoint(const Vector3& viewPoint) const { return mInternal->viewToNdcPoint(viewPoint); }
-
-		/** @copydoc Camera::NdcToWorldPoint */
-		Vector3 ndcToWorldPoint(const Vector2& ndcPoint, float depth = 0.5f) const { updateView(); return mInternal->ndcToWorldPoint(ndcPoint, depth); }
-
-		/** @copydoc Camera::NdcToViewPoint */
-		Vector3 ndcToViewPoint(const Vector2& ndcPoint, float depth = 0.5f) const { return mInternal->ndcToViewPoint(ndcPoint, depth); }
-
-		/** @copydoc Camera::NdcToScreenPoint */
-		Vector2I ndcToScreenPoint(const Vector2& ndcPoint) const { return mInternal->ndcToScreenPoint(ndcPoint); }
-
-		/** @copydoc Camera::screenPointToRay */
-		Ray screenPointToRay(const Vector2I& screenPoint) const { updateView(); return mInternal->screenPointToRay(screenPoint); }
-
-		/** @copydoc Camera::projectPoint */
-		Vector3 projectPoint(const Vector3& point) const { return mInternal->projectPoint(point); }
-
-		/** @copydoc Camera::unprojectPoint */
-		Vector3 unprojectPoint(const Vector3& point) const { return mInternal->unprojectPoint(point); }
-
-		/** @copydoc Camera::isMain */	
-		bool isMain() const { return mInternal->isMain(); }
-
-		/** @copydoc Camera::setMain */	
-		void setMain(bool main);
-
-		/** Returns the internal camera that is used for majority of operations by this component. */
-		CameraPtr _getCamera() const { updateView(); return mInternal; }
-
-    protected:
-		/** Checks if the world transform of the camera changed, and if needed updates the view matrix. */
-		void updateView() const;
-
-		mutable CameraPtr mInternal;
-
-		// Only valid during construction
-		RenderTargetPtr mTarget;
-		float mLeft;
-		float mTop;
-		float mWidth;
-		float mHeight;
-
-		/************************************************************************/
-		/* 						COMPONENT OVERRIDES                      		*/
-		/************************************************************************/
-	protected:
-		friend class SceneObject;
-
-		/** @copydoc Component::onInitialized */
-		void onInitialized() override;
-
-		/** @copydoc Component::onDestroyed */
-		void onDestroyed() override;
-
-	public:
-		/** @copydoc Component::update */
-		virtual void update() override;
-
-		/************************************************************************/
-		/* 								RTTI		                     		*/
-		/************************************************************************/
-	public:
-		friend class CCameraRTTI;
-		static RTTITypeBase* getRTTIStatic();
-		virtual RTTITypeBase* getRTTI() const override;
-
-	protected:
-		CCamera() {} // Serialization only
-     };
-
-	 /** @} */
+//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
+//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
+#pragma once
+
+#include "BsPrerequisites.h"
+#include "BsCamera.h"
+#include "BsComponent.h"
+
+namespace BansheeEngine 
+{
+	/** @addtogroup Components
+	 *  @{
+	 */
+
+	/**
+	 * @copydoc	Camera
+	 * 			
+	 * Wraps a Camera as a Component.
+	 */
+    class BS_EXPORT CCamera : public Component
+    {
+    public:
+		CCamera(const HSceneObject& parent, RenderTargetPtr target = nullptr,
+			float left = 0.0f, float top = 0.0f, float width = 1.0f, float height = 1.0f);
+
+        virtual ~CCamera();
+
+		/** @copydoc Camera::getViewport */
+		ViewportPtr getViewport() const { return mInternal->getViewport(); }
+
+		/** @copydoc Camera::setHorzFOV */
+		virtual void setHorzFOV(const Radian& fovy) { mInternal->setHorzFOV(fovy); }
+
+		/** @copydoc Camera::getHorzFOV */
+		virtual const Radian& getHorzFOV() const { return mInternal->getHorzFOV(); }
+
+		/** @copydoc Camera::setNearClipDistance */
+		virtual void setNearClipDistance(float nearDist) { mInternal->setNearClipDistance(nearDist); }
+
+		/** @copydoc Camera::getNearClipDistance */
+		virtual float getNearClipDistance() const { return mInternal->getNearClipDistance(); }
+
+		/** @copydoc Camera::setFarClipDistance */
+		virtual void setFarClipDistance(float farDist) { mInternal->setFarClipDistance(farDist); }
+
+		/** @copydoc Camera::getFarClipDistance */
+		virtual float getFarClipDistance() const { return mInternal->getFarClipDistance(); }
+
+		/** @copydoc Camera::setAspectRatio */
+		virtual void setAspectRatio(float ratio) { mInternal->setAspectRatio(ratio); }
+
+		/** @copydoc Camera::getAspectRatio */
+		virtual float getAspectRatio() const { return mInternal->getAspectRatio(); }
+
+		/** @copydoc Camera::setFrustumExtents */
+		virtual void setFrustumExtents(float left, float right, float top, float bottom)
+		{
+			mInternal->setFrustumExtents(left, right, top, bottom);
+		}
+
+		/** @copydoc Camera::resetFrustumExtents */
+		virtual void resetFrustumExtents() { mInternal->resetFrustumExtents(); }
+
+		/** @copydoc Camera::getFrustumExtents */
+		virtual void getFrustumExtents(float& outleft, float& outright, float& outtop, float& outbottom) const
+		{
+			mInternal->getFrustumExtents(outleft, outright, outtop, outbottom);
+		}
+
+		/** @copydoc Camera::getProjectionMatrixRS */
+		virtual const Matrix4& getProjectionMatrixRS() const { return mInternal->getProjectionMatrixRS(); }
+
+		/** @copydoc Camera::getProjectionMatrix */
+		virtual const Matrix4& getProjectionMatrix() const { return mInternal->getProjectionMatrix(); }
+
+		/** @copydoc Camera::getViewMatrix */
+		virtual const Matrix4& getViewMatrix() const { updateView(); return mInternal->getViewMatrix(); }
+
+		/** @copydoc Camera::setCustomViewMatrix */
+		virtual void setCustomViewMatrix(bool enable, const Matrix4& viewMatrix = Matrix4::IDENTITY)
+		{
+			mInternal->setCustomViewMatrix(enable, viewMatrix);
+		}
+
+		/** @copydoc Camera::isCustomViewMatrixEnabled */
+		virtual bool isCustomViewMatrixEnabled() const { return mInternal->isCustomViewMatrixEnabled(); }
+		
+		/** @copydoc Camera::setCustomProjectionMatrix */
+		virtual void setCustomProjectionMatrix(bool enable, const Matrix4& projectionMatrix = Matrix4::IDENTITY)
+		{
+			mInternal->setCustomProjectionMatrix(enable, projectionMatrix);
+		}
+
+		/** @copydoc Camera::isCustomProjectionMatrixEnabled */
+		virtual bool isCustomProjectionMatrixEnabled() const { return mInternal->isCustomProjectionMatrixEnabled(); }
+
+		/** @copydoc Camera::getFrustum */
+		virtual const ConvexVolume& getFrustum() const { return mInternal->getFrustum(); }
+
+		/** @copydoc Camera::getWorldFrustum */
+        virtual ConvexVolume getWorldFrustum() const;
+
+		/** @copydoc Camera::getBoundingBox */
+		const AABox& getBoundingBox() const { return mInternal->getBoundingBox(); }
+
+		/** @copydoc Camera::setProjectionType */
+		virtual void setProjectionType(ProjectionType pt) { mInternal->setProjectionType(pt); }
+
+		/** @copydoc Camera::getProjectionType */
+		virtual ProjectionType getProjectionType() const { return mInternal->getProjectionType(); }
+
+		/** @copydoc Camera::setOrthoWindow */
+		virtual void setOrthoWindow(float w, float h) { mInternal->setOrthoWindow(w, h); }
+
+		/** @copydoc Camera::setOrthoWindowHeight */
+		virtual void setOrthoWindowHeight(float h) { mInternal->setOrthoWindowHeight(h); }
+
+		/** @copydoc Camera::setOrthoWindowWidth */
+		virtual void setOrthoWindowWidth(float w) { mInternal->setOrthoWindowWidth(w); }
+
+		/** @copydoc Camera::getOrthoWindowHeight */
+		virtual float getOrthoWindowHeight() const { return mInternal->getOrthoWindowHeight(); }
+
+		/** @copydoc Camera::getOrthoWindowWidth */
+		virtual float getOrthoWindowWidth() const { return mInternal->getOrthoWindowWidth(); }
+
+		/** @copydoc Camera::getPriority */
+		INT32 getPriority() const { return mInternal->getPriority(); }
+
+		/** @copydoc Camera::setPriority */
+		void setPriority(INT32 priority) { mInternal->setPriority(priority); }
+
+		/** @copydoc Camera::getLayers */
+		UINT64 getLayers() const { return mInternal->getLayers(); }
+
+		/** @copydoc Camera::setLayers */
+		void setLayers(UINT64 layers) { mInternal->setLayers(layers); }
+
+		/** @copydoc Camera::getFlags */
+		CameraFlags getFlags() const { return mInternal->getFlags(); }
+
+		/** @copydoc Camera::setFlags */
+		void setFlags(const CameraFlags& flags) { mInternal->setFlags(flags); }
+
+		/** @copydoc Camera::worldToScreenPoint */
+		Vector2I worldToScreenPoint(const Vector3& worldPoint) const { updateView(); return mInternal->worldToScreenPoint(worldPoint); }
+
+		/** @copydoc Camera::worldToNdcPoint */
+		Vector2 worldToNdcPoint(const Vector3& worldPoint) const { updateView(); return mInternal->worldToNdcPoint(worldPoint); }
+
+		/** @copydoc Camera::worldToViewPoint */
+		Vector3 worldToViewPoint(const Vector3& worldPoint) const { updateView(); return mInternal->worldToViewPoint(worldPoint); }
+
+		/** @copydoc Camera::screenToWorldPoint */
+		Vector3 screenToWorldPoint(const Vector2I& screenPoint, float depth = 0.5f) const { updateView(); return mInternal->screenToWorldPoint(screenPoint, depth); }
+
+		/** @copydoc Camera::screenToViewPoint */
+		Vector3 screenToViewPoint(const Vector2I& screenPoint, float depth = 0.5f) const { return mInternal->screenToViewPoint(screenPoint, depth); }
+
+		/** @copydoc Camera::screenToNdcPoint */
+		Vector2 screenToNdcPoint(const Vector2I& screenPoint) const { return mInternal->screenToNdcPoint(screenPoint); }
+
+		/** @copydoc Camera::viewToWorldPoint */
+		Vector3 viewToWorldPoint(const Vector3& viewPoint) const { updateView(); return mInternal->viewToWorldPoint(viewPoint); }
+
+		/** @copydoc Camera::viewToScreenPoint */
+		Vector2I viewToScreenPoint(const Vector3& viewPoint) const { return mInternal->viewToScreenPoint(viewPoint); }
+
+		/** @copydoc Camera::viewToNdcPoint */
+		Vector2 viewToNdcPoint(const Vector3& viewPoint) const { return mInternal->viewToNdcPoint(viewPoint); }
+
+		/** @copydoc Camera::ndcToWorldPoint */
+		Vector3 ndcToWorldPoint(const Vector2& ndcPoint, float depth = 0.5f) const { updateView(); return mInternal->ndcToWorldPoint(ndcPoint, depth); }
+
+		/** @copydoc Camera::ndcToViewPoint */
+		Vector3 ndcToViewPoint(const Vector2& ndcPoint, float depth = 0.5f) const { return mInternal->ndcToViewPoint(ndcPoint, depth); }
+
+		/** @copydoc Camera::ndcToScreenPoint */
+		Vector2I ndcToScreenPoint(const Vector2& ndcPoint) const { return mInternal->ndcToScreenPoint(ndcPoint); }
+
+		/** @copydoc Camera::screenPointToRay */
+		Ray screenPointToRay(const Vector2I& screenPoint) const { updateView(); return mInternal->screenPointToRay(screenPoint); }
+
+		/** @copydoc Camera::projectPoint */
+		Vector3 projectPoint(const Vector3& point) const { return mInternal->projectPoint(point); }
+
+		/** @copydoc Camera::unprojectPoint */
+		Vector3 unprojectPoint(const Vector3& point) const { return mInternal->unprojectPoint(point); }
+
+		/** @copydoc Camera::isMain */	
+		bool isMain() const { return mInternal->isMain(); }
+
+		/** @copydoc Camera::setMain */	
+		void setMain(bool main);
+
+		/** Returns the internal camera that is used for majority of operations by this component. */
+		CameraPtr _getCamera() const { updateView(); return mInternal; }
+
+    protected:
+		/** Checks if the world transform of the camera changed, and if needed updates the view matrix. */
+		void updateView() const;
+
+		mutable CameraPtr mInternal;
+
+		// Only valid during construction
+		RenderTargetPtr mTarget;
+		float mLeft;
+		float mTop;
+		float mWidth;
+		float mHeight;
+
+		/************************************************************************/
+		/* 						COMPONENT OVERRIDES                      		*/
+		/************************************************************************/
+	protected:
+		friend class SceneObject;
+
+		/** @copydoc Component::onInitialized */
+		void onInitialized() override;
+
+		/** @copydoc Component::onDestroyed */
+		void onDestroyed() override;
+
+	public:
+		/** @copydoc Component::update */
+		virtual void update() override;
+
+		/************************************************************************/
+		/* 								RTTI		                     		*/
+		/************************************************************************/
+	public:
+		friend class CCameraRTTI;
+		static RTTITypeBase* getRTTIStatic();
+		virtual RTTITypeBase* getRTTI() const override;
+
+	protected:
+		CCamera() {} // Serialization only
+     };
+
+	 /** @} */
 }
 }

+ 128 - 128
Source/BansheeEngine/Include/BsCLight.h

@@ -1,129 +1,129 @@
-//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
-//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
-#pragma once
-
-#include "BsPrerequisites.h"
-#include "BsLight.h"
-#include "BsComponent.h"
-
-namespace BansheeEngine 
-{
-	/** @addtogroup Components
-	 *  @{
-	 */
-
-	/**
-	 * @copydoc	Light
-	 *
-	 * Wraps Light as a Component.
-	 */
-    class BS_EXPORT CLight : public Component
-    {
-    public:
-		CLight(const HSceneObject& parent, LightType type = LightType::Point, Color color = Color::White, 
-			float intensity = 100.0f, float range = 1.0f, bool castsShadows = false, Degree spotAngle = Degree(45), 
-			Degree spotFalloffAngle = Degree(40));
-
-		virtual ~CLight();
-
-	    /** @copydoc Light::getPosition */
-		Vector3 getPosition() const { return mInternal->getPosition(); }
-
-	    /** @copydoc Light::setPosition */
-		void setPosition(const Vector3& position) { mInternal->setPosition(position); }
-
-	    /** @copydoc Light::getRotation */
-		Quaternion getRotation() const { return mInternal->getRotation(); }
-
-	    /** @copydoc Light::setRotation */
-		void setRotation(const Quaternion& rotation) { mInternal->setRotation(rotation); }
-
-	    /** @copydoc Light::getType */
-		LightType getType() const { return mInternal->getType(); }
-
-	    /** @copydoc Light::setType */
-		void setType(LightType type) { mInternal->setType(type); }
-
-	    /** @copydoc Light::getCastsShadow */
-		bool getCastsShadow() const { return mInternal->getCastsShadow(); }
-
-	    /** @copydoc Light::setCastsShadow  */
-		void setCastsShadow(bool castsShadow) { mInternal->setCastsShadow(castsShadow); }
-
-	    /** @copydoc Light::getColor */
-		Color getColor() const { return mInternal->getColor(); }
-
-	    /** @copydoc Light::setColor */
-		void setColor(const Color& color) { mInternal->setColor(color); }
-
-	    /** @copydoc Light::getRange */
-		float getRange() const { return mInternal->getRange(); }
-
-	    /** @copydoc Light::setRange */
-		void setRange(float range) { mInternal->setRange(range);; }
-
-	    /** @copydoc LightInternal::getIntensity */
-		float getIntensity() const { return mInternal->getIntensity(); }
-
-	    /** @copydoc Light::setIntensity */
-		void setIntensity(float intensity) { mInternal->setIntensity(intensity); }
-
-	    /** @copydoc Light::getSpotAngle */
-		Degree getSpotAngle() const { return mInternal->getSpotAngle(); }
-
-	    /** @copydoc Light::setSpotAngle */
-		void setSpotAngle(const Degree& spotAngle) { mInternal->setSpotAngle(spotAngle); }
-
-		/** @copydoc Light::getPhysicallyBasedAttenuation  */
-		bool getPhysicallyBasedAttenuation() const { return mInternal->getPhysicallyBasedAttenuation(); }
-
-		/**  @copydoc Light::setPhysicallyBasedAttenuation  */
-		void setPhysicallyBasedAttenuation(bool enabled) { mInternal->setPhysicallyBasedAttenuation(enabled); }
-
-	    /** @copydoc Light::getBounds  */
-		Sphere getBounds() const;
-
-	    /**	Returns the light that this component wraps. */
-		SPtr<Light> _getLight() const { return mInternal; }
-
-    protected:
-		mutable SPtr<Light> mInternal;
-
-		// Only valid during construction
-		LightType mType;
-		Color mColor;
-		float mIntensity; 
-		float mRange; 
-		bool mCastsShadows; 
-		Degree mSpotAngle; 
-		Degree mSpotFalloffAngle;
-
-		/************************************************************************/
-		/* 						COMPONENT OVERRIDES                      		*/
-		/************************************************************************/
-	protected:
-		friend class SceneObject;
-
-	    /** @copydoc Component::onInitialized */
-		void onInitialized() override;
-
-	    /** @copydoc Component::onDestroyed */
-		void onDestroyed() override;
-
-		/** @copydoc Component::update */
-		void update() override { }
-
-		/************************************************************************/
-		/* 								RTTI		                     		*/
-		/************************************************************************/
-	public:
-		friend class CLightRTTI;
-		static RTTITypeBase* getRTTIStatic();
-		RTTITypeBase* getRTTI() const override;
-
-	protected:
-		CLight() {} // Serialization only
-     };
-
-	 /** @} */
+//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
+//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
+#pragma once
+
+#include "BsPrerequisites.h"
+#include "BsLight.h"
+#include "BsComponent.h"
+
+namespace BansheeEngine 
+{
+	/** @addtogroup Components
+	 *  @{
+	 */
+
+	/**
+	 * @copydoc	Light
+	 *
+	 * Wraps Light as a Component.
+	 */
+    class BS_EXPORT CLight : public Component
+    {
+    public:
+		CLight(const HSceneObject& parent, LightType type = LightType::Point, Color color = Color::White, 
+			float intensity = 100.0f, float range = 1.0f, bool castsShadows = false, Degree spotAngle = Degree(45), 
+			Degree spotFalloffAngle = Degree(40));
+
+		virtual ~CLight();
+
+	    /** @copydoc Light::getPosition */
+		Vector3 getPosition() const { return mInternal->getPosition(); }
+
+	    /** @copydoc Light::setPosition */
+		void setPosition(const Vector3& position) { mInternal->setPosition(position); }
+
+	    /** @copydoc Light::getRotation */
+		Quaternion getRotation() const { return mInternal->getRotation(); }
+
+	    /** @copydoc Light::setRotation */
+		void setRotation(const Quaternion& rotation) { mInternal->setRotation(rotation); }
+
+	    /** @copydoc Light::getType */
+		LightType getType() const { return mInternal->getType(); }
+
+	    /** @copydoc Light::setType */
+		void setType(LightType type) { mInternal->setType(type); }
+
+	    /** @copydoc Light::getCastsShadow */
+		bool getCastsShadow() const { return mInternal->getCastsShadow(); }
+
+	    /** @copydoc Light::setCastsShadow  */
+		void setCastsShadow(bool castsShadow) { mInternal->setCastsShadow(castsShadow); }
+
+	    /** @copydoc Light::getColor */
+		Color getColor() const { return mInternal->getColor(); }
+
+	    /** @copydoc Light::setColor */
+		void setColor(const Color& color) { mInternal->setColor(color); }
+
+	    /** @copydoc Light::getRange */
+		float getRange() const { return mInternal->getRange(); }
+
+	    /** @copydoc Light::setRange */
+		void setRange(float range) { mInternal->setRange(range);; }
+
+	    /** @copydoc Light::getIntensity */
+		float getIntensity() const { return mInternal->getIntensity(); }
+
+	    /** @copydoc Light::setIntensity */
+		void setIntensity(float intensity) { mInternal->setIntensity(intensity); }
+
+	    /** @copydoc Light::getSpotAngle */
+		Degree getSpotAngle() const { return mInternal->getSpotAngle(); }
+
+	    /** @copydoc Light::setSpotAngle */
+		void setSpotAngle(const Degree& spotAngle) { mInternal->setSpotAngle(spotAngle); }
+
+		/** @copydoc Light::getPhysicallyBasedAttenuation  */
+		bool getPhysicallyBasedAttenuation() const { return mInternal->getPhysicallyBasedAttenuation(); }
+
+		/**  @copydoc Light::setPhysicallyBasedAttenuation  */
+		void setPhysicallyBasedAttenuation(bool enabled) { mInternal->setPhysicallyBasedAttenuation(enabled); }
+
+	    /** @copydoc Light::getBounds  */
+		Sphere getBounds() const;
+
+	    /**	Returns the light that this component wraps. */
+		SPtr<Light> _getLight() const { return mInternal; }
+
+    protected:
+		mutable SPtr<Light> mInternal;
+
+		// Only valid during construction
+		LightType mType;
+		Color mColor;
+		float mIntensity; 
+		float mRange; 
+		bool mCastsShadows; 
+		Degree mSpotAngle; 
+		Degree mSpotFalloffAngle;
+
+		/************************************************************************/
+		/* 						COMPONENT OVERRIDES                      		*/
+		/************************************************************************/
+	protected:
+		friend class SceneObject;
+
+	    /** @copydoc Component::onInitialized */
+		void onInitialized() override;
+
+	    /** @copydoc Component::onDestroyed */
+		void onDestroyed() override;
+
+		/** @copydoc Component::update */
+		void update() override { }
+
+		/************************************************************************/
+		/* 								RTTI		                     		*/
+		/************************************************************************/
+	public:
+		friend class CLightRTTI;
+		static RTTITypeBase* getRTTIStatic();
+		RTTITypeBase* getRTTI() const override;
+
+	protected:
+		CLight() {} // Serialization only
+     };
+
+	 /** @} */
 }
 }

+ 5 - 2
Source/BansheeEngine/Include/BsCamera.h

@@ -416,7 +416,10 @@ namespace BansheeEngine
 		/**	Returns a rectangle that defines the viewport position and size, in pixels. */
 		/**	Returns a rectangle that defines the viewport position and size, in pixels. */
 		virtual Rect2I getViewportRect() const = 0;
 		virtual Rect2I getViewportRect() const = 0;
 
 
-		/** @copydoc CoreObject::markCoreDirty */
+		/** 
+		 * Marks the simulation thread object as dirty and notifies the system its data should be synced with its core 
+		 * thread counterpart. 
+		 */
 		virtual void _markCoreDirty() { }
 		virtual void _markCoreDirty() { }
 
 
     protected:
     protected:
@@ -537,7 +540,7 @@ namespace BansheeEngine
 		/** @copydoc CoreObject::createCore */
 		/** @copydoc CoreObject::createCore */
 		SPtr<CoreObjectCore> createCore() const override;
 		SPtr<CoreObjectCore> createCore() const override;
 
 
-		/** @copydoc CoreObject::markCoreDirty */
+		/** @copydoc CameraBase::_markCoreDirty */
 		void _markCoreDirty() override;
 		void _markCoreDirty() override;
 
 
 		/** @copydoc CoreObject::syncToCore */
 		/** @copydoc CoreObject::syncToCore */

+ 1 - 1
Source/BansheeEngine/Include/BsGUIButton.h

@@ -66,7 +66,7 @@ namespace BansheeEngine
 		 *  @{
 		 *  @{
 		 */
 		 */
 
 
-		/** @copydoc GUIElement::getElementType */
+		/** @copydoc GUIElement::_getElementType */
 		virtual ElementType _getElementType() const override { return ElementType::Button; }
 		virtual ElementType _getElementType() const override { return ElementType::Button; }
 
 
 		/** @} */
 		/** @} */

+ 1 - 1
Source/BansheeEngine/Include/BsGUIButtonBase.h

@@ -81,7 +81,7 @@ namespace BansheeEngine
 		/** @copydoc GUIElement::updateRenderElementsInternal */
 		/** @copydoc GUIElement::updateRenderElementsInternal */
 		virtual void updateRenderElementsInternal() override;
 		virtual void updateRenderElementsInternal() override;
 
 
-		/** @copydoc GUIElement::mouseEvent */
+		/** @copydoc GUIElement::_mouseEvent */
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 
 
 		/** @copydoc GUIElement::_getRenderElementDepth */
 		/** @copydoc GUIElement::_getRenderElementDepth */

+ 5 - 5
Source/BansheeEngine/Include/BsGUIDropDownContent.h

@@ -33,7 +33,7 @@ namespace BansheeEngine
 		 *
 		 *
 		 * @param[in]	parent			Parent sub-menu that owns the drop down contents.
 		 * @param[in]	parent			Parent sub-menu that owns the drop down contents.
 		 * @param[in]	dropDownData	Data that will be used for initializing the child entries.
 		 * @param[in]	dropDownData	Data that will be used for initializing the child entries.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default button style is used.
 		 *								GUIWidget the element is used on. If not specified default button style is used.
 		 */
 		 */
 		static GUIDropDownContent* create(GUIDropDownMenu::DropDownSubMenu* parent, const GUIDropDownData& dropDownData,
 		static GUIDropDownContent* create(GUIDropDownMenu::DropDownSubMenu* parent, const GUIDropDownData& dropDownData,
@@ -46,7 +46,7 @@ namespace BansheeEngine
 		 * @param[in]	dropDownData	Data that will be used for initializing the child entries.
 		 * @param[in]	dropDownData	Data that will be used for initializing the child entries.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 *								This will override any similar options set by style.
 		 *								This will override any similar options set by style.
-		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 * @param[in]	style			Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default button style is used.
 		 *								GUIWidget the element is used on. If not specified default button style is used.
 		 */
 		 */
 		static GUIDropDownContent* create(GUIDropDownMenu::DropDownSubMenu* parent, const GUIDropDownData& dropDownData, 
 		static GUIDropDownContent* create(GUIDropDownMenu::DropDownSubMenu* parent, const GUIDropDownData& dropDownData, 
@@ -97,21 +97,21 @@ namespace BansheeEngine
 		/**
 		/**
 		 * Marks the element with the specified index as selected.
 		 * Marks the element with the specified index as selected.
 		 * 		
 		 * 		
-		 * @param[in]	Index of the displayed element (indexing visible elements).
+		 * @param[in]	idx		Index of the displayed element (indexing visible elements).
 		 */
 		 */
 		void setSelected(UINT32 idx);
 		void setSelected(UINT32 idx);
 
 
 		/**
 		/**
 		 * Selects the next available non-separator entry.
 		 * Selects the next available non-separator entry.
 		 * 			
 		 * 			
-		 * @param[in]	Index of the menu element.
+		 * @param[in]	startIdx	Index of the menu element.
 		 */
 		 */
 		void selectNext(UINT32 startIdx);
 		void selectNext(UINT32 startIdx);
 
 
 		/**
 		/**
 		 * Selects the previous available non-separator entry.
 		 * Selects the previous available non-separator entry.
 		 * 			
 		 * 			
-		 * @param[in]	Index of the menu element.
+		 * @param[in]	startIdx	Index of the menu element.
 		 */
 		 */
 		void selectPrevious(UINT32 startIdx);
 		void selectPrevious(UINT32 startIdx);
 
 

+ 2 - 0
Source/BansheeEngine/Include/BsGUIDropDownHitBox.h

@@ -37,6 +37,8 @@ namespace BansheeEngine
 		 *									passed to other GUI elements.
 		 *									passed to other GUI elements.
 		 * @param[in]	captureMousePresses	If true mouse clicks will be captured by this control and wont be passed to 
 		 * @param[in]	captureMousePresses	If true mouse clicks will be captured by this control and wont be passed to 
 		 *									other GUI elements.
 		 *									other GUI elements.
+		 * @param[in]	options				Options that allow you to control how is the element positioned and sized.
+		 *									This will override any similar options set by style.
 		 */
 		 */
 		static GUIDropDownHitBox* create(bool captureMouseOver, bool captureMousePresses, const GUIOptions& options);
 		static GUIDropDownHitBox* create(bool captureMouseOver, bool captureMousePresses, const GUIOptions& options);
 
 

+ 2 - 2
Source/BansheeEngine/Include/BsGUIElementBase.h

@@ -237,7 +237,7 @@ namespace BansheeEngine
 		void _setVisible(bool visible);
 		void _setVisible(bool visible);
 
 
 		/**
 		/**
-		 * Internal version of ::setActive that doesn't modify local state, instead it is only meant to be called
+		 * Internal version of setActive() that doesn't modify local state, instead it is only meant to be called
 		 * on child elements of the element whose state was modified.
 		 * on child elements of the element whose state was modified.
 		 *  
 		 *  
 		 * @copydoc setActive
 		 * @copydoc setActive
@@ -245,7 +245,7 @@ namespace BansheeEngine
 		void _setActive(bool active);
 		void _setActive(bool active);
 
 
 		/**
 		/**
-		 * Internal version of ::setDisabled that doesn't modify local state, instead it is only meant to be called
+		 * Internal version of setDisabled() that doesn't modify local state, instead it is only meant to be called
 		 * on child elements of the element whose state was modified.
 		 * on child elements of the element whose state was modified.
 		 *  
 		 *  
 		 * @copydoc setDisabled
 		 * @copydoc setDisabled

+ 1 - 1
Source/BansheeEngine/Include/BsGUIElementContainer.h

@@ -34,7 +34,7 @@ namespace BansheeEngine
 		/** @copydoc GUIElement::_getOptimalSize */
 		/** @copydoc GUIElement::_getOptimalSize */
 		virtual Vector2I _getOptimalSize() const override;
 		virtual Vector2I _getOptimalSize() const override;
 
 
-		/** @copydoc GUIElementBase::_commandEvent */
+		/** @copydoc GUIElement::_commandEvent */
 		bool _commandEvent(const GUICommandEvent& event) override;
 		bool _commandEvent(const GUICommandEvent& event) override;
 	};
 	};
 
 

+ 7 - 7
Source/BansheeEngine/Include/BsGUIInputBox.h

@@ -89,7 +89,7 @@ namespace BansheeEngine
 		 *  @{
 		 *  @{
 		 */
 		 */
 
 
-		/** @copydoc GUIElement::getElementType */
+		/** @copydoc GUIElement::_getElementType */
 		virtual ElementType _getElementType() const override { return ElementType::InputBox; }
 		virtual ElementType _getElementType() const override { return ElementType::InputBox; }
 
 
 		/** @copydoc GUIElement::_getOptimalSize */
 		/** @copydoc GUIElement::_getOptimalSize */
@@ -116,19 +116,19 @@ namespace BansheeEngine
 		/** @copydoc GUIElement::updateRenderElementsInternal() */
 		/** @copydoc GUIElement::updateRenderElementsInternal() */
 		virtual void updateRenderElementsInternal() override;
 		virtual void updateRenderElementsInternal() override;
 
 
-		/** @copydoc GUIElement::updateBounds() */
+		/** @copydoc GUIElement::updateClippedBounds() */
 		virtual void updateClippedBounds() override;
 		virtual void updateClippedBounds() override;
 
 
-		/** @copydoc GUIElement::mouseEvent */
+		/** @copydoc GUIElement::_mouseEvent */
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 
 
-		/** @copydoc GUIElement::textInputEvent */
+		/** @copydoc GUIElement::_textInputEvent */
 		virtual bool _textInputEvent(const GUITextInputEvent& ev) override;
 		virtual bool _textInputEvent(const GUITextInputEvent& ev) override;
 
 
-		/** @copydoc GUIElement::commandEvent */
+		/** @copydoc GUIElement::_commandEvent */
 		virtual bool _commandEvent(const GUICommandEvent& ev) override;
 		virtual bool _commandEvent(const GUICommandEvent& ev) override;
 
 
-		/** @copydoc GUIElement::virtualButtonEvent */
+		/** @copydoc GUIElement::_virtualButtonEvent */
 		virtual bool _virtualButtonEvent(const GUIVirtualButtonEvent& ev) override;
 		virtual bool _virtualButtonEvent(const GUIVirtualButtonEvent& ev) override;
 
 
 		/**
 		/**
@@ -152,7 +152,7 @@ namespace BansheeEngine
 		/** @copydoc GUIElement::_hasCustomCursor */
 		/** @copydoc GUIElement::_hasCustomCursor */
 		virtual bool _hasCustomCursor(const Vector2I position, CursorType& type) const override;
 		virtual bool _hasCustomCursor(const Vector2I position, CursorType& type) const override;
 
 
-		/** @copydoc GUIElement::getContextMenu */
+		/** @copydoc GUIElement::_getContextMenu */
 		virtual GUIContextMenuPtr _getContextMenu() const override;
 		virtual GUIContextMenuPtr _getContextMenu() const override;
 	private:
 	private:
 		/**
 		/**

+ 1 - 1
Source/BansheeEngine/Include/BsGUIInputTool.h

@@ -23,7 +23,7 @@ namespace BansheeEngine
 		 * @param[in]	lineHeight		Height of the line in pixels.
 		 * @param[in]	lineHeight		Height of the line in pixels.
 		 * @param[in]	lineYStart		Vertical offset from the top of the text to the start of this line (0 for first 
 		 * @param[in]	lineYStart		Vertical offset from the top of the text to the start of this line (0 for first 
 		 *								line usually).
 		 *								line usually).
-		 * @param[in]	includesNewLine	True if the lines end character is a newline character.
+		 * @param[in]	includesNewline	True if the lines end character is a newline character.
 		 */
 		 */
 		GUIInputLineDesc(UINT32 startChar, UINT32 endChar, UINT32 lineHeight, INT32 lineYStart, bool includesNewline);
 		GUIInputLineDesc(UINT32 startChar, UINT32 endChar, UINT32 lineHeight, INT32 lineYStart, bool includesNewline);
 
 

+ 3 - 3
Source/BansheeEngine/Include/BsGUILabel.h

@@ -43,7 +43,7 @@ namespace BansheeEngine
 		/**
 		/**
 		 * Creates a new label with the specified content (text + optional image).
 		 * Creates a new label with the specified content (text + optional image).
 		 *
 		 *
-		 * @param[in]	text			Content to display.
+		 * @param[in]	content			Content to display.
 		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default button style is used.
 		 *								GUIWidget the element is used on. If not specified default button style is used.
 		 */
 		 */
@@ -52,7 +52,7 @@ namespace BansheeEngine
 		/**
 		/**
 		 * Creates a new label with the specified content (text + optional image).
 		 * Creates a new label with the specified content (text + optional image).
 		 *
 		 *
-		 * @param[in]	text			Content to display.
+		 * @param[in]	content			Content to display.
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized. This will
 		 * @param[in]	options			Options that allow you to control how is the element positioned and sized. This will
 		 *								override any similar options set by style.
 		 *								override any similar options set by style.
 		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
@@ -71,7 +71,7 @@ namespace BansheeEngine
 		/** @copydoc GUIElement::_getOptimalSize */
 		/** @copydoc GUIElement::_getOptimalSize */
 		virtual Vector2I _getOptimalSize() const override;
 		virtual Vector2I _getOptimalSize() const override;
 
 
-		/** @copydoc GUIElement::getElementType */
+		/** @copydoc GUIElement::_getElementType */
 		virtual ElementType _getElementType() const override { return ElementType::Label; }
 		virtual ElementType _getElementType() const override { return ElementType::Label; }
 
 
 		/** @} */
 		/** @} */

+ 1 - 1
Source/BansheeEngine/Include/BsGUIListBox.h

@@ -89,7 +89,7 @@ namespace BansheeEngine
 		 *  @{
 		 *  @{
 		 */
 		 */
 
 
-		/** @copydoc GUIButtonBase::getElementType */
+		/** @copydoc GUIButtonBase::_getElementType */
 		virtual ElementType _getElementType() const override { return ElementType::ListBox; }
 		virtual ElementType _getElementType() const override { return ElementType::ListBox; }
 
 
 		/** @} */
 		/** @} */

+ 1 - 3
Source/BansheeEngine/Include/BsGUIPanel.h

@@ -52,9 +52,7 @@ namespace BansheeEngine
 		/**
 		/**
 		 * Creates a new GUI panel.
 		 * Creates a new GUI panel.
 		 *
 		 *
-		 * @param[in]	depth		Determines rendering order of the GUI panel. Panels with lower depth will be rendered
-		 *							in front of panels with higher depth. Provided depth is relative to depth of the parent
-		 *							GUI panel (if any).
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
 		 */
 		 */
 		static GUIPanel* create(const GUIOptions& options);
 		static GUIPanel* create(const GUIOptions& options);
 
 

+ 4 - 4
Source/BansheeEngine/Include/BsGUIScrollArea.h

@@ -71,7 +71,7 @@ namespace BansheeEngine
 		static GUIScrollArea* create(const GUIOptions& options, const String& scrollBarStyle = StringUtil::BLANK, 
 		static GUIScrollArea* create(const GUIOptions& options, const String& scrollBarStyle = StringUtil::BLANK, 
 			const String& scrollAreaStyle = StringUtil::BLANK);
 			const String& scrollAreaStyle = StringUtil::BLANK);
 
 
-		/** @copydoc GUIElementContainer::getElementType */
+		/** @copydoc GUIElementContainer::_getElementType */
 		virtual ElementType _getElementType() const override { return ElementType::ScrollArea; }
 		virtual ElementType _getElementType() const override { return ElementType::ScrollArea; }
 
 
 		/**	Returns the scroll area layout that you may use to add elements inside the scroll area. */
 		/**	Returns the scroll area layout that you may use to add elements inside the scroll area. */
@@ -139,13 +139,13 @@ namespace BansheeEngine
 	protected:
 	protected:
 		~GUIScrollArea();
 		~GUIScrollArea();
 
 
-		/** @copydoc	GUIElementContainer::_getLayoutSizeRange */
+		/** @copydoc GUIElementContainer::_getLayoutSizeRange */
 		virtual LayoutSizeRange _getLayoutSizeRange() const override;
 		virtual LayoutSizeRange _getLayoutSizeRange() const override;
 
 
-		/** @copydoc GUIElementContainer::updateBounds */
+		/** @copydoc GUIElementContainer::updateClippedBounds */
 		virtual void updateClippedBounds() override;
 		virtual void updateClippedBounds() override;
 
 
-		/** @copydoc	GUIElementBase::_calculateLayoutSizeRange */
+		/** @copydoc GUIElementBase::_calculateLayoutSizeRange */
 		LayoutSizeRange _calculateLayoutSizeRange() const override;
 		LayoutSizeRange _calculateLayoutSizeRange() const override;
 
 
 		/** @copydoc GUIElementBase::_updateOptimalLayoutSizes */
 		/** @copydoc GUIElementBase::_updateOptimalLayoutSizes */

+ 2 - 3
Source/BansheeEngine/Include/BsGUIScrollBar.h

@@ -71,8 +71,7 @@ namespace BansheeEngine
 		 *							vertical one.
 		 *							vertical one.
 		 * @param[in]	styleName	Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 * @param[in]	styleName	Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *							GUIWidget the element is used on. If not specified default style is used.
 		 *							GUIWidget the element is used on. If not specified default style is used.
-		 * @param[in]	options		Options that allow you to control how is the element positioned and sized. This will 
-		 *							override any similar options set by style.
+		 * @param[in]	dimensions	Determines valid dimensions (size) of the element.
 		 */
 		 */
 		GUIScrollBar(bool horizontal, const String& styleName, const GUIDimensions& dimensions);
 		GUIScrollBar(bool horizontal, const String& styleName, const GUIDimensions& dimensions);
 		virtual ~GUIScrollBar();
 		virtual ~GUIScrollBar();
@@ -93,7 +92,7 @@ namespace BansheeEngine
 		/** @copydoc GUIElement::updateRenderElementsInternal */
 		/** @copydoc GUIElement::updateRenderElementsInternal */
 		virtual void updateRenderElementsInternal() override;
 		virtual void updateRenderElementsInternal() override;
 
 
-		/** @copydoc GUIElement::updateBounds */
+		/** @copydoc GUIElement::updateClippedBounds */
 		virtual void updateClippedBounds() override;
 		virtual void updateClippedBounds() override;
 
 
 		/** @copydoc GUIElement::_getRenderElementDepth */
 		/** @copydoc GUIElement::_getRenderElementDepth */

+ 2 - 2
Source/BansheeEngine/Include/BsGUISliderHandle.h

@@ -118,12 +118,12 @@ namespace BansheeEngine
 		/** @copydoc GUIElement::updateRenderElementsInternal() */
 		/** @copydoc GUIElement::updateRenderElementsInternal() */
 		virtual void updateRenderElementsInternal() override;
 		virtual void updateRenderElementsInternal() override;
 
 
-		/** @copydoc GUIElement::updateBounds() */
+		/** @copydoc GUIElement::updateClippedBounds() */
 		virtual void updateClippedBounds() override;
 		virtual void updateClippedBounds() override;
 	private:
 	private:
 		GUISliderHandle(bool horizontal, bool jumpOnClick, const String& styleName, const GUIDimensions& dimensions);
 		GUISliderHandle(bool horizontal, bool jumpOnClick, const String& styleName, const GUIDimensions& dimensions);
 
 
-		/** @copydoc GUIElement::mouseEvent */
+		/** @copydoc GUIElement::_mouseEvent */
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 
 
 		/** Checks are the specified over the scroll handle. Coordinates are relative to the parent widget. */
 		/** Checks are the specified over the scroll handle. Coordinates are relative to the parent widget. */

+ 1 - 1
Source/BansheeEngine/Include/BsGUITexture.h

@@ -156,7 +156,7 @@ namespace BansheeEngine
 		 *  @{
 		 *  @{
 		 */
 		 */
 
 
-		/** @copydoc GUIElement::getElementType */
+		/** @copydoc GUIElement::_getElementType */
 		virtual ElementType _getElementType() const override { return ElementType::Texture; }
 		virtual ElementType _getElementType() const override { return ElementType::Texture; }
 
 
 		/** @copydoc GUIElement::_getOptimalSize */
 		/** @copydoc GUIElement::_getOptimalSize */

+ 44 - 14
Source/BansheeEngine/Include/BsGUIToggle.h

@@ -52,7 +52,7 @@ namespace BansheeEngine
 		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
-		static GUIToggle* create(const HString& text, std::shared_ptr<GUIToggleGroup> toggleGroup, 
+		static GUIToggle* create(const HString& text, SPtr<GUIToggleGroup> toggleGroup,
 			const String& styleName = StringUtil::BLANK);
 			const String& styleName = StringUtil::BLANK);
 
 
 		/**
 		/**
@@ -65,22 +65,52 @@ namespace BansheeEngine
 		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		 */
-		static GUIToggle* create(const HString& text, std::shared_ptr<GUIToggleGroup> toggleGroup, 
+		static GUIToggle* create(const HString& text, SPtr<GUIToggleGroup> toggleGroup,
 			const GUIOptions& options, const String& styleName = StringUtil::BLANK);
 			const GUIOptions& options, const String& styleName = StringUtil::BLANK);
 
 
-		/** @copydoc GUIToggle::create(const HString& text, const String& styleName) */
+		/**
+		 * Creates a new toggle button with the specified label.
+		 *
+		 * @param[in]	content			Content to display in the button, if any.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
 		static GUIToggle* create(const GUIContent& content, const String& styleName = StringUtil::BLANK);
 		static GUIToggle* create(const GUIContent& content, const String& styleName = StringUtil::BLANK);
 
 
-		/** @copydoc GUIToggle::create(const HString& text, const GUIOptions& options, const String& styleName) */
+		/**
+		 * Creates a new toggle button with the specified label.
+		 *
+		 * @param[in]	content			Content to display in the button, if any.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
 		static GUIToggle* create(const GUIContent& content, const GUIOptions& options, 
 		static GUIToggle* create(const GUIContent& content, const GUIOptions& options, 
 			const String& styleName = StringUtil::BLANK);
 			const String& styleName = StringUtil::BLANK);
 
 
-		/** @copydoc GUIToggle::create(const HString& text, std::shared_ptr<GUIToggleGroup> toggleGroup, const String& styleName) */
-		static GUIToggle* create(const GUIContent& content, std::shared_ptr<GUIToggleGroup> toggleGroup, 
+		/**
+		 * Creates a new toggle button with the specified label.
+		 *
+		 * @param[in]	content			Content to display in the button, if any.
+		 * @param[in]	toggleGroup		Toggle group this button belongs to.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIToggle* create(const GUIContent& content, SPtr<GUIToggleGroup> toggleGroup,
 			const String& styleName = StringUtil::BLANK);
 			const String& styleName = StringUtil::BLANK);
 
 
-		/** @copydoc GUIToggle::create(const HString& text, std::shared_ptr<GUIToggleGroup> toggleGroup, const GUIOptions& options, const String& styleName) */
-		static GUIToggle* create(const GUIContent& content, std::shared_ptr<GUIToggleGroup> toggleGroup, 
+		/**
+		 * Creates a new toggle button with the specified label.
+		 *
+		 * @param[in]	content			Content to display in the button, if any.
+		 * @param[in]	toggleGroup		Toggle group this button belongs to.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
+		 */
+		static GUIToggle* create(const GUIContent& content, SPtr<GUIToggleGroup> toggleGroup,
 			const GUIOptions& options, const String& styleName = StringUtil::BLANK);
 			const GUIOptions& options, const String& styleName = StringUtil::BLANK);
 
 
 		/**
 		/**
@@ -90,7 +120,7 @@ namespace BansheeEngine
 		 * @param[in]	allowAllOff	If true all of the toggle buttons can be turned off, if false one will always be turned 
 		 * @param[in]	allowAllOff	If true all of the toggle buttons can be turned off, if false one will always be turned 
 		 *							on.
 		 *							on.
 		 */
 		 */
-		static std::shared_ptr<GUIToggleGroup> createToggleGroup(bool allowAllOff = false);
+		static SPtr<GUIToggleGroup> createToggleGroup(bool allowAllOff = false);
 
 
 		/**	Checks the toggle, making it active. */
 		/**	Checks the toggle, making it active. */
 		virtual void toggleOn();
 		virtual void toggleOn();
@@ -109,11 +139,11 @@ namespace BansheeEngine
 		 *  @{
 		 *  @{
 		 */
 		 */
 
 
-		/** @copydoc GUIButtonBase::getElementType */
+		/** @copydoc GUIButtonBase::_getElementType */
 		virtual ElementType _getElementType() const override { return ElementType::Toggle; }
 		virtual ElementType _getElementType() const override { return ElementType::Toggle; }
 
 
 		/** Sets a toggle group of the toggle button. Toggling one button in a group will automatically untoggle others. */
 		/** Sets a toggle group of the toggle button. Toggling one button in a group will automatically untoggle others. */
-		void _setToggleGroup(std::shared_ptr<GUIToggleGroup> toggleGroup);
+		void _setToggleGroup(SPtr<GUIToggleGroup> toggleGroup);
 
 
 		/** @} */
 		/** @} */
 	protected:
 	protected:
@@ -121,13 +151,13 @@ namespace BansheeEngine
 
 
 	protected:
 	protected:
 		GUIToggle(const String& styleName, const GUIContent& content, 
 		GUIToggle(const String& styleName, const GUIContent& content, 
-			std::shared_ptr<GUIToggleGroup> toggleGroup, const GUIDimensions& dimensions);
+			SPtr<GUIToggleGroup> toggleGroup, const GUIDimensions& dimensions);
 
 
-		/** @copydoc GUIButtonBase::mouseEvent */
+		/** @copydoc GUIButtonBase::_mouseEvent */
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 
 
 	protected:
 	protected:
-		std::shared_ptr<GUIToggleGroup> mToggleGroup;
+		SPtr<GUIToggleGroup> mToggleGroup;
 		bool mIsToggled;
 		bool mIsToggled;
 	};
 	};
 
 

+ 105 - 105
Source/BansheeEngine/Include/BsGameResourceManager.h

@@ -1,106 +1,106 @@
-//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
-//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
-#pragma once
-
-#include "BsPrerequisites.h"
-#include "BsModule.h"
-
-namespace BansheeEngine
-{
-	/** 
-	 * Provides a way to map one resource path to another path. Useful if the resources are being referenced using a path
-	 * that is not the path to their physical location.
-	 */
-	class BS_EXPORT ResourceMapping : public IReflectable
-	{
-	public:
-		/** Returns the resource path map. */
-		const UnorderedMap<Path, Path>& getMap() const { return mMapping; }
-
-		/** Adds a new entry to the resource map. Translated from path @from to path @to. */
-		void add(const Path& from, const Path& to);
-
-		/** Creates a new empty resource mapping. */
-		static SPtr<ResourceMapping> create();
-	private:
-		UnorderedMap<Path, Path> mMapping;
-
-		/************************************************************************/
-		/* 								RTTI		                     		*/
-		/************************************************************************/
-	public:
-		friend class ResourceMappingRTTI;
-		static RTTITypeBase* getRTTIStatic();
-		RTTITypeBase* getRTTI() const override;
-	};
-
-	/** Interface that can be implemented by the resource loaders required by GameResourceManager. */
-	class BS_EXPORT IGameResourceLoader
-	{
-	public:
-		virtual ~IGameResourceLoader() { }
-
-		/**	Loads the resource at the specified path. */
-		virtual HResource load(const Path& path, bool keepLoaded) const = 0;
-
-		/** @copydoc GameResourceManager::setMapping */
-		virtual void setMapping(const SPtr<ResourceMapping>& mapping) { }
-	};
-
-	/**	Handles loading of game resources when the standalone game is running. */
-	class BS_EXPORT StandaloneResourceLoader : public IGameResourceLoader
-	{
-	public:
-		/** @copydoc IGameResourceLoader::load */
-		HResource load(const Path& path, bool keepLoaded) const override;
-
-		/** @copydoc IGameResourceLoader::setMapping */
-		void setMapping(const SPtr<ResourceMapping>& mapping) override;
-
-	private:
-		UnorderedMap<Path, Path> mMapping;
-	};
-
-	/**
-	 * Keeps track of resources that can be dynamically loaded during runtime. These resources will be packed with the game
-	 * build so that they're available on demand.
-	 *
-	 * Internal resource handle can be overridden so that editor or other systems can handle resource loading more directly.
-	 */
-	class BS_EXPORT GameResourceManager : public Module<GameResourceManager>
-	{
-	public:
-		GameResourceManager();
-
-		/**
-		 * Loads the resource at the specified path.
-		 * 			
-		 * @see	Resources::load
-		 */
-		HResource load(const Path& path, bool keepLoaded) const;	
-
-		/** @copydoc load */
-		template <class T>
-		ResourceHandle<T> load(const Path& filePath, bool keepLoaded)
-		{
-			return static_resource_cast<T>(load(filePath, keepLoaded));
-		}
-
-		/** 
-		 * Sets an optional mapping that be applied to any path provided to load(). This allows you to reference files
-		 * using different names and/or folder structure than they are actually in.
-		 *
-		 * For example normally in script code you would reference resources based on their path relative to the project
-		 * resoruces folder, but in standalone there is no such folder and we need to map the values.
-		 *
-		 * Provided paths should be relative to the working directory.
-		 */
-		void setMapping(const SPtr<ResourceMapping>& mapping);
-
-		/** Sets the resource loader implementation that determines how are the paths provided to load() loaded. */
-		void setLoader(const SPtr<IGameResourceLoader>& loader);
-
-	private:
-		SPtr<IGameResourceLoader> mLoader;
-	};
+//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
+//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
+#pragma once
+
+#include "BsPrerequisites.h"
+#include "BsModule.h"
+
+namespace BansheeEngine
+{
+	/** 
+	 * Provides a way to map one resource path to another path. Useful if the resources are being referenced using a path
+	 * that is not the path to their physical location.
+	 */
+	class BS_EXPORT ResourceMapping : public IReflectable
+	{
+	public:
+		/** Returns the resource path map. */
+		const UnorderedMap<Path, Path>& getMap() const { return mMapping; }
+
+		/** Adds a new entry to the resource map. Translated from path @p from to path @p to. */
+		void add(const Path& from, const Path& to);
+
+		/** Creates a new empty resource mapping. */
+		static SPtr<ResourceMapping> create();
+	private:
+		UnorderedMap<Path, Path> mMapping;
+
+		/************************************************************************/
+		/* 								RTTI		                     		*/
+		/************************************************************************/
+	public:
+		friend class ResourceMappingRTTI;
+		static RTTITypeBase* getRTTIStatic();
+		RTTITypeBase* getRTTI() const override;
+	};
+
+	/** Interface that can be implemented by the resource loaders required by GameResourceManager. */
+	class BS_EXPORT IGameResourceLoader
+	{
+	public:
+		virtual ~IGameResourceLoader() { }
+
+		/**	Loads the resource at the specified path. */
+		virtual HResource load(const Path& path, bool keepLoaded) const = 0;
+
+		/** @copydoc GameResourceManager::setMapping */
+		virtual void setMapping(const SPtr<ResourceMapping>& mapping) { }
+	};
+
+	/**	Handles loading of game resources when the standalone game is running. */
+	class BS_EXPORT StandaloneResourceLoader : public IGameResourceLoader
+	{
+	public:
+		/** @copydoc IGameResourceLoader::load */
+		HResource load(const Path& path, bool keepLoaded) const override;
+
+		/** @copydoc IGameResourceLoader::setMapping */
+		void setMapping(const SPtr<ResourceMapping>& mapping) override;
+
+	private:
+		UnorderedMap<Path, Path> mMapping;
+	};
+
+	/**
+	 * Keeps track of resources that can be dynamically loaded during runtime. These resources will be packed with the game
+	 * build so that they're available on demand.
+	 *
+	 * Internal resource handle can be overridden so that editor or other systems can handle resource loading more directly.
+	 */
+	class BS_EXPORT GameResourceManager : public Module<GameResourceManager>
+	{
+	public:
+		GameResourceManager();
+
+		/**
+		 * Loads the resource at the specified path.
+		 * 			
+		 * @see	Resources::load
+		 */
+		HResource load(const Path& path, bool keepLoaded) const;	
+
+		/** @copydoc load */
+		template <class T>
+		ResourceHandle<T> load(const Path& filePath, bool keepLoaded)
+		{
+			return static_resource_cast<T>(load(filePath, keepLoaded));
+		}
+
+		/** 
+		 * Sets an optional mapping that be applied to any path provided to load(). This allows you to reference files
+		 * using different names and/or folder structure than they are actually in.
+		 *
+		 * For example normally in script code you would reference resources based on their path relative to the project
+		 * resoruces folder, but in standalone there is no such folder and we need to map the values.
+		 *
+		 * Provided paths should be relative to the working directory.
+		 */
+		void setMapping(const SPtr<ResourceMapping>& mapping);
+
+		/** Sets the resource loader implementation that determines how are the paths provided to load() loaded. */
+		void setLoader(const SPtr<IGameResourceLoader>& loader);
+
+	private:
+		SPtr<IGameResourceLoader> mLoader;
+	};
 }
 }

+ 5 - 2
Source/BansheeEngine/Include/BsLight.h

@@ -153,7 +153,10 @@ namespace BansheeEngine
 		/**	Sets whether the light should be rendered or not. */
 		/**	Sets whether the light should be rendered or not. */
 		void setIsActive(bool active) { mIsActive = active; _markCoreDirty(); }
 		void setIsActive(bool active) { mIsActive = active; _markCoreDirty(); }
 
 
-		/** @copydoc CoreObject::markCoreDirty */
+		/** 
+		 * Marks the simulation thread object as dirty and notifies the system its data should be synced with its core 
+		 * thread counterpart. 
+		 */
 		virtual void _markCoreDirty(LightDirtyFlag flag = LightDirtyFlag::Everything) { }
 		virtual void _markCoreDirty(LightDirtyFlag flag = LightDirtyFlag::Everything) { }
 
 
 	protected:
 	protected:
@@ -268,7 +271,7 @@ namespace BansheeEngine
 		/** @copydoc CoreObject::createCore */
 		/** @copydoc CoreObject::createCore */
 		SPtr<CoreObjectCore> createCore() const override;
 		SPtr<CoreObjectCore> createCore() const override;
 
 
-		/** @copydoc CoreObject::markCoreDirty */
+		/** @copydoc LightBase::_markCoreDirty */
 		void _markCoreDirty(LightDirtyFlag flag = LightDirtyFlag::Everything) override;
 		void _markCoreDirty(LightDirtyFlag flag = LightDirtyFlag::Everything) override;
 
 
 		/** @copydoc CoreObject::syncToCore */
 		/** @copydoc CoreObject::syncToCore */

+ 12 - 5
Source/BansheeEngine/Include/BsRenderable.h

@@ -117,13 +117,20 @@ namespace BansheeEngine
 		Vector3 getPosition() const { return mPosition; }
 		Vector3 getPosition() const { return mPosition; }
 
 
 	protected:
 	protected:
-		/** @copydoc CoreObject::markCoreDirty */
+		/** 
+		 * Marks the simulation thread object as dirty and notifies the system its data should be synced with its core 
+		 * thread counterpart. 
+		 */
 		virtual void _markCoreDirty(RenderableDirtyFlag flag = RenderableDirtyFlag::Everything) { }
 		virtual void _markCoreDirty(RenderableDirtyFlag flag = RenderableDirtyFlag::Everything) { }
 
 
-		/** @copydoc CoreObject::markDependenciesDirty */
+		/**
+		 * Notifies the core object manager that this object is dependant on some other CoreObject(s), and the dependencies
+		 * changed since the last call to this method. This will trigger a call to getCoreDependencies() to collect the 
+		 * new dependencies.
+		 */
 		virtual void _markDependenciesDirty() { }
 		virtual void _markDependenciesDirty() { }
 
 
-		/** @copydoc IResourceListener::markResourcesDirty */
+		/**	Marks the resource dependencies list as dirty and schedules it for rebuild. */
 		virtual void _markResourcesDirty() { }
 		virtual void _markResourcesDirty() { }
 
 
 		MeshType mMesh;
 		MeshType mMesh;
@@ -199,10 +206,10 @@ namespace BansheeEngine
 		/** @copydoc CoreObject::createCore */
 		/** @copydoc CoreObject::createCore */
 		SPtr<CoreObjectCore> createCore() const override;
 		SPtr<CoreObjectCore> createCore() const override;
 
 
-		/** @copydoc CoreObject::markCoreDirty */
+		/** @copydoc TRenderable::_markCoreDirty */
 		void _markCoreDirty(RenderableDirtyFlag flag = RenderableDirtyFlag::Everything) override;
 		void _markCoreDirty(RenderableDirtyFlag flag = RenderableDirtyFlag::Everything) override;
 
 
-		/** @copydoc IResourceListener::markResourcesDirty */
+		/** @copydoc TRenderable::_markResourcesDirty */
 		void _markResourcesDirty() override;
 		void _markResourcesDirty() override;
 
 
 		/** @copydoc CoreObject::markDependenciesDirty */
 		/** @copydoc CoreObject::markDependenciesDirty */

+ 1 - 1
Source/BansheeEngine/Include/BsRendererMaterialManager.h

@@ -32,7 +32,7 @@ namespace BansheeEngine
 		/**	Registers a new material that should be initialized on module start-up. */
 		/**	Registers a new material that should be initialized on module start-up. */
 		static void _registerMaterial(RendererMaterialMetaData* metaData, const Path& shaderPath);
 		static void _registerMaterial(RendererMaterialMetaData* metaData, const Path& shaderPath);
 
 
-		/** Returns all available variations (specified by #defines) of a shader at the provided path. */
+		/** Returns all available variations (specified by pre-processor defines) of a shader at the provided path. */
 		static Vector<ShaderDefines> _getVariations(const Path& shaderPath);
 		static Vector<ShaderDefines> _getVariations(const Path& shaderPath);
 
 
 	private:
 	private:

+ 3 - 4
Source/BansheeEngine/Include/BsShapeMeshes3D.h

@@ -20,7 +20,7 @@ namespace BansheeEngine
 		/**
 		/**
 		 * Fills the mesh data with vertices representing an outline of axis aligned box.
 		 * Fills the mesh data with vertices representing an outline of axis aligned box.
 		 *
 		 *
-		 * @param[in]		aabox			Axis aligned box to create the mesh data for
+		 * @param[in]		box				Axis aligned box to create the mesh data for
 		 * @param[in, out]	meshData		Mesh data that will be populated.
 		 * @param[in, out]	meshData		Mesh data that will be populated.
 		 * @param[in]		vertexOffset	Offset in number of vertices from the start of the buffer to start writing at.
 		 * @param[in]		vertexOffset	Offset in number of vertices from the start of the buffer to start writing at.
 		 * @param[in]		indexOffset 	Offset in number of indices from the start of the buffer to start writing at.
 		 * @param[in]		indexOffset 	Offset in number of indices from the start of the buffer to start writing at.
@@ -38,7 +38,7 @@ namespace BansheeEngine
 		/**
 		/**
 		 * Fills the mesh data with vertices representing a solid axis aligned box.
 		 * Fills the mesh data with vertices representing a solid axis aligned box.
 		 *
 		 *
-		 * @param[in]		aabox			Axis aligned box to create the mesh data for
+		 * @param[in]		box				Axis aligned box to create the mesh data for
 		 * @param[in, out]	meshData		Mesh data that will be populated.
 		 * @param[in, out]	meshData		Mesh data that will be populated.
 		 * @param[in]		vertexOffset	Offset in number of vertices from the start of the buffer to start writing at.
 		 * @param[in]		vertexOffset	Offset in number of vertices from the start of the buffer to start writing at.
 		 * @param[in]		indexOffset 	Offset in number of indices from the start of the buffer to start writing at.
 		 * @param[in]		indexOffset 	Offset in number of indices from the start of the buffer to start writing at.
@@ -409,6 +409,7 @@ namespace BansheeEngine
 		 *
 		 *
 		 * @param[in]	box				Box to create geometry for.
 		 * @param[in]	box				Box to create geometry for.
 		 * @param[out]	outVertices		Pre-allocated output buffer that will store the vertex position data.
 		 * @param[out]	outVertices		Pre-allocated output buffer that will store the vertex position data.
+		 * @param[out]	outNormals		Pre-allocated output buffer that will store the vertex normal data.
 		 * @param[in]	vertexOffset	Offset in number of vertices from the start of the buffer to start writing at.
 		 * @param[in]	vertexOffset	Offset in number of vertices from the start of the buffer to start writing at.
 		 * @param[in]	vertexStride	Size of a single vertex, in bytes. (Same for both position and normal buffer)
 		 * @param[in]	vertexStride	Size of a single vertex, in bytes. (Same for both position and normal buffer)
 		 * @param[out]	outIndices		Pre-allocated output buffer that will store the index data. Indices are 32bit.
 		 * @param[out]	outIndices		Pre-allocated output buffer that will store the index data. Indices are 32bit.
@@ -529,8 +530,6 @@ namespace BansheeEngine
 		 * @param[in]	radius			Cone radius (distance from base center to outer edge).
 		 * @param[in]	radius			Cone radius (distance from base center to outer edge).
 		 * @param[in]	scale			Scale to apply to the x/y axes, allowing you to create elliptical cones.
 		 * @param[in]	scale			Scale to apply to the x/y axes, allowing you to create elliptical cones.
 		 * @param[out]	outVertices		Pre-allocated output buffer that will store the vertex position data.
 		 * @param[out]	outVertices		Pre-allocated output buffer that will store the vertex position data.
-		 * @param[out]	outNormals		Pre-allocated output buffer that will store the vertex normal data. Can be null if
-		 *								normals aren't needed.
 		 * @param[in]	vertexOffset	Offset in number of vertices from the start of the buffer to start writing at.
 		 * @param[in]	vertexOffset	Offset in number of vertices from the start of the buffer to start writing at.
 		 * @param[in]	vertexStride	Size of a single vertex, in bytes. (Same for both position and normal buffer)
 		 * @param[in]	vertexStride	Size of a single vertex, in bytes. (Same for both position and normal buffer)
 		 * @param[out]	outIndices		Pre-allocated output buffer that will store the index data. Indices are 32bit.
 		 * @param[out]	outIndices		Pre-allocated output buffer that will store the index data. Indices are 32bit.

+ 3 - 0
Source/BansheeEngine/Include/BsSprite.h

@@ -126,6 +126,9 @@ namespace BansheeEngine
 		 * @param[in]	vertexStride		Number of bytes between of vertices in the provided vertex and uv data.
 		 * @param[in]	vertexStride		Number of bytes between of vertices in the provided vertex and uv data.
 		 * @param[in]	indexStride			Number of bytes between two indexes in the provided index data.
 		 * @param[in]	indexStride			Number of bytes between two indexes in the provided index data.
 		 * @param[in]	renderElementIdx	Zero-based index of the render element.
 		 * @param[in]	renderElementIdx	Zero-based index of the render element.
+		 * @param[in]	offset				Position offset to apply to all vertices.
+		 * @param[in]	clipRect			Rectangle to clip the vertices to. 
+		 * @param[in]	clip				Should the vertices be clipped to the provided @p clipRect.
 		 *
 		 *
 		 * @see		getNumRenderElements()
 		 * @see		getNumRenderElements()
 		 * @see		getNumQuads()
 		 * @see		getNumQuads()

+ 183 - 183
Source/BansheeEngine/Source/BsGUIToggle.cpp

@@ -1,184 +1,184 @@
-//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
-//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
-#include "BsGUIToggle.h"
-#include "BsGUIDimensions.h"
-#include "BsGUIMouseEvent.h"
-#include "BsGUIToggleGroup.h"
-
-namespace BansheeEngine
-{
-	const String& GUIToggle::getGUITypeName()
-	{
-		static String name = "Toggle";
-		return name;
-	}
-
-	GUIToggle::GUIToggle(const String& styleName, const GUIContent& content, std::shared_ptr<GUIToggleGroup> toggleGroup, const GUIDimensions& dimensions)
-		:GUIButtonBase(styleName, content, dimensions), mIsToggled(false), mToggleGroup(nullptr)
-	{
-		if(toggleGroup != nullptr)
-			toggleGroup->_add(this);
-	}
-
-	GUIToggle::~GUIToggle()
-	{
-		if(mToggleGroup != nullptr)
-		{
-			mToggleGroup->_remove(this);
-		}
-	}
-
-	GUIToggle* GUIToggle::create(const HString& text, const String& styleName)
-	{
-		return create(GUIContent(text), styleName);
-	}
-
-	GUIToggle* GUIToggle::create(const HString& text, const GUIOptions& options, const String& styleName)
-	{
-		return create(GUIContent(text), options, styleName);
-	}
-
-	GUIToggle* GUIToggle::create(const HString& text, std::shared_ptr<GUIToggleGroup> toggleGroup, const String& styleName)
-	{
-		return create(GUIContent(text), toggleGroup, styleName);
-	}
-
-	GUIToggle* GUIToggle::create(const HString& text, std::shared_ptr<GUIToggleGroup> toggleGroup, 
-		const GUIOptions& options, const String& styleName)
-	{
-		return create(GUIContent(text), toggleGroup, options, styleName);
-	}
-
-	GUIToggle* GUIToggle::create(const GUIContent& content, const String& styleName)
-	{
-		return new (bs_alloc<GUIToggle>()) GUIToggle(getStyleName<GUIToggle>(styleName), content, nullptr, GUIDimensions::create());
-	}
-
-	GUIToggle* GUIToggle::create(const GUIContent& content, const GUIOptions& options, const String& styleName)
-	{
-		return new (bs_alloc<GUIToggle>()) GUIToggle(getStyleName<GUIToggle>(styleName), content, nullptr, GUIDimensions::create(options));
-	}
-
-	GUIToggle* GUIToggle::create(const GUIContent& content, std::shared_ptr<GUIToggleGroup> toggleGroup, const String& styleName)
-	{
-		return new (bs_alloc<GUIToggle>()) GUIToggle(getStyleName<GUIToggle>(styleName), content, toggleGroup, GUIDimensions::create());
-	}
-
-	GUIToggle* GUIToggle::create(const GUIContent& content, std::shared_ptr<GUIToggleGroup> toggleGroup, 
-		const GUIOptions& options, const String& styleName)
-	{
-		return new (bs_alloc<GUIToggle>()) GUIToggle(getStyleName<GUIToggle>(styleName), content, toggleGroup, GUIDimensions::create(options));
-	}
-
-	std::shared_ptr<GUIToggleGroup> GUIToggle::createToggleGroup(bool allowAllOff)
-	{
-		std::shared_ptr<GUIToggleGroup> toggleGroup = std::shared_ptr<GUIToggleGroup>(new GUIToggleGroup(allowAllOff));
-		toggleGroup->initialize(toggleGroup);
-
-		return toggleGroup;
-	}
-
-	void GUIToggle::_setToggleGroup(std::shared_ptr<GUIToggleGroup> toggleGroup)
-	{
-		mToggleGroup = toggleGroup;
-
-		bool isToggled = false;
-		if(mToggleGroup != nullptr) // If in group ensure at least one element is toggled on
-		{
-			for(auto& toggleElem : mToggleGroup->mButtons)
-			{
-				if(isToggled)
-				{
-					if(toggleElem->mIsToggled)
-						toggleElem->toggleOff();
-				}
-				else
-				{
-					if(toggleElem->mIsToggled)
-						isToggled = true;
-				}
-
-			}
-
-			if(!isToggled && !toggleGroup->mAllowAllOff)
-				toggleOn();
-		}
-	}
-
-	void GUIToggle::toggleOn()
-	{
-		if(mIsToggled)
-			return;
-
-		mIsToggled = true;
-
-		if(!onToggled.empty())
-			onToggled(mIsToggled);
-
-		if(mToggleGroup != nullptr)
-		{
-			for(auto& toggleElem : mToggleGroup->mButtons)
-			{
-				if(toggleElem != this)
-					toggleElem->toggleOff();
-			}
-		}
-
-		_setOn(true);
-	}
-
-	void GUIToggle::toggleOff()
-	{
-		if(!mIsToggled)
-			return;
-
-		bool canBeToggledOff = false;
-		if(mToggleGroup != nullptr) // If in group ensure at least one element is toggled on
-		{
-			for(auto& toggleElem : mToggleGroup->mButtons)
-			{
-				if(toggleElem != this)
-				{
-					if(toggleElem->mIsToggled)
-					{
-						canBeToggledOff = true;
-						break;
-					}
-				}
-
-			}
-		}
-		else
-			canBeToggledOff = true;
-
-		if (canBeToggledOff || mToggleGroup->mAllowAllOff)
-		{
-			mIsToggled = false;
-
-			if(!onToggled.empty())
-				onToggled(mIsToggled);
-
-			_setOn(false);
-		}
-	}
-
-	bool GUIToggle::_mouseEvent(const GUIMouseEvent& ev)
-	{
-		bool processed = GUIButtonBase::_mouseEvent(ev);
-
-		if(ev.getType() == GUIMouseEventType::MouseUp)
-		{
-			if (!_isDisabled())
-			{
-				if (mIsToggled)
-					toggleOff();
-				else
-					toggleOn();
-			}
-
-			processed = true;
-		}
-
-		return processed;
-	}
+//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
+//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
+#include "BsGUIToggle.h"
+#include "BsGUIDimensions.h"
+#include "BsGUIMouseEvent.h"
+#include "BsGUIToggleGroup.h"
+
+namespace BansheeEngine
+{
+	const String& GUIToggle::getGUITypeName()
+	{
+		static String name = "Toggle";
+		return name;
+	}
+
+	GUIToggle::GUIToggle(const String& styleName, const GUIContent& content, SPtr<GUIToggleGroup> toggleGroup, const GUIDimensions& dimensions)
+		:GUIButtonBase(styleName, content, dimensions), mIsToggled(false), mToggleGroup(nullptr)
+	{
+		if(toggleGroup != nullptr)
+			toggleGroup->_add(this);
+	}
+
+	GUIToggle::~GUIToggle()
+	{
+		if(mToggleGroup != nullptr)
+		{
+			mToggleGroup->_remove(this);
+		}
+	}
+
+	GUIToggle* GUIToggle::create(const HString& text, const String& styleName)
+	{
+		return create(GUIContent(text), styleName);
+	}
+
+	GUIToggle* GUIToggle::create(const HString& text, const GUIOptions& options, const String& styleName)
+	{
+		return create(GUIContent(text), options, styleName);
+	}
+
+	GUIToggle* GUIToggle::create(const HString& text, SPtr<GUIToggleGroup> toggleGroup, const String& styleName)
+	{
+		return create(GUIContent(text), toggleGroup, styleName);
+	}
+
+	GUIToggle* GUIToggle::create(const HString& text, SPtr<GUIToggleGroup> toggleGroup,
+		const GUIOptions& options, const String& styleName)
+	{
+		return create(GUIContent(text), toggleGroup, options, styleName);
+	}
+
+	GUIToggle* GUIToggle::create(const GUIContent& content, const String& styleName)
+	{
+		return new (bs_alloc<GUIToggle>()) GUIToggle(getStyleName<GUIToggle>(styleName), content, nullptr, GUIDimensions::create());
+	}
+
+	GUIToggle* GUIToggle::create(const GUIContent& content, const GUIOptions& options, const String& styleName)
+	{
+		return new (bs_alloc<GUIToggle>()) GUIToggle(getStyleName<GUIToggle>(styleName), content, nullptr, GUIDimensions::create(options));
+	}
+
+	GUIToggle* GUIToggle::create(const GUIContent& content, SPtr<GUIToggleGroup> toggleGroup, const String& styleName)
+	{
+		return new (bs_alloc<GUIToggle>()) GUIToggle(getStyleName<GUIToggle>(styleName), content, toggleGroup, GUIDimensions::create());
+	}
+
+	GUIToggle* GUIToggle::create(const GUIContent& content, SPtr<GUIToggleGroup> toggleGroup,
+		const GUIOptions& options, const String& styleName)
+	{
+		return new (bs_alloc<GUIToggle>()) GUIToggle(getStyleName<GUIToggle>(styleName), content, toggleGroup, GUIDimensions::create(options));
+	}
+
+	SPtr<GUIToggleGroup> GUIToggle::createToggleGroup(bool allowAllOff)
+	{
+		SPtr<GUIToggleGroup> toggleGroup = bs_shared_ptr_new<GUIToggleGroup>(allowAllOff);
+		toggleGroup->initialize(toggleGroup);
+
+		return toggleGroup;
+	}
+
+	void GUIToggle::_setToggleGroup(SPtr<GUIToggleGroup> toggleGroup)
+	{
+		mToggleGroup = toggleGroup;
+
+		bool isToggled = false;
+		if(mToggleGroup != nullptr) // If in group ensure at least one element is toggled on
+		{
+			for(auto& toggleElem : mToggleGroup->mButtons)
+			{
+				if(isToggled)
+				{
+					if(toggleElem->mIsToggled)
+						toggleElem->toggleOff();
+				}
+				else
+				{
+					if(toggleElem->mIsToggled)
+						isToggled = true;
+				}
+
+			}
+
+			if(!isToggled && !toggleGroup->mAllowAllOff)
+				toggleOn();
+		}
+	}
+
+	void GUIToggle::toggleOn()
+	{
+		if(mIsToggled)
+			return;
+
+		mIsToggled = true;
+
+		if(!onToggled.empty())
+			onToggled(mIsToggled);
+
+		if(mToggleGroup != nullptr)
+		{
+			for(auto& toggleElem : mToggleGroup->mButtons)
+			{
+				if(toggleElem != this)
+					toggleElem->toggleOff();
+			}
+		}
+
+		_setOn(true);
+	}
+
+	void GUIToggle::toggleOff()
+	{
+		if(!mIsToggled)
+			return;
+
+		bool canBeToggledOff = false;
+		if(mToggleGroup != nullptr) // If in group ensure at least one element is toggled on
+		{
+			for(auto& toggleElem : mToggleGroup->mButtons)
+			{
+				if(toggleElem != this)
+				{
+					if(toggleElem->mIsToggled)
+					{
+						canBeToggledOff = true;
+						break;
+					}
+				}
+
+			}
+		}
+		else
+			canBeToggledOff = true;
+
+		if (canBeToggledOff || mToggleGroup->mAllowAllOff)
+		{
+			mIsToggled = false;
+
+			if(!onToggled.empty())
+				onToggled(mIsToggled);
+
+			_setOn(false);
+		}
+	}
+
+	bool GUIToggle::_mouseEvent(const GUIMouseEvent& ev)
+	{
+		bool processed = GUIButtonBase::_mouseEvent(ev);
+
+		if(ev.getType() == GUIMouseEventType::MouseUp)
+		{
+			if (!_isDisabled())
+			{
+				if (mIsToggled)
+					toggleOff();
+				else
+					toggleOn();
+			}
+
+			processed = true;
+		}
+
+		return processed;
+	}
 }
 }

+ 2 - 2
Source/BansheePhysX/Include/BsPhysXPrerequisites.h

@@ -31,9 +31,11 @@ namespace BansheeEngine
  *  @{
  *  @{
  */
  */
 
 
+/** @cond RTTI */
 /** @defgroup RTTI-Impl-PhysX RTTI types
 /** @defgroup RTTI-Impl-PhysX RTTI types
  *  Types containing RTTI for specific classes.
  *  Types containing RTTI for specific classes.
  */
  */
+/** @endcond */
 
 
 /** @} */
 /** @} */
 /** @} */
 /** @} */
@@ -42,7 +44,6 @@ namespace BansheeEngine
 	class PhsyXMaterial;
 	class PhsyXMaterial;
 	class FPhysXCollider;
 	class FPhysXCollider;
 
 
-	/** @cond INTERNAL */
 	/** @addtogroup PhysX
 	/** @addtogroup PhysX
 	 *  @{
 	 *  @{
 	 */
 	 */
@@ -109,5 +110,4 @@ namespace BansheeEngine
 	BS_FLAGS_OPERATORS(PhysXObjectFilterFlag)
 	BS_FLAGS_OPERATORS(PhysXObjectFilterFlag)
 
 
 	/** @} */
 	/** @} */
-	/** @endcond */
 }
 }