瀏覽代碼

Documentation

Marko Pintera 10 年之前
父節點
當前提交
6d0bba2023

+ 8 - 2
SBansheeEngine/Include/BsScriptScene.h

@@ -5,15 +5,21 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for SceneManager.
+	 */
 	class BS_SCR_BE_EXPORT ScriptScene : public ScriptObject<ScriptScene>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "Scene")
 
 	private:
+		ScriptScene(MonoObject* instance);
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
 		static MonoString* internal_LoadScene(MonoString* path);
 		static void internal_ClearScene();
-
-		ScriptScene(MonoObject* instance);
 	};
 }

+ 31 - 9
SBansheeEngine/Include/BsScriptSceneObject.h

@@ -7,21 +7,49 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for SceneObject.
+	 */
 	class BS_SCR_BE_EXPORT ScriptSceneObject : public ScriptObject<ScriptSceneObject, ScriptGameObjectBase>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "SceneObject")
 
-		static bool checkIfDestroyed(ScriptSceneObject* nativeInstance);
+		/**
+		 * @copydoc	ScriptGameObjectBase::getNativeHandle
+		 */
+		HGameObject getNativeHandle() const override { return mSceneObject; }
 
-		virtual HGameObject getNativeHandle() const override { return mSceneObject; }
-		virtual void setNativeHandle(const HGameObject& gameObject) override;
+		/**
+		 * @copydoc	ScriptGameObjectBase::setNativeHandle
+		 */
+		void setNativeHandle(const HGameObject& gameObject) override;
 
+		/**
+		 * @brief	Returns the native internal scene object.
+		 */
 		HSceneObject getNativeSceneObject() const { return mSceneObject; }
 
+		/**
+		 * @brief	Checks is the scene object wrapped by the provided interop object destroyed.
+		 */
+		static bool checkIfDestroyed(ScriptSceneObject* nativeInstance);
+
 	private:
 		friend class ScriptGameObjectManager;
 
+		ScriptSceneObject(MonoObject* instance, const HSceneObject& sceneObject);
+
+		/**
+		 * @copydoc	ScriptObjectBase::_onManagedInstanceDeleted
+		 */
+		void _onManagedInstanceDeleted() override;
+
+		HSceneObject mSceneObject;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
 		static void internal_createInstance(MonoObject* instance, MonoString* name, UINT32 flags);
 
 		static void internal_setName(ScriptSceneObject* nativeInstance, MonoString* name);
@@ -63,11 +91,5 @@ namespace BansheeEngine
 		static void internal_getRight(ScriptSceneObject* nativeInstance, Vector3* value);
 
 		static void internal_destroy(ScriptSceneObject* nativeInstance, bool immediate);
-		
-		ScriptSceneObject(MonoObject* instance, const HSceneObject& sceneObject);
-
-		void _onManagedInstanceDeleted() override;
-
-		HSceneObject mSceneObject;
 	};
 }

+ 32 - 8
SBansheeEngine/Include/BsScriptScriptCode.h

@@ -7,29 +7,53 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for ScriptCode.
+	 */
 	class BS_SCR_BE_EXPORT ScriptScriptCode : public ScriptObject <ScriptScriptCode, ScriptResourceBase>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "ScriptCode")
 
-		HResource getNativeHandle() const { return mScriptCode; }
-		void setNativeHandle(const HResource& resource);
+		/**
+		 * @copydoc	ScriptResourceBase::getNativeHandle
+		 */
+		HResource getNativeHandle() const override { return mScriptCode; }
 
+		/**
+		 * @copydoc	ScriptResourceBase::setNativeHandle
+		 */
+		void setNativeHandle(const HResource& resource) override;
+
+		/**
+		 * @brief	Returns the native internal script code resource.
+		 */
 		HScriptCode getScriptCodeHandle() const { return mScriptCode; }
 	private:
 		friend class ScriptResourceManager;
 		typedef std::pair<WString, WString> FullTypeName;
 
-		static void internal_createInstance(MonoObject* instance, MonoString* text);
-		static MonoString* internal_getText(ScriptScriptCode* thisPtr);
-		static void internal_setText(ScriptScriptCode* thisPtr, MonoString* text);
-		static MonoArray* internal_getTypes(ScriptScriptCode* thisPtr);
-
 		ScriptScriptCode(MonoObject* instance, const HScriptCode& scriptCode);
 
-		void _onManagedInstanceDeleted();
+		/**
+		 * @copydoc	ScriptObjectBase::_onManagedInstanceDeleted
+		 */
+		void _onManagedInstanceDeleted() override;
+
+		/**
+		 * @brief	Parses the provided C# code and finds a list of all classes
+		 *			and their namespaces. Nested classes are ignored.
+		 */
 		static Vector<FullTypeName> parseTypes(const WString& code);
 
 		HScriptCode mScriptCode;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
+		static void internal_createInstance(MonoObject* instance, MonoString* text);
+		static MonoString* internal_getText(ScriptScriptCode* thisPtr);
+		static void internal_setText(ScriptScriptCode* thisPtr, MonoString* text);
+		static MonoArray* internal_getTypes(ScriptScriptCode* thisPtr);
 	};
 }

+ 12 - 2
SBansheeEngine/Include/BsScriptSerializableArray.h

@@ -5,18 +5,28 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for ManagedSerializableArray.
+	 */
 	class BS_SCR_BE_EXPORT ScriptSerializableArray : public ScriptObject<ScriptSerializableArray>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "SerializableArray")
 
+		/**
+		 * @brief	Creates a new serializable array interop object from the data in the
+		 *			provided property. Caller must ensure the property references an array.
+		 */
 		static ScriptSerializableArray* create(const ScriptSerializableProperty* parentProperty);
 
 	private:
-		static MonoObject* internal_createProperty(ScriptSerializableArray* nativeInstance);
-
 		ScriptSerializableArray(MonoObject* instance, const ManagedSerializableTypeInfoArrayPtr& typeInfo);
 
 		ManagedSerializableTypeInfoArrayPtr mTypeInfo;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
+		static MonoObject* internal_createProperty(ScriptSerializableArray* nativeInstance);
 	};
 }

+ 13 - 3
SBansheeEngine/Include/BsScriptSerializableDictionary.h

@@ -5,19 +5,29 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for ManagedSerializableDictionary.
+	 */
 	class BS_SCR_BE_EXPORT ScriptSerializableDictionary : public ScriptObject<ScriptSerializableDictionary>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "SerializableDictionary")
 
+		/**
+		 * @brief	Creates a new serializable dictionary interop object from the data in the
+		 *			provided property. Caller must ensure the property references a System.Collections.Generic.Dictionary.
+		 */
 		static ScriptSerializableDictionary* create(const ScriptSerializableProperty* parentProperty);
 
 	private:
-		static MonoObject* internal_createKeyProperty(ScriptSerializableDictionary* nativeInstance);
-		static MonoObject* internal_createValueProperty(ScriptSerializableDictionary* nativeInstance);
-
 		ScriptSerializableDictionary(MonoObject* instance, const ManagedSerializableTypeInfoDictionaryPtr& typeInfo);
 
 		ManagedSerializableTypeInfoDictionaryPtr mTypeInfo;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
+		static MonoObject* internal_createKeyProperty(ScriptSerializableDictionary* nativeInstance);
+		static MonoObject* internal_createValueProperty(ScriptSerializableDictionary* nativeInstance);
 	};
 }

+ 18 - 6
SBansheeEngine/Include/BsScriptSerializableField.h

@@ -5,22 +5,34 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for ManagedSerializableFieldInfo.
+	 */
 	class BS_SCR_BE_EXPORT ScriptSerializableField : public ScriptObject<ScriptSerializableField>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "SerializableField")
 
+		/**
+		 * @brief	Creates a new serializable field interop object that references a specific field on
+		 *			a specific object.
+		 *
+		 * @param	parentObject	Instance of the parent object the field belongs to.
+		 * @param	fieldInfo		Information about the field. Caller must ensure the type
+		 *							matches the type of the provided parent object.
+		 */
 		static ScriptSerializableField* create(MonoObject* parentObject, const ManagedSerializableFieldInfoPtr& fieldInfo);
 
 	private:
-		static MonoObject* internal_createProperty(ScriptSerializableField* nativeInstance);
-		static MonoObject* internal_getValue(ScriptSerializableField* nativeInstance, MonoObject* instance);
-		static void internal_setValue(ScriptSerializableField* nativeInstance, MonoObject* instance, MonoObject* value);
-
-		static UINT32 nativeToManagedFieldType(const ManagedSerializableTypeInfoPtr& typeInfo);
-
 		ScriptSerializableField(MonoObject* instance, const ManagedSerializableFieldInfoPtr& fieldInfo);
 
 		ManagedSerializableFieldInfoPtr mFieldInfo;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
+		static MonoObject* internal_createProperty(ScriptSerializableField* nativeInstance);
+		static MonoObject* internal_getValue(ScriptSerializableField* nativeInstance, MonoObject* instance);
+		static void internal_setValue(ScriptSerializableField* nativeInstance, MonoObject* instance, MonoObject* value);
 	};
 }

+ 13 - 3
SBansheeEngine/Include/BsScriptSerializableList.h

@@ -5,18 +5,28 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for ManagedSerializableList.
+	 */
 	class BS_SCR_BE_EXPORT ScriptSerializableList : public ScriptObject<ScriptSerializableList>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "SerializableList")
 
-			static ScriptSerializableList* create(const ScriptSerializableProperty* parentProperty);
+		/**
+		 * @brief	Creates a new serializable list interop object from the data in the
+		 *			provided property. Caller must ensure the property references a System.Collections.Generic.List.
+		 */
+		static ScriptSerializableList* create(const ScriptSerializableProperty* parentProperty);
 
 	private:
-		static MonoObject* internal_createProperty(ScriptSerializableList* nativeInstance);
-
 		ScriptSerializableList(MonoObject* instance, const ManagedSerializableTypeInfoListPtr& typeInfo);
 
 		ManagedSerializableTypeInfoListPtr mTypeInfo;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
+		static MonoObject* internal_createProperty(ScriptSerializableList* nativeInstance);
 	};
 }

+ 20 - 4
SBansheeEngine/Include/BsScriptSerializableObject.h

@@ -5,22 +5,38 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for ManagedSerializableObject.
+	 */
 	class BS_SCR_BE_EXPORT ScriptSerializableObject : public ScriptObject<ScriptSerializableObject>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "SerializableObject")
 
+		/**
+		 * @brief	Creates a new serializable object interop object from the data in the
+		 *			provided property. 
+		 */
 		static ScriptSerializableObject* create(const ScriptSerializableProperty* parentProperty);
 
 	private:
-		static void internal_createInstance(MonoObject* instance, MonoReflectionType* type);
+		ScriptSerializableObject(MonoObject* instance, const ManagedSerializableTypeInfoPtr& typeInfo);
 
+		/**
+		 * @brief	Creates a new interop object for a serializable object from an existing managed instance and
+		 *			an object info structure describing the type of the managed instance.
+		 *
+		 * @param	instance	Managed instance the interop object will reference.
+		 * @param	objInfo		Data about the type of the provided managed instance.
+		 */
 		static ScriptSerializableObject* createInternal(MonoObject* instance, const ManagedSerializableObjectInfoPtr& objInfo);
 
-		ScriptSerializableObject(MonoObject* instance, const ManagedSerializableTypeInfoPtr& typeInfo);
-
 		ManagedSerializableTypeInfoPtr mTypeInfo;
-
 		static MonoField* FieldsField;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
+		static void internal_createInstance(MonoObject* instance, MonoReflectionType* type);
 	};
 }

+ 21 - 4
SBansheeEngine/Include/BsScriptSerializableProperty.h

@@ -5,18 +5,39 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for SerializableProperty (not implemented as its
+	 *			own class, but instead implemented directly in the inerop object). Serializable property
+	 *			wraps all types of serializable entries, whether they're object fields, array entries, dictionary
+	 *			entries, etc. and offers a simple interface to access them.
+	 */
 	class BS_SCR_BE_EXPORT ScriptSerializableProperty : public ScriptObject<ScriptSerializableProperty>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "SerializableProperty")
 
+		/**
+		 * @brief	Creates a new managed serializable property object for the specified type.
+		 *
+		 * @param	typeInfo	Data about the type the property references.
+		 */
 		static ScriptSerializableProperty* create(const ManagedSerializableTypeInfoPtr& typeInfo);
 
+		/**
+		 * @brief	Returns the data about the type the property is referencing.
+		 */
 		ManagedSerializableTypeInfoPtr getTypeInfo() const { return mTypeInfo; }
 
 		~ScriptSerializableProperty() {}
 
 	private:
+		ScriptSerializableProperty(MonoObject* instance, const ManagedSerializableTypeInfoPtr& typeInfo);
+
+		ManagedSerializableTypeInfoPtr mTypeInfo;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
 		static MonoObject* internal_createObject(ScriptSerializableProperty* nativeInstance);
 		static MonoObject* internal_createArray(ScriptSerializableProperty* nativeInstance);
 		static MonoObject* internal_createList(ScriptSerializableProperty* nativeInstance);
@@ -28,9 +49,5 @@ namespace BansheeEngine
 		static MonoObject* internal_createManagedDictionaryInstance(ScriptSerializableProperty* nativeInstance);
 
 		static MonoObject* internal_cloneManagedInstance(ScriptSerializableProperty* nativeInstance, MonoObject* original);
-
-		ScriptSerializableProperty(MonoObject* instance, const ManagedSerializableTypeInfoPtr& typeInfo);
-
-		ManagedSerializableTypeInfoPtr mTypeInfo;
 	};
 }

+ 24 - 5
SBansheeEngine/Include/BsScriptShader.h

@@ -6,24 +6,43 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for Shader.
+	 */
 	class BS_SCR_BE_EXPORT ScriptShader : public ScriptObject <ScriptShader, ScriptResourceBase>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "Shader")
 
-		HResource getNativeHandle() const { return mShader; }
-		void setNativeHandle(const HResource& resource);
+		/**
+		 * @copydoc	ScriptResourceBase::getNativeHandle
+		 */
+		HResource getNativeHandle() const override { return mShader; }
 
+		/**
+		 * @copydoc	ScriptResourceBase::setNativeHandle
+		 */
+		void setNativeHandle(const HResource& resource) override;
+
+		/**
+		 * @brief	Returns the native internal shader resource.
+		 */
 		HShader getShaderHandle() const { return mShader; }
 	private:
 		friend class ScriptResourceManager;
 
-		static void internal_GetShaderParameters(ScriptShader* nativeInstance, MonoArray** outNames, MonoArray** outTypes);
-
 		ScriptShader(MonoObject* instance, const HShader& shader);
 
-		void _onManagedInstanceDeleted();
+		/**
+		 * @copydoc	ScriptObjectBase::_onManagedInstanceDeleted
+		 */
+		void _onManagedInstanceDeleted() override;
 
 		HShader mShader;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
+		static void internal_GetShaderParameters(ScriptShader* nativeInstance, MonoArray** outNames, MonoArray** outTypes);
 	};
 }

+ 27 - 5
SBansheeEngine/Include/BsScriptSpriteTexture.h

@@ -6,27 +6,49 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for SpriteTexture.
+	 */
 	class BS_SCR_BE_EXPORT ScriptSpriteTexture : public ScriptObject<ScriptSpriteTexture, ScriptResourceBase>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "SpriteTexture")
 
+		/**
+		 * @brief	Returns the native wrapped sprite texture resource handle.
+		 */
 		const HSpriteTexture& getInternalValue() const { return mTexture; }
 
-		HResource getNativeHandle() const { return mTexture; }
-		void setNativeHandle(const HResource& resource);
+		/**
+		 * @copydoc	ScriptResourceBase::getNativeHandle
+		 */
+		HResource getNativeHandle() const override { return mTexture; }
 
+		/**
+		 * @copydoc	ScriptResourceBase::setNativeHandle
+		 */
+		void setNativeHandle(const HResource& resource) override;
+
+		/**
+		 * @brief	Returns the native internal sprite texture resource.
+		 */
 		static MonoObject* toManaged(const HSpriteTexture& texture);
 
 	private:
 		friend class ScriptResourceManager;
 
-		static void internal_createInstance(MonoObject* instance, MonoObject* texture, Vector2 offset, Vector2 scale);
-
 		ScriptSpriteTexture(MonoObject* instance, const HSpriteTexture& texture);
 
-		void _onManagedInstanceDeleted();
+		/**
+		 * @copydoc	ScriptObjectBase::_onManagedInstanceDeleted
+		 */
+		void _onManagedInstanceDeleted() override;
 
 		HSpriteTexture mTexture;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
+		static void internal_createInstance(MonoObject* instance, MonoObject* texture, Vector2 offset, Vector2 scale);
 	};
 }

+ 23 - 4
SBansheeEngine/Include/BsScriptStringTable.h

@@ -6,6 +6,9 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for StringTable.
+	 */
 	class BS_SCR_BE_EXPORT ScriptStringTable : public ScriptObject <ScriptStringTable, ScriptResourceBase>
 	{
 	public:
@@ -13,12 +16,32 @@ namespace BansheeEngine
 
 		ScriptStringTable(MonoObject* instance, const HStringTable& table);
 
+		/**
+		 * @copydoc	ScriptResourceBase::getNativeHandle
+		 */
 		HResource getNativeHandle() const override { return mTable; }
+
+		/**
+		 * @copydoc	ScriptResourceBase::setNativeHandle
+		 */
 		void setNativeHandle(const HResource& resource) override;
 
+		/**
+		 * @brief	Returns the native internal string table resource.
+		 */
 		HStringTable getStringTableHandle() const { return mTable; }
 
 	private:
+		/**
+		 * @copydoc	ScriptObjectBase::_onManagedInstanceDeleted
+		 */
+		void _onManagedInstanceDeleted() override;
+
+		HStringTable mTable;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
 		static void internal_CreateInstance(MonoObject* instance);
 
 		static UINT32 internal_GetNumStrings(ScriptStringTable* thisPtr);
@@ -31,9 +54,5 @@ namespace BansheeEngine
 
 		static void internal_GetString(ScriptStringTable* thisPtr, MonoString* identifier, Language language, MonoString** value);
 		static void internal_GetStringDefault(ScriptStringTable* thisPtr, MonoString* identifier, MonoString** value);
-
-		void _onManagedInstanceDeleted() override;
-
-		HStringTable mTable;
 	};
 }

+ 8 - 2
SBansheeEngine/Include/BsScriptStringTableManager.h

@@ -7,19 +7,25 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for StringTableManager.
+	 */
 	class BS_SCR_BE_EXPORT ScriptStringTableManager : public ScriptObject <ScriptStringTableManager>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "StringTables")
 
 	private:
+		ScriptStringTableManager(MonoObject* instance);
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
 		static void internal_GetActiveLanguage(Language* value);
 		static void internal_SetActiveLanguage(Language value);
 
 		static MonoObject* internal_GetTable(UINT32 id);
 		static void internal_SetTable(UINT32 id, MonoObject* table);
 		static void internal_RemoveTable(UINT32 id);
-
-		ScriptStringTableManager(MonoObject* instance);
 	};
 }

+ 9 - 0
SBansheeEngine/Include/BsScriptTexture.h

@@ -7,6 +7,9 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Base class for all interop objects referencing textures.
+	 */
 	class BS_SCR_BE_EXPORT ScriptTextureBase : public ScriptResourceBase
 	{
 	protected:
@@ -19,6 +22,9 @@ namespace BansheeEngine
 		virtual ~ScriptTextureBase() {}
 	};
 
+	/**
+	 * @brief	Interop class between C++ & CLR for Texture.
+	 */
 	class BS_SCR_BE_EXPORT ScriptTexture : public ScriptObject <ScriptTexture, ScriptTextureBase>
 	{
 	public:
@@ -27,6 +33,9 @@ namespace BansheeEngine
 	private:
 		ScriptTexture(MonoObject* instance);
 
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
 		static void internal_getPixelFormat(ScriptTexture* thisPtr, PixelFormat* value);
 		static void internal_getUsage(ScriptTexture* thisPtr, TextureUsage* value);
 		static void internal_getWidth(ScriptTexture* thisPtr, int* value);

+ 28 - 9
SBansheeEngine/Include/BsScriptTexture2D.h

@@ -7,29 +7,48 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for a 2D Texture.
+	 */
 	class BS_SCR_BE_EXPORT ScriptTexture2D : public ScriptObject<ScriptTexture2D, ScriptTextureBase>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "Texture2D")
 
-		HResource getNativeHandle() const { return mTexture; }
-		void setNativeHandle(const HResource& resource);
+		/**
+		 * @copydoc	ScriptResourceBase::getNativeHandle
+		 */
+		HResource getNativeHandle() const override { return mTexture; }
 
+		/**
+		 * @copydoc	ScriptResourceBase::setNativeHandle
+		 */
+		void setNativeHandle(const HResource& resource) override;
+
+		/**
+		 * @brief	Returns the native internal 2D texture resource.
+		 */
 		HTexture getTextureHandle() const { return mTexture; }
 	private:
 		friend class ScriptResourceManager;
 
-		static void internal_createInstance(MonoObject* instance, PixelFormat format, UINT32 width, 
+		ScriptTexture2D(MonoObject* instance, const HTexture& texture);
+
+		/**
+		 * @copydoc	ScriptObjectBase::_onManagedInstanceDeleted
+		 */
+		void _onManagedInstanceDeleted() override;
+
+		HTexture mTexture;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
+		static void internal_createInstance(MonoObject* instance, PixelFormat format, UINT32 width,
 			UINT32 height, TextureUsage usage, UINT32 numSamples, bool hasMipmaps, bool gammaCorrection);
 		static MonoObject* internal_getPixels(ScriptTexture2D* thisPtr, UINT32 mipLevel);
 		static MonoObject* internal_getGPUPixels(ScriptTexture2D* thisPtr, UINT32 mipLevel);
 		static void internal_setPixels(ScriptTexture2D* thisPtr, MonoObject* data, UINT32 mipLevel);
 		static void internal_setPixelsArray(ScriptTexture2D* thisPtr, MonoArray* colors, UINT32 mipLevel);
-
-		ScriptTexture2D(MonoObject* instance, const HTexture& texture);
-
-		void _onManagedInstanceDeleted();
-
-		HTexture mTexture;
 	};
 }

+ 27 - 8
SBansheeEngine/Include/BsScriptTexture3D.h

@@ -7,28 +7,47 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for 3D Texture.
+	 */
 	class BS_SCR_BE_EXPORT ScriptTexture3D : public ScriptObject <ScriptTexture3D, ScriptTextureBase>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "Texture3D")
 
-		HResource getNativeHandle() const { return mTexture; }
-		void setNativeHandle(const HResource& resource);
+		/**
+		 * @copydoc	ScriptResourceBase::getNativeHandle
+		 */
+		HResource getNativeHandle() const override { return mTexture; }
 
+		/**
+		 * @copydoc	ScriptResourceBase::setNativeHandle
+		 */
+		void setNativeHandle(const HResource& resource) override;
+
+		/**
+		 * @brief	Returns the native internal 3D texture resource.
+		 */
 		HTexture getTextureHandle() const { return mTexture; }
 	private:
 		friend class ScriptResourceManager;
 
+		ScriptTexture3D(MonoObject* instance, const HTexture& texture);
+
+		/**
+		 * @copydoc	ScriptObjectBase::_onManagedInstanceDeleted
+		 */
+		void _onManagedInstanceDeleted() override;
+
+		HTexture mTexture;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
 		static void internal_createInstance(MonoObject* instance, PixelFormat format, UINT32 width,
 			UINT32 height, UINT32 depth, TextureUsage usage, bool hasMipmaps, bool gammaCorrection);
 		static MonoObject* internal_getPixels(ScriptTexture3D* thisPtr, UINT32 mipLevel);
 		static MonoObject* internal_getGPUPixels(ScriptTexture3D* thisPtr, UINT32 mipLevel);
 		static void internal_setPixels(ScriptTexture3D* thisPtr, MonoObject* data, UINT32 mipLevel);
-
-		ScriptTexture3D(MonoObject* instance, const HTexture& texture);
-
-		void _onManagedInstanceDeleted();
-
-		HTexture mTexture;
 	};
 }

+ 27 - 8
SBansheeEngine/Include/BsScriptTextureCube.h

@@ -7,28 +7,47 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for a cube Texture.
+	 */
 	class BS_SCR_BE_EXPORT ScriptTextureCube : public ScriptObject <ScriptTextureCube, ScriptTextureBase>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "TextureCube")
 
-		HResource getNativeHandle() const { return mTexture; }
-		void setNativeHandle(const HResource& resource);
+		/**
+		 * @copydoc	ScriptResourceBase::getNativeHandle
+		 */
+		HResource getNativeHandle() const override { return mTexture; }
 
+		/**
+		 * @copydoc	ScriptResourceBase::setNativeHandle
+		 */
+		void setNativeHandle(const HResource& resource) override;
+
+		/**
+		 * @brief	Returns the native internal cube texture resource.
+		 */
 		HTexture getTextureHandle() const { return mTexture; }
 	private:
 		friend class ScriptResourceManager;
 
+		ScriptTextureCube(MonoObject* instance, const HTexture& texture);
+
+		/**
+		 * @copydoc	ScriptObjectBase::_onManagedInstanceDeleted
+		 */
+		void _onManagedInstanceDeleted() override;
+
+		HTexture mTexture;
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
 		static void internal_createInstance(MonoObject* instance, PixelFormat format, UINT32 width,
 			UINT32 height, TextureUsage usage, UINT32 numSamples, bool hasMipmaps, bool gammaCorrection);
 		static MonoObject* internal_getPixels(ScriptTextureCube* thisPtr, UINT32 face, UINT32 mipLevel);
 		static MonoObject* internal_getGPUPixels(ScriptTextureCube* thisPtr, UINT32 face, UINT32 mipLevel);
 		static void internal_setPixels(ScriptTextureCube* thisPtr, MonoObject* data, UINT32 face, UINT32 mipLevel);
-
-		ScriptTextureCube(MonoObject* instance, const HTexture& texture);
-
-		void _onManagedInstanceDeleted();
-
-		HTexture mTexture;
 	};
 }

+ 8 - 2
SBansheeEngine/Include/BsScriptTime.h

@@ -5,17 +5,23 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for Time.
+	 */
 	class BS_SCR_BE_EXPORT ScriptTime : public ScriptObject <ScriptTime>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "Time")
 
 	private:
+		ScriptTime(MonoObject* instance);
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
 		static float internal_getElapsed();
 		static float internal_getFrameDelta();
 		static UINT64 internal_getFrameNumber();
 		static UINT64 internal_getPrecise();
-
-		ScriptTime(MonoObject* instance);
 	};
 }

+ 36 - 0
SBansheeEngine/Include/BsScriptVector.h

@@ -8,36 +8,72 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for Vector2.
+	 */
 	class BS_SCR_BE_EXPORT ScriptVector2 : public ScriptObject <ScriptVector2>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "Vector2")
 
+		/**
+		 * @brief	Unboxes a boxed managed Vector2 struct and returns
+		 *			the native version of the structure.
+		 */
 		static Vector2 unbox(MonoObject* obj);
+
+		/**
+		 * @brief	Boxes a native Vector2 struct and returns
+		 *			a managed object containing it.
+		 */
 		static MonoObject* box(const Vector2& value);
 
 	private:
 		ScriptVector2(MonoObject* instance);
 	};
 
+	/**
+	 * @brief	Interop class between C++ & CLR for Vector3.
+	 */
 	class BS_SCR_BE_EXPORT ScriptVector3 : public ScriptObject <ScriptVector3>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "Vector3")
 
+		/**
+		 * @brief	Unboxes a boxed managed Vector3 struct and returns
+		 *			the native version of the structure.
+		 */
 		static Vector3 unbox(MonoObject* obj);
+
+		/**
+		 * @brief	Boxes a native Vector3 struct and returns
+		 *			a managed object containing it.
+		 */
 		static MonoObject* box(const Vector3& value);
 
 	private:
 		ScriptVector3(MonoObject* instance);
 	};
 
+	/**
+	 * @brief	Interop class between C++ & CLR for Vector4.
+	 */
 	class BS_SCR_BE_EXPORT ScriptVector4 : public ScriptObject <ScriptVector4>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "Vector4")
 
+		/**
+		 * @brief	Unboxes a boxed managed Vector4 struct and returns
+		 *			the native version of the structure.
+		 */
 		static Vector4 unbox(MonoObject* obj);
+
+		/**
+		 * @brief	Boxes a native Vector4 struct and returns
+		 *			a managed object containing it.
+		 */
 		static MonoObject* box(const Vector4& value);
 
 	private:

+ 12 - 0
SBansheeEngine/Include/BsScriptVector2I.h

@@ -6,12 +6,24 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for Vector2I.
+	 */
 	class BS_SCR_BE_EXPORT ScriptVector2I : public ScriptObject<ScriptVector2I>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "Vector2I")
 
+		/**
+		 * @brief	Unboxes a boxed managed Vector2I struct and returns
+		 *			the native version of the structure.
+		 */
 		static Vector2I unbox(MonoObject* obj);
+
+		/**
+		 * @brief	Boxes a native Vector2I struct and returns
+		 *			a managed object containing it.
+		 */
 		static MonoObject* box(const Vector2I& value);
 
 	private:

+ 17 - 2
SBansheeEngine/Include/BsScriptVirtualButton.h

@@ -6,17 +6,32 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for VirtualButton.
+	 */
 	class BS_SCR_BE_EXPORT ScriptVirtualButton : public ScriptObject <ScriptVirtualButton>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "VirtualButton")
 
+		/**
+		 * @brief	Unboxes a boxed managed VirtualButton struct and returns
+		 *			the native version of the structure.
+		 */
 		static VirtualButton unbox(MonoObject* obj);
+
+		/**
+		 * @brief	Boxes a native VirtualButton struct and returns
+		 *			a managed object containing it.
+		 */
 		static MonoObject* box(const VirtualButton& value);
 
 	private:
-		static UINT32 internal_InitVirtualButton(MonoString* name);
-
 		ScriptVirtualButton(MonoObject* instance);
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
+		static UINT32 internal_InitVirtualButton(MonoString* name);
 	};
 }

+ 40 - 6
SBansheeEngine/Include/BsScriptVirtualInput.h

@@ -6,18 +6,58 @@
 
 namespace BansheeEngine
 {
+	/**
+	 * @brief	Interop class between C++ & CLR for VirtualInput.
+	 */
 	class BS_SCR_BE_EXPORT ScriptVirtualInput : public ScriptObject<ScriptVirtualInput>
 	{
 	public:
 		SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "VirtualInput")
 
+		/**
+		 * @brief	Must be called on library load. Hooks up necessary callbacks.
+		 */
 		static void startUp();
+
+		/**
+		 * @brief	Must be called before library shutdown. Releases previously hooked callbacks.
+		 */
 		static void shutDown();
 	private:
+		/**
+		 * @brief	Triggered whenever a virtual button is pressed.
+		 *
+		 * @param	btn			Virtual button that was pressed.
+		 * @param	deviceIdx	Index of the device the button was pressed on.
+		 */
 		static void onButtonDown(const VirtualButton& btn, UINT32 deviceIdx);
+
+		/**
+		 * @brief	Triggered whenever a virtual button is released.
+		 *
+		 * @param	btn			Virtual button that was released.
+		 * @param	deviceIdx	Index of the device the button was released on.
+		 */
 		static void onButtonUp(const VirtualButton& btn, UINT32 deviceIdx);
+
+		/**
+		 * @brief	Triggered every frame while a virtual button is held down.
+		 *
+		 * @param	btn			Virtual button that is being held.
+		 * @param	deviceIdx	Index of the device the button is held.
+		 */
 		static void onButtonHeld(const VirtualButton& btn, UINT32 deviceIdx);
 
+		static HEvent OnButtonPressedConn;
+		static HEvent OnButtonReleasedConn;
+		static HEvent OnButtonHeldConn;
+
+		ScriptVirtualInput(MonoObject* instance);
+
+		/************************************************************************/
+		/* 								CLR HOOKS						   		*/
+		/************************************************************************/
+
 		static MonoObject* internal_getKeyConfig();
 		static void internal_setKeyConfig(MonoObject* keyConfig);
 		static bool internal_isButtonHeld(VirtualButton btn, UINT32 deviceIdx);
@@ -30,11 +70,5 @@ namespace BansheeEngine
 		static OnButtonEventThunkDef OnButtonUpThunk;
 		static OnButtonEventThunkDef OnButtonDownThunk;
 		static OnButtonEventThunkDef OnButtonHeldThunk;
-
-		static HEvent OnButtonPressedConn;
-		static HEvent OnButtonReleasedConn;
-		static HEvent OnButtonHeldConn;
-
-		ScriptVirtualInput(MonoObject* instance);
 	};
 }