Jelajahi Sumber

More work on getting documentation ready for doxygen generation

BearishSun 9 tahun lalu
induk
melakukan
fcc09bfdd3
56 mengubah file dengan 958 tambahan dan 1145 penghapusan
  1. 47 111
      BansheeEditor/Include/BsBuiltinEditorResources.h
  2. 13 16
      BansheeEditor/Include/BsCmdBreakPrefab.h
  3. 18 21
      BansheeEditor/Include/BsCmdCloneSO.h
  4. 13 16
      BansheeEditor/Include/BsCmdCreateSO.h
  5. 15 19
      BansheeEditor/Include/BsCmdDeleteSO.h
  6. 19 16
      BansheeEditor/Include/BsCmdInputFieldValueChange.h
  7. 15 15
      BansheeEditor/Include/BsCmdInstantiateSO.h
  8. 18 20
      BansheeEditor/Include/BsCmdRecordSO.h
  9. 20 19
      BansheeEditor/Include/BsCmdReparentSO.h
  10. 18 14
      BansheeEditor/Include/BsCmdUtility.h
  11. 6 0
      BansheeEditor/Include/BsEditorApplication.h
  12. 11 12
      BansheeEditor/Include/BsEditorCommand.h
  13. 4 0
      BansheeEditor/Include/BsEditorPrerequisites.h
  14. 6 0
      BansheeEditor/Include/BsEditorSettings.h
  15. 17 22
      BansheeEditor/Include/BsEditorTestSuite.h
  16. 14 12
      BansheeEditor/Include/BsEditorUtility.h
  17. 8 8
      BansheeEditor/Include/BsProjectSettings.h
  18. 8 0
      BansheeEditor/Include/BsSceneGrid.h
  19. 48 62
      BansheeEditor/Include/BsScenePicking.h
  20. 28 46
      BansheeEditor/Include/BsSelection.h
  21. 22 29
      BansheeEditor/Include/BsSelectionRenderer.h
  22. 19 46
      BansheeEditor/Include/BsSettings.h
  23. 26 43
      BansheeEditor/Include/BsUndoRedo.h
  24. 0 2
      BansheeEngine/Include/BsApplication.h
  25. 18 41
      BansheeFBXImporter/Include/BsFBXImportData.h
  26. 6 0
      BansheeFBXImporter/Include/BsFBXImporter.h
  27. 8 0
      BansheeFBXImporter/Include/BsFBXPrerequisites.h
  28. 18 23
      BansheeFBXImporter/Include/BsFBXUtility.h
  29. 10 15
      BansheeFontImporter/Include/BsFontImporter.h
  30. 9 1
      BansheeFontImporter/Include/BsFontPrerequisites.h
  31. 12 21
      BansheeFreeImgImporter/Include/BsFreeImgImporter.h
  32. 9 1
      BansheeFreeImgImporter/Include/BsFreeImgPrerequisites.h
  33. 6 0
      BansheeMono/Include/BsMonoArray.h
  34. 23 32
      BansheeMono/Include/BsMonoAssembly.h
  35. 73 87
      BansheeMono/Include/BsMonoClass.h
  36. 25 33
      BansheeMono/Include/BsMonoField.h
  37. 27 42
      BansheeMono/Include/BsMonoManager.h
  38. 30 44
      BansheeMono/Include/BsMonoMethod.h
  39. 8 0
      BansheeMono/Include/BsMonoPrerequisites.h
  40. 25 26
      BansheeMono/Include/BsMonoProperty.h
  41. 14 27
      BansheeMono/Include/BsMonoUtil.h
  42. 18 5
      BansheeMono/Include/BsScriptMeta.h
  43. 35 62
      BansheeOISInput/Include/BsInputHandlerOIS.h
  44. 9 1
      BansheeOISInput/Include/BsOISPrerequisites.h
  45. 6 0
      BansheeSL/Include/BsSLFXCompiler.h
  46. 10 4
      BansheeSL/Include/BsSLImporter.h
  47. 8 0
      BansheeSL/Include/BsSLPrerequisites.h
  48. 6 0
      RenderBeast/Include/BsLightRendering.h
  49. 6 0
      RenderBeast/Include/BsRenderBeast.h
  50. 10 8
      RenderBeast/Include/BsRenderBeastFactory.h
  51. 18 23
      RenderBeast/Include/BsRenderBeastOptions.h
  52. 8 0
      RenderBeast/Include/BsRenderBeastPrerequisites.h
  53. 29 45
      RenderBeast/Include/BsRenderTargets.h
  54. 33 32
      RenderBeast/Include/BsRenderTexturePool.h
  55. 22 23
      RenderBeast/Include/BsSamplerOverrides.h
  56. 6 0
      RenderBeast/Include/BsStaticRenderableHandler.h

+ 47 - 111
BansheeEditor/Include/BsBuiltinEditorResources.h

@@ -10,18 +10,18 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Types of valid icons used when viewing the project library.
+	/** @addtogroup Utility-Editor
+	 *  @{
 	 */
+
+	/**	Types of valid icons used when viewing the project library. */
 	enum class ProjectIcon
 	{
 		Folder, Mesh, Font, Texture, PlainText, ScriptCode, SpriteTexture, Shader, ShaderInclude, Material, Prefab, GUISkin,
 		PhysicsMaterial, PhysicsMesh
 	};
 
-	/**
-	 * @brief	Types of icons that may be displayed on the tool bar.
-	 */
+	/**	Types of icons that may be displayed on the tool bar. */
 	enum class ToolbarIcon
 	{
 		NewCamera, NewRenderable, NewPointLight, NewDirLight, NewSpotLight, NewSceneObject, NewCube, NewSphere, NewCone, 
@@ -29,116 +29,80 @@ namespace BansheeEngine
 		SaveScene
 	};
 
-	/**
-	 * @brief	Types of icons that may be displayed in the scene window.
-	 */
+	/**	Types of icons that may be displayed in the scene window. */
 	enum class SceneWindowIcon
 	{
 		View, Move, Rotate, Scale, Pivot, Center, Local, World, MoveSnap, RotateSnap
 	};
 
-	/**
-	 * @brief	Types of icons that may be displayed in the inspector window.
-	 */
+	/**	Types of icons that may be displayed in the inspector window. */
 	enum class InspectorWindowIcon
 	{
 		Create, Clone, Clear, Resize, Delete, MoveUp, MoveDown, Edit, Apply, Add, Cancel
 	};
 
-	/**
-	 * @brief	Types of icons that may be displayed in the library window.
-	 */
+	/**	Types of icons that may be displayed in the library window. */
 	enum class LibraryWindowIcon
 	{
 		Home, Up, Clear, Options
 	};
 
-	/**
-	 * @brief	Types of icons used in various areas throughout the editor.
-	 */
+	/**	Types of icons used in various areas throughout the editor. */
 	enum class EditorIcon
 	{
 		XBtn
 	};
 
-	/**
-	 * @brief	Types of icons to be used along with log messages depending on their severity.
-	 */
+	/**	Types of icons to be used along with log messages depending on their severity. */
 	enum class LogMessageIcon
 	{
 		Info, Warning, Error
 	};
 
-	/**
-	 * @brief	Contains a set of built-in resources used by the editor.
-	 */
+	/**	Contains a set of built-in resources used by the editor. */
 	class BS_ED_EXPORT BuiltinEditorResources : public BansheeEngine::Module<BuiltinEditorResources>
 	{
 	public:
 		BuiltinEditorResources();
 		~BuiltinEditorResources();
 
-		/**
-		 * @brief	Returns the default editor GUI skin.
-		 */
+		/**	Returns the default editor GUI skin. */
 		const HGUISkin& getSkin() const { return mSkin; }
 
 		/** Returns the default font used by the editor. */
 		const HFont& getDefaultFont() const { return mDefaultFont; }
 
-		/**
-		 * @brief	Creates a material used for docking drop overlay used by the editor.
-		 */
+		/**	Creates a material used for docking drop overlay used by the editor. */
 		HMaterial createDockDropOverlayMaterial() const;
 
-		/**
-		 * @brief	Creates a material used for rendering the scene grid.
-		 */
+		/**	Creates a material used for rendering the scene grid. */
 		HMaterial createSceneGridMaterial() const;
 
-		/**
-		 * @brief	Creates a material used for picking non-transparent objects in scene view.
-		 */
+		/**	Creates a material used for picking non-transparent objects in scene view. */
 		HMaterial createPicking(CullingMode cullMode) const;
 
-		/**
-		 * @brief	Creates a material used for picking transparent objects in scene view.
-		 */
+		/**	Creates a material used for picking transparent objects in scene view. */
 		HMaterial createPickingAlpha(CullingMode cullMode) const;
 
-		/**
-		 * @brief	Creates a material used for rendering wireframe gizmos.
-		 */
+		/**	Creates a material used for rendering wireframe gizmos. */
 		HMaterial createWireGizmoMat() const;
 
-		/**
-		 * @brief	Creates a material used for rendering solid gizmos.
-		 */
+		/**	Creates a material used for rendering solid gizmos. */
 		HMaterial createSolidGizmoMat() const;
 
-		/**
-		 * @brief	Creates a material used for rendering icon gizmos.
-		 */
+		/**	Creates a material used for rendering icon gizmos. */
 		HMaterial createIconGizmoMat() const;
 
-		/**
-		 * @brief	Creates a material used for picking non-transparent gizmos.
-		 */
+		/**	Creates a material used for picking non-transparent gizmos. */
 		HMaterial createGizmoPickingMat() const;
 
-		/**
-		 * @brief	Creates a material used for picking transparent gizmos.
-		 */
+		/**	Creates a material used for picking transparent gizmos. */
 		HMaterial createAlphaGizmoPickingMat() const;
 
-		/**
-		 * @brief	Creates a material used for rendering wireframe handles.
-		 */
+		/**	Creates a material used for rendering wireframe handles. */
 		HMaterial createWireHandleMat() const;
 
-		/**
-		 * @brief	Creates a material used for rendering solid handles.
-		 */
+		/**	Creates a material used for rendering solid handles. */
 		HMaterial createSolidHandleMat() const;
 
 		/** Creates a material used for rendering text for gizmos and handles. */
@@ -147,65 +111,43 @@ namespace BansheeEngine
 		/** Creates a material used for clearing the alpha channel of the handle rendering texture. */
 		HMaterial createHandleClearAlphaMat() const;
 
-		/**
-		 * @brief	Creates a material used for displaying selected objects.
-		 */
+		/**	Creates a material used for displaying selected objects. */
 		HMaterial createSelectionMat() const;
 
 		/**
-		 * @brief	Retrieves an icon that represents a specific resource type
-		 *			that may be displayed when viewing the project library.
+		 * Retrieves an icon that represents a specific resource type that may be displayed when viewing the project 
+		 * library.
 		 */
 		HSpriteTexture getLibraryIcon(ProjectIcon icon, int size) const;
 
-		/**
-		 * @brief	Retrieves an icon that may be displayed on the main window's toolbar.
-		 */
+		/**	Retrieves an icon that may be displayed on the main window's toolbar. */
 		HSpriteTexture getToolbarIcon(ToolbarIcon icon) const;
 
-		/**
-		 * @brief	Retrieves an icon that may be displayed on the scene window.
-		 */
+		/**	Retrieves an icon that may be displayed on the scene window. */
 		GUIContentImages getSceneWindowIcon(SceneWindowIcon icon) const;
 
-		/**
-		 * @brief	Retrieves an icon that may be displayed on the library window.
-		 */
+		/**	Retrieves an icon that may be displayed on the library window. */
 		HSpriteTexture getLibraryWindowIcon(LibraryWindowIcon icon) const;
 
-		/**
-		 * @brief	Retrieves an icon that may be displayed on the inspector window.
-		 */
+		/**	Retrieves an icon that may be displayed on the inspector window. */
 		HSpriteTexture getInspectorWindowIcon(InspectorWindowIcon icon) const;
 
-		/**
-		 * @brief	Retrieves an icon that represents a specific generic editor icon.
-		 */
+		/**	Retrieves an icon that represents a specific generic editor icon. */
 		HSpriteTexture getIcon(EditorIcon icon) const;
 
-		/**
-		 * @brief	Retrieves an icon that represents a specific log message type.
-		 */
+		/**	Retrieves an icon that represents a specific log message type. */
 		HSpriteTexture getLogMessageIcon(LogMessageIcon icon, UINT32 size, bool dark) const;
 
-		/**
-		 * @brief	Returns text contained in the default "empty" shader.
-		 */
+		/**	Returns text contained in the default "empty" shader. */
 		WString getEmptyShaderCode() const;
 
-		/**
-		 * @brief	Returns text contained in the default "empty" C# script.
-		 */
+		/**	Returns text contained in the default "empty" C# script. */
 		WString getEmptyCSScriptCode() const;
 
-		/**
-		 * @brief	Returns path to the builtin shader include folder, relative to the working directory.
-		 */
+		/**	Returns path to the builtin shader include folder, relative to the working directory. */
 		static Path getShaderIncludeFolder();
 
-		/**
-		 * @brief	Returns path to the default widget layout file, relative to the working directory.
-		 */
+		/**	Returns path to the default widget layout file, relative to the working directory. */
 		static Path getDefaultWidgetLayoutPath();
 
 		static const String ObjectFieldStyleName;
@@ -220,37 +162,29 @@ namespace BansheeEngine
 
 	private:
 		/**
-		 * @brief	Imports all necessary resources and converts them to engine-ready format.
+		 * Imports all necessary resources and converts them to engine-ready format.
 		 *
-		 * @note	Normally you only want to use this during development phase and then ship
-		 *			with engine-ready format only.
+		 * @note	
+		 * Normally you only want to use this during development phase and then ship with engine-ready format only.
 		 */
 		void preprocess();
 
-		/**
-		 * @brief	Generates the default editor skin and all GUI element styles.
-		 */
+		/**	Generates the default editor skin and all GUI element styles. */
 		GUISkinPtr generateGUISkin();
 
 		/**
-		 * @brief	Generates different sizes of resource icons. Expects maximum sizes of the icons to already be present.
-		 * 			Resulting textures will be saved to the same directory the maximum size textures are in.
+		 * Generates different sizes of resource icons. Expects maximum sizes of the icons to already be present. Resulting
+		 * textures will be saved to the same directory the maximum size textures are in.
 		 */
 		void generateResourceIcons(const Path& inputFolder, const ResourceManifestPtr& resourceManifest);
 
-		/**
-		 * @brief	Loads a GUI skin texture with the specified filename.
-		 */
+		/**	Loads a GUI skin texture with the specified filename. */
 		HSpriteTexture getGUITexture(const WString& name) const;
 
-		/**
-		 * @brief	Loads a GUI icon with the specified filename.
-		 */
+		/**	Loads a GUI icon with the specified filename. */
 		HSpriteTexture getGUIIcon(const WString& name) const;
 
-		/**
-		 * @brief	Loads a shader with the specified filename
-		 */
+		/**	Loads a shader with the specified filename */
 		HShader getShader(const WString& name) const;
 
 		HShader mShaderDockOverlay;
@@ -511,4 +445,6 @@ namespace BansheeEngine
 		static const WString EmptyShaderCodeFile;
 		static const WString EmptyCSScriptCodeFile;
 	};
+
+	/** @} */
 }

+ 13 - 16
BansheeEditor/Include/BsCmdBreakPrefab.h

@@ -8,32 +8,29 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	A command used for undo/redo purposes. It breaks a prefab link of a scene object
-	 *			and allows you to restore link.
+	/** @addtogroup UndoRedo
+	 *  @{
 	 */
+
+	/** A command used for undo/redo purposes. It breaks a prefab link of a scene object and allows you to restore link. */
 	class BS_ED_EXPORT CmdBreakPrefab : public EditorCommand
 	{
 	public:
 		~CmdBreakPrefab();
 
 		/**
-		 * @brief	Creates and executes the command on the provided scene object.
-		 *			Automatically registers the command with undo/redo system.
+		 * Creates and executes the command on the provided scene object. Automatically registers the command with undo/redo
+		 * system.
 		 *
-		 * @param	sceneObject		Scene object whose prefab link to break.
-		 * @param	description		Optional description of what exactly the command does.
+		 * @param[in]	sceneObject		Scene object whose prefab link to break.
+		 * @param[in]	description		Optional description of what exactly the command does.
 		 */
 		static void execute(const HSceneObject& sceneObject, const WString& description = StringUtil::WBLANK);
 
-		/**
-		 * @copydoc	EditorCommand::commit
-		 */
+		/** @copydoc EditorCommand::commit */
 		void commit() override;
 
-		/**
-		 * @copydoc	EditorCommand::revert
-		 */
+		/** @copydoc EditorCommand::revert */
 		void revert() override;
 
 	private:
@@ -41,9 +38,7 @@ namespace BansheeEngine
 
 		CmdBreakPrefab(const WString& description, const HSceneObject& sceneObject);
 
-		/**
-		 * @brief	Clears all internal cached data. Should be called whenever a change is commited.
-		 */
+		/**	Clears all internal cached data. Should be called whenever a change is commited. */
 		void clear();
 
 		HSceneObject mSceneObject;
@@ -53,4 +48,6 @@ namespace BansheeEngine
 		PrefabDiffPtr mPrefabDiff;
 		UnorderedMap<UINT64, UINT32> mLinkIds;
 	};
+
+	/** @} */
 }

+ 18 - 21
BansheeEditor/Include/BsCmdCloneSO.h

@@ -9,45 +9,40 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	A command used for undo/redo purposes. Clones scene object(s)
-	 *			and removes them as an undo operation.
+	/** @addtogroup UndoRedo
+	 *  @{
 	 */
+
+	/** A command used for undo/redo purposes. Clones scene object(s) and removes them as an undo operation. */
 	class BS_ED_EXPORT CmdCloneSO : public EditorCommand
 	{
 	public:
 		~CmdCloneSO();
 
 		/**
-		 * @brief	Creates a new scene object by cloning an existing object.
-		 *			Automatically registers the command with undo/redo system.
-		 *
-		 * @param	sceneObject		Scene object to clone.
-		 * @param	description		Optional description of what exactly the command does.
+		 * Creates a new scene object by cloning an existing object. Automatically registers the command with undo/redo 
+		 * system.
 		 *
-		 * @return	Cloned object.
+		 * @param[in]	sceneObject		Scene object to clone.
+		 * @param[in]	description		Optional description of what exactly the command does.
+		 * @return						Cloned object.
 		 */
 		static HSceneObject execute(const HSceneObject& sceneObject, const WString& description = StringUtil::WBLANK);
 
 		/**
-		 * @brief	Creates new scene object(s) by cloning existing objects.
-		 *			Automatically registers the command with undo/redo system.
+		 * Creates new scene object(s) by cloning existing objects. Automatically registers the command with undo/redo 
+		 * system.
 		 *
-		 * @param	sceneObjects	Scene object(s) to clone.
-		 * @param	description		Optional description of what exactly the command does.
-		 *
-		 * @return	Cloned objects.
+		 * @param[in]	sceneObjects	Scene object(s) to clone.
+		 * @param[in]	description		Optional description of what exactly the command does.
+		 * @return						Cloned objects.
 		 */
 		static Vector<HSceneObject> execute(const Vector<HSceneObject>& sceneObjects, const WString& description = StringUtil::WBLANK);
 
-		/**
-		 * @copydoc	EditorCommand::commit
-		 */
+		/** @copydoc EditorCommand::commit */
 		void commit() override;
 
-		/**
-		 * @copydoc	EditorCommand::revert
-		 */
+		/** @copydoc EditorCommand::revert */
 		void revert() override;
 
 	private:
@@ -58,4 +53,6 @@ namespace BansheeEngine
 		Vector<HSceneObject> mOriginals;
 		Vector<HSceneObject> mClones;
 	};
+
+	/** @} */
 }

+ 13 - 16
BansheeEditor/Include/BsCmdCreateSO.h

@@ -9,35 +9,30 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	A command used for undo/redo purposes. Creates a scene object 
-	 *			and removes it as an undo operation.
+	/** @addtogroup UndoRedo
+	 *  @{
 	 */
+
+	/** A command used for undo/redo purposes. Creates a scene object and removes it as an undo operation. */
 	class BS_ED_EXPORT CmdCreateSO : public EditorCommand
 	{
 	public:
 		~CmdCreateSO();
 
 		/**
-		 * @brief	Creates a new scene object.
-		 *			Automatically registers the command with undo/redo system.
-		 *
-		 * @param	name		Name of the scene object.
-		 * @param	flags		Optional creation flags for the scene object.
-		 * @param	description	Optional description of what exactly the command does.
+		 * Creates a new scene object. Automatically registers the command with undo/redo system.
 		 *
-		 * @return	Newly created scene object.
+		 * @param[in]	name		Name of the scene object.
+		 * @param[in]	flags		Optional creation flags for the scene object.
+		 * @param[in]	description	Optional description of what exactly the command does.
+		 * @return					Newly created scene object.
 		 */
 		static HSceneObject execute(const String& name, UINT32 flags, const WString& description = StringUtil::WBLANK);
 
-		/**
-		 * @copydoc	EditorCommand::commit
-		 */
+		/** @copydoc EditorCommand::commit */
 		void commit() override;
 
-		/**
-		 * @copydoc	EditorCommand::revert
-		 */
+		/** @copydoc EditorCommand::revert */
 		void revert() override;
 
 	private:
@@ -50,4 +45,6 @@ namespace BansheeEngine
 
 		HSceneObject mSceneObject;
 	};
+
+	/** @} */
 }

+ 15 - 19
BansheeEditor/Include/BsCmdDeleteSO.h

@@ -9,32 +9,29 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	A command used for undo/redo purposes. Deletes a scene object
-	 *			and restores it as an undo operation.
+	/** @addtogroup UndoRedo
+	 *  @{
 	 */
+
+	/** A command used for undo/redo purposes. Deletes a scene object and restores it as an undo operation. */
 	class BS_ED_EXPORT CmdDeleteSO : public EditorCommand
 	{
 	public:
 		~CmdDeleteSO();
 
 		/**
-		 * @brief	Creates and executes the command on the provided scene object.
-		 *			Automatically registers the command with undo/redo system.
+		 * Creates and executes the command on the provided scene object. Automatically registers the command with 
+		 * undo/redo system.
 		 *
-		 * @param	sceneObject	Scene object to delete.
-		 * @param	description	Optional description of what exactly the command does.
+		 * @param[in]	sceneObject	Scene object to delete.
+		 * @param[in]	description	Optional description of what exactly the command does.
 		 */
 		static void execute(const HSceneObject& sceneObject, const WString& description = StringUtil::WBLANK);
 
-		/**
-		 * @copydoc	EditorCommand::commit
-		 */
+		/** @copydoc EditorCommand::commit */
 		void commit() override;
 
-		/**
-		 * @copydoc	EditorCommand::revert
-		 */
+		/** @copydoc EditorCommand::revert */
 		void revert() override;
 
 	private:
@@ -43,15 +40,12 @@ namespace BansheeEngine
 		CmdDeleteSO(const WString& description, const HSceneObject& sceneObject);
 
 		/**
-		 * @brief	Saves the state of the specified object, all of its children
-		 *			and components. Make sure to call "clear" when you no longer need
-		 *			the data, or wish to call this method again.
+		 * Saves the state of the specified object, all of its children and components. Make sure to call clear() when you
+		 * no longer need the data, or wish to call this method again.
 		 */
 		void recordSO(const HSceneObject& sceneObject);
 
-		/**
-		 * @brief	Clears all the stored data and frees memory.
-		 */
+		/**	Clears all the stored data and frees memory. */
 		void clear();
 
 		HSceneObject mSceneObject;
@@ -61,4 +55,6 @@ namespace BansheeEngine
 		UINT32 mSerializedObjectSize;
 		UINT64 mSerializedObjectParentId;
 	};
+
+	/** @} */
 }

+ 19 - 16
BansheeEditor/Include/BsCmdInputFieldValueChange.h

@@ -8,41 +8,42 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup UndoRedo
+	 *  @{
+	 */
+
 	/**
-	 * @brief	A command used for undo/redo purposes. It records a value of a GUI input field
-	 *			(specified by template type) and allows you to apply or revert a change to that field
-	 *			as needed.
+	 * A command used for undo/redo purposes. It records a value of a GUI input field (specified by template type) and
+	 * allows you to apply or revert a change to that field as needed.
 	 */
 	template <class InputFieldType, class ValueType>
 	class BS_ED_EXPORT CmdInputFieldValueChange : public EditorCommand
 	{
 	public:
 		/**
-		 * @brief	Creates and executes the command on the provided object and field.
-		 *			Automatically registers the command with undo/redo system.
+		 * Creates and executes the command on the provided object and field. Automatically registers the command with
+		 * undo/redo system.
 		 *
-		 * @param	inputField	Input field to modify the value on.
-		 * @param	value		New value for the field.
-		 * @param	description	Optional description of what exactly the command does.
+		 * @param[in]	inputField	Input field to modify the value on.
+		 * @param[in]	value		New value for the field.
+		 * @param[in]	description	Optional description of what exactly the command does.
 		 */
-		static void execute(InputFieldType* inputField, const ValueType& value, const WString& description = StringUtil::WBLANK)
+		static void execute(InputFieldType* inputField, const ValueType& value, 
+			const WString& description = StringUtil::WBLANK)
 		{
-			CmdInputFieldValueChange* command = new (bs_alloc<CmdInputFieldValueChange>()) CmdInputFieldValueChange(description, inputField, value);
+			CmdInputFieldValueChange* command = 
+				new (bs_alloc<CmdInputFieldValueChange>()) CmdInputFieldValueChange(description, inputField, value);
 			UndoRedo::instance().registerCommand(command);
 			command->commit();
 		}
 
-		/**
-		 * @copydoc	EditorCommand::commit
-		 */
+		/** @copydoc EditorCommand::commit */
 		void commit() override
 		{
 			mInputField->_setValue(mNewValue, true);
 		}
 
-		/**
-		 * @copydoc	EditorCommand::revert
-		 */
+		/** @copydoc EditorCommand::revert */
 		void revert() override
 		{
 			mInputField->_setValue(mOldValue, true);
@@ -59,4 +60,6 @@ namespace BansheeEngine
 		ValueType mNewValue;
 		InputFieldType* mInputField;
 	};
+
+	/** @} */
 }

+ 15 - 15
BansheeEditor/Include/BsCmdInstantiateSO.h

@@ -9,9 +9,13 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	A command used for undo/redo purposes. Instantiates scene object(s)
-	 *			from a prefab and removes them as an undo operation.
+	/** @addtogroup UndoRedo
+	 *  @{
+	 */
+
+	/**	
+	 * A command used for undo/redo purposes. Instantiates scene object(s) from a prefab and removes them as an undo
+	 * operation.
 	 */
 	class BS_ED_EXPORT CmdInstantiateSO : public EditorCommand
 	{
@@ -19,24 +23,18 @@ namespace BansheeEngine
 		~CmdInstantiateSO();
 
 		/**
-		 * @brief	Instantiates the specified prefab.
-		 *			Automatically registers the command with undo/redo system.
+		 * Instantiates the specified prefab. Automatically registers the command with undo/redo system.
 		 *
-		 * @param	prefab			Prefab to instantiate.
-		 * @param	description		Optional description of what exactly the command does.
-		 *
-		 * @return	Instantiated object.
+		 * @param[in]	prefab			Prefab to instantiate.
+		 * @param[in]	description		Optional description of what exactly the command does.
+		 * @return						Instantiated object.
 		 */
 		static HSceneObject execute(const HPrefab& prefab, const WString& description = StringUtil::WBLANK);
 
-		/**
-		 * @copydoc	EditorCommand::commit
-		 */
+		/** @copydoc EditorCommand::commit */
 		void commit() override;
 
-		/**
-		 * @copydoc	EditorCommand::revert
-		 */
+		/** @copydoc EditorCommand::revert */
 		void revert() override;
 
 	private:
@@ -47,4 +45,6 @@ namespace BansheeEngine
 		HPrefab mPrefab;
 		HSceneObject mSceneObject;
 	};
+
+	/** @} */
 }

+ 18 - 20
BansheeEditor/Include/BsCmdRecordSO.h

@@ -9,10 +9,13 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup UndoRedo
+	 *  @{
+	 */
+
 	/**
-	 * @brief	A command used for undo/redo purposes. It records a state of the entire
-	 *			scene object at a specific point and allows you to restore it to its
-	 *			original values as needed.
+	 * A command used for undo/redo purposes. It records a state of the entire scene object at a specific point and allows
+	 * you to restore it to its original values as needed.
 	 */
 	class BS_ED_EXPORT CmdRecordSO : public EditorCommand
 	{
@@ -20,24 +23,20 @@ namespace BansheeEngine
 		~CmdRecordSO();
 
 		/**
-		 * @brief	Creates and executes the command on the provided scene object.
-		 *			Automatically registers the command with undo/redo system.
+		 * Creates and executes the command on the provided scene object. Automatically registers the command with undo/redo
+		 * system.
 		 *
-		 * @param	sceneObject		Scene object to record.
-		 * @param	recordHierarchy	If true, all children of the provided scene object will be recorded as well.
-		 * @param	description		Optional description of what exactly the command does.
+		 * @param[in]	sceneObject		Scene object to record.
+		 * @param[in]	recordHierarchy	If true, all children of the provided scene object will be recorded as well.
+		 * @param[in]	description		Optional description of what exactly the command does.
 		 */
 		static void execute(const HSceneObject& sceneObject, bool recordHierarchy = false, 
 			const WString& description = StringUtil::WBLANK);
 
-		/**
-		 * @copydoc	EditorCommand::commit
-		 */
+		/** @copydoc EditorCommand::commit */
 		void commit() override;
 
-		/**
-		 * @copydoc	EditorCommand::revert
-		 */
+		/** @copydoc EditorCommand::revert */
 		void revert() override;
 
 	private:
@@ -46,15 +45,12 @@ namespace BansheeEngine
 		CmdRecordSO(const WString& description, const HSceneObject& sceneObject, bool recordHierarchy);
 
 		/**
-		 * @brief	Saves the state of the specified object, all of its children
-		 *			and components. Make sure to call "clear" when you no longer need
-		 *			the data, or wish to call this method again.
+		 * Saves the state of the specified object, all of its children and components. Make sure to call clear() when you
+		 * no longer need the data, or wish to call this method again.
 		 */
 		void recordSO(const HSceneObject& sceneObject);
 
-		/**
-		 * @brief	Clears all the stored data and frees memory.
-		 */
+		/**	Clears all the stored data and frees memory. */
 		void clear();
 
 		HSceneObject mSceneObject;
@@ -64,4 +60,6 @@ namespace BansheeEngine
 		UINT8* mSerializedObject;
 		UINT32 mSerializedObjectSize;
 	};
+
+	/** @} */
 }

+ 20 - 19
BansheeEditor/Include/BsCmdReparentSO.h

@@ -8,44 +8,43 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup UndoRedo
+	 *  @{
+	 */
+
 	/**
-	 * @brief	A command used for undo/redo purposes. It records a scene object
-	 *			parent change operations. It allows you to apply the parent change
-	 *			or revert the object to its original parent as needed.
+	 * A command used for undo/redo purposes. It records a scene object parent change operations. It allows you to apply
+	 * the parent change or revert the object to its original parent as needed.
 	 */
 	class BS_ED_EXPORT CmdReparentSO : public EditorCommand
 	{
 	public:
 		/**
-		 * @brief	Creates and executes the command on the provided scene object(s).
-		 *			Automatically registers the command with undo/redo system.
+		 * Creates and executes the command on the provided scene object(s). Automatically registers the command with
+		 * undo/redo system.
 		 *
-		 * @param	sceneObjects	Object(s) to change the parent for.
-		 * @param	newParent		New parent for the provided objects.
-		 * @param	description		Optional description of what exactly the command does.
+		 * @param[in]	sceneObjects	Object(s) to change the parent for.
+		 * @param[in]	newParent		New parent for the provided objects.
+		 * @param[in]	description		Optional description of what exactly the command does.
 		 */
 		static void execute(const Vector<HSceneObject>& sceneObjects, const HSceneObject& newParent, 
 			const WString& description = StringUtil::WBLANK);
 
 		/**
-		 * @brief	Creates and executes the command on the provided scene object.
-		 *			Automatically registers the command with undo/redo system.
+		 * Creates and executes the command on the provided scene object. Automatically registers the command with
+		 * undo/redo system.
 		 *
-		 * @param	sceneObject		Object to change the parent for.
-		 * @param	newParent		New parent for the provided objects.
-		 * @param	description		Optional description of what exactly the command does.
+		 * @param[in]	sceneObject		Object to change the parent for.
+		 * @param[in]	newParent		New parent for the provided objects.
+		 * @param[in]	description		Optional description of what exactly the command does.
 		 */
 		static void execute(HSceneObject& sceneObject, const HSceneObject& newParent, 
 			const WString& description = StringUtil::WBLANK);
 
-		/**
-		 * @copydoc	EditorCommand::commit
-		 */
+		/** @copydoc EditorCommand::commit */
 		void commit() override;
 
-		/**
-		 * @copydoc	EditorCommand::revert
-		 */
+		/** @copydoc EditorCommand::revert */
 		void revert() override;
 
 	private:
@@ -57,4 +56,6 @@ namespace BansheeEngine
 		Vector<HSceneObject> mOldParents;
 		HSceneObject mNewParent;
 	};
+
+	/** @} */
 }

+ 18 - 14
BansheeEditor/Include/BsCmdUtility.h

@@ -6,19 +6,22 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Contains various utility methods and structures used by EditorCommand%s.
+	/** @addtogroup UndoRedo
+	 *  @{
 	 */
+
+	/** Contains various utility methods and structures used by EditorCommand%s. */
 	class CmdUtility
 	{
 	public:
 		/**
-		 * @brief	Contains stored information about stored scene object instance data,
-		 *			including all of its children and components.
+		 * Contains stored information about stored scene object instance data, including all of its children and
+		 * components.
 		 *
-		 * @note	When object is serialized it will receive new instance data (as if it was a new
-		 *			object). But we want to restore the original object completely (including any references
-		 *			other objects might have to it) so we need store the instance data.
+		 * @note	
+		 * When object is serialized it will receive new instance data (as if it was a new object). But we want to restore
+		 * the original object completely (including any references	other objects might have to it) so we need store the
+		 * instance data.
 		 */
 		struct SceneObjProxy
 		{
@@ -29,19 +32,20 @@ namespace BansheeEngine
 		};
 
 		/**
-		 * @brief	Parses the scene object hierarchy and components and generates a
-		 *			hierarchy of instance data required to restore the object identities.
+		 * Parses the scene object hierarchy and components and generates a hierarchy of instance data required to restore
+		 * the object identities.
 		 */
 		static SceneObjProxy createProxy(const HSceneObject& sceneObject);
 
 		/**
-		 * @brief	Restores original object instance data from the provided scene object proxy
-		 *			that was previously generated using ::createProxy.
+		 * Restores original object instance data from the provided scene object proxy that was previously generated using
+		 * createProxy().
 		 *
-		 * @param	restored	New instance of the object.
-		 * @param	proxy		Proxy data containing the original object instance data
-		 *						we want to restore.
+		 * @param[in]	restored	New instance of the object.
+		 * @param[in]	proxy		Proxy data containing the original object instance data we want to restore.
 		 */
 		static void restoreIds(const HSceneObject& restored, SceneObjProxy& proxy);
 	};
+
+	/** @} */
 }

+ 6 - 0
BansheeEditor/Include/BsEditorApplication.h

@@ -7,6 +7,10 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup Application-Editor
+	 *  @{
+	 */
+
 	/**	Types of render APIs supported by the editor. */
 	enum class EditorRenderAPI
 	{
@@ -145,4 +149,6 @@ namespace BansheeEngine
 
 	/**	Easy way to access EditorApplication. */
 	BS_ED_EXPORT EditorApplication& gEditorApplication();
+
+	/** @} */
 }

+ 11 - 12
BansheeEditor/Include/BsEditorCommand.h

@@ -6,9 +6,13 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup UndoRedo
+	 *  @{
+	 */
+
 	/**
-	 * @brief	A command used for undo/redo purposes. It records a change occurring on
-	 *			some object and allows you to apply or revert that change as needed.
+	 * A command used for undo/redo purposes. It records a change occurring on some object and allows you to apply or
+	 * revert that change as needed.
 	 */
 	class BS_ED_EXPORT EditorCommand
 	{
@@ -16,20 +20,13 @@ namespace BansheeEngine
 		EditorCommand(const WString& description);
 		virtual ~EditorCommand() { }
 
-		/**
-		 * @brief	Applies the command, committing the change.
-		 */
+		/**	Applies the command, committing the change. */
 		virtual void commit() { }
 
-		/**
-		 * @brief	Reverts the command, reverting the change previously
-		 *			done with "commit".
-		 */
+		/** Reverts the command, reverting the change previously done with commit(). */
 		virtual void revert() { }
 
-		/**
-		 * @brief	Deletes the command.
-		 */
+		/**	Deletes the command. */
 		static void destroy(EditorCommand* command);
 
 	private:
@@ -38,4 +35,6 @@ namespace BansheeEngine
 		WString mDescription;
 		UINT32 mId;
 	};
+
+	/** @} */
 }

+ 4 - 0
BansheeEditor/Include/BsEditorPrerequisites.h

@@ -57,6 +57,10 @@
  *  Provides functionality for undoing and redoing actions within the editor.
  */
 
+/** @defgroup Application-Editor Application
+ *  Entry point into the editor application.
+ */
+
 /** @} */
 
 #if (BS_PLATFORM == BS_PLATFORM_WIN32) && !defined(__MINGW32__)

+ 6 - 0
BansheeEditor/Include/BsEditorSettings.h

@@ -8,6 +8,10 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup Settings
+	 *  @{
+	 */
+
 	struct RecentProject;
 
 	/**	Contains various globally accessible editor preferences. */
@@ -151,4 +155,6 @@ namespace BansheeEngine
 		Path path;
 		UINT64 accessTimestamp;
 	};
+
+	/** @} */
 }

+ 17 - 22
BansheeEditor/Include/BsEditorTestSuite.h

@@ -8,6 +8,11 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup Testing-Editor
+	 *  @{
+	 */
+	/** @cond INTERNAL */
+
 	class TestComponentA : public Component
 	{
 	public:
@@ -29,7 +34,7 @@ namespace BansheeEngine
 	public:
 		friend class TestComponentARTTI;
 		static RTTITypeBase* getRTTIStatic();
-		virtual RTTITypeBase* getRTTI() const;
+		RTTITypeBase* getRTTI() const override;
 
 	protected:
 		TestComponentA() {} // Serialization only
@@ -56,46 +61,36 @@ namespace BansheeEngine
 	public:
 		friend class TestComponentBRTTI;
 		static RTTITypeBase* getRTTIStatic();
-		virtual RTTITypeBase* getRTTI() const;
+		RTTITypeBase* getRTTI() const override;
 
 	protected:
 		TestComponentB() {} // Serialization only
 	};
 
-	/**
-	 * @brief	Contains a set of unit tests for the editor.
-	 */
+	/** @endcond */
+
+	/**	Contains a set of unit tests for the editor. */
 	class EditorTestSuite : public TestSuite
 	{
 	public:
 		EditorTestSuite();
 
 	private:
-		/**
-		 * @brief	Tests SceneObject record undo/redo operation.
-		 */
+		/**	Tests SceneObject record undo/redo operation. */
 		void SceneObjectRecord_UndoRedo();
 
-		/**
-		 * @brief	Tests SceneObject delete undo/redo operation.
-		 */
+		/**	Tests SceneObject delete undo/redo operation. */
 		void SceneObjectDelete_UndoRedo();
 
-		/**
-		 * @brief	Tests native diff by modifiying an object, generating a diff
-		 *			and re-applying the modifications.
-		 */
+		/** Tests native diff by modifiying an object, generating a diff and re-applying the modifications. */
 		void BinaryDiff();
 
-		/**
-		 * @brief	Tests prefab diff by modifiying a prefab, generating a diff
-		 *			and re-applying the modifications.
-		 */
+		/** Tests prefab diff by modifiying a prefab, generating a diff and re-applying the modifications. */
 		void TestPrefabDiff();
 
-		/**
-		 * @brief	Tests the frame allocator.
-		 */
+		/**	Tests the frame allocator. */
 		void TestFrameAlloc();
 	};
+
+	/** @} */
 }

+ 14 - 12
BansheeEditor/Include/BsEditorUtility.h

@@ -7,34 +7,36 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Contains miscelanous helper methods.
+	/** @addtogroup Utility-Editor
+	 *  @{
 	 */
+
+	/**	Contains miscellaneous helper methods. */
 	class BS_ED_EXPORT EditorUtility
 	{
 	public:
 		/**
-		 * @brief	Calculates world space bounds of the specified scene object. This will
-		 *			consider components with bounds like Renderable.
+		 * Calculates world space bounds of the specified scene object. This will consider components with bounds like
+		 * Renderable.
 		 */
 		static AABox calculateBounds(const HSceneObject& object);
 
 		/**
-		 * @brief	Calculates world space bounds of the specified scene objects. This will
-		 *			consider components with bounds like Renderable.
+		 * Calculates world space bounds of the specified scene objects. This will consider components with bounds like
+		 * Renderable.
 		 */
 		static AABox calculateBounds(const Vector<HSceneObject>& objects);
 
 	private:
 		/**
-		 * @brief	Retrieves all components containing meshes on the specified object and outputs
-		 *			their bounds.
-		 *
-		 * @param	object	Object to calculate bounds for.
-		 * @param	bounds	Output bounds, if successful.
+		 * Retrieves all components containing meshes on the specified object and outputs their bounds.
 		 *
-		 * @returns true if a mesh component was found, otherwise false (bounds will not be updated).
+		 * @param[in]	object	Object to calculate bounds for.
+		 * @param[in]	bounds	Output bounds, if successful.
+		 * @return				True if a mesh component was found, otherwise false (bounds will not be updated).
 		 */
 		static bool calculateMeshBounds(const HSceneObject& object, AABox& bounds);
 	};
+
+	/** @} */
 }

+ 8 - 8
BansheeEditor/Include/BsProjectSettings.h

@@ -7,22 +7,20 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Contains various globally accessible project-specific preferences.
+	/** @addtogroup Settings
+	 *  @{
 	 */
+
+	/**	Contains various globally accessible project-specific preferences. */
 	class BS_ED_EXPORT ProjectSettings : public Settings
 	{
 	public:
 		ProjectSettings();
 
-		/**
-		 * @brief	Retrieves the UUID of the last scene open in the editor.
-		 */
+		/**	Retrieves the UUID of the last scene open in the editor. */
 		String getLastOpenScene() const { return mLastOpenScene; }
 
-		/**
-		 * @brief	Sets the UUID of the last scene open in the editor.
-		 */
+		/**	Sets the UUID of the last scene open in the editor. */
 		void setLastOpenScene(const String& value) { mLastOpenScene = value; markAsDirty(); }
 
 	private:
@@ -36,4 +34,6 @@ namespace BansheeEngine
 		static RTTITypeBase* getRTTIStatic();
 		virtual RTTITypeBase* getRTTI() const override;
 	};
+
+	/** @} */
 }

+ 8 - 0
BansheeEditor/Include/BsSceneGrid.h

@@ -9,6 +9,11 @@
 
 namespace BansheeEngine
 {
+	/** @cond INTERNAL */
+	/** @addtogroup Scene-Editor
+	 *  @{
+	 */
+
 	class SceneGridCore;
 
 	/** Determines how is the scene grid drawn. */
@@ -129,4 +134,7 @@ namespace BansheeEngine
 		static const float FADE_OUT_START;
 		static const float FADE_OUT_END;
 	};
+
+	/** @} */
+	/** @endcond */
 }

+ 48 - 62
BansheeEditor/Include/BsScenePicking.h

@@ -9,16 +9,16 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup Scene-Editor
+	 *  @{
+	 */
+
 	class ScenePickingCore;
 
-	/**
-	 * @brief	Handles picking of scene objects with a pointer in scene view.
-	 */
+	/**	Handles picking of scene objects with a pointer in scene view. */
 	class BS_ED_EXPORT ScenePicking : public Module<ScenePicking>
 	{
-		/**
-		 * @brief	Contains information about a single pickable item (mesh).
-		 */
+		/**	Contains information about a single pickable item (mesh). */
 		struct RenderablePickData
 		{
 			SPtr<MeshCore> mesh;
@@ -34,28 +34,25 @@ namespace BansheeEngine
 		~ScenePicking();
 
 		/**
-		 * @brief	Attempts to find a single nearest scene object under the provided position and area.
-		 *
-		 * @param	cam			Camera to perform the picking from.
-		 * @param	position	Pointer position relative to the camera viewport, in pixels.
-		 * @param	area		Width/height of the checked area in pixels. Use (1, 1) if you want the
-		 *						exact position under the pointer.
+		 * Attempts to find a single nearest scene object under the provided position and area.
 		 *
-		 * @return	Nearest SceneObject under the provided area, or an empty handle if no object is found.
+		 * @param[in]	cam			Camera to perform the picking from.
+		 * @param[in]	position	Pointer position relative to the camera viewport, in pixels.
+		 * @param[in]	area		Width/height of the checked area in pixels. Use (1, 1) if you want the exact position
+		 *							under the pointer.
+		 * @return					Nearest SceneObject under the provided area, or an empty handle if no object is found.
 		 */
 		HSceneObject pickClosestObject(const CameraPtr& cam, const Vector2I& position, const Vector2I& area);
 
-
 		/**
-		 * @brief	Attempts to find all scene objects under the provided position and area. This does not mean
-		 *			objects occluded by other objects.
-		 *
-		 * @param	cam			Camera to perform the picking from.
-		 * @param	position	Pointer position relative to the camera viewport, in pixels.
-		 * @param	area		Width/height of the checked area in pixels. Use (1, 1) if you want the
-		 *						exact position under the pointer.
+		 * Attempts to find all scene objects under the provided position and area. This does not mean objects occluded by
+		 * other objects.
 		 *
-		 * @return	A list of SceneObject%s under the provided area.
+		 * @param[in]	cam			Camera to perform the picking from.
+		 * @param[in]	position	Pointer position relative to the camera viewport, in pixels.
+		 * @param[in]	area		Width/height of the checked area in pixels. Use (1, 1) if you want the exact position
+		 *							under the pointer.
+		 * @return					A list of SceneObject%s under the provided area.
 		 */
 		Vector<HSceneObject> pickObjects(const CameraPtr& cam, const Vector2I& position, const Vector2I& area);
 
@@ -64,30 +61,21 @@ namespace BansheeEngine
 
 		typedef Set<RenderablePickData, std::function<bool(const RenderablePickData&, const RenderablePickData&)>> RenderableSet;
 
-		/**
-		 * @brief	Encodes a pickable object identifier to a unique color.
-		 */
+		/**	Encodes a pickable object identifier to a unique color. */
 		static Color encodeIndex(UINT32 index);
 
-		/**
-		 * @brief	Decodes a color into a unique object identifier. Color should
-		 *			have initially been encoded with ::encodeIndex.
-		 */
+		/** Decodes a color into a unique object identifier. Color should have initially been encoded with encodeIndex(). */
 		static UINT32 decodeIndex(Color color);
 
 		ScenePickingCore* mCore;
 	};
 
-	/**
-	 * @brief	Core thread version of the ScenePicking manager. Handles
-	 *			actual rendering.
-	 */
+	/** @cond INTERNAL */
+
+	/** Core thread version of the ScenePicking manager. Handles actual rendering. */
 	class ScenePickingCore
 	{
-		/**
-		 * @brief	A list of materials and their parameters to be used for rendering
-		 *			of pickable objects.
-		 */
+		/** A list of materials and their parameters to be used for rendering of pickable objects. */
 		struct MaterialData
 		{
 			SPtr<MaterialCore> mMatPickingCore;
@@ -106,41 +94,36 @@ namespace BansheeEngine
 		};
 
 	public:
-		/**
-		 * @brief	Initializes the manager. Must be called right after construction.
-		 */
+		/**	Initializes the manager. Must be called right after construction. */
 		void initialize();
 
-		/**
-		 * @brief	Destroys the manager. Must be called right before destruction.
-		 */
+		/**	Destroys the manager. Must be called right before destruction. */
 		void destroy();
 
 		/**
-		 * @brief	Sets up the viewport, materials and their parameters as needed for picking. Also renders
-		 *			all the provided renderable objects. Must be followed by ::corePickingEnd. You may call other methods
-		 *			after this one, but you must ensure they render proper unique pickable colors that can be resolved
-		 *			to SceneObject%s later.
+		 * Sets up the viewport, materials and their parameters as needed for picking. Also renders all the provided
+		 * renderable objects. Must be followed by corePickingEnd(). You may call other methods after this one, but you must
+		 * ensure they render proper unique pickable colors that can be resolved to SceneObject%s later.
 		 *
-		 * @param	target			Render target to render to.
-		 * @param	viewportArea	Normalized area of the render target to render in.
-		 * @param	renderables		A set of pickable Renderable objects to render.
-		 * @param	position		Position of the pointer where to pick objects, in pixels relative to viewport.
-		 * @param	area			Width/height of the area to pick objects, in pixels.
+		 * @param[in]	target			Render target to render to.
+		 * @param[in]	viewportArea	Normalized area of the render target to render in.
+		 * @param[in]	renderables		A set of pickable Renderable objects to render.
+		 * @param[in]	position		Position of the pointer where to pick objects, in pixels relative to viewport.
+		 * @param[in]	area			Width/height of the area to pick objects, in pixels.
 		 */
-		void corePickingBegin(const SPtr<RenderTargetCore>& target, const Rect2& viewportArea, const ScenePicking::RenderableSet& renderables,
-			const Vector2I& position, const Vector2I& area);
+		void corePickingBegin(const SPtr<RenderTargetCore>& target, const Rect2& viewportArea, 
+			const ScenePicking::RenderableSet& renderables, const Vector2I& position, const Vector2I& area);
 		
 		/**
-		 * @brief	Ends picking operation started by ::corePickingBegin. Render target is resolved and objects in the picked area
-		 *			are returned.
+		 * Ends picking operation started by ::corePickingBegin. Render target is resolved and objects in the picked area
+		 * are returned.
 		 *
-		 * @param	target			Render target we're rendering to.
-		 * @param	viewportArea	Normalized area of the render target we're rendering in.
-		 * @param	position		Position of the pointer where to pick objects, in pixels relative to viewport.
-		 * @param	area			Width/height of the area to pick objects, in pixels.
-		 * @param	asyncOp			Async operation handle that when complete will contain the results of the picking
-		 *							operation in the form of Vector<SelectedObject>.
+		 * @param[in]	target			Render target we're rendering to.
+		 * @param[in]	viewportArea	Normalized area of the render target we're rendering in.
+		 * @param[in]	position		Position of the pointer where to pick objects, in pixels relative to viewport.
+		 * @param[in]	area			Width/height of the area to pick objects, in pixels.
+		 * @param[out]	asyncOp			Async operation handle that when complete will contain the results of the picking
+		 *								operation in the form of Vector<SelectedObject>.
 		 */
 		void corePickingEnd(const SPtr<RenderTargetCore>& target, const Rect2& viewportArea, const Vector2I& position,
 			const Vector2I& area, AsyncOp& asyncOp);
@@ -152,4 +135,7 @@ namespace BansheeEngine
 
 		MaterialData mMaterialData[3];
 	};
+
+	/** @endcond */
+	/** @} */
 }

+ 28 - 46
BansheeEditor/Include/BsSelection.h

@@ -7,9 +7,13 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup Scene-Editor
+	 *  @{
+	 */
+
 	/**
-	 * @brief	Handles scene object and resource selection. Triggeres events when selection changes and allows the 
-	 *			user to query current selection state.
+	 * Handles scene object and resource selection. Triggeres events when selection changes and allows the user to query
+	 * current selection state.
 	 */
 	class BS_ED_EXPORT Selection : public Module<Selection>
 	{
@@ -17,89 +21,65 @@ namespace BansheeEngine
 		Selection();
 		~Selection();
 
-		/**
-		 * @brief	Returns a currently selected set of scene objects.
-		 */
+		/**	Returns a currently selected set of scene objects. */
 		const Vector<HSceneObject>& getSceneObjects() const;
 
-		/**
-		 * @brief	Sets a new set of scene objects to select, replacing the old ones.
-		 */
+		/**	Sets a new set of scene objects to select, replacing the old ones. */
 		void setSceneObjects(const Vector<HSceneObject>& sceneObjects);
 
-		/**
-		 * @brief	Returns a currently selected set of resource paths.
-		 */
+		/**	Returns a currently selected set of resource paths. */
 		const Vector<Path>& getResourcePaths() const;
 
-		/**
-		 * @brief	Sets a new set of resource paths to select, replacing the old ones.
-		 */
+		/**	Sets a new set of resource paths to select, replacing the old ones. */
 		void setResourcePaths(const Vector<Path>& paths);
 
-		/**
-		 * @brief	Returns a currently selected set of resource UUIDs.
-		 */
+		/**	Returns a currently selected set of resource UUIDs. */
 		Vector<String> getResourceUUIDs() const;
 
-		/**
-		 * @brief	Sets a new set of resource UUIDs to select, replacing the old ones.
-		 */
+		/**	Sets a new set of resource UUIDs to select, replacing the old ones. */
 		void setResourceUUIDs(const Vector<String>& UUIDs);
 
-		/**
-		 * @brief	Deselects all currently selected scene objects.
-		 */
+		/**	Deselects all currently selected scene objects. */
 		void clearSceneSelection();
 
-		/**
-		 * @brief	Deselects all currently selected resources.
-		 */
+		/**	Deselects all currently selected resources. */
 		void clearResourceSelection();
 
-		/**
-		 * @brief	Pings the scene object, highlighting it in its respective editors.
-		 */
+		/**	Pings the scene object, highlighting it in its respective editors. */
 		void ping(const HSceneObject& sceneObject);
 
 		/**
-		 * @brief	Pings the resource, highlighting it in its respective editors.
+		 * Pings the resource, highlighting it in its respective editors.
 		 * 		
-		 * @param	resourcePath	Resource path relative to the project library resources folder.
+		 * @param[in]	resourcePath	Resource path relative to the project library resources folder.
 		 */
 		void ping(const Path& resourcePath);
 
 		/**
-		 * @brief	Triggered whenever scene object or resource selection changes. The provided
-		 *			parameters will contain the newly selected objects/resource paths.
+		 * Triggered whenever scene object or resource selection changes. The provided parameters will contain the newly
+		 * selected objects/resource paths.
 		 */
 		Event<void(const Vector<HSceneObject>&, const Vector<Path>&)> onSelectionChanged; 
 
 		/**
-		 * @brief	Triggered when a scene object ping is requested. Ping usually means the
-		 *			object will be highlighted in its respective editors.
+		 * Triggered when a scene object ping is requested. Ping usually means the object will be highlighted in its
+		 * respective editors.
 		 */
 		Event<void(const HSceneObject&)> onSceneObjectPing; 
 
 		/**
-		 * @brief	Triggered when a resource ping is requested. Ping usually means the
-		 *			object will be highlighted in its respective editors.
+		 * Triggered when a resource ping is requested. Ping usually means the object will be highlighted in its respective
+		 * editors.
 		 */
 		Event<void(const Path&)> onResourcePing; 
 	private:
-		/**
-		 * @brief	Triggered when the scene object selection in the scene tree view changes.
-		 */
+		/**	Triggered when the scene object selection in the scene tree view changes. */
 		void sceneSelectionChanged();
 
-		/**
-		 * @brief	Triggered when the resource selection in the resource tree view changes.
-		 */
+		/**	Triggered when the resource selection in the resource tree view changes. */
 		void resourceSelectionChanged();
 
-		/**
-		 * @brief	Updates scene and resource tree views with new selection.
-		 */
+		/**	Updates scene and resource tree views with new selection. */
 		void updateTreeViews();
 
 		Vector<HSceneObject> mSelectedSceneObjects;
@@ -108,4 +88,6 @@ namespace BansheeEngine
 		HMessage mSceneSelectionChangedConn;
 		HMessage mResourceSelectionChangedConn;
 	};
+
+	/** @} */
 }

+ 22 - 29
BansheeEditor/Include/BsSelectionRenderer.h

@@ -9,16 +9,17 @@
 
 namespace BansheeEngine
 {
+	/** @cond INTERNAL */
+	/** @addtogroup Scene-Editor
+	 *  @{
+	 */
+
 	class SelectionRendererCore;
 
-	/**
-	 * @brief	Handles rendering of the selected SceneObject%s overlay.
-	 */
+	/**	Handles rendering of the selected SceneObject%s overlay. */
 	class BS_ED_EXPORT SelectionRenderer
 	{
-		/**
-		 * @brief	Contains data about a selected mesh.
-		 */
+		/**	Contains data about a selected mesh. */
 		struct ObjectData
 		{
 			SPtr<MeshCoreBase> mesh;
@@ -29,37 +30,30 @@ namespace BansheeEngine
 		SelectionRenderer();
 		~SelectionRenderer();
 
-		/**
-		 * @brief	Called once per frame. Updates the overlay depending on current selection.
-		 *
-		 * @note	Internal method.
-		 */
+		/** Called once per frame. Updates the overlay depending on current selection. */
 		void update(const CameraPtr& camera);
 
 	private:
 		friend class SelectionRendererCore;
 
 		/**
-		 * @brief	Initializes the core thread counterpart of the selection renderer.
+		 * Initializes the core thread counterpart of the selection renderer.
 		 *
-		 * @param	mat	Material used for selection rendering.
+		 * @param[in]	mat		Material used for selection rendering.
 		 */
 		void initializeCore(const SPtr<MaterialCore>& mat);
 
 		/**
-		 * @brief	Destroys the core thread counterpart of the selection renderer.
+		 * Destroys the core thread counterpart of the selection renderer.
 		 *
-		 * @param	core	Previously constructed core thread selection renderer instance.
+		 * @param[in]	core	Previously constructed core thread selection renderer instance.
 		 */
 		void destroyCore(SelectionRendererCore* core);
 
 		std::atomic<SelectionRendererCore*> mCore;
 	};
 
-	/**
-	 * @brief	Core thread version of the selection renderer, that handles
-	 *			actual rendering.
-	 */
+	/** Core thread version of the selection renderer, that handles actual rendering. */
 	class SelectionRendererCore
 	{
 		friend class SelectionRenderer;
@@ -72,24 +66,20 @@ namespace BansheeEngine
 
 	private:
 		/**
-		 * @brief	Initializes the selection renderer. Should be called right
-		 *			after construction.
+		 * Initializes the selection renderer. Should be called right after construction.
 		 *
-		 * @param	mat	Material used for selection rendering.
+		 * @param[in]	mat	Material used for selection rendering.
 		 */
 		void initialize(const SPtr<MaterialCore>& mat);
 
-		/**
-		 * @brief	Triggered by the Renderer when the overlay should be rendered.
-		 */
+		/** Triggered by the Renderer when the overlay should be rendered. */
 		void render();
 
 		/**
-		 * @brief	Updates the internal data that determines what will be rendered on the next
-		 *			::render call.
+		 * Updates the internal data that determines what will be rendered on the next render() call.
 		 *
-		 * @param	camera	Camera to render the selection overlay in.
-		 * @param	objects	A set of objects to render with the selection overlay.
+		 * @param[in]	camera		Camera to render the selection overlay in.
+		 * @param[in]	objects		A set of objects to render with the selection overlay.
 		 */
 		void updateData(const SPtr<CameraCore>& camera, const Vector<SelectionRenderer::ObjectData>& objects);
 
@@ -103,4 +93,7 @@ namespace BansheeEngine
 
 		static const Color SELECTION_COLOR;
 	};
+
+	/** @} */
+	/** @endcond */
 }

+ 19 - 46
BansheeEditor/Include/BsSettings.h

@@ -7,83 +7,54 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Contains a serializable set of generic key-value pairs.
+	/** @addtogroup Settings
+	 *  @{
 	 */
+
+	/**	Contains a serializable set of generic key-value pairs. */
 	class BS_ED_EXPORT Settings : public IReflectable
 	{
 	public:
 		Settings();
 
-		/**
-		 * @brief	Adds or updates a property key/value pair with a floating point value.
-		 */
+		/**	Adds or updates a property key/value pair with a floating point value. */
 		void setFloat(const String& name, float value);
 
-		/**
-		 * @brief	Adds or updates a property key/value pair with a signed integer value.
-		 */
+		/**	Adds or updates a property key/value pair with a signed integer value. */
 		void setInt(const String& name, INT32 value);
 
-		/**
-		 * @brief	Adds or updates a property key/value pair with a boolean value.
-		 */
+		/**	Adds or updates a property key/value pair with a boolean value. */
 		void setBool(const String& name, bool value);
 
-		/**
-		 * @brief	Adds or updates a property key/value pair with a string value.
-		 */
+		/**	Adds or updates a property key/value pair with a string value. */
 		void setString(const String& name, const WString& value);
 
-		/**
-		 * @brief	Returns the floating point value of the specified key, or the default value
-		 *			if such key cannot be found.
-		 */
+		/** Returns the floating point value of the specified key, or the default value if such key cannot be found. */
 		float getFloat(const String& name, float defaultValue = 0.0f);
 
-		/**
-		 * @brief	Returns the integer point value of the specified key, or the default value
-		 *			if such key cannot be found.
-		 */
+		/** Returns the integer point value of the specified key, or the default value if such key cannot be found. */
 		INT32 getInt(const String& name, INT32 defaultValue = 0);
 
-		/**
-		 * @brief	Returns the boolean point value of the specified key, or the default value
-		 *			if such key cannot be found.
-		 */
+		/** Returns the boolean point value of the specified key, or the default value if such key cannot be found. */
 		bool getBool(const String& name, bool defaultValue = false);
 
-		/**
-		 * @brief	Returns the string point value of the specified key, or the default value
-		 *			if such key cannot be found.
-		 */
+		/** Returns the string point value of the specified key, or the default value if such key cannot be found. */
 		WString getString(const String& name, const WString& defaultValue = StringUtil::WBLANK);
 
-		/**
-		 * @brief	Returns true if the key with the specified name exists.
-		 */
+		/**	Returns true if the key with the specified name exists. */
 		bool hasKey(const String& name);
 
-		/**
-		 * @brief	Deletes a key with the specified name.
-		 */
+		/**	Deletes a key with the specified name. */
 		void deleteKey(const String& name);
 
-		/**
-		 * @brief	Deletes all key/value pairs.
-		 */
+		/**	Deletes all key/value pairs. */
 		void deleteAllKeys();
 
-		/**
-		 * @brief	Returns a hash value that may be used for checking if any internal settings were
-		 *			modified.
-		 */
+		/**	Returns a hash value that may be used for checking if any internal settings were modified. */
 		UINT32 getHash() const { return mHash; }
 
 	protected:
-		/**
-		 * @brief	Marks the object as dirty so that outside objects know when to update.
-		 */
+		/**	Marks the object as dirty so that outside objects know when to update. */
 		void markAsDirty() const { mHash++; }
 
 		Map<String, float> mFloatProperties;
@@ -101,4 +72,6 @@ namespace BansheeEngine
 		static RTTITypeBase* getRTTIStatic();
 		virtual RTTITypeBase* getRTTI() const override;
 	};
+
+	/** @} */
 }

+ 26 - 43
BansheeEditor/Include/BsUndoRedo.h

@@ -7,14 +7,15 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Provides functionality to undo or redo recently performed operations in the editor.
+	/** @addtogroup UndoRedo
+	 *  @{
 	 */
+
+	/**	Provides functionality to undo or redo recently performed operations in the editor. */
 	class BS_ED_EXPORT UndoRedo : public Module<UndoRedo>
 	{
 		/**
-		 * @brief	Contains data about a single undo/redo group.
-		 *			Groups allow you to create context sensitive undo/redo operations.
+		 * Contains data about a single undo/redo group. Groups allow you to create context sensitive undo/redo operations.
 		 */
 		struct GroupData
 		{
@@ -26,78 +27,58 @@ namespace BansheeEngine
 		UndoRedo();
 		~UndoRedo();
 
-		/**
-		 * @brief	Executes the last command on the undo stack, undoing its operations.
-		 */
+		/**	Executes the last command on the undo stack, undoing its operations. */
 		void undo();
 
-		/**
-		 * @brief	Executes the last command on the redo stack (last command we called undo on), 
-		 *			re-applying its operation.
-		 */
+		/** Executes the last command on the redo stack (last command we called undo on), re-applying its operation. */
 		void redo();
 
 		/**
-		 * @brief	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.
+		 * 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.
+		 * 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	name	Unique name for the group.
+		 * @param[in]	name	Unique name for the group.
 		 */
 		void pushGroup(const String& name);
 
 		/**
-		 * @brief	Removes all the command registered to the current undo/redo group.
+		 * Removes all the command registered to the current undo/redo group.
 		 *
-		 * @param	name	Unique name for the group.
+		 * @param[in]	name	Unique name for the group.
 		 */
 		void popGroup(const String& name);
 
-		/**
-		 * @brief	Registers a new undo command.
-		 */
+		/**	Registers a new undo command. */
 		void registerCommand(EditorCommand* command);
 
-		/**
-		 * @brief	Returns the unique identifier for the command on top of the undo stack.
-		 */
+		/**	Returns the unique identifier for the command on top of the undo stack. */
 		UINT32 getTopCommandId() const;
 
 		/**
-		 * @brief	Removes a command from the undo/redo list, without executing it.
+		 * Removes a command from the undo/redo list, without executing it.
 		 *
-		 * @param	id	Identifier of the command returned by ::getTopCommandIdx.
+		 * @param[in]	id	Identifier of the command returned by ::getTopCommandIdx.
 		 */
 		void popCommand(UINT32 id);
 
-		/**
-		 * @brief	Resets the undo/redo stacks.
-		 */
+		/**	Resets the undo/redo stacks. */
 		void clear();
 
 	private:
-		/**
-		 * @brief	Removes the last undo command from the undo stack, and returns it.
-		 */
+		/**	Removes the last undo command from the undo stack, and returns it. */
 		EditorCommand* removeLastFromUndoStack();
 
-		/**
-		 * @brief	Adds a new command to the undo stack.
-		 */
+		/**	Adds a new command to the undo stack. */
 		void addToUndoStack(EditorCommand* command);
 
-		/**
-		 * @brief	Removes all entries from the undo stack.
-		 */
+		/**	Removes all entries from the undo stack. */
 		void clearUndoStack();
 
-		/**
-		 * @brief	Removes all entries from the redo stack.
-		 */
+		/**	Removes all entries from the redo stack. */
 		void clearRedoStack();
 
 		static const UINT32 MAX_STACK_ELEMENTS;
@@ -115,4 +96,6 @@ namespace BansheeEngine
 
 		Stack<GroupData> mGroups;
 	};
+
+	/** @} */
 }

+ 0 - 2
BansheeEngine/Include/BsApplication.h

@@ -8,7 +8,6 @@
 
 namespace BansheeEngine
 {
-	/** @cond INTERNAL */
 	/** @addtogroup Application-Engine
 	 *  @{
 	 */
@@ -96,5 +95,4 @@ namespace BansheeEngine
 	BS_EXPORT Application& gApplication();
 
 	/** @} */
-	/** @endcond */
 }

+ 18 - 41
BansheeFBXImporter/Include/BsFBXImportData.h

@@ -11,9 +11,11 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Options that control FBX import
+	/** @addtogroup FBX
+	 *  @{
 	 */
+
+	/**	Options that control FBX import */
 	struct FBXImportOptions
 	{
 		bool importAnimation = true;
@@ -26,9 +28,7 @@ namespace BansheeEngine
 		bool animResample = false;
 	};
 
-	/**
-	 * @brief	Represents a single node in the FBX transform hierarchy.
-	 */
+	/**	Represents a single node in the FBX transform hierarchy. */
 	struct FBXImportNode
 	{
 		~FBXImportNode();
@@ -40,9 +40,7 @@ namespace BansheeEngine
 		Vector<FBXImportNode*> children;
 	};
 
-	/**
-	 * @brief	Contains geometry from one blend shape frame.
-	 */
+	/**	Contains geometry from one blend shape frame. */
 	struct FBXBlendShapeFrame
 	{
 		Vector<Vector3> positions;
@@ -53,28 +51,21 @@ namespace BansheeEngine
 		float weight;
 	};
 
-	/**
-	 * @brief	Contains all geometry for a single blend shape.
-	 */
+	/**	Contains all geometry for a single blend shape. */
 	struct FBXBlendShape
 	{
 		String name;
 		Vector<FBXBlendShapeFrame> frames;
 	};
 
-	/**
-	 * @brief	Contains data about a single bone in a skinned mesh.
-	 */
+	/**	Contains data about a single bone in a skinned mesh. */
 	struct FBXBone
 	{
 		FBXImportNode* node;
 		Matrix4 bindPose;
 	};
 
-	/**
-	 * @brief	Contains a set of bone weights and indices for a single
-	 *			vertex, used in a skinned mesh.
-	 */
+	/** Contains a set of bone weights and indices for a single vertex, used in a skinned mesh. */
 	struct FBXBoneInfluence
 	{
 		FBXBoneInfluence()
@@ -91,9 +82,8 @@ namespace BansheeEngine
 	};
 
 	/**
-	 * @brief	Represents a single frame in an animation curve. Contains
-	 *			a value at a specific time as well as the in and out tangents
-	 *			at that position.
+	 * Represents a single frame in an animation curve. Contains a value at a specific time as well as the in and out 
+	 * tangents at that position.
 	 */
 	struct FBXKeyFrame
 	{
@@ -103,10 +93,7 @@ namespace BansheeEngine
 		float outTangent;
 	};
 
-	/**
-	 * @brief	Curve with a set of key frames used for animation
-	 *			of a single value.
-	 */
+	/**	Curve with a set of key frames used for animation of a single value. */
 	struct FBXAnimationCurve
 	{
 		Vector<FBXKeyFrame> keyframes;
@@ -114,9 +101,7 @@ namespace BansheeEngine
 		float evaluate(float time);
 	};
 
-	/**
-	 * @brief	Animation curves required to animate a single bone.
-	 */
+	/**	Animation curves required to animate a single bone. */
 	struct FBXBoneAnimation
 	{
 		FBXImportNode* node;
@@ -126,19 +111,14 @@ namespace BansheeEngine
 		FBXAnimationCurve scale[3];
 	};
 
-	/**
-	 * @brief	Animation curve required to animate a blend shape.
-	 */
+	/**	Animation curve required to animate a blend shape. */
 	struct FBXBlendShapeAnimation
 	{
 		String blendShape;
 		FBXAnimationCurve curve;
 	};
 
-	/**
-	 * @brief	Animation clip containing a set of bone or blend shape
-	 *			animations.
-	 */
+	/** Animation clip containing a set of bone or blend shape animations. */
 	struct FBXAnimationClip
 	{
 		String name;
@@ -149,9 +129,7 @@ namespace BansheeEngine
 		Vector<FBXBlendShapeAnimation> blendShapeAnimations;
 	};
 
-	/**
-	 * @brief	Imported mesh data.
-	 */
+	/**	Imported mesh data. */
 	struct FBXImportMesh
 	{
 		FbxMesh* fbxMesh;
@@ -177,9 +155,7 @@ namespace BansheeEngine
 		Vector<FBXImportNode*> referencedBy;
 	};
 
-	/**
-	 * @brief	Scene information used and modified during FBX import.
-	 */
+	/**	Scene information used and modified during FBX import. */
 	struct FBXImportScene
 	{
 		FBXImportScene();
@@ -194,4 +170,5 @@ namespace BansheeEngine
 		Vector<FBXAnimationClip> clips;
 	};
 
+	/** @} */
 }

+ 6 - 0
BansheeFBXImporter/Include/BsFBXImporter.h

@@ -11,6 +11,10 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup FBX
+	 *  @{
+	 */
+
 	/** Importer implementation that handles FBX/OBJ/DAE/3DS file import by using the FBX SDK. */
 	class BS_FBX_EXPORT FBXImporter : public SpecificImporter
 	{
@@ -123,4 +127,6 @@ namespace BansheeEngine
 		Vector<WString> mExtensions;
 		FbxManager* mFBXManager;
 	};
+
+	/** @} */
 }

+ 8 - 0
BansheeFBXImporter/Include/BsFBXPrerequisites.h

@@ -20,6 +20,14 @@
 #    define BS_FBX_EXPORT
 #endif
 
+/** @addtogroup Plugins/
+
+/** @defgroup FBX FBX
+ *	Mesh importer for FBX file format.
+ */
+
+/** @} */
+
 #define FBXSDK_NEW_API
 #include <fbxsdk.h>
 

+ 18 - 23
BansheeFBXImporter/Include/BsFBXUtility.h

@@ -7,52 +7,47 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Various helper methods to use during FBX import.
+	/** @addtogroup FBX
+	 *  @{
 	 */
+
+	/**	Various helper methods to use during FBX import. */
 	class FBXUtility
 	{
 	public:
-		/**
-		 * @brief	Calculates per-index normals based on the provided smoothing groups.
-		 */
+		/**	Calculates per-index normals based on the provided smoothing groups. */
 		static void normalsFromSmoothing(const Vector<Vector3>& positions, const Vector<int>& indices,
 			const Vector<int>& smoothing, Vector<Vector3>& normals);
 
 		/**
-		 * @brief	Find vertices in the source mesh that have different attributes but have the same
-		 *			indexes, and splits them into two or more vertexes. Mesh with split vertices
-		 *			is output to "dest".
+		 * Find vertices in the source mesh that have different attributes but have the same indexes, and splits them into
+		 * two or more vertexes. Mesh with split vertices is output to @p dest.
 		 *
-		 * @param	source	Source mesh to perform the split on. It's expected the position
-		 *					values are per-vertex, and all other attributes are per-index.
-		 * @param	dest	Output mesh with split vertices. Both vertex positions and
-		 *					attributes are per-vertex.
+		 * @param[in]	source	Source mesh to perform the split on. It's expected the position values are per-vertex, and
+		 *						all other attributes are per-index.
+		 * @param[in]	dest	Output mesh with split vertices. Both vertex positions and attributes are per-vertex.
 		 */
 		static void splitVertices(const FBXImportMesh& source, FBXImportMesh& dest);
 
-		/**
-		 * @brief	Flips the triangle window order for all the triangles in the mesh.
-		 */
+		/**	Flips the triangle window order for all the triangles in the mesh. */
 		static void flipWindingOrder(FBXImportMesh& input);
 
 	private:
-		/**
-		 * @brief	Checks if vertex attributes at the specified indexes are similar enough, or
-		 *			does the vertex require a split.
-		 */
+		/** Checks if vertex attributes at the specified indexes are similar enough, or does the vertex require a split. */
 		static bool needsSplitAttributes(const FBXImportMesh& meshA, int idxA, const FBXImportMesh& meshB, int idxB);
 
 		/**
-		 * @brief	Copies vertex attributes from the source mesh at the specified index, 
-		 *			to the destination mesh at the specified index.
+		 * Copies vertex attributes from the source mesh at the specified index, to the destination mesh at the specified
+		 * index.
 		 */
 		static void copyVertexAttributes(const FBXImportMesh& srcMesh, int srcIdx, FBXImportMesh& destMesh, int dstIdx);
 
 		/**
-		 * @brief	Adds a new vertex to the destination mesh and copies the vertex from the source mesh at the
-		 *			vertex index, and vertex attributes from the source mesh at the source index.
+		 * Adds a new vertex to the destination mesh and copies the vertex from the source mesh at the vertex index, and
+		 * vertex attributes from the source mesh at the source index.
 		 */
 		static void addVertex(const FBXImportMesh& srcMesh, int srcIdx, int srcVertex, FBXImportMesh& destMesh);
 	};
+
+	/** @} */
 }

+ 10 - 15
BansheeFontImporter/Include/BsFontImporter.h

@@ -8,38 +8,33 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Importer implementation that handles font import 
-	 *			by using the FreeType library.
+	/** @addtogroup Font
+	 *  @{
 	 */
+
+	/** Importer implementation that handles font import by using the FreeType library. */
 	class BS_FONT_EXPORT FontImporter : public SpecificImporter
 	{
 	public:
 		FontImporter();
 		virtual ~FontImporter();
 
-		/**
-		 * @copydoc	SpecificImporter::isExtensionSupported
-		 */
+		/** @copydoc SpecificImporter::isExtensionSupported */
 		virtual bool isExtensionSupported(const WString& ext) const override;
 
-		/**
-		 * @copydoc	SpecificImporter::isMagicNumberSupported
-		 */
+		/** @copydoc SpecificImporter::isMagicNumberSupported */
 		virtual bool isMagicNumberSupported(const UINT8* magicNumPtr, UINT32 numBytes) const override;
 
-		/**
-		 * @copydoc	SpecificImporter::import
-		 */
+		/** @copydoc SpecificImporter::import */
 		virtual ResourcePtr import(const Path& filePath, ConstImportOptionsPtr importOptions) override;
 
-		/**
-		 * @copydoc SpecificImporter::createImportOptions
-		 */
+		/** @copydoc SpecificImporter::createImportOptions */
 		virtual ImportOptionsPtr createImportOptions() const override;
 	private:
 		Vector<WString> mExtensions;
 
 		const static int MAXIMUM_TEXTURE_SIZE = 2048;
 	};
+
+	/** @} */
 }

+ 9 - 1
BansheeFontImporter/Include/BsFontPrerequisites.h

@@ -18,4 +18,12 @@
 #    define BS_FONT_EXPORT  __attribute__ ((visibility("default")))
 #else
 #    define BS_FONT_EXPORT
-#endif
+#endif
+
+/** @addtogroup Plugins/
+
+/** @defgroup Font Font
+ *	FreeType importer for font file formats (TTF, OTF).
+ */
+
+/** @} */

+ 12 - 21
BansheeFreeImgImporter/Include/BsFreeImgImporter.h

@@ -8,10 +8,11 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Importer implementation that handles various import for various
-	 *			image formats using the FreeImg library.
+	/** @addtogroup FreeImg
+	 *  @{
 	 */
+
+	/** Importer implementation that handles various import for various image formats using the FreeImg library. */
 	class FreeImgImporter : public SpecificImporter
 	{
 		struct RawImageData;
@@ -20,37 +21,27 @@ namespace BansheeEngine
 		FreeImgImporter();
 		virtual ~FreeImgImporter();
 
-		/**
-		 * @copydoc	SpecificImporter::isExtensionSupported
-		 */
+		/** @copydoc SpecificImporter::isExtensionSupported */
 		virtual bool isExtensionSupported(const WString& ext) const override;
 
-		/**
-		 * @copydoc	SpecificImporter::isMagicNumberSupported
-		 */
+		/** @copydoc SpecificImporter::isMagicNumberSupported */
 		virtual bool isMagicNumberSupported(const UINT8* magicNumPtr, UINT32 numBytes) const override;
 
-		/**
-		 * @copydoc	SpecificImporter::import
-		 */
+		/** @copydoc SpecificImporter::import */
 		virtual ResourcePtr import(const Path& filePath, ConstImportOptionsPtr importOptions) override;
 
-		/**
-		 * @copydoc SpecificImporter::createImportOptions
-		 */
+		/** @copydoc SpecificImporter::createImportOptions */
 		virtual ImportOptionsPtr createImportOptions() const override;
 	private:
-		/**
-		 * @brief	Converts a magic number into an extension name.
-		 */
+		/**	Converts a magic number into an extension name. */
 		WString magicNumToExtension(const UINT8* magic, UINT32 maxBytes) const;
 
-		/**
-		 * @brief	Imports an image from the provided data stream.
-		 */
+		/**	Imports an image from the provided data stream. */
 		PixelDataPtr importRawImage(DataStreamPtr fileData);
 
 		Vector<WString> mExtensions;
 		UnorderedMap<WString, int> mExtensionToFID;
 	};
+
+	/** @} */
 }

+ 9 - 1
BansheeFreeImgImporter/Include/BsFreeImgPrerequisites.h

@@ -18,4 +18,12 @@
 #    define BS_FREEIMG_EXPORT  __attribute__ ((visibility("default")))
 #else
 #    define BS_FREEIMG_EXPORT
-#endif
+#endif
+
+/** @addtogroup Plugins/
+
+/** @defgroup FreeImg FreeImg
+ *	FreeImg importer for importing most popular image formats (e.g. PSD, PNG, JPG, etc.).
+ */
+
+/** @} */

+ 6 - 0
BansheeMono/Include/BsMonoArray.h

@@ -9,6 +9,10 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup Mono
+	 *  @{
+	 */
+
 	/** Helper class for creating and parsing managed arrays.*/
 	class BS_MONO_EXPORT ScriptArray
 	{
@@ -153,4 +157,6 @@ namespace BansheeEngine
 	private:
 		MonoArray* mInternal;
 	};
+
+	/** @} */
 }

+ 23 - 32
BansheeMono/Include/BsMonoAssembly.h

@@ -8,16 +8,15 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Contains information about a single Mono (i.e. managed) assembly
+	/** @addtogroup Mono
+	 *  @{
 	 */
+
+	/**	Contains information about a single Mono (i.e. managed) assembly. */
 	class BS_MONO_EXPORT MonoAssembly
 	{
 	public:
-		/**
-		 * @brief	Used for uniquely identifying a managed class, normally for use
-		 *			in containers.
-		 */
+		/**	Used for uniquely identifying a managed class, normally for use in containers. */
 		struct ClassId
 		{
 			struct Hash
@@ -41,30 +40,24 @@ namespace BansheeEngine
 	public:
 		virtual ~MonoAssembly();
 
-		/**
-		 * @brief	Returns the name of this assembly.
-		 */
+		/**	Returns the name of this assembly. */
 		const String& getName() const { return mName; }
 
 		/**
-	     * @brief	Attempts to find a managed class with the specified namespace and name
-		 *			in this assembly. Returns null if one cannot be found.
+	     * Attempts to find a managed class with the specified namespace and name in this assembly. Returns null if one
+		 * cannot be found.
 	     */
 		MonoClass* getClass(const String& namespaceName, const String& name) const;
 
-		/**
-		 * @brief	Converts an internal mono representation of a class into engine class.
-		 */
+		/**	Converts an internal mono representation of a class into engine class. */
 		MonoClass* getClass(::MonoClass* rawMonoClass) const;
 
-		/**
-		 * @brief	Returns a list of all classes in the assembly.
-		 */
+		/**	Returns a list of all classes in the assembly. */
 		const Vector<MonoClass*>& getAllClasses() const;
 
 		/**
-	     * @brief	Invokes a zero-parameter static method in the format
-		 *			"Class::Method". Used primarily for invoking an assembly entry point.
+	     * Invokes a zero-parameter static method in the format "Class::Method". Used primarily for invoking an assembly
+		 * entry point.
 	     */
 		void invoke(const String& functionName);
 
@@ -74,34 +67,30 @@ namespace BansheeEngine
 		MonoAssembly(const String& path, const String& name);
 
 		/**
-	     * @brief	Attempts to find a managed class with the specified namespace and name
-		 *			in this assembly. Registers a new class using the provided raw class if
-		 *			one cannot be found. Returns null provided raw class is null.
+	     * Attempts to find a managed class with the specified namespace and name in this assembly. Registers a new class
+		 * using the provided raw class if one cannot be found. Returns null provided raw class is null.
 	     */
 		MonoClass* getClass(const String& namespaceName, const String& name, ::MonoClass* rawMonoClass) const;
 
-		/**
-		 * @brief	Loads an assembly into the specified domain.
-		 */
+		/**	Loads an assembly into the specified domain. */
 		void load(MonoDomain* domain);
 
 		/**
-		 * @brief	Initializes an assembly from an internal mono image.
+		 * Initializes an assembly from an internal mono image.
 		 *
-		 * @note	Normally used for assemblies that were already loaded by the managed runtime
-		 *			as dependencies.
+		 * @note	
+		 * Normally used for assemblies that were already loaded by the managed runtime as dependencies.
 		 */
 		void loadFromImage(MonoImage* image);
 
 		/**
-		 * @brief	Unloads the assembly and all the types associated with it.
-		 *			Caller must ensure not to use any types from this assembly after
-		 *			it has been unloaded.
+		 * Unloads the assembly and all the types associated with it. Caller must ensure not to use any types from this
+		 * assembly after it has been unloaded.
 		 */
 		void unload();
 
 		/**
-	     * @brief	Returns true if the provided name represents a generic class.
+	     * Returns true if the provided name represents a generic class.
 		 *
 		 * @note	This method only analyzes the name to determine if it is in generic class format.
 	     */
@@ -120,4 +109,6 @@ namespace BansheeEngine
 		mutable bool mHaveCachedClassList;
 		mutable Vector<MonoClass*> mCachedClassList;
 	};
+
+	/** @} */
 }

+ 73 - 87
BansheeMono/Include/BsMonoClass.h

@@ -7,15 +7,14 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Contains information about a single Mono (i.e. managed) class.
+	/** @addtogroup Mono
+	 *  @{
 	 */
+
+	/**	Contains information about a single Mono (i.e. managed) class. */
 	class BS_MONO_EXPORT MonoClass
 	{
-		/**
-		 * @brief	Used for uniquely identifying a method in a managed class, normally for use
-		 *			in containers.
-		 */
+		/** Used for uniquely identifying a method in a managed class, normally for use in containers. */
 		struct MethodId
 		{
 			struct Hash
@@ -37,168 +36,153 @@ namespace BansheeEngine
 	public:
 		~MonoClass();
 
-		/**
-		 * @brief	Returns the namespace of this class.
-		 */
+		/**	Returns the namespace of this class. */
 		const String& getNamespace() const { return mNamespace; }
 
-		/**
-		 * @brief	Returns the type name of this class.
-		 */
+		/**	Returns the type name of this class. */
 		const String& getTypeName() const { return mTypeName; }
 
-		/**
-		 * @brief	Returns the full name (Namespace::TypeName) of this class.
-		 */
+		/**	Returns the full name (Namespace::TypeName) of this class. */
 		const String& getFullName() const { return mFullName; }
 
 		/**
-		 * @brief	Returns an object referencing a method with the specified name and number of parameters.
+		 * Returns an object referencing a method with the specified name and number of parameters.
 		 *			
-		 * @note	If the method is overloaded then you should use "getMethodExact". 
-		 *			Does not query base class methods.
-		 *			Returns null if method cannot be found.
+		 * @note	
+		 * If the method is overloaded then you should use getMethodExact(). 
+		 * Does not query base class methods.
+		 * Returns null if method cannot be found.
 		 */
 		MonoMethod* getMethod(const String& name, UINT32 numParams = 0) const;
 
 		/**
-		 * @brief	Returns an object referencing a field with the specified name.
-		 *			Does not query base class fields.
-		 *			Returns null if field cannot be found.
+		 * Returns an object referencing a field with the specified name.
+		 *
+		 * @note
+		 * Does not query base class fields.
+		 * Returns null if field cannot be found.
 		 */
 		MonoField* getField(const String& name) const;
 
 		/**
-		 * @brief	Returns an object referencing a property with the specified name.
-		 *			Does not query base class properties.
-		 *			Throws an exception if the property cannot be found.
+		 * Returns an object referencing a property with the specified name.
+		 *
+		 * @note
+		 * Does not query base class properties.
+		 * Throws an exception if the property cannot be found.
 		 */
 		MonoProperty& getProperty(const String& name);
 
 		/**
-		 * @brief	Returns an instance of an attribute of the specified "monoClass" that is part
-		 *			of this class. Returns null if this class type does not have that type of attribute.
+		 * Returns an instance of an attribute of the specified @p monoClass that is part of this class. Returns null if
+		 * this class type does not have that type of attribute.
 		 */
 		MonoObject* getAttribute(MonoClass* monoClass) const;
 
-		/**
-		 * @brief	Returns the base class of this class. Null if this class has no base.
-		 */
+		/**	Returns the base class of this class. Null if this class has no base. */
 		MonoClass* getBaseClass() const;
 
 		/**
-		 * @brief	Returns an object referencing a method, expects exact method name with parameters.
+		 * Returns an object referencing a method, expects exact method name with parameters.
 		 *			
-		 * @note	Does not query base class methods.
-		 *			Returns null if method cannot be found.
-		 *			Example: name = "CreateInstance", signature = "Vector2,int[]"
+		 * @note	
+		 * Does not query base class methods.
+		 * Returns null if method cannot be found.
+		 * Example: name = "CreateInstance", signature = "Vector2,int[]"
 		 */
 		MonoMethod* getMethodExact(const String& name, const String& signature) const;
 
 		/**
-		 * @brief	Returns all fields belonging to this class.
+		 * Returns all fields belonging to this class.
 		 *
 		 * @note	Be aware this will not include the fields of any base classes.
 		 */
 		const Vector<MonoField*>& getAllFields() const;
 
 		/**
-		 * @brief	Returns all methods belonging to this class.
+		 * Returns all methods belonging to this class.
 		 *
 		 * @note	Be aware this will not include the methods of any base classes.
 		 */
 		const Vector<MonoMethod*>& getAllMethods() const;
 
-		/**
-		 * @brief	Gets all attributes applied to this class.
-		 */
+		/**	Gets all attributes applied to this class. */
 		Vector<MonoClass*> getAllAttributes() const;
 
-		/**
-		 * @brief	Check if this class has an attribute of the type "monoClass".
-		 */
+		/**	Check if this class has an attribute of the type @p monoClass. */
 		bool hasAttribute(MonoClass* monoClass) const;
 
-		/**
-		 * @brief	Check if this class has a field with the specified name. Does not
-		 *			check base classes.
-		 */
+		/**	Check if this class has a field with the specified name. Does not check base classes. */
 		bool hasField(const String& name) const;
 
-		/**
-		 * @brief	Checks if this class is a sub class of the specified class.
-		 */
+		/**	Checks if this class is a sub class of the specified class. */
 		bool isSubClassOf(const MonoClass* monoClass) const;
 
-		/**
-		 * @brief	Checks is the provided object instance of this class' type.
-		 */
+		/**	Checks is the provided object instance of this class' type. */
 		bool isInstanceOfType(MonoObject* object) const;
 
 		/**
-		 * @brief	Shortcut for invoking a method on a class. Invokes a method with the provided name
-		 *			and number of parameters.
+		 * Shortcut for invoking a method on a class. Invokes a method with the provided name and number of parameters.
 		 *
-		 * @param	name		Name of the method to invoke (no parameter list or brackets.
-		 * @param	instance	Object instance on invoke the method on. Null if method is static.
-		 * @param	params		Array containing pointers to method parameters. Array length must be equal to number of parameters. 
-		 *						Can be null if method has no parameters. For value types parameters should be pointers to the values 
-		 *						and for reference types they should be pointers to MonoObject.
-		 * @param	numParams	Number of parameters the method accepts.
+		 * @param[in]	name		Name of the method to invoke (no parameter list or brackets.
+		 * @param[in]	instance	Object instance on invoke the method on. Null if method is static.
+		 * @param[in]	params		Array containing pointers to method parameters. Array length must be equal to number of
+		 *							parameters. Can be null if method has no parameters. For value types parameters should
+		 *							be pointers to the values and for reference types they should be pointers to MonoObject.
+		 * @param[in]	numParams	Number of parameters the method accepts.
 		 *
-		 * @note	You cannot use this to call overloaded methods that have the same number of parameters. Use "getMethodExact" and then
-		 *			invoke the method from the returned method object.
+		 * @note	
+		 * You cannot use this to call overloaded methods that have the same number of parameters. Use getMethodExact() and
+		 * then invoke the method from the returned method object.
 		 */
 		MonoObject* invokeMethod(const String& name, MonoObject* instance = nullptr, void** params = nullptr, UINT32 numParams = 0);
 
 		/**
-		 * @brief	Hooks up an internal call that will trigger the provided method callback when the managed method with the
-		 *			specified name is called. If name is not valid this will silently fail.
+		 * Hooks up an internal call that will trigger the provided method callback when the managed method with the 
+		 * specified name is called. If name is not valid this will silently fail.
 		 */
 		void addInternalCall(const String& name, const void* method);
 
 		/**
-		 * @brief	Returns the internal mono representation of the class.
-		 */
-		::MonoClass* _getInternalClass() const { return mClass; }
-
-		/**
-		 * @brief	Creates a new instance of this class and optionally constructs it.
-		 *			If you don't construct the instance then you should invoke the ".ctor" method manually
-		 *			afterwards.
+		 * Creates a new instance of this class and optionally constructs it. If you don't construct the instance then you
+		 * should invoke the ".ctor" method manually afterwards.
 		 */
 		MonoObject* createInstance(bool construct = true) const;
 
 		/**
-		 * @brief	Creates a new instance of this class and then constructs it using the constructor
-		 *			with the specified number of parameters.
+		 * Creates a new instance of this class and then constructs it using the constructor with the specified number of
+		 * parameters.
 		 *
-		 * @param	params		Array containing pointers to constructor parameters. Array length must be equal to number of parameters. 
-		 * @param	numParams	Number of parameters the constructor accepts.
+		 * @param[in]	params		Array containing pointers to constructor parameters. Array length must be equal to
+		 *							number of parameters. 
+		 * @param[in]	numParams	Number of parameters the constructor accepts.
 		 *
-		 * @note	If the class have multiple constructors with the same number of parameters use the other "createInstance" overload
-		 *			that allows you to provide exact signature.
+		 * @note	If the class have multiple constructors with the same number of parameters use the other 
+		 *			createInstance(const String&, void**) overload that allows you to provide exact signature.
 		 */
 		MonoObject* createInstance(void** params, UINT32 numParams);
 
 		/**
-		 * @brief	Creates a new instance of this class and then constructs it using the constructor
-		 *			with the specified signature.
+		 * Creates a new instance of this class and then constructs it using the constructor with the specified signature.
 		 *
-		 * @param	ctorSignature	Method signature. Example: "Vector2,int[]"
-		 * @param	params			Array containing pointers to constructor parameters. Array length must be equal to number of parameters. 
+		 * @param[in]	ctorSignature	Method signature. Example: "Vector2,int[]"
+		 * @param[in]	params			Array containing pointers to constructor parameters. Array length must be equal to
+		 *								number of parameters. 
 		 */
 		MonoObject* createInstance(const String& ctorSignature, void** params);
+
+		/**	Returns the internal mono representation of the class. */
+		::MonoClass* _getInternalClass() const { return mClass; }
 	private:
 		friend class MonoAssembly;
 
 		/**
-		 * @brief	Constructs a new mono class object.
+		 * Constructs a new mono class object.
 		 * 
-		 * @param	ns				Namespace the class belongs to.
-		 * @param	type			Type name of the class.
-		 * @param	monoClass		Internal mono class.
-		 * @param	parentAssembly	Assembly to which this class belongs.
+		 * @param[in]	ns				Namespace the class belongs to.
+		 * @param[in]	type			Type name of the class.
+		 * @param[in]	monoClass		Internal mono class.
+		 * @param[in]	parentAssembly	Assembly to which this class belongs.
 		 */
 		MonoClass(const String& ns, const String& type, ::MonoClass* monoClass, const MonoAssembly* parentAssembly);
 
@@ -218,4 +202,6 @@ namespace BansheeEngine
 		mutable bool mHasCachedMethods;
 		mutable Vector<MonoMethod*> mCachedMethodList;
 	};
+
+	/** @} */
 }

+ 25 - 33
BansheeMono/Include/BsMonoField.h

@@ -8,9 +8,11 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Returns the level of field visibility in the class.
+	/** @addtogroup Mono
+	 *  @{
 	 */
+
+	/**	Returns the level of field visibility in the class. */
 	enum class MonoFieldVisibility
 	{
 		Private,
@@ -21,67 +23,55 @@ namespace BansheeEngine
 	};
 
 	/**
-	 * @brief	Encapsulates information about a single Mono (i.e. managed) field
-	 *			belonging to some managed class. This object also allows you to set
-	 *			or retrieve values to/from specific instances containing the field.
+	 * Encapsulates information about a single Mono (i.e. managed) field belonging to some managed class. This object also
+	 * allows you to set or retrieve values to/from specific instances containing the field.
 	 */
 	class BS_MONO_EXPORT MonoField
 	{
 	public:
-		/**
-		 * @brief	Returns the name of the field.
-		 */
+		/**	Returns the name of the field. */
 		const String& getName() const { return mName; }
 
-		/**
-		 * @brief	Returns the class representing the type of data the field holds.
-		 */
+		/**	Returns the class representing the type of data the field holds. */
 		MonoClass* getType();
 
 		/**
-		 * @brief	Retrieves value currently set in the field on the specified object instance.
-		 *			If field is static object instance can be null. 
+		 * Retrieves value currently set in the field on the specified object instance. If field is static object instance
+		 * can be null. 
 		 *
-		 * @note	Value will be a pointer to raw data type for value types (e.g. int, float), and a MonoObject*
-		 *			for reference types.
+		 * @note	
+		 * Value will be a pointer to raw data type for value types (e.g. int, float), and a MonoObject* for reference types.
 		 */
 		void getValue(MonoObject* instance, void* outValue);
 
 		/**
-		 * @brief	Retrieves value currently set in the field on the specified object instance.
-		 *			If field is static object instance can be null. If returned value is a value
-		 *			type it will be boxed.
+		 * Retrieves value currently set in the field on the specified object instance. If field is static object instance
+		 * can be null. If returned value is a value type it will be boxed.
 		 */
 		MonoObject* getValueBoxed(MonoObject* instance);
 
 		/**
-		 * @brief	Sets a value for the field on the specified object instance.
-		 *			If field is static object instance can be null. 
+		 * Sets a value for the field on the specified object instance. If field is static object instance can be null. 
 		 *
-		 * @note	Value should be a pointer to raw data type for value types (e.g. int, float), and a MonoObject*
-		 *			for reference types.
+		 * @note	
+		 * Value should be a pointer to raw data type for value types (e.g. int, float), and a MonoObject* for reference 
+		 * types.
 		 */
 		void setValue(MonoObject* instance, void* value);
 
-		/**
-		 * @brief	Checks if field has an attribute of the specified type.
-		 */
+		/**	Checks if field has an attribute of the specified type. */
 		bool hasAttribute(MonoClass* monoClass);
 
 		/**
-		 * @brief	Returns an instance of an attribute of the specified type. Returns null
-		 *			if the field doesn't have such an attribute.
+		 * Returns an instance of an attribute of the specified type. Returns null if the field doesn't have such an 
+		 * attribute.
 		 */
 		MonoObject* getAttribute(MonoClass* monoClass);
 
-		/**
-		 * @brief	Returns field visibility in the class.
-		 */
+		/**	Returns field visibility in the class. */
 		MonoFieldVisibility getVisibility();
 
-		/**
-		 * @brief	Query if the field is static.
-		 */
+		/**	Query if the field is static. */
 		bool isStatic();
 
 	private:
@@ -93,4 +83,6 @@ namespace BansheeEngine
 		MonoClassField* mField;
 		MonoClass* mFieldType;
 	};
+
+	/** @} */
 }

+ 27 - 42
BansheeMono/Include/BsMonoManager.h

@@ -9,18 +9,18 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Available Mono versions
+	/** @addtogroup Mono
+	 *  @{
 	 */
+
+	/**	Available Mono versions. */
 	enum class MonoVersion
 	{
 		v4_0,
 		v4_5
 	};
 
-	/**
-	 * @brief	Loads Mono script assemblies and manages script objects.
-	 */
+	/**	Loads Mono script assemblies and manages script objects. */
 	class BS_MONO_EXPORT MonoManager : public Module<MonoManager>
 	{
 	public:
@@ -28,83 +28,66 @@ namespace BansheeEngine
 		~MonoManager();
 
 		/**
-		 * @brief	Loads a new assembly from the provided path.
+		 * Loads a new assembly from the provided path.
 		 *
-		 * @param	path	Absolute path to the assembly .dll.
-		 * @param	name	Unique name for the assembly.
+		 * @param[in]	path	Absolute path to the assembly .dll.
+		 * @param[in]	name	Unique name for the assembly.
 		 */
 		MonoAssembly& loadAssembly(const String& path, const String& name);
 
-		/**
-		 * @brief	Searches all loaded assemblies for the specified class.
-		 */
+		/**	Searches all loaded assemblies for the specified class. */
 		MonoClass* findClass(const String& ns, const String& typeName);
 
-		/**
-		 * @brief	Searches all loaded assemblies for the specified class.
-		 */
+		/**	Searches all loaded assemblies for the specified class. */
 		MonoClass* findClass(::MonoClass* rawMonoClass);
 
-		/**
-		 * @brief	Returns the current Mono domains.
-		 */
+		/**	Returns the current Mono domains. */
 		MonoDomain* getDomain() const { return mScriptDomain; }
 
 		/**
-		 * @brief	Attempts to find a previously loaded assembly with the specified name.
-		 *			Returns null if assembly cannot be found.
+		 * Attempts to find a previously loaded assembly with the specified name. Returns null if assembly cannot be found.
 		 */
 		MonoAssembly* getAssembly(const String& name) const;
 
 		/**
-		 * @brief	Unloads the active domain all script assemblies are loaded in
-		 *			and destroys any managed objects associated with it.
+		 * Unloads the active domain all script assemblies are loaded in and destroys any managed objects associated with it.
 		 */
 		void unloadScriptDomain();
 
 		/**
-		 * @brief	Loads a new script domain. If another domain already exists it will be unloaded. This will also
-		 *			restore any previously loaded assemblies.
+		 * Loads a new script domain. If another domain already exists it will be unloaded. This will also restore any
+		 * previously loaded assemblies.
 		 */
 		void loadScriptDomain();
 
 		/**
-		 * @brief	Returns the path of the folder where Mono framework assemblies are located. Path is relative
-		 * 			to the application executable.
+		 * Returns the path of the folder where Mono framework assemblies are located. Path is relative to the application
+		 * executable.
 		 */
 		Path getFrameworkAssembliesFolder() const;
 
 		/**
-		 * @brief	Returns the path to the Mono /etc folder that is required for initializing Mono. Path is relative
-		 * 			to the application executable.
+		 * Returns the path to the Mono /etc folder that is required for initializing Mono. Path is relative to the
+		 * application executable.
 		 */
 		Path getMonoEtcFolder() const;
 
-		/**
-		 * @brief	Returns the absolute path to the Mono compiler.
-		 */
+		/**	Returns the absolute path to the Mono compiler. */
 		Path getCompilerPath() const;
 
 		/**
-		 * @brief	Registers a new script type. This should be done before any assembly loading is done.
-		 *			Upon assembly load these script types will be initialized with necessary information about their
-		 *			managed counterparts.
+		 * Registers a new script type. This should be done before any assembly loading is done. Upon assembly load these
+		 * script types will be initialized with necessary information about their managed counterparts.
 		 */
 		static void registerScriptType(ScriptMeta* metaData);
 
-		/**  
-		 * @brief	Triggered when the assembly domain and all relevant assemblies are about to be unloaded.
-		 */
+		/** Triggered when the assembly domain and all relevant assemblies are about to be unloaded. */
 		Event<void()> onDomainUnload;
 	private:
-		/**
-		 * @brief	Initializes a previous loaded assembly.
-		 */
+		/**	Initializes a previous loaded assembly. */
 		void initializeAssembly(MonoAssembly& assembly);
 
-		/**
-		 * @brief	Returns a list of all types that will be initializes with their assembly gets loaded.
-		 */
+		/**	Returns a list of all types that will be initializes with their assembly gets loaded. */
 		static UnorderedMap<String, Vector<ScriptMeta*>>& getScriptMetaData()
 		{
 			static UnorderedMap<String, Vector<ScriptMeta*>> mTypesToInitialize;
@@ -116,4 +99,6 @@ namespace BansheeEngine
 		MonoDomain* mRootDomain;
 		bool mIsCoreLoaded;
 	};
+
+	/** @} */
 }

+ 30 - 44
BansheeMono/Include/BsMonoMethod.h

@@ -7,11 +7,13 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup Mono
+	 *  @{
+	 */
 
 	/**
-	 * @brief	Encapsulates information about a single Mono (i.e. managed) method
-	 *			belonging to some managed class. This object also allows you to invoke
-	 *			the method.
+	 * Encapsulates information about a single Mono (i.e. managed) method belonging to some managed class. This object also
+	 * allows you to invoke the method.
 	 */
 	class BS_MONO_EXPORT MonoMethod
 	{
@@ -19,75 +21,57 @@ namespace BansheeEngine
 		~MonoMethod();
 
 		/**
-		 * @brief	Invokes the method on the provided object instance. 
-		 *			This does not respect polymorphism and will invoke the exact method
-		 *			of the class this object was retrieved from. Use "invokeVirtual" if you
-		 *			need polymorphism.
-		 *
-		 * @param	instance	Instance of the object to invoke the method on. Can be null for static methods.
-		 * @param	param		Array of parameters to pass to the method. Caller must ensure they match method 
-		 *						parameter count and type. For value types parameters should be pointers to the 
-		 *						values and for reference types they should be pointers to MonoObject.
+		 * Invokes the method on the provided object instance. This does not respect polymorphism and will invoke the exact
+		 * method of the class this object was retrieved from. Use invokeVirtual() if you need polymorphism.
 		 *
-		 @returns	A boxed return value, or null if method has no return value.
+		 * @param[in]	instance	Instance of the object to invoke the method on. Can be null for static methods.
+		 * @param[in]	param		Array of parameters to pass to the method. Caller must ensure they match method 
+		 *							parameter count and type. For value types parameters should be pointers to the 
+		 *							values and for reference types they should be pointers to MonoObject.
+		 * @return					A boxed return value, or null if method has no return value.
 		 */
 		MonoObject* invoke(MonoObject* instance, void** params);
 
 		/**
-		 * @brief	Invokes the method on the provided object instance. If the instance has an override of this
-		 *			method it will be called.
+		 * Invokes the method on the provided object instance. If the instance has an override of this method it will be
+		 * called.
 		 *
-		 * @param	instance	Instance of the object to invoke the method on.
-		 * @param	param		Array of parameters to pass to the method. Caller must ensure they match method 
-		 *						parameter count and type. For value types parameters should be pointers to the 
-		 *						values and for reference types they should be pointers to MonoObject.
-		 *
-		 * @returns	A boxed return value, or null if method has no return value.
+		 * @param[in]	instance	Instance of the object to invoke the method on.
+		 * @param[in]	param		Array of parameters to pass to the method. Caller must ensure they match method 
+		 *							parameter count and type. For value types parameters should be pointers to the 
+		 *							values and for reference types they should be pointers to MonoObject.
+		 * @return					A boxed return value, or null if method has no return value.
 		 */
 		MonoObject* invokeVirtual(MonoObject* instance, void** params);
 
 		/**
-		 * @brief	Gets a thunk for this method. A thunk is a C++ like function
-		 * 			pointer that you can use for calling the method.
+		 * Gets a thunk for this method. A thunk is a C++ like function pointer that you can use for calling the method.
 		 *
 		 * @note	This is the fastest way of calling managed code.
 		 */
 		void* getThunk() const;
 
-		/**
-		 * @brief	Returns the name of the method.
-		 */
+		/**	Returns the name of the method. */
 		String getName() const;
 
-		/**
-		 * @brief	Returns the type of the return value. Returns null if method
-		 *			has no return value.
-		 */
+		/** Returns the type of the return value. Returns null if method has no return value. */
 		MonoClass* getReturnType() const;
 
-		/**
-		 * @brief	Returns the number of parameters the method expects.
-		 */
+		/**	Returns the number of parameters the method expects. */
 		UINT32 getNumParameters() const;
 
-		/**
-		 * @brief	Returns the type of the method parameter at the specified index.
-		 */
+		/**	Returns the type of the method parameter at the specified index. */
 		MonoClass* getParameterType(UINT32 paramIdx) const;
 
-		/**
-		 * @brief	Returns true if the method doesn't require a class instance.
-		 */
+		/**	Returns true if the method doesn't require a class instance. */
 		bool isStatic() const;
 
-		/**
-		 * @brief	Checks if method has an attribute of the specified type.
-		 */
+		/**	Checks if method has an attribute of the specified type. */
 		 bool hasAttribute(MonoClass* monoClass) const;
 
 		/**
-		 * @brief	Returns an instance of an attribute of the specified type. Returns null
-		 *			if the method doesn't have such an attribute.
+		 * Returns an instance of an attribute of the specified type. Returns null if the method doesn't have such an
+		 * attribute.
 		 */
 		MonoObject* getAttribute(MonoClass* monoClass) const;
 
@@ -107,4 +91,6 @@ namespace BansheeEngine
 		mutable bool mIsStatic;
 		mutable bool mHasCachedSignature;
 	};
+
+	/** @} */
 }

+ 8 - 0
BansheeMono/Include/BsMonoPrerequisites.h

@@ -20,6 +20,14 @@
 #    define BS_MONO_EXPORT
 #endif
 
+/** @addtogroup Plugins/
+
+/** @defgroup Mono Mono
+ *	Scripting language backend using Mono's CLR.
+ */
+
+/** @} */
+
 namespace BansheeEngine
 {
 	class MonoManager;

+ 25 - 26
BansheeMono/Include/BsMonoProperty.h

@@ -7,57 +7,54 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup Mono
+	 *  @{
+	 */
+
 	/**
-	 * @brief	Encapsulates information about a single Mono (i.e. managed) property
-	 *			belonging to some managed class. This object also allows you to set
-	 *			or retrieve values to/from specific instances containing the property.
+	 * Encapsulates information about a single Mono (i.e. managed) property belonging to some managed class. This object
+	 * also allows you to set or retrieve values to/from specific instances containing the property.
 	 */
 	class BS_MONO_EXPORT MonoProperty
 	{
 	public:
 		/**
-		 * @brief	Returns a boxed value contained in the property in the specified instance.
+		 * Returns a boxed value contained in the property in the specified instance.
 		 *
-		 * @param	instance	Object instance to access the property on. Can be null for static properties.
-		 *
-		 * @returns	A boxed value of the property.
+		 * @param[in]	instance	Object instance to access the property on. Can be null for static properties.
+		 * @return					A boxed value of the property.
 		 */
 		MonoObject* get(MonoObject* instance) const;
 
 		/**
-		 * @brief	Sets a value of the property in the specified instance. 
+		 * Sets a value of the property in the specified instance. 
 		 *
-		 * @param	instance	Object instance to access the property on. Can be null for static properties.
-		 * @param	value		Value to set on the property. For value type it should be a pointer to the 
-		 *						value and for reference type it should be a pointer to MonoObject.
+		 * @param[in]	instance	Object instance to access the property on. Can be null for static properties.
+		 * @param[in]	value		Value to set on the property. For value type it should be a pointer to the value and for
+		 *							reference type it should be a pointer to MonoObject.
 		 */
 		void set(MonoObject* instance, void* value) const;
 
 		/**
-		 * @brief	Returns a boxed value contained in the property in the specified instance. Used for properties
-		 *			with indexers.
-		 *
-		 * @param	instance	Object instance to access the property on. Can be null for static properties.
-		 * @param	index		Index of the value to retrieve.
+		 * Returns a boxed value contained in the property in the specified instance. Used for properties with indexers.
 		 *
-		 * @returns	A boxed value of the property.
+		 * @param[in]	instance	Object instance to access the property on. Can be null for static properties.
+		 * @param[in]	index		Index of the value to retrieve.
+		 * @return					A boxed value of the property.
 		 */
 		MonoObject* getIndexed(MonoObject* instance, UINT32 index) const;
 
 		/**
-		 * @brief	Sets a value of the property in the specified instance. Used for properties
-		 *			with indexers.
+		 * Sets a value of the property in the specified instance. Used for properties with indexers.
 		 *
-		 * @param	instance	Object instance to access the property on. Can be null for static properties.
-		 * @param	index		Index of the value to set.
-		 * @param	value		Value to set on the property. For value type it should be a pointer to the 
-		 *						value and for reference type it should be a pointer to MonoObject.
+		 * @param[in]	instance	Object instance to access the property on. Can be null for static properties.
+		 * @param[in]	index		Index of the value to set.
+		 * @param[in]	value		Value to set on the property. For value type it should be a pointer to the value and for
+		 *							reference type it should be a pointer to MonoObject.
 		 */
 		void setIndexed(MonoObject* instance, UINT32 index, void* value) const;
 
-		/**
-		 * @brief	Returns the data type the property holds.
-		 */
+		/**	Returns the data type the property holds. */
 		MonoClass* getReturnType();
 	private:
 		friend class MonoClass;
@@ -69,4 +66,6 @@ namespace BansheeEngine
 		::MonoMethod* mSetMethod;
 		MonoClass* mGetReturnType;
 	};
+
+	/** @} */
 }

+ 14 - 27
BansheeMono/Include/BsMonoUtil.h

@@ -11,16 +11,15 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Utility class containing methods for various common Mono/Script related
-	 *			operations.
+	/** @addtogroup Mono
+	 *  @{
 	 */
+
+	/**	Utility class containing methods for various common Mono/Script related operations. */
 	class BS_MONO_EXPORT MonoUtil
 	{
 	public:
-		/**
-		 * @brief	Converts a Mono (i.e. managed) string to a native wide string.
-		 */
+		/**	Converts a Mono (i.e. managed) string to a native wide string. */
 		static WString monoToWString(MonoString* str)
 		{
 			if(str == nullptr)
@@ -36,9 +35,7 @@ namespace BansheeEngine
 			return ret;
 		}
 
-		/**
-		 * @brief	Converts a Mono (i.e. managed) string to a native narrow string.
-		 */
+		/**	Converts a Mono (i.e. managed) string to a native narrow string. */
 		static String monoToString(MonoString* str)
 		{
 			if(str == nullptr)
@@ -54,9 +51,7 @@ namespace BansheeEngine
 			return ret;
 		}
 
-		/**
-		 * @brief	Converts a native wide string to a Mono (i.e. managed) string.
-		 */
+		/**	Converts a native wide string to a Mono (i.e. managed) string. */
 		static MonoString* wstringToMono(const WString& str)
 		{
 			if (sizeof(wchar_t) == 2) // Assuming UTF-16
@@ -75,17 +70,13 @@ namespace BansheeEngine
 			}
 		}
 
-		/**
-		 * @brief	Converts a native narrow string to a Mono (i.e. managed) string.
-		 */
+		/**	Converts a native narrow string to a Mono (i.e. managed) string. */
 		static MonoString* stringToMono(const String& str)
 		{
 			return wstringToMono(toWString(str));
 		}
 
-		/**
-		 * @brief	Outputs name and namespace for the type of the specified object.
-		 */
+		/**	Outputs name and namespace for the type of the specified object. */
 		static void getClassName(MonoObject* obj, String& ns, String& typeName)
 		{
 			if (obj == nullptr)
@@ -95,9 +86,7 @@ namespace BansheeEngine
 			getClassName(monoClass, ns, typeName);
 		}
 
-		/**
-		 * @brief	Outputs name and namespace for the specified type.
-		 */
+		/**	Outputs name and namespace for the specified type. */
 		static void getClassName(::MonoClass* monoClass, String& ns, String& typeName)
 		{
 			::MonoClass* nestingClass = mono_class_get_nesting_type(monoClass);
@@ -132,17 +121,13 @@ namespace BansheeEngine
 			}
 		}
 
-		/**
-		 * @copydoc	throwIfException
-		 */
+		/** @copydoc throwIfException */
 		static void throwIfException(MonoException* exception)
 		{
 			throwIfException(reinterpret_cast<MonoObject*>(exception));
 		}
 
-		/**
-		 * @brief	Throws a native exception if the provided object is a valid managed exception.
-		 */
+		/**	Throws a native exception if the provided object is a valid managed exception. */
 		static void throwIfException(MonoObject* exception)
 		{
 			if(exception != nullptr)
@@ -172,4 +157,6 @@ namespace BansheeEngine
 			throwIfException(exception);
 		}
 	};
+
+	/** @} */
 }

+ 18 - 5
BansheeMono/Include/BsScriptMeta.h

@@ -6,9 +6,11 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Contains information required for initializing and handling a single script class.
+	/** @addtogroup Mono
+	 *  @{
 	 */
+
+	/**	Contains information required for initializing and handling a single script class. */
 	struct BS_MONO_EXPORT ScriptMeta
 	{
 		ScriptMeta();
@@ -17,8 +19,19 @@ namespace BansheeEngine
 		String ns; /**< Namespace the script class is located in. */
 		String name; /**< Type name of the script class. */
 		String assembly; /**< Name of the assembly the script class is located in. */
-		std::function<void()> initCallback; /**< Callback that will be triggered when assembly containing the class is loaded or refreshed. Used for one time initialization. */
-		MonoClass* scriptClass; /**< Class object describing the script class. Only valid after assembly containing this type was loaded. */			
-		MonoField* thisPtrField; /**< Field object that contains a pointer to the native instance of the script object. Only valid after assembly containing this type was loaded. */
+		/**
+		 * Callback that will be triggered when assembly containing the class is loaded or refreshed. Used for one time 
+		 * initialization.
+		 */
+		std::function<void()> initCallback;
+		/** Class object describing the script class. Only valid after assembly containing this type was loaded.  */
+		MonoClass* scriptClass;	
+		/**
+		 * Field object that contains a pointer to the native instance of the script object. Only valid after assembly
+		 * containing this type was loaded.
+		 */
+		MonoField* thisPtrField;
 	};
+
+	/** @} */
 }

+ 35 - 62
BansheeOISInput/Include/BsInputHandlerOIS.h

@@ -13,29 +13,25 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup OISInput
+	 *  @{
+	 */
+
 	class InputHandlerOIS;
 
-	/**
-	 * @brief	Listens for events from a specific OIS joystick device.
-	 */
+	/**	Listens for events from a specific OIS joystick device. */
 	class BS_OIS_EXPORT GamepadEventListener : public OIS::JoyStickListener
 	{
 	public:
 		GamepadEventListener(InputHandlerOIS* parentHandler, UINT32 joystickIdx);
 
-		/**
-		 * @brief	Called by OIS whenever a gamepad/joystick button is pressed.
-		 */
+		/**	Called by OIS whenever a gamepad/joystick button is pressed. */
 		virtual bool buttonPressed(const OIS::JoyStickEvent& arg, int button) override;
 
-		/**
-		 * @brief	Called by OIS whenever a gamepad/joystick button is released.
-		 */
+		/**	Called by OIS whenever a gamepad/joystick button is released. */
 		virtual bool buttonReleased(const OIS::JoyStickEvent& arg, int button) override;
 
-		/**
-		 * @brief	Called by OIS whenever a gamepad/joystick axis is moved.
-		 */
+		/**	Called by OIS whenever a gamepad/joystick axis is moved. */
 		virtual bool axisMoved(const OIS::JoyStickEvent& arg, int axis) override;
 
 	private:
@@ -43,15 +39,11 @@ namespace BansheeEngine
 		InputHandlerOIS* mParentHandler;
 	};
 
-	/**
-	 * @brief	Raw input handler using OIS library for acquiring input.
-	 */
+	/**	Raw input handler using OIS library for acquiring input. */
 	class BS_OIS_EXPORT InputHandlerOIS : public RawInputHandler, public OIS::KeyListener, 
 		public OIS::MouseListener
 	{
-		/**
-		 * @brief	Holding data about an active gamepad object.
-		 */
+		/**	Holding data about an active gamepad object. */
 		struct GamepadData
 		{
 			OIS::JoyStick* gamepad;
@@ -63,71 +55,50 @@ namespace BansheeEngine
 		virtual ~InputHandlerOIS();
 
 	private:
-		/**
-		 * @brief	Called by OIS whenever a keyboard button is pressed.
-		 */
+		/**	Called by OIS whenever a keyboard button is pressed. */
 		virtual bool keyPressed(const OIS::KeyEvent& arg) override;
 
-		/**
-		 * @brief	Called by OIS whenever a keyboard button is released.
-		 */
+		/**	Called by OIS whenever a keyboard button is released. */
 		virtual bool keyReleased(const OIS::KeyEvent& arg) override;
 
-		/**
-		 * @brief	Called by OIS whenever mouse is moved.
-		 */
+		/**	Called by OIS whenever mouse is moved. */
 		virtual bool mouseMoved(const OIS::MouseEvent& arg) override;
 
-		/**
-		 * @brief	Called by OIS whenever is a mouse button pressed.
-		 */
+		/**	Called by OIS whenever is a mouse button pressed. */
 		virtual bool mousePressed(const OIS::MouseEvent& arg, OIS::MouseButtonID id) override;
 
-		/**
-		 * @brief	Called by OIS whenever is a mouse button released
-		 */
+		/**	Called by OIS whenever is a mouse button released. */
 		virtual bool mouseReleased(const OIS::MouseEvent& arg, OIS::MouseButtonID id) override;
 
-		/**
-		 * @brief	Called once per frame.
-		 *
-		 * @note	Internal method.
-		 */
-		virtual void _update() override;
-
-		/**
-		 * @brief	Called whenever the currently focused window changes.
-		 *
-		 * @note	Internal method.
-		 */
-		virtual void _inputWindowChanged(const RenderWindow& win) override;
-
-		/**
-		 * @brief	Converts an OIS key code into engine button code.
-		 */
+		/**	Converts an OIS key code into engine button code. */
 		static ButtonCode keyCodeToButtonCode(OIS::KeyCode keyCode);
 
-		/**
-		 * @brief	Converts an OIS mouse button code into engine button code.
-		 */
+		/**	Converts an OIS mouse button code into engine button code. */
 		static ButtonCode mouseButtonToButtonCode(OIS::MouseButtonID mouseBtn);
 
-		/**
-		 * @brief	Converts an OIS gamepad button code into engine button code.
-		 */
+		/**	Converts an OIS gamepad button code into engine button code. */
 		static ButtonCode gamepadButtonToButtonCode(INT32 joystickCode);
 
+		/** @cond INTERNAL */
+
+		/** Called once per frame. */
+		virtual void _update() override;
+
+		/** Called whenever the currently focused window changes. */
+		virtual void _inputWindowChanged(const RenderWindow& win) override;
+
+		/** @endcond */
+
 	private:
 		friend class GamepadEventListener;
 
 		/**
-		 * @brief	Smooths the input mouse axis value. Smoothing makes the changes to
-		 *			the axis more gradual depending on previous values.
+		 * Smooths the input mouse axis value. Smoothing makes the changes to the axis more gradual depending on previous
+		 * values.
 		 *
-		 * @param	value	Value to smooth.
-		 * @param	idx		Index of the mouse axis to smooth, 0 - horizontal, 1 - vertical.
-		 *
-		 * @returns	Smoothed value.
+		 * @param[in]	value	Value to smooth.
+		 * @param[in]	idx		Index of the mouse axis to smooth, 0 - horizontal, 1 - vertical.
+		 * @return				Smoothed value.
 		 */
 		float smoothMouse(float value, UINT32 idx);
 
@@ -145,4 +116,6 @@ namespace BansheeEngine
 
 		UINT64 mTimestampClockOffset;
 	};
+
+	/** @} */
 }

+ 9 - 1
BansheeOISInput/Include/BsOISPrerequisites.h

@@ -18,4 +18,12 @@
 #    define BS_OIS_EXPORT  __attribute__ ((visibility("default")))
 #else
 #    define BS_OIS_EXPORT
-#endif
+#endif
+
+/** @addtogroup Plugins/
+
+/** @defgroup OISInput OISInput
+ *	OIS implementation for raw keyboard/mouse/gamepad input.
+ */
+
+/** @} */

+ 6 - 0
BansheeSL/Include/BsSLFXCompiler.h

@@ -15,6 +15,10 @@ extern "C" {
 
 namespace BansheeEngine
 {
+	/** @addtogroup BansheeSL
+	 *  @{
+	 */
+
 	/**	Contains the results of compilation returned from the BSLFXCompiler. */
 	struct BSLFXCompileResult
 	{
@@ -245,4 +249,6 @@ namespace BansheeEngine
 		/** Returns one of the builtin textures based on their name. */
 		static HTexture getBuiltinTexture(const String& name);
 	};
+
+	/** @} */
 }

+ 10 - 4
BansheeSL/Include/BsSLImporter.h

@@ -7,10 +7,14 @@
 
 namespace BansheeEngine
 {
-	/**
-	* @brief	Importer using for importing a shader written using the BSL syntax.
-	* 			Shader files are plain text files ending with ".bsl" extension.
-	*/
+	/** @addtogroup BansheeSL
+	 *  @{
+	 */
+
+	/** 
+	 * Importer using for importing a shader written using the BSL syntax. Shader files are plain text files ending with
+	 * ".bsl" extension.
+	 */
 	class BS_SL_EXPORT SLImporter : public SpecificImporter
 	{
 	public:
@@ -26,4 +30,6 @@ namespace BansheeEngine
 		/** @copydoc SpecificImporter::import */
 		virtual ResourcePtr import(const Path& filePath, ConstImportOptionsPtr importOptions) override;
 	};
+
+	/** @} */
 }

+ 8 - 0
BansheeSL/Include/BsSLPrerequisites.h

@@ -20,6 +20,14 @@
 #    define BS_SL_EXPORTS
 #endif
 
+/** @addtogroup Plugins/
+
+/** @defgroup BansheeSL BansheeSL
+ *	Implementation of the Banshee Shading Language.
+ */
+
+/** @} */
+
 namespace BansheeEngine
 {
 	const String SystemName = "BansheeSL";

+ 6 - 0
RenderBeast/Include/BsLightRendering.h

@@ -8,6 +8,10 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup RenderBeast
+	 *  @{
+	 */
+
 	BS_PARAM_BLOCK_BEGIN(PerLightParamBuffer)
 		BS_PARAM_BLOCK_ENTRY(Vector4, gLightPositionAndType)
 		BS_PARAM_BLOCK_ENTRY(Vector4, gLightColorAndIntensity)
@@ -95,4 +99,6 @@ namespace BansheeEngine
 		MaterialParamTextureCore mGBufferB;
 		MaterialParamTextureCore mGBufferDepth;
 	};
+
+	/** @} */
 }

+ 6 - 0
RenderBeast/Include/BsRenderBeast.h

@@ -12,6 +12,10 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup RenderBeast
+	 *  @{
+	 */
+
 	class BeastRenderableElement;
 
 	/** Semantics that may be used for signaling the renderer for what is a certain shader parameter used for. */
@@ -260,4 +264,6 @@ namespace BansheeEngine
 		SPtr<RenderBeastOptions> mOptions;
 		bool mOptionsDirty;
 	};
+
+	/** @} */
 }

+ 10 - 8
RenderBeast/Include/BsRenderBeastFactory.h

@@ -7,23 +7,25 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup RenderBeast
+	 *  @{
+	 */
+
 	const String SystemName = "RenderBeast";
 
 	/**
-	 * @brief	Renderer factory implementation that creates and initializes the default Banshee renderer.
-	 *			Used by the RendererManager.
+	 * Renderer factory implementation that creates and initializes the default Banshee renderer. Used by the 
+	 * RendererManager.
 	 */
 	class BS_BSRND_EXPORT RenderBeastFactory : public RendererFactory
 	{
 	public:
-		/**
-		 * @copydoc	RendererFactory::create
-		 */
+		/** @copydoc RendererFactory::create */
 		virtual CoreRendererPtr create() override;
 
-		/**
-		 * @copydoc	RendererFactory::name
-		 */
+		/** @copydoc RendererFactory::name */
 		virtual const String& name() const override;
 	};
+
+	/** @} */
 }

+ 18 - 23
RenderBeast/Include/BsRenderBeastOptions.h

@@ -8,9 +8,11 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Texture filtering options for RenderBeast.
+	/** @addtogroup RenderBeast
+	 *  @{
 	 */
+
+	/** Texture filtering options for RenderBeast. */
 	enum class RenderBeastFiltering
 	{
 		Bilinear, /**< Sample linearly in X and Y directions within a texture mip level. */
@@ -18,50 +20,43 @@ namespace BansheeEngine
 		Anisotropic /**< High quality dynamic filtering that improves quality of angled surfaces */
 	};
 
-	/**
-	 * @brief	A set of options used for controlling the 
-	 *			rendering of the RenderBeast renderer.
-	 */
+	/** A set of options used for controlling the rendering of the RenderBeast renderer. */
 	struct BS_BSRND_EXPORT RenderBeastOptions : public CoreRendererOptions
 	{
-		/**
-		 * @brief	Type of filtering to use for all textures on scene elements.
-		 */
+		/**	Type of filtering to use for all textures on scene elements. */
 		RenderBeastFiltering filtering = RenderBeastFiltering::Anisotropic;
 
 		/**
-		 * @brief	Maximum number of samples to be used when performing anisotropic
-		 *			filtering. Only relevant if ::filter is set to RenderBeastFiltering::Anisotropic.
+		 * Maximum number of samples to be used when performing anisotropic filtering. Only relevant if #filtering is set to
+		 * RenderBeastFiltering::Anisotropic.
 		 */
 		UINT32 anisotropyMax = 16;
 
 		/**
-		 * @brief	Number of samples per pixel. More samples means less aliasing but this may
-		 *			seriously increase fillrate and memory consumption on the GPU.
+		 * Number of samples per pixel. More samples means less aliasing but this may seriously increase fillrate and memory
+		 * consumption on the GPU.
 		 */
-
 		UINT32 msaa = 1;
 
 		/** 
-		 * All colors output from shaders will be automatically converted to gamma 
-		 * space when written to render target(s). Normally used when the renderer
-		 * performs calculations in linear space.
+		 * All colors output from shaders will be automatically converted to gamma space when written to render target(s). 
+		 * Normally used when the renderer performs calculations in linear space.
 		 */
 		bool gammaCorrect = true; 
 
 		/**
-		 * High dynamic range allows light intensity to be more correctly recorded
-		 * when rendering by allowing for a larger range of values. The stored light
-		 * is then converted into visible colors using a tone mapping operator depending
+		 * High dynamic range allows light intensity to be more correctly recorded when rendering by allowing for a larger
+		 * range of values. The stored light is then converted into visible colors using a tone mapping operator depending
 		 * on average scene brightness.
 		 */
 		bool hdr = false;
 
 		/**
-		 * Controls if and how a render queue groups renderable objects by material in 
-		 * order to reduce number of state changes. Sorting by material can reduce CPU usage
-		 * but could increase overdraw.
+		 * Controls if and how a render queue groups renderable objects by material in order to reduce number of state
+		 * changes. Sorting by material can reduce CPU usage but could increase overdraw.
 		 */
 		StateReduction stateReductionMode = StateReduction::Distance;
 	};
+
+	/** @} */
 }

+ 8 - 0
RenderBeast/Include/BsRenderBeastPrerequisites.h

@@ -20,6 +20,14 @@
 #    define BS_BSRND_EXPORT
 #endif
 
+/** @addtogroup Plugins/
+
+/** @defgroup RenderBeast RenderBeast
+ *	Banshee's default renderer implementation.
+ */
+
+/** @} */
+
 namespace BansheeEngine
 {
 	class StaticRenderableHandler;

+ 29 - 45
RenderBeast/Include/BsRenderTargets.h

@@ -7,9 +7,12 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup RenderBeast
+	 *  @{
+	 */
+
 	/**
-	 * @brief	Allocates and handles all the required render targets
-	 *			for rendering a scene from a specific viewport.
+	 * Allocates and handles all the required render targets for rendering a scene from a specific viewport.
 	 *
 	 * @note	Core thread only.
 	 */
@@ -17,82 +20,61 @@ namespace BansheeEngine
 	{
 	public:
 		/**
-		 * @brief	Creates a new set of render targets. This will not actually allocate 
-		 *			the internal render targets - this happens the first time you call ::bind.
+		 * Creates a new set of render targets. This will not actually allocate the internal render targets - this happens
+		 * the first time you call bind().
 		 *
-		 * @param	viewport		Viewport that the render targets will be used for. Determines size of the
-		 *							render targets, and the output color render target.
-		 * @param	hdr				Should the render targets support high dynamic range rendering.
-		 * @param	numSamples		Number of samples to use if multisampling is active. Provide 0 or 1 if
-		 *							multisampled targets are not needed.
+		 * @param[in]	viewport		Viewport that the render targets will be used for. Determines size of the render
+		 *								targets, and the output color render target.
+		 * @param[in]	hdr				Should the render targets support high dynamic range rendering.
+		 * @param[in]	numSamples		Number of samples to use if multisampling is active. Provide 0 or 1 if multisampled
+		 *								targets are not needed.
 		 */
 		static SPtr<RenderTargets> create(const SPtr<ViewportCore>& viewport, bool hdr, UINT32 numSamples);
 
 		/**
-		 * @brief	Allocates the textures required for rendering. Allocations are pooled so this is generally a fast 
-		 * 			operation unless the size or other render target options changed. This must be called before binding
-		 * 			render targets.
+		 * Allocates the textures required for rendering. Allocations are pooled so this is generally a fast operation
+		 * unless the size or other render target options changed. This must be called before binding render targets.
 		 */
 		void allocate();
 
 		/**
-		 * @brief	Deallocates textures by returning them to the pool. This should be done when the caller is done using 
-		 * 			the render targets, so that other systems might re-use them. This will not release any memory unless
-		 * 			all render targets pointing to those textures go out of scope.
+		 * Deallocates textures by returning them to the pool. This should be done when the caller is done using the render
+		 * targets, so that other systems might re-use them. This will not release any memory unless all render targets
+		 * pointing to those textures go out of scope.
 		 */
 		void release();
 
-		/**
-		 * @brief	Binds the GBuffer render target for rendering.
-		 */
+		/**	Binds the GBuffer render target for rendering. */
 		void bindGBuffer();
 
-		/**
-		 * @brief	Binds the scene color render target for rendering.
-		 */
+		/**	Binds the scene color render target for rendering. */
 		void bindSceneColor(bool readOnlyDepthStencil);
 
-		/**
-		 * @brief	Resolves the GBuffer scene color into the output scene color buffer.
-		 */
+		/**	Resolves the GBuffer scene color into the output scene color buffer. */
 		void resolve();
 
-		/**
-		 * @brief	Returns the first color texture of the gbuffer as a bindable texture.
-		 */
+		/**	Returns the first color texture of the gbuffer as a bindable texture. */
 		SPtr<TextureCore> getTextureA() const;
 
-		/**
-		* @brief	Returns the second color texture of the gbuffer as a bindable texture.
-		*/
+		/**	Returns the second color texture of the gbuffer as a bindable texture. */
 		SPtr<TextureCore> getTextureB() const;
 
-		/**
-		 * @brief	Returns the depth texture of the gbuffer as a bindable texture.
-		 */
+		/**	Returns the depth texture of the gbuffer as a bindable texture. */
 		SPtr<TextureCore> getTextureDepth() const;
 
-		/**
-		 * @brief	Checks if the targets support HDR rendering.
-		 */
+		/**	Checks if the targets support HDR rendering. */
 		bool getHDR() const { return mHDR; }
 
-		/**
-		 * @brief	Returns the number of samples per pixel supported by the targets.
-		 */
+		/**	Returns the number of samples per pixel supported by the targets. */
 		UINT32 getNumSamples() const { return mNumSamples; }
 
 	private:
 		RenderTargets(const SPtr<ViewportCore>& viewport, bool hdr, UINT32 numSamples);
 
-		/**
-		 * @brief	Returns the width of gbuffer textures, in pixels.
-		 */
+		/**	Returns the width of gbuffer textures, in pixels. */
 		UINT32 getWidth() const;
 
-		/**
-		 * @brief	Returns the height of gbuffer textures, in pixels.
-		 */
+		/**	Returns the height of gbuffer textures, in pixels. */
 		UINT32 getHeight() const;
 
 		SPtr<ViewportCore> mViewport;
@@ -110,4 +92,6 @@ namespace BansheeEngine
 		UINT32 mNumSamples;
 		bool mHDR;
 	};
+
+	/** @} */
 }

+ 33 - 32
RenderBeast/Include/BsRenderTexturePool.h

@@ -8,11 +8,13 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup RenderBeast
+	 *  @{
+	 */
+
 	class RenderTexturePool;
 
-	/**
-	 * @brief	Contains data about a single render texture in the texture pool.
-	 */
+	/**	Contains data about a single render texture in the texture pool. */
 	struct PooledRenderTexture
 	{
 		PooledRenderTexture(RenderTexturePool* pool);
@@ -27,60 +29,59 @@ namespace BansheeEngine
 		bool mIsFree;
 	};
 
-	/**
-	 * @brief	Contains a pool of render textures meant to accommodate reuse of
-	 *			render textures of the same size and format.
-	 */
+	/** Contains a pool of render textures meant to accommodate reuse of render textures of the same size and format. */
 	class RenderTexturePool : public Module<RenderTexturePool>
 	{
 	public:
 		~RenderTexturePool();
 
 		/**
-		 * @brief	Attempts to find the unused render texture with the specified parameters in the pool, 
-		 *			or creates a new texture otherwise. When done with the texture make sure to call ::free.
+		 * Attempts to find the unused render texture with the specified parameters in the pool, or creates a new texture
+		 * otherwise. When done with the texture make sure to call release().
 		 *
-		 * @param	format				Pixel format used by the texture color surface.
-		 * @param	width				Width of the render texture, in pixels.
-		 * @param	height				Height of the render texture, in pixels.
-		 * @param	hwGamma				Should the written pixels be gamma corrected.
-		 * @param	samples				If higher than 1, texture containing multiple samples per pixel is created.
+		 * @param[in]	format		Pixel format used by the texture color surface.
+		 * @param[in]	width		Width of the render texture, in pixels.
+		 * @param[in]	height		Height of the render texture, in pixels.
+		 * @param[in]	hwGamma		Should the written pixels be gamma corrected.
+		 * @param[in]	samples		If higher than 1, texture containing multiple samples per pixel is created.
 		 */
-		SPtr<PooledRenderTexture> get(PixelFormat format, UINT32 width, UINT32 height, bool hwGamma = false, UINT32 samples = 0);
+		SPtr<PooledRenderTexture> get(PixelFormat format, UINT32 width, UINT32 height, bool hwGamma = false, 
+			UINT32 samples = 0);
 
 		/**
-		 * @brief	Releases a texture previously allocated with ::get. The texture is returned to the pool so that it may be reused later.
+		 * Releases a texture previously allocated with get(). The texture is returned to the pool so that it may be reused
+		 * later.
 		 *			
-		 * @note	The texture will be removed from the pool if the last reference to it is deleted. Normally you would call ::release but
-		 *			keep a reference if you plan on using it later on.
+		 * @note	
+		 * The texture will be removed from the pool if the last reference to it is deleted. Normally you would call 
+		 * release() but keep a reference if you plan on using it later on.
 		 */
 		void release(const SPtr<PooledRenderTexture>& texture);
 
 	private:
 		friend struct PooledRenderTexture;
 
-		/**
-		 * @brief	Registers a newly created render texture in the pool.
-		 */
+		/**	Registers a newly created render texture in the pool. */
 		void _registerTexture(const SPtr<PooledRenderTexture>& texture);
 
-		/**
-		 * @brief	Unregisters a created render texture in the pool.
-		 */
+		/**	Unregisters a created render texture in the pool. */
 		void _unregisterTexture(PooledRenderTexture* texture);
 
 		/**
-		 * @brief	Checks does the provided texture match the parameters.
+		 * Checks does the provided texture match the parameters.
 		 * 
-		 * @param	texture		Texture to match against the parameters.
-		 * @param	format		Pixel format used by the texture color surface.
-		 * @param	width		Width of the render texture, in pixels.
-		 * @param	height		Height of the render texture, in pixels.
-		 * @param	hwGamma		Should the written pixels be gamma corrected.
-		 * @param	samples		If higher than 1, texture containing multiple samples per pixel is created.
+		 * @param[in]	texture		Texture to match against the parameters.
+		 * @param[in]	format		Pixel format used by the texture color surface.
+		 * @param[in]	width		Width of the render texture, in pixels.
+		 * @param[in]	height		Height of the render texture, in pixels.
+		 * @param[in]	hwGamma		Should the written pixels be gamma corrected.
+		 * @param[in]	samples		If higher than 1, texture containing multiple samples per pixel is created.
 		 */
-		bool matches(const SPtr<TextureCore>& texture, PixelFormat format, UINT32 width, UINT32 height, bool hwGamma, UINT32 samples);
+		bool matches(const SPtr<TextureCore>& texture, PixelFormat format, UINT32 width, UINT32 height, bool hwGamma,
+			UINT32 samples);
 
 		Map<PooledRenderTexture*, std::weak_ptr<PooledRenderTexture>> mTextures;
 	};
+
+	/** @} */
 }

+ 22 - 23
RenderBeast/Include/BsSamplerOverrides.h

@@ -6,27 +6,25 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Contains data about an overridden sampler states for a single pass stage.
+	/** @addtogroup RenderBeast
+	 *  @{
 	 */
+
+	/**	Contains data about an overridden sampler states for a single pass stage. */
 	struct StageSamplerOverrides
 	{
 		SPtr<SamplerStateCore>* stateOverrides;
 		UINT32 numStates;
 	};
 
-	/**
-	 * @brief	Contains data about an overridden sampler states for a single pass.
-	 */
+	/**	Contains data about an overridden sampler states for a single pass. */
 	struct PassSamplerOverrides
 	{
 		StageSamplerOverrides* stages;
 		UINT32 numStages;
 	};
 
-	/**
-	 * @brief	Contains data about an overridden sampler states in the entire material.
-	 */
+	/**	Contains data about an overridden sampler states in the entire material. */
 	struct MaterialSamplerOverrides
 	{
 		PassSamplerOverrides* passes;
@@ -34,33 +32,34 @@ namespace BansheeEngine
 		UINT32 refCount;
 	};
 
-	/**
-	 * @brief	Helper class for generating sampler overrides.
-	 */
+	/**	Helper class for generating sampler overrides. */
 	class BS_BSRND_EXPORT SamplerOverrideUtility
 	{
 	public:
 		/**
-		 * @brief	Generates a set of sampler overrides for the specified material. Overrides are
-		 *			generates according to the provided render options. 
+		 * Generates a set of sampler overrides for the specified material. Overrides are generates according to the
+		 * provided render options. 
 		 */
-		static MaterialSamplerOverrides* generateSamplerOverrides(const SPtr<MaterialCore>& material, const SPtr<RenderBeastOptions>& options);
+		static MaterialSamplerOverrides* generateSamplerOverrides(const SPtr<MaterialCore>& material, 
+			const SPtr<RenderBeastOptions>& options);
 
-		/**
-		 * @brief	Destroys sampler overrides previously generated with ::generateSamplerOverrides.
-		 */
+		/**	Destroys sampler overrides previously generated with generateSamplerOverrides(). */
 		static void destroySamplerOverrides(MaterialSamplerOverrides* overrides);
 
 		/**
-		 * @brief	Checks if the provided sampler state requires an override, in case the render options have
-		 *			requirements not fulfilled by current sampler state (e.g. filtering type).
+		 * Checks if the provided sampler state requires an override, in case the render options have requirements not
+		 * fulfilled by current sampler state (e.g. filtering type).
 		 */
-		static bool checkNeedsOverride(const SPtr<SamplerStateCore>& samplerState, const SPtr<RenderBeastOptions>& options);
+		static bool checkNeedsOverride(const SPtr<SamplerStateCore>& samplerState, 
+			const SPtr<RenderBeastOptions>& options);
 
 		/**
-		 * @brief	Generates a new sampler state override using the provided state as the basis. Overridden properties
-		 *			are taken from the provided render options.
+		 * Generates a new sampler state override using the provided state as the basis. Overridden properties are taken
+		 * from the provided render options.
 		 */
-		static SPtr<SamplerStateCore> generateSamplerOverride(const SPtr<SamplerStateCore>& samplerState, const SPtr<RenderBeastOptions>& options);
+		static SPtr<SamplerStateCore> generateSamplerOverride(const SPtr<SamplerStateCore>& samplerState, 
+			const SPtr<RenderBeastOptions>& options);
 	};
+
+	/** @} */
 }

+ 6 - 0
RenderBeast/Include/BsStaticRenderableHandler.h

@@ -12,6 +12,10 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup RenderBeast
+	 *  @{
+	 */
+
 	BS_PARAM_BLOCK_BEGIN(PerFrameParamBuffer)
 		BS_PARAM_BLOCK_ENTRY(float, gTime)
 	BS_PARAM_BLOCK_END
@@ -78,4 +82,6 @@ namespace BansheeEngine
 		PerCameraParamBuffer mPerCameraParams;
 		PerObjectParamBuffer mPerObjectParams;
 	};
+
+	/** @} */
 }