Преглед изворни кода

Most GUI elements are now tintable

Marko Pintera пре 11 година
родитељ
комит
27d362cd4c
100 измењених фајлова са 641 додато и 34 уклоњено
  1. 6 0
      BansheeEditor/Include/BsGUIColor.h
  2. 5 0
      BansheeEditor/Include/BsGUIColorField.h
  3. 5 0
      BansheeEditor/Include/BsGUIComponentFoldout.h
  4. 5 0
      BansheeEditor/Include/BsGUIFloatField.h
  5. 5 0
      BansheeEditor/Include/BsGUIFoldout.h
  6. 5 0
      BansheeEditor/Include/BsGUIIntField.h
  7. 5 0
      BansheeEditor/Include/BsGUITextField.h
  8. 5 0
      BansheeEditor/Include/BsGUIToggleField.h
  9. 5 0
      BansheeEditor/Include/BsGUIVector2Field.h
  10. 5 0
      BansheeEditor/Include/BsGUIVector3Field.h
  11. 5 0
      BansheeEditor/Include/BsGUIVector4Field.h
  12. 13 4
      BansheeEditor/Source/BsGUIColor.cpp
  13. 8 0
      BansheeEditor/Source/BsGUIColorField.cpp
  14. 5 0
      BansheeEditor/Source/BsGUIComponentFoldout.cpp
  15. 8 0
      BansheeEditor/Source/BsGUIFloatField.cpp
  16. 6 0
      BansheeEditor/Source/BsGUIFoldout.cpp
  17. 8 0
      BansheeEditor/Source/BsGUIIntField.cpp
  18. 8 0
      BansheeEditor/Source/BsGUITextField.cpp
  19. 8 0
      BansheeEditor/Source/BsGUIToggleField.cpp
  20. 9 0
      BansheeEditor/Source/BsGUIVector2Field.cpp
  21. 10 0
      BansheeEditor/Source/BsGUIVector3Field.cpp
  22. 11 0
      BansheeEditor/Source/BsGUIVector4Field.cpp
  23. 11 0
      BansheeEngine/Include/BsGUIButtonBase.h
  24. 5 0
      BansheeEngine/Include/BsGUIElement.h
  25. 11 0
      BansheeEngine/Include/BsGUIInputBox.h
  26. 6 0
      BansheeEngine/Include/BsGUILabel.h
  27. 5 0
      BansheeEngine/Include/BsGUIProgressBar.h
  28. 6 0
      BansheeEngine/Include/BsGUIScrollBar.h
  29. 5 0
      BansheeEngine/Include/BsGUISlider.h
  30. 6 0
      BansheeEngine/Include/BsGUISliderHandle.h
  31. 6 0
      BansheeEngine/Include/BsGUITexture.h
  32. 35 0
      BansheeEngine/Source/BsGUIButtonBase.cpp
  33. 24 0
      BansheeEngine/Source/BsGUIInputBox.cpp
  34. 8 0
      BansheeEngine/Source/BsGUILabel.cpp
  35. 6 0
      BansheeEngine/Source/BsGUIProgressBar.cpp
  36. 1 0
      BansheeEngine/Source/BsGUIRenderTexture.cpp
  37. 8 0
      BansheeEngine/Source/BsGUIScrollBar.cpp
  38. 6 0
      BansheeEngine/Source/BsGUISlider.cpp
  39. 8 0
      BansheeEngine/Source/BsGUISliderHandle.cpp
  40. 8 0
      BansheeEngine/Source/BsGUITexture.cpp
  41. 8 0
      MBansheeEditor/GUI/GUIColorField.cs
  42. 8 0
      MBansheeEditor/GUI/GUIComponentFoldout.cs
  43. 8 0
      MBansheeEditor/GUI/GUIFloatField.cs
  44. 8 0
      MBansheeEditor/GUI/GUIFoldout.cs
  45. 8 0
      MBansheeEditor/GUI/GUIGameObjectField.cs
  46. 8 0
      MBansheeEditor/GUI/GUIIntField.cs
  47. 8 0
      MBansheeEditor/GUI/GUIResourceField.cs
  48. 8 0
      MBansheeEditor/GUI/GUITextField.cs
  49. 8 0
      MBansheeEditor/GUI/GUIToggleField.cs
  50. 8 0
      MBansheeEditor/GUI/GUIVector2Field.cs
  51. 8 0
      MBansheeEditor/GUI/GUIVector3Field.cs
  52. 8 0
      MBansheeEditor/GUI/GUIVector4Field.cs
  53. 8 0
      MBansheeEngine/GUI/GUIButton.cs
  54. 8 0
      MBansheeEngine/GUI/GUILabel.cs
  55. 8 0
      MBansheeEngine/GUI/GUIListBox.cs
  56. 8 0
      MBansheeEngine/GUI/GUIProgressBar.cs
  57. 8 0
      MBansheeEngine/GUI/GUIRenderTexture.cs
  58. 16 0
      MBansheeEngine/GUI/GUISlider.cs
  59. 9 1
      MBansheeEngine/GUI/GUITextBox.cs
  60. 8 0
      MBansheeEngine/GUI/GUITexture.cs
  61. 8 0
      MBansheeEngine/GUI/GUIToggle.cs
  62. 5 0
      SBansheeEditor/Include/BsGUIGameObjectField.h
  63. 5 0
      SBansheeEditor/Include/BsGUIResourceField.h
  64. 1 0
      SBansheeEditor/Include/BsScriptGUIColorField.h
  65. 1 0
      SBansheeEditor/Include/BsScriptGUIComponentFoldout.h
  66. 1 0
      SBansheeEditor/Include/BsScriptGUIFloatField.h
  67. 1 0
      SBansheeEditor/Include/BsScriptGUIFoldout.h
  68. 1 0
      SBansheeEditor/Include/BsScriptGUIGameObjectField.h
  69. 1 0
      SBansheeEditor/Include/BsScriptGUIIntField.h
  70. 1 0
      SBansheeEditor/Include/BsScriptGUIResourceField.h
  71. 1 0
      SBansheeEditor/Include/BsScriptGUITextField.h
  72. 1 0
      SBansheeEditor/Include/BsScriptGUIToggleField.h
  73. 1 0
      SBansheeEditor/Include/BsScriptGUIVector2Field.h
  74. 1 0
      SBansheeEditor/Include/BsScriptGUIVector3Field.h
  75. 1 0
      SBansheeEditor/Include/BsScriptGUIVector4Field.h
  76. 9 0
      SBansheeEditor/Source/BsGUIGameObjectField.cpp
  77. 9 0
      SBansheeEditor/Source/BsGUIResourceField.cpp
  78. 7 2
      SBansheeEditor/Source/BsScriptGUIColorField.cpp
  79. 7 2
      SBansheeEditor/Source/BsScriptGUIComponentFoldout.cpp
  80. 7 3
      SBansheeEditor/Source/BsScriptGUIFloatField.cpp
  81. 7 2
      SBansheeEditor/Source/BsScriptGUIFoldout.cpp
  82. 7 0
      SBansheeEditor/Source/BsScriptGUIGameObjectField.cpp
  83. 7 4
      SBansheeEditor/Source/BsScriptGUIIntField.cpp
  84. 7 0
      SBansheeEditor/Source/BsScriptGUIResourceField.cpp
  85. 7 3
      SBansheeEditor/Source/BsScriptGUITextField.cpp
  86. 7 2
      SBansheeEditor/Source/BsScriptGUIToggleField.cpp
  87. 7 3
      SBansheeEditor/Source/BsScriptGUIVector2Field.cpp
  88. 7 3
      SBansheeEditor/Source/BsScriptGUIVector3Field.cpp
  89. 7 3
      SBansheeEditor/Source/BsScriptGUIVector4Field.cpp
  90. 2 0
      SBansheeEngine/Include/BsScriptGUIButton.h
  91. 1 0
      SBansheeEngine/Include/BsScriptGUIInputBox.h
  92. 1 0
      SBansheeEngine/Include/BsScriptGUILabel.h
  93. 1 0
      SBansheeEngine/Include/BsScriptGUIListBox.h
  94. 1 0
      SBansheeEngine/Include/BsScriptGUIProgressBar.h
  95. 1 0
      SBansheeEngine/Include/BsScriptGUIRenderTexture.h
  96. 2 0
      SBansheeEngine/Include/BsScriptGUISlider.h
  97. 1 0
      SBansheeEngine/Include/BsScriptGUITexture.h
  98. 1 0
      SBansheeEngine/Include/BsScriptGUIToggle.h
  99. 7 0
      SBansheeEngine/Source/BsScriptGUIButton.cpp
  100. 7 2
      SBansheeEngine/Source/BsScriptGUIInputBox.cpp

+ 6 - 0
BansheeEditor/Include/BsGUIColor.h

@@ -20,6 +20,11 @@ namespace BansheeEngine
 		void setColor(const Color& color);
 		Color getColor() const { return mColor; }
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		Event<void(const Color&)> onValueChanged;
 	protected:
 		GUIColor(const String& styleName, const GUILayoutOptions& layoutOptions);
@@ -68,5 +73,6 @@ namespace BansheeEngine
 		IMAGE_SPRITE_DESC mAlphaImageDesc;
 
 		Color mColor;
+		Color mTint;
 	};
 }

+ 5 - 0
BansheeEditor/Include/BsGUIColorField.h

@@ -18,6 +18,11 @@ namespace BansheeEngine
 		Color getValue() const { return mValue; }
 		void setValue(const Color& value);
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		Vector2I _getOptimalSize() const;
 
 		Event<void(const Color&)> onValueChanged;

+ 5 - 0
BansheeEditor/Include/BsGUIComponentFoldout.h

@@ -26,6 +26,11 @@ namespace BansheeEngine
 		 */
 		void setContent(const GUIContent& content);
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		void _updateLayoutInternal(INT32 x, INT32 y, UINT32 width, UINT32 height,
 			Rect2I clipRect, UINT8 widgetDepth, UINT16 areaDepth);
 

+ 5 - 0
BansheeEditor/Include/BsGUIFloatField.h

@@ -19,6 +19,11 @@ namespace BansheeEngine
 
 		bool hasInputFocus() const { return mHasInputFocus; }
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		Event<void(float)> onValueChanged;
 	protected:
 		virtual ~GUIFloatField();

+ 5 - 0
BansheeEditor/Include/BsGUIFoldout.h

@@ -27,6 +27,11 @@ namespace BansheeEngine
 		 */
 		void setContent(const GUIContent& content);
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		void _updateLayoutInternal(INT32 x, INT32 y, UINT32 width, UINT32 height,
 			Rect2I clipRect, UINT8 widgetDepth, UINT16 areaDepth);
 

+ 5 - 0
BansheeEditor/Include/BsGUIIntField.h

@@ -20,6 +20,11 @@ namespace BansheeEngine
 
 		bool hasInputFocus() const { return mHasInputFocus; }
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		Event<void(INT32)> onValueChanged;
 	protected:
 		virtual ~GUIIntField();

+ 5 - 0
BansheeEditor/Include/BsGUITextField.h

@@ -55,6 +55,11 @@ namespace BansheeEngine
 
 		bool hasInputFocus() const { return mHasInputFocus; }
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		Event<void(const WString&)> onValueChanged;
 	protected:
 		static const UINT32 DEFAULT_LABEL_WIDTH;

+ 5 - 0
BansheeEditor/Include/BsGUIToggleField.h

@@ -17,6 +17,11 @@ namespace BansheeEngine
 		bool getValue() const { return mValue; }
 		void setValue(bool value);
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		Event<void(bool)> onValueChanged;
 	protected:
 		virtual ~GUIToggleField() { }

+ 5 - 0
BansheeEditor/Include/BsGUIVector2Field.h

@@ -20,6 +20,11 @@ namespace BansheeEngine
 
 		bool hasInputFocus() const;
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		Event<void(const Vector2&)> onValueChanged;
 	protected:
 		virtual ~GUIVector2Field() { }

+ 5 - 0
BansheeEditor/Include/BsGUIVector3Field.h

@@ -20,6 +20,11 @@ namespace BansheeEngine
 
 		bool hasInputFocus() const;
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		Event<void(const Vector3&)> onValueChanged;
 	protected:
 		virtual ~GUIVector3Field() { }

+ 5 - 0
BansheeEditor/Include/BsGUIVector4Field.h

@@ -20,6 +20,11 @@ namespace BansheeEngine
 
 		bool hasInputFocus() const;
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		Event<void(const Vector4&)> onValueChanged;
 	protected:
 		virtual ~GUIVector4Field() { }

+ 13 - 4
BansheeEditor/Source/BsGUIColor.cpp

@@ -49,11 +49,12 @@ namespace BansheeEngine
 	{
 		mColor = color;
 
-		mColorImageDesc.color = mColor;
-		mColorImageDesc.color.a = 1.0f;
+		markContentAsDirty();
+	}
 
-		mAlphaImageDesc.color = Color::White * mColor.a;
-		mAlphaImageDesc.color.a = 1.0f;
+	void GUIColor::setTint(const Color& color)
+	{
+		mTint = color;
 
 		markContentAsDirty();
 	}
@@ -91,6 +92,14 @@ namespace BansheeEngine
 
 	void GUIColor::updateRenderElementsInternal()
 	{		
+		Color color = mColor * mTint;
+
+		mColorImageDesc.color = color;
+		mColorImageDesc.color.a = 1.0f;
+
+		mAlphaImageDesc.color = Color::White * color.a;
+		mAlphaImageDesc.color.a = 1.0f;
+
 		mColorImageDesc.width = (UINT32)(mWidth * ALPHA_SPLIT_POSITION);
 		mColorImageDesc.height = mHeight;
 

+ 8 - 0
BansheeEditor/Source/BsGUIColorField.cpp

@@ -36,6 +36,14 @@ namespace BansheeEngine
 		mColor->setColor(color);
 	}
 
+	void GUIColorField::setTint(const Color& color)
+	{
+		if (mLabel != nullptr)
+			mLabel->setTint(color);
+
+		mColor->setTint(color);
+	}
+
 	Vector2I GUIColorField::_getOptimalSize() const
 	{
 		Vector2I optimalsize = mColor->_getOptimalSize();

+ 5 - 0
BansheeEditor/Source/BsGUIComponentFoldout.cpp

@@ -70,6 +70,11 @@ namespace BansheeEngine
 		mToggle->setContent(content);
 	}
 
+	void GUIComponentFoldout::setTint(const Color& color)
+	{
+		mToggle->setTint(color);
+	}
+
 	void GUIComponentFoldout::toggleTriggered(bool value)
 	{
 		mIsExpanded = value;

+ 8 - 0
BansheeEditor/Source/BsGUIFloatField.cpp

@@ -134,6 +134,14 @@ namespace BansheeEngine
 			mInputBox->setText(toWString(value));
 	}
 
+	void GUIFloatField::setTint(const Color& color)
+	{
+		if (mLabel != nullptr)
+			mLabel->setTint(color);
+
+		mInputBox->setTint(color);
+	}
+
 	void GUIFloatField::updateClippedBounds()
 	{
 		Vector2I offset = _getOffset();

+ 6 - 0
BansheeEditor/Source/BsGUIFoldout.cpp

@@ -72,6 +72,12 @@ namespace BansheeEngine
 		mLabel->setContent(content);
 	}
 
+	void GUIFoldout::setTint(const Color& color)
+	{
+		mLabel->setTint(color);
+		mToggle->setTint(color);
+	}
+
 	void GUIFoldout::toggleTriggered(bool value)
 	{
 		mIsExpanded = value;

+ 8 - 0
BansheeEditor/Source/BsGUIIntField.cpp

@@ -167,6 +167,14 @@ namespace BansheeEngine
 		mMaxValue = max;
 	}
 
+	void GUIIntField::setTint(const Color& color)
+	{
+		if (mLabel != nullptr)
+			mLabel->setTint(color);
+
+		mInputBox->setTint(color);
+	}
+
 	void GUIIntField::updateClippedBounds()
 	{
 		Vector2I offset = _getOffset();

+ 8 - 0
BansheeEditor/Source/BsGUITextField.cpp

@@ -155,6 +155,14 @@ namespace BansheeEngine
 		mInputBox->setText(value);
 	}
 
+	void GUITextField::setTint(const Color& color)
+	{
+		if (mLabel != nullptr)
+			mLabel->setTint(color);
+
+		mInputBox->setTint(color);
+	}
+
 	void GUITextField::_updateLayoutInternal(INT32 x, INT32 y, UINT32 width, UINT32 height,
 		Rect2I clipRect, UINT8 widgetDepth, UINT16 areaDepth)
 	{

+ 8 - 0
BansheeEditor/Source/BsGUIToggleField.cpp

@@ -33,6 +33,14 @@ namespace BansheeEngine
 			mToggle->toggleOff();
 	}
 
+	void GUIToggleField::setTint(const Color& color)
+	{
+		if (mLabel != nullptr)
+			mLabel->setTint(color);
+
+		mToggle->setTint(color);
+	}
+
 	void GUIToggleField::styleUpdated()
 	{
 		if (mLabel != nullptr)

+ 9 - 0
BansheeEditor/Source/BsGUIVector2Field.cpp

@@ -58,6 +58,15 @@ namespace BansheeEngine
 		return mFieldX->hasInputFocus() || mFieldY->hasInputFocus();
 	}
 
+	void GUIVector2Field::setTint(const Color& color)
+	{
+		if (mLabel != nullptr)
+			mLabel->setTint(color);
+
+		mFieldX->setTint(color);
+		mFieldY->setTint(color);
+	}
+
 	void GUIVector2Field::valueChanged(float newValue)
 	{
 		onValueChanged(getValue());

+ 10 - 0
BansheeEditor/Source/BsGUIVector3Field.cpp

@@ -63,6 +63,16 @@ namespace BansheeEngine
 		return mFieldX->hasInputFocus() || mFieldY->hasInputFocus() || mFieldZ->hasInputFocus();
 	}
 
+	void GUIVector3Field::setTint(const Color& color)
+	{
+		if (mLabel != nullptr)
+			mLabel->setTint(color);
+
+		mFieldX->setTint(color);
+		mFieldY->setTint(color);
+		mFieldZ->setTint(color);
+	}
+
 	void GUIVector3Field::styleUpdated()
 	{
 		if (mLabel != nullptr)

+ 11 - 0
BansheeEditor/Source/BsGUIVector4Field.cpp

@@ -67,6 +67,17 @@ namespace BansheeEngine
 		return mFieldX->hasInputFocus() || mFieldY->hasInputFocus() || mFieldZ->hasInputFocus() || mFieldW->hasInputFocus();
 	}
 
+	void GUIVector4Field::setTint(const Color& color)
+	{
+		if (mLabel != nullptr)
+			mLabel->setTint(color);
+
+		mFieldX->setTint(color);
+		mFieldY->setTint(color);
+		mFieldZ->setTint(color);
+		mFieldW->setTint(color);
+	}
+
 	void GUIVector4Field::styleUpdated()
 	{
 		if (mLabel != nullptr)

+ 11 - 0
BansheeEngine/Include/BsGUIButtonBase.h

@@ -35,6 +35,11 @@ namespace BansheeEngine
 		 */
 		void setContent(const GUIContent& content);
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		/**
 		 * @brief	Change the button "on" state. This state determines
 		 *			whether the button uses normal or "on" fields specified
@@ -142,11 +147,17 @@ namespace BansheeEngine
 		 * @brief	Returns the active sprite texture, depending on the current state.
 		 */
 		const HSpriteTexture& getActiveTexture() const;
+
+		/**
+		 * @brief	Returns the active text color, depending on the current state.
+		 */
+		Color getActiveTextColor() const;
 	private:
 		ImageSprite* mImageSprite;
 		ImageSprite* mContentImageSprite;
 		TextSprite* mTextSprite;
 		GUIButtonState mActiveState;
+		Color mColor;
 
 		IMAGE_SPRITE_DESC mImageDesc;
 		GUIContent mContent;

+ 5 - 0
BansheeEngine/Include/BsGUIElement.h

@@ -40,6 +40,11 @@ namespace BansheeEngine
 		 */
 		void setFocus(bool enabled);
 
+		/**
+		 * @brief	Sets the tint of the GUI element.
+		 */
+		virtual void setTint(const Color& color) { }
+
 		/**
 		 * @brief	Sets new layout options for the element.
 		 *

+ 11 - 0
BansheeEngine/Include/BsGUIInputBox.h

@@ -81,6 +81,11 @@ namespace BansheeEngine
 		 */
 		void setFilter(std::function<bool(const WString&)> filter) { mFilter = filter; }
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		/**
 		 * @copydoc	GUIElement::getElementType
 		 */
@@ -293,6 +298,11 @@ namespace BansheeEngine
 		 */
 		const HSpriteTexture& getActiveTexture() const;
 		
+		/**
+		 * @brief	Returns currently active input box text color, depending on active state.
+		 */
+		Color getActiveTextColor() const;
+
 		/**
 		 * @brief	Cuts currently selected text to clipboard.
 		 */
@@ -322,6 +332,7 @@ namespace BansheeEngine
 		bool mHasFocus;
 		bool mIsMouseOver;
 		State mState;
+		Color mColor;
 
 		IMAGE_SPRITE_DESC mImageDesc;
 		WString mText;

+ 6 - 0
BansheeEngine/Include/BsGUILabel.h

@@ -67,6 +67,11 @@ namespace BansheeEngine
 		 */
 		void setContent(const GUIContent& content);
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		/**
 		 * @copydoc	GUIElement::_getOptimalSize
 		 */
@@ -115,6 +120,7 @@ namespace BansheeEngine
 		TextSprite* mTextSprite;
 		GUIContent mContent;
 		HEvent mLocStringUpdatedConn;
+		Color mColor;
 
 		TEXT_SPRITE_DESC mDesc;
 	};

+ 5 - 0
BansheeEngine/Include/BsGUIProgressBar.h

@@ -60,6 +60,11 @@ namespace BansheeEngine
 		 */
 		float getPercent() const { return mPercent; }
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		/**
 		 * @copydoc	GUIElementContainer::_getOptimalSize
 		 */

+ 6 - 0
BansheeEngine/Include/BsGUIScrollBar.h

@@ -50,6 +50,11 @@ namespace BansheeEngine
 		 */
 		UINT32 getScrollableSize() const;
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		/**
 		 * @copydoc	GUIElement::_getOptimalSize
 		 */
@@ -133,6 +138,7 @@ namespace BansheeEngine
 		GUIButton* mDownBtn;
 		GUISliderHandle* mHandleBtn;
 		bool mHorizontal;
+		Color mColor;
 
 		static const UINT32 ButtonScrollAmount;
 	};

+ 5 - 0
BansheeEngine/Include/BsGUISlider.h

@@ -34,6 +34,11 @@ namespace BansheeEngine
 		 */
 		float getPercent() const;
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		/**
 		 * @copydoc	GUIElementContainer::_getOptimalSize
 		 */

+ 6 - 0
BansheeEngine/Include/BsGUISliderHandle.h

@@ -83,6 +83,11 @@ namespace BansheeEngine
 		 */
 		UINT32 getMaxSize() const;
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		/**
 		 * @copydoc	GUIElement::_getOptimalSize
 		 */
@@ -151,5 +156,6 @@ namespace BansheeEngine
 		bool mMouseOverHandle;
 		bool mHandleDragged;
 		State mState;
+		Color mColor;
 	};
 }

+ 6 - 0
BansheeEngine/Include/BsGUITexture.h

@@ -154,6 +154,11 @@ namespace BansheeEngine
 		 * @brief	Changes the active texture.
 		 */
 		void setTexture(const HSpriteTexture& texture);
+
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
 		
 		/**
 		 * @copydoc	GUIElement::getElementType
@@ -211,5 +216,6 @@ namespace BansheeEngine
 		GUIImageScaleMode mScaleMode;
 		bool mTransparent;
 		bool mUsingStyleTexture;
+		Color mColor;
 	};
 }

+ 35 - 0
BansheeEngine/Source/BsGUIButtonBase.cpp

@@ -45,6 +45,13 @@ namespace BansheeEngine
 		markContentAsDirty();
 	}
 
+	void GUIButtonBase::setTint(const Color& color)
+	{
+		mColor = color;
+
+		markContentAsDirty();
+	}
+
 	void GUIButtonBase::_setOn(bool on) 
 	{ 
 		if(on)
@@ -113,6 +120,7 @@ namespace BansheeEngine
 		mImageDesc.borderRight = _getStyle()->border.right;
 		mImageDesc.borderTop = _getStyle()->border.top;
 		mImageDesc.borderBottom = _getStyle()->border.bottom;
+		mImageDesc.color = mColor;
 
 		mImageSprite->update(mImageDesc, (UINT64)_getParentWidget());
 
@@ -124,6 +132,7 @@ namespace BansheeEngine
 			contentImgDesc.texture = mContent.getImage().getInternalPtr();
 			contentImgDesc.width = mContent.getImage()->getWidth();
 			contentImgDesc.height = mContent.getImage()->getHeight();
+			contentImgDesc.color = mColor;
 
 			mContentImageSprite->update(contentImgDesc, (UINT64)_getParentWidget());
 		}
@@ -300,6 +309,7 @@ namespace BansheeEngine
 		textDesc.text = mContent.getText();
 		textDesc.font = _getStyle()->font;
 		textDesc.fontSize = _getStyle()->fontSize;
+		textDesc.color = mColor * getActiveTextColor();
 
 		Rect2I textBounds = getCachedContentBounds();
 
@@ -342,4 +352,29 @@ namespace BansheeEngine
 
 		return _getStyle()->normal.texture;
 	}
+
+	Color GUIButtonBase::getActiveTextColor() const
+	{
+		switch (mActiveState)
+		{
+		case GUIButtonState::Normal:
+			return _getStyle()->normal.textColor;
+		case GUIButtonState::Hover:
+			return _getStyle()->hover.textColor;
+		case GUIButtonState::Active:
+			return _getStyle()->active.textColor;
+		case GUIButtonState::Focused:
+			return _getStyle()->focused.textColor;
+		case GUIButtonState::NormalOn:
+			return _getStyle()->normalOn.textColor;
+		case GUIButtonState::HoverOn:
+			return _getStyle()->hoverOn.textColor;
+		case GUIButtonState::ActiveOn:
+			return _getStyle()->activeOn.textColor;
+		case GUIButtonState::FocusedOn:
+			return _getStyle()->focusedOn.textColor;
+		}
+
+		return _getStyle()->normal.textColor;
+	}
 }

+ 24 - 0
BansheeEngine/Source/BsGUIInputBox.cpp

@@ -92,6 +92,13 @@ namespace BansheeEngine
 		}
 	}
 
+	void GUIInputBox::setTint(const Color& color)
+	{
+		mColor = color;
+
+		markContentAsDirty();
+	}
+
 	UINT32 GUIInputBox::_getNumRenderElements() const
 	{
 		UINT32 numElements = mImageSprite->getNumRenderElements();
@@ -136,6 +143,7 @@ namespace BansheeEngine
 		mImageDesc.borderRight = _getStyle()->border.right;
 		mImageDesc.borderTop = _getStyle()->border.top;
 		mImageDesc.borderBottom = _getStyle()->border.bottom;
+		mImageDesc.color = mColor;
 
 		const HSpriteTexture& activeTex = getActiveTexture();
 		if(SpriteTexture::checkIsLoaded(activeTex))
@@ -1053,6 +1061,7 @@ namespace BansheeEngine
 		textDesc.text = mText;
 		textDesc.font = _getStyle()->font;
 		textDesc.fontSize = _getStyle()->fontSize;
+		textDesc.color = mColor * getActiveTextColor();
 
 		Rect2I textBounds = getCachedContentBounds();
 		textDesc.width = textBounds.width;
@@ -1079,6 +1088,21 @@ namespace BansheeEngine
 		return _getStyle()->normal.texture;
 	}
 
+	Color GUIInputBox::getActiveTextColor() const
+	{
+		switch (mState)
+		{
+		case State::Focused:
+			return _getStyle()->focused.textColor;
+		case State::Hover:
+			return _getStyle()->hover.textColor;
+		case State::Normal:
+			return _getStyle()->normal.textColor;
+		}
+
+		return _getStyle()->normal.textColor;
+	}
+
 	GUIContextMenu* GUIInputBox::_getContextMenu() const
 	{
 		static bool initialized = false;

+ 8 - 0
BansheeEngine/Source/BsGUILabel.cpp

@@ -48,6 +48,7 @@ namespace BansheeEngine
 		mDesc.width = mWidth;
 		mDesc.height = mHeight;
 		mDesc.text = mContent.getText();
+		mDesc.color = mColor * _getStyle()->normal.textColor;;
 
 		mTextSprite->update(mDesc, (UINT64)_getParentWidget());
 
@@ -80,6 +81,13 @@ namespace BansheeEngine
 		markContentAsDirty();
 	}
 
+	void GUILabel::setTint(const Color& color)
+	{
+		mColor = color;
+
+		markContentAsDirty();
+	}
+
 	GUILabel* GUILabel::create(const HString& text, const String& styleName)
 	{
 		return create(GUIContent(text), styleName);

+ 6 - 0
BansheeEngine/Source/BsGUIProgressBar.cpp

@@ -85,6 +85,12 @@ namespace BansheeEngine
 		markContentAsDirty();
 	}
 
+	void GUIProgressBar::setTint(const Color& color)
+	{
+		mBar->setTint(color);
+		mBackground->setTint(color);
+	}
+
 	GUIProgressBar* GUIProgressBar::create(const String& styleName)
 	{
 		return new (bs_alloc<GUIProgressBar, PoolAlloc>()) GUIProgressBar(getStyleName<GUIProgressBar>(styleName), GUILayoutOptions::create());

+ 1 - 0
BansheeEngine/Source/BsGUIRenderTexture.cpp

@@ -72,6 +72,7 @@ namespace BansheeEngine
 		mDesc.width = mWidth;
 		mDesc.height = mHeight;
 		mDesc.transparent = false;
+		mDesc.color = mColor;
 
 		mImageSprite->update(mDesc, (UINT64)_getParentWidget());
 

+ 8 - 0
BansheeEngine/Source/BsGUIScrollBar.cpp

@@ -90,6 +90,7 @@ namespace BansheeEngine
 
 		desc.width = mWidth;
 		desc.height = mHeight;
+		desc.color = mColor;
 
 		mImageSprite->update(desc, (UINT64)_getParentWidget());
 
@@ -184,4 +185,11 @@ namespace BansheeEngine
 	{
 		return mHandleBtn->getScrollableSize();
 	}
+
+	void GUIScrollBar::setTint(const Color& color)
+	{
+		mColor = color;
+
+		markContentAsDirty();
+	}
 }

+ 6 - 0
BansheeEngine/Source/BsGUISlider.cpp

@@ -89,6 +89,12 @@ namespace BansheeEngine
 		return mSliderHandle->getHandlePos();
 	}
 
+	void GUISlider::setTint(const Color& color)
+	{
+		mBackground->setTint(color);
+		mSliderHandle->setTint(color);
+	}
+
 	void GUISlider::onHandleMoved(float newPosition)
 	{
 		onChanged(newPosition);

+ 8 - 0
BansheeEngine/Source/BsGUISliderHandle.cpp

@@ -72,6 +72,13 @@ namespace BansheeEngine
 		return getMaxSize() - mHandleSize;
 	}
 
+	void GUISliderHandle::setTint(const Color& color)
+	{
+		mColor = color;
+
+		markContentAsDirty();
+	}
+
 	UINT32 GUISliderHandle::_getNumRenderElements() const
 	{
 		return mImageSprite->getNumRenderElements();
@@ -112,6 +119,7 @@ namespace BansheeEngine
 			desc.height = mHandleSize;
 		}
 
+		desc.color = mColor;
 		mImageSprite->update(desc, (UINT64)_getParentWidget());
 		
 		GUIElement::updateRenderElementsInternal();

+ 8 - 0
BansheeEngine/Source/BsGUITexture.cpp

@@ -103,6 +103,13 @@ namespace BansheeEngine
 			HSpriteTexture(), GUIImageScaleMode::StretchToFit, true, GUILayoutOptions::create());
 	}
 
+	void GUITexture::setTint(const Color& color)
+	{
+		mColor = color;
+
+		markContentAsDirty();
+	}
+
 	void GUITexture::setTexture(const HSpriteTexture& texture)
 	{
 		mActiveTexture = texture;
@@ -136,6 +143,7 @@ namespace BansheeEngine
 		mDesc.borderTop = _getStyle()->border.top;
 		mDesc.borderBottom = _getStyle()->border.bottom;
 		mDesc.transparent = mTransparent;
+		mDesc.color = mColor;
 
 		float optimalWidth = 0.0f;
 		float optimalHeight = 0.0f;

+ 8 - 0
MBansheeEditor/GUI/GUIColorField.cs

@@ -32,6 +32,11 @@ namespace BansheeEditor
             Internal_CreateInstance(this, null, 0, style, options, false);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(Color newValue)
         {
             if (OnChanged != null)
@@ -47,5 +52,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetValue(IntPtr nativeInstance, Color value);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEditor/GUI/GUIComponentFoldout.cs

@@ -42,6 +42,11 @@ namespace BansheeEditor
             Internal_SetExpanded(mCachedPtr, expanded);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnToggled(bool expanded)
         {
             if (OnToggled != null)
@@ -59,5 +64,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_IsExpanded(IntPtr nativeInstance, out bool expanded);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEditor/GUI/GUIFloatField.cs

@@ -39,6 +39,11 @@ namespace BansheeEditor
             return value;
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(float newValue)
         {
             if (OnChanged != null)
@@ -57,5 +62,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_HasInputFocus(IntPtr nativeInstance, out bool value);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEditor/GUI/GUIFoldout.cs

@@ -42,6 +42,11 @@ namespace BansheeEditor
             Internal_SetExpanded(mCachedPtr, expanded);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnToggled(bool expanded)
         {
             if (OnToggled != null)
@@ -59,5 +64,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_IsExpanded(IntPtr nativeInstance, out bool expanded);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEditor/GUI/GUIGameObjectField.cs

@@ -32,6 +32,11 @@ namespace BansheeEditor
             Internal_CreateInstance(this, type, null, 0, style, options, false);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(GameObject newValue)
         {
             if (OnChanged != null)
@@ -47,5 +52,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetValue(IntPtr nativeInstance, GameObject value);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEditor/GUI/GUIIntField.cs

@@ -44,6 +44,11 @@ namespace BansheeEditor
             Internal_SetRange(mCachedPtr, min, max);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(int newValue)
         {
             if (OnChanged != null)
@@ -65,5 +70,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetRange(IntPtr nativeInstance, int min, int max);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEditor/GUI/GUIResourceField.cs

@@ -32,6 +32,11 @@ namespace BansheeEditor
             Internal_CreateInstance(this, type, null, 0, style, options, false);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(Resource newValue)
         {
             if (OnChanged != null)
@@ -47,5 +52,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetValue(IntPtr nativeInstance, Resource value);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEditor/GUI/GUITextField.cs

@@ -39,6 +39,11 @@ namespace BansheeEditor
             return value;
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(String newValue)
         {
             if (OnChanged != null)
@@ -57,5 +62,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_HasInputFocus(IntPtr nativeInstance, out bool value);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEditor/GUI/GUIToggleField.cs

@@ -32,6 +32,11 @@ namespace BansheeEditor
             Internal_CreateInstance(this, null, 0, style, options, false);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(bool newValue)
         {
             if (OnChanged != null)
@@ -47,5 +52,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetValue(IntPtr nativeInstance, bool value);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEditor/GUI/GUIVector2Field.cs

@@ -39,6 +39,11 @@ namespace BansheeEditor
             return value;
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(Vector2 newValue)
         {
             if (OnChanged != null)
@@ -57,5 +62,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_HasInputFocus(IntPtr nativeInstance, out bool value);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEditor/GUI/GUIVector3Field.cs

@@ -39,6 +39,11 @@ namespace BansheeEditor
             return value;
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(Vector3 newValue)
         {
             if (OnChanged != null)
@@ -57,5 +62,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_HasInputFocus(IntPtr nativeInstance, out bool value);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEditor/GUI/GUIVector4Field.cs

@@ -39,6 +39,11 @@ namespace BansheeEditor
             return value;
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(Vector4 newValue)
         {
             if (OnChanged != null)
@@ -57,5 +62,8 @@ namespace BansheeEditor
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_HasInputFocus(IntPtr nativeInstance, out bool value);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEngine/GUI/GUIButton.cs

@@ -33,6 +33,11 @@ namespace BansheeEngine
             Internal_SetContent(mCachedPtr, content);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnClick()
         {
             if (OnClick != null)
@@ -56,5 +61,8 @@ namespace BansheeEngine
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetContent(IntPtr nativeInstance, GUIContent content);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEngine/GUI/GUILabel.cs

@@ -20,10 +20,18 @@ namespace BansheeEngine
             Internal_SetContent(mCachedPtr, content);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_CreateInstance(GUILabel instance, GUIContent content, string style, GUIOption[] options);
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetContent(IntPtr nativeInstance, GUIContent content);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEngine/GUI/GUIListBox.cs

@@ -24,6 +24,11 @@ namespace BansheeEngine
             Internal_SetElements(mCachedPtr, elements);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnSelectionChanged(int index)
         {
             if (OnSelectionChanged != null)
@@ -35,5 +40,8 @@ namespace BansheeEngine
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetElements(IntPtr nativeInstance, LocString[] elements);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEngine/GUI/GUIProgressBar.cs

@@ -21,6 +21,11 @@ namespace BansheeEngine
             Internal_CreateInstance(this, style, new GUIOption[0]);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_CreateInstance(GUIProgressBar instance, string style, GUIOption[] options);
 
@@ -29,5 +34,8 @@ namespace BansheeEngine
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetPercent(IntPtr nativeInstance, float percent);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEngine/GUI/GUIRenderTexture.cs

@@ -43,11 +43,19 @@ namespace BansheeEngine
             Internal_CreateInstance(this, texturePtr, "", options);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_CreateInstance(GUIRenderTexture instance, IntPtr texture,
             string style, GUIOption[] options);
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetTexture(IntPtr nativeInstance, IntPtr texture);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 16 - 0
MBansheeEngine/GUI/GUISlider.cs

@@ -25,6 +25,11 @@ namespace BansheeEngine
             Internal_CreateInstance(this, style, new GUIOption[0]);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(float percent)
         {
             if (OnChanged != null)
@@ -39,6 +44,9 @@ namespace BansheeEngine
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetPercent(IntPtr nativeInstance, float percent);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 
     public sealed class GUISliderV : GUIElement
@@ -63,6 +71,11 @@ namespace BansheeEngine
             Internal_CreateInstance(this, style, new GUIOption[0]);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnChanged(float percent)
         {
             if (OnChanged != null)
@@ -77,5 +90,8 @@ namespace BansheeEngine
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetPercent(IntPtr nativeInstance, float percent);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 9 - 1
MBansheeEngine/GUI/GUITextBox.cs

@@ -25,12 +25,17 @@ namespace BansheeEngine
             Internal_CreateInstance(this, false, "", options);
         }
 
-        public string text
+        public string Text
         {
             get { string value; Internal_GetText(mCachedPtr, out value); return value; }
             set { Internal_SetText(mCachedPtr, value); }
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_CreateInstance(GUITextBox instance, bool multiline, string style, GUIOption[] options);
 
@@ -39,5 +44,8 @@ namespace BansheeEngine
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_GetText(IntPtr nativeInstance, out string text);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEngine/GUI/GUITexture.cs

@@ -58,11 +58,19 @@ namespace BansheeEngine
             Internal_SetTexture(mCachedPtr, texture);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_CreateInstance(GUITexture instance, SpriteTexture texture,
             GUIImageScaleMode scale, bool transparent, string style, GUIOption[] options);
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_SetTexture(IntPtr nativeInstance, SpriteTexture texture);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 8 - 0
MBansheeEngine/GUI/GUIToggle.cs

@@ -60,6 +60,11 @@ namespace BansheeEngine
             Internal_ToggleOff(mCachedPtr);
         }
 
+        public void SetTint(Color color)
+        {
+            Internal_SetTint(mCachedPtr, color);
+        }
+
         private void DoOnClick()
         {
             if (OnClick != null)
@@ -96,5 +101,8 @@ namespace BansheeEngine
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_ToggleOff(IntPtr nativeInstance);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
     }
 }

+ 5 - 0
SBansheeEditor/Include/BsGUIGameObjectField.h

@@ -46,6 +46,11 @@ namespace BansheeEngine
 		HGameObject getValue() const;
 		void setValue(const HGameObject& value);
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		void _updateLayoutInternal(INT32 x, INT32 y, UINT32 width, UINT32 height,
 			Rect2I clipRect, UINT8 widgetDepth, UINT16 areaDepth);
 

+ 5 - 0
SBansheeEditor/Include/BsGUIResourceField.h

@@ -49,6 +49,11 @@ namespace BansheeEngine
 		String getUUID() const { return mUUID; }
 		void setUUID(const String& uuid);
 
+		/**
+		 * @copydoc	GUIElement::setTint
+		 */
+		virtual void setTint(const Color& color);
+
 		void _updateLayoutInternal(INT32 x, INT32 y, UINT32 width, UINT32 height,
 			Rect2I clipRect, UINT8 widgetDepth, UINT16 areaDepth);
 

+ 1 - 0
SBansheeEditor/Include/BsScriptGUIColorField.h

@@ -17,6 +17,7 @@ namespace BansheeEngine
 
 		static void internal_getValue(ScriptGUIColorField* nativeInstance, Color* output);
 		static void internal_setValue(ScriptGUIColorField* nativeInstance, Color value);
+		static void internal_setTint(ScriptGUIColorField* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, Color newValue);
 

+ 1 - 0
SBansheeEditor/Include/BsScriptGUIComponentFoldout.h

@@ -15,6 +15,7 @@ namespace BansheeEngine
 		static void internal_setContent(ScriptGUIComponentFoldout* nativeInstance, MonoObject* content);
 		static void internal_setExpanded(ScriptGUIComponentFoldout* nativeInstance, bool expanded);
 		static void internal_getIsExpanded(ScriptGUIComponentFoldout* nativeInstance, bool* isExpanded);
+		static void internal_setTint(ScriptGUIComponentFoldout* nativeInstance, Color color);
 
 		static void onToggled(MonoObject* instance, bool expanded);
 

+ 1 - 0
SBansheeEditor/Include/BsScriptGUIFloatField.h

@@ -17,6 +17,7 @@ namespace BansheeEngine
 		static void internal_getValue(ScriptGUIFloatField* nativeInstance, float* output);
 		static void internal_setValue(ScriptGUIFloatField* nativeInstance, float value);
 		static void internal_hasInputFocus(ScriptGUIFloatField* nativeInstance, bool* output);
+		static void internal_setTint(ScriptGUIFloatField* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, float newValue);
 

+ 1 - 0
SBansheeEditor/Include/BsScriptGUIFoldout.h

@@ -15,6 +15,7 @@ namespace BansheeEngine
 		static void internal_setContent(ScriptGUIFoldout* nativeInstance, MonoObject* content);
 		static void internal_setExpanded(ScriptGUIFoldout* nativeInstance, bool expanded);
 		static void internal_getIsExpanded(ScriptGUIFoldout* nativeInstance, bool* isExpanded);
+		static void internal_setTint(ScriptGUIFoldout* nativeInstance, Color color);
 
 		static void onToggled(MonoObject* instance, bool expanded);
 

+ 1 - 0
SBansheeEditor/Include/BsScriptGUIGameObjectField.h

@@ -16,6 +16,7 @@ namespace BansheeEngine
 
 		static void internal_getValue(ScriptGUIGameObjectField* nativeInstance, MonoObject** output);
 		static void internal_setValue(ScriptGUIGameObjectField* nativeInstance, MonoObject* value);
+		static void internal_setTint(ScriptGUIGameObjectField* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, const HGameObject& newValue);
 		static MonoObject* nativeToManagedGO(const HGameObject& instance);

+ 1 - 0
SBansheeEditor/Include/BsScriptGUIIntField.h

@@ -18,6 +18,7 @@ namespace BansheeEngine
 		static void internal_setValue(ScriptGUIIntField* nativeInstance, INT32 value);
 		static void internal_hasInputFocus(ScriptGUIIntField* nativeInstance, bool* output);
 		static void internal_setRange(ScriptGUIIntField* nativeInstance, INT32 min, INT32 max);
+		static void internal_setTint(ScriptGUIIntField* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, INT32 newValue);
 

+ 1 - 0
SBansheeEditor/Include/BsScriptGUIResourceField.h

@@ -16,6 +16,7 @@ namespace BansheeEngine
 
 		static void internal_getValue(ScriptGUIResourceField* nativeInstance, MonoObject** output);
 		static void internal_setValue(ScriptGUIResourceField* nativeInstance, MonoObject* value);
+		static void internal_setTint(ScriptGUIResourceField* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, const HResource& newValue);
 		static MonoObject* nativeToManagedResource(const HResource& instance);

+ 1 - 0
SBansheeEditor/Include/BsScriptGUITextField.h

@@ -17,6 +17,7 @@ namespace BansheeEngine
 		static void internal_getValue(ScriptGUITextField* nativeInstance, MonoString** output);
 		static void internal_setValue(ScriptGUITextField* nativeInstance, MonoString* value);
 		static void internal_hasInputFocus(ScriptGUITextField* nativeInstance, bool* output);
+		static void internal_setTint(ScriptGUITextField* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, const WString& newValue);
 

+ 1 - 0
SBansheeEditor/Include/BsScriptGUIToggleField.h

@@ -16,6 +16,7 @@ namespace BansheeEngine
 
 		static void internal_getValue(ScriptGUIToggleField* nativeInstance, bool* output);
 		static void internal_setValue(ScriptGUIToggleField* nativeInstance, bool value);
+		static void internal_setTint(ScriptGUIToggleField* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, bool newValue);
 

+ 1 - 0
SBansheeEditor/Include/BsScriptGUIVector2Field.h

@@ -17,6 +17,7 @@ namespace BansheeEngine
 		static void internal_getValue(ScriptGUIVector2Field* nativeInstance, Vector2* output);
 		static void internal_setValue(ScriptGUIVector2Field* nativeInstance, Vector2 value);
 		static void internal_hasInputFocus(ScriptGUIVector2Field* nativeInstance, bool* output);
+		static void internal_setTint(ScriptGUIVector2Field* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, Vector2 newValue);
 

+ 1 - 0
SBansheeEditor/Include/BsScriptGUIVector3Field.h

@@ -17,6 +17,7 @@ namespace BansheeEngine
 		static void internal_getValue(ScriptGUIVector3Field* nativeInstance, Vector3* output);
 		static void internal_setValue(ScriptGUIVector3Field* nativeInstance, Vector3 value);
 		static void internal_hasInputFocus(ScriptGUIVector3Field* nativeInstance, bool* output);
+		static void internal_setTint(ScriptGUIVector3Field* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, Vector3 newValue);
 

+ 1 - 0
SBansheeEditor/Include/BsScriptGUIVector4Field.h

@@ -17,6 +17,7 @@ namespace BansheeEngine
 		static void internal_getValue(ScriptGUIVector4Field* nativeInstance, Vector4* output);
 		static void internal_setValue(ScriptGUIVector4Field* nativeInstance, Vector4 value);
 		static void internal_hasInputFocus(ScriptGUIVector4Field* nativeInstance, bool* output);
+		static void internal_setTint(ScriptGUIVector4Field* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, Vector4 newValue);
 

+ 9 - 0
SBansheeEditor/Source/BsGUIGameObjectField.cpp

@@ -184,6 +184,15 @@ namespace BansheeEngine
 		onValueChanged(value);
 	}
 
+	void GUIGameObjectField::setTint(const Color& color)
+	{
+		if (mLabel != nullptr)
+			mLabel->setTint(color);
+
+		mDropButton->setTint(color);
+		mClearButton->setTint(color);
+	}
+
 	void GUIGameObjectField::_updateLayoutInternal(INT32 x, INT32 y, UINT32 width, UINT32 height,
 		Rect2I clipRect, UINT8 widgetDepth, UINT16 areaDepth)
 	{

+ 9 - 0
SBansheeEditor/Source/BsGUIResourceField.cpp

@@ -189,6 +189,15 @@ namespace BansheeEngine
 		onValueChanged(mUUID);
 	}
 
+	void GUIResourceField::setTint(const Color& color)
+	{
+		if (mLabel != nullptr)
+			mLabel->setTint(color);
+
+		mDropButton->setTint(color);
+		mClearButton->setTint(color);
+	}
+
 	void GUIResourceField::_updateLayoutInternal(INT32 x, INT32 y, UINT32 width, UINT32 height,
 		Rect2I clipRect, UINT8 widgetDepth, UINT16 areaDepth)
 	{

+ 7 - 2
SBansheeEditor/Source/BsScriptGUIColorField.cpp

@@ -33,6 +33,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIColorField::internal_createInstance);
 		metaData.scriptClass->addInternalCall("Internal_GetValue", &ScriptGUIColorField::internal_getValue);
 		metaData.scriptClass->addInternalCall("Internal_SetValue", &ScriptGUIColorField::internal_setValue);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIColorField::internal_setTint);
 
 		onChangedThunk = (OnChangedThunkDef)metaData.scriptClass->getMethod("DoOnChanged", 1)->getThunk();
 	}
@@ -67,17 +68,21 @@ namespace BansheeEngine
 	void ScriptGUIColorField::internal_getValue(ScriptGUIColorField* nativeInstance, Color* output)
 	{
 		GUIColorField* colorField = static_cast<GUIColorField*>(nativeInstance->getGUIElement());
-
 		*output = colorField->getValue();
 	}
 
 	void ScriptGUIColorField::internal_setValue(ScriptGUIColorField* nativeInstance, Color value)
 	{
 		GUIColorField* colorField = static_cast<GUIColorField*>(nativeInstance->getGUIElement());
-
 		return colorField->setValue(value);
 	}
 
+	void ScriptGUIColorField::internal_setTint(ScriptGUIColorField* nativeInstance, Color color)
+	{
+		GUIColorField* colorField = (GUIColorField*)nativeInstance->getGUIElement();
+		colorField->setTint(color);
+	}
+
 	void ScriptGUIColorField::onChanged(MonoObject* instance, Color newValue)
 	{
 		MonoException* exception = nullptr;

+ 7 - 2
SBansheeEditor/Source/BsScriptGUIComponentFoldout.cpp

@@ -34,6 +34,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_SetContent", &ScriptGUIComponentFoldout::internal_setContent);
 		metaData.scriptClass->addInternalCall("Internal_SetExpanded", &ScriptGUIComponentFoldout::internal_setExpanded);
 		metaData.scriptClass->addInternalCall("Internal_IsExpanded", &ScriptGUIComponentFoldout::internal_getIsExpanded);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIComponentFoldout::internal_setTint);
 
 		onToggledThunk = (OnToggledThunkDef)metaData.scriptClass->getMethod("DoOnToggled", 1)->getThunk();
 	}
@@ -65,17 +66,21 @@ namespace BansheeEngine
 	void ScriptGUIComponentFoldout::internal_setExpanded(ScriptGUIComponentFoldout* nativeInstance, bool expanded)
 	{
 		GUIComponentFoldout* foldout = static_cast<GUIComponentFoldout*>(nativeInstance->getGUIElement());
-
 		foldout->setExpanded(expanded);
 	}
 
 	void ScriptGUIComponentFoldout::internal_getIsExpanded(ScriptGUIComponentFoldout* nativeInstance, bool* isExpanded)
 	{
 		GUIComponentFoldout* foldout = static_cast<GUIComponentFoldout*>(nativeInstance->getGUIElement());
-
 		*isExpanded = foldout->isExpanded();
 	}
 
+	void ScriptGUIComponentFoldout::internal_setTint(ScriptGUIComponentFoldout* nativeInstance, Color color)
+	{
+		GUIComponentFoldout* foldout = (GUIComponentFoldout*)nativeInstance->getGUIElement();
+		foldout->setTint(color);
+	}
+
 	void ScriptGUIComponentFoldout::onToggled(MonoObject* instance, bool expanded)
 	{
 		MonoException* exception = nullptr;

+ 7 - 3
SBansheeEditor/Source/BsScriptGUIFloatField.cpp

@@ -34,6 +34,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_GetValue", &ScriptGUIFloatField::internal_getValue);
 		metaData.scriptClass->addInternalCall("Internal_SetValue", &ScriptGUIFloatField::internal_setValue);
 		metaData.scriptClass->addInternalCall("Internal_HasInputFocus", &ScriptGUIFloatField::internal_hasInputFocus);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIFloatField::internal_setTint);
 
 		onChangedThunk = (OnChangedThunkDef)metaData.scriptClass->getMethod("DoOnChanged", 1)->getThunk();
 	}
@@ -68,24 +69,27 @@ namespace BansheeEngine
 	void ScriptGUIFloatField::internal_getValue(ScriptGUIFloatField* nativeInstance, float* output)
 	{
 		GUIFloatField* floatField = static_cast<GUIFloatField*>(nativeInstance->getGUIElement());
-
 		*output = floatField->getValue();
 	}
 
 	void ScriptGUIFloatField::internal_setValue(ScriptGUIFloatField* nativeInstance, float value)
 	{
 		GUIFloatField* floatField = static_cast<GUIFloatField*>(nativeInstance->getGUIElement());
-
 		return floatField->setValue(value);
 	}
 
 	void ScriptGUIFloatField::internal_hasInputFocus(ScriptGUIFloatField* nativeInstance, bool* output)
 	{
 		GUIFloatField* floatField = static_cast<GUIFloatField*>(nativeInstance->getGUIElement());
-
 		*output = floatField->hasInputFocus();
 	}
 
+	void ScriptGUIFloatField::internal_setTint(ScriptGUIFloatField* nativeInstance, Color color)
+	{
+		GUIFloatField* floatField = (GUIFloatField*)nativeInstance->getGUIElement();
+		floatField->setTint(color);
+	}
+
 	void ScriptGUIFloatField::onChanged(MonoObject* instance, float newValue)
 	{
 		MonoException* exception = nullptr;

+ 7 - 2
SBansheeEditor/Source/BsScriptGUIFoldout.cpp

@@ -34,6 +34,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_SetContent", &ScriptGUIFoldout::internal_setContent);
 		metaData.scriptClass->addInternalCall("Internal_SetExpanded", &ScriptGUIFoldout::internal_setExpanded);
 		metaData.scriptClass->addInternalCall("Internal_IsExpanded", &ScriptGUIFoldout::internal_getIsExpanded);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIFoldout::internal_setTint);
 
 		onToggledThunk = (OnToggledThunkDef)metaData.scriptClass->getMethod("DoOnToggled", 1)->getThunk();
 	}
@@ -65,17 +66,21 @@ namespace BansheeEngine
 	void ScriptGUIFoldout::internal_setExpanded(ScriptGUIFoldout* nativeInstance, bool expanded)
 	{
 		GUIFoldout* foldout = static_cast<GUIFoldout*>(nativeInstance->getGUIElement());
-
 		foldout->setExpanded(expanded);
 	}
 
 	void ScriptGUIFoldout::internal_getIsExpanded(ScriptGUIFoldout* nativeInstance, bool* isExpanded)
 	{
 		GUIFoldout* foldout = static_cast<GUIFoldout*>(nativeInstance->getGUIElement());
-
 		*isExpanded = foldout->isExpanded();
 	}
 
+	void ScriptGUIFoldout::internal_setTint(ScriptGUIFoldout* nativeInstance, Color color)
+	{
+		GUIFoldout* foldout = (GUIFoldout*)nativeInstance->getGUIElement();
+		foldout->setTint(color);
+	}
+
 	void ScriptGUIFoldout::onToggled(MonoObject* instance, bool expanded)
 	{
 		MonoException* exception = nullptr;

+ 7 - 0
SBansheeEditor/Source/BsScriptGUIGameObjectField.cpp

@@ -36,6 +36,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIGameObjectField::internal_createInstance);
 		metaData.scriptClass->addInternalCall("Internal_GetValue", &ScriptGUIGameObjectField::internal_getValue);
 		metaData.scriptClass->addInternalCall("Internal_SetValue", &ScriptGUIGameObjectField::internal_setValue);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIGameObjectField::internal_setTint);
 
 		onChangedThunk = (OnChangedThunkDef)metaData.scriptClass->getMethod("DoOnChanged", 1)->getThunk();
 	}
@@ -95,6 +96,12 @@ namespace BansheeEngine
 		}
 	}
 
+	void ScriptGUIGameObjectField::internal_setTint(ScriptGUIGameObjectField* nativeInstance, Color color)
+	{
+		GUIGameObjectField* gameObjectField = (GUIGameObjectField*)nativeInstance->getGUIElement();
+		gameObjectField->setTint(color);
+	}
+
 	void ScriptGUIGameObjectField::onChanged(MonoObject* instance, const HGameObject& newValue)
 	{
 		MonoException* exception = nullptr;

+ 7 - 4
SBansheeEditor/Source/BsScriptGUIIntField.cpp

@@ -35,6 +35,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_SetValue", &ScriptGUIIntField::internal_setValue);
 		metaData.scriptClass->addInternalCall("Internal_HasInputFocus", &ScriptGUIIntField::internal_hasInputFocus);
 		metaData.scriptClass->addInternalCall("Internal_SetRange", &ScriptGUIIntField::internal_setRange);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIIntField::internal_setTint);
 
 		onChangedThunk = (OnChangedThunkDef)metaData.scriptClass->getMethod("DoOnChanged", 1)->getThunk();
 	}
@@ -69,31 +70,33 @@ namespace BansheeEngine
 	void ScriptGUIIntField::internal_getValue(ScriptGUIIntField* nativeInstance, INT32* output)
 	{
 		GUIIntField* intField = static_cast<GUIIntField*>(nativeInstance->getGUIElement());
-
 		*output = intField->getValue();
 	}
 
 	void ScriptGUIIntField::internal_setValue(ScriptGUIIntField* nativeInstance, INT32 value)
 	{
 		GUIIntField* intField = static_cast<GUIIntField*>(nativeInstance->getGUIElement());
-
 		return intField->setValue(value);
 	}
 
 	void ScriptGUIIntField::internal_hasInputFocus(ScriptGUIIntField* nativeInstance, bool* output)
 	{
 		GUIIntField* intField = static_cast<GUIIntField*>(nativeInstance->getGUIElement());
-
 		*output = intField->hasInputFocus();
 	}
 
 	void ScriptGUIIntField::internal_setRange(ScriptGUIIntField* nativeInstance, INT32 min, INT32 max)
 	{
 		GUIIntField* intField = static_cast<GUIIntField*>(nativeInstance->getGUIElement());
-
 		intField->setRange(min, max);
 	}
 
+	void ScriptGUIIntField::internal_setTint(ScriptGUIIntField* nativeInstance, Color color)
+	{
+		GUIIntField* intField = (GUIIntField*)nativeInstance->getGUIElement();
+		intField->setTint(color);
+	}
+
 	void ScriptGUIIntField::onChanged(MonoObject* instance, INT32 newValue)
 	{
 		MonoException* exception = nullptr;

+ 7 - 0
SBansheeEditor/Source/BsScriptGUIResourceField.cpp

@@ -35,6 +35,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIResourceField::internal_createInstance);
 		metaData.scriptClass->addInternalCall("Internal_GetValue", &ScriptGUIResourceField::internal_getValue);
 		metaData.scriptClass->addInternalCall("Internal_SetValue", &ScriptGUIResourceField::internal_setValue);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIResourceField::internal_setTint);
 
 		onChangedThunk = (OnChangedThunkDef)metaData.scriptClass->getMethod("DoOnChanged", 1)->getThunk();
 	}
@@ -94,6 +95,12 @@ namespace BansheeEngine
 		}
 	}
 
+	void ScriptGUIResourceField::internal_setTint(ScriptGUIResourceField* nativeInstance, Color color)
+	{
+		GUIResourceField* resourceField = (GUIResourceField*)nativeInstance->getGUIElement();
+		resourceField->setTint(color);
+	}
+
 	void ScriptGUIResourceField::onChanged(MonoObject* instance, const HResource& newValue)
 	{
 		MonoException* exception = nullptr;

+ 7 - 3
SBansheeEditor/Source/BsScriptGUITextField.cpp

@@ -34,6 +34,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_GetValue", &ScriptGUITextField::internal_getValue);
 		metaData.scriptClass->addInternalCall("Internal_SetValue", &ScriptGUITextField::internal_setValue);
 		metaData.scriptClass->addInternalCall("Internal_HasInputFocus", &ScriptGUITextField::internal_hasInputFocus);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUITextField::internal_setTint);
 
 		onChangedThunk = (OnChangedThunkDef)metaData.scriptClass->getMethod("DoOnChanged", 1)->getThunk();
 	}
@@ -68,24 +69,27 @@ namespace BansheeEngine
 	void ScriptGUITextField::internal_getValue(ScriptGUITextField* nativeInstance, MonoString** output)
 	{
 		GUITextField* field = static_cast<GUITextField*>(nativeInstance->getGUIElement());
-
 		*output = MonoUtil::wstringToMono(MonoManager::instance().getDomain(), field->getValue());
 	}
 
 	void ScriptGUITextField::internal_setValue(ScriptGUITextField* nativeInstance, MonoString* value)
 	{
 		GUITextField* field = static_cast<GUITextField*>(nativeInstance->getGUIElement());
-
 		return field->setValue(MonoUtil::monoToWString(value));
 	}
 
 	void ScriptGUITextField::internal_hasInputFocus(ScriptGUITextField* nativeInstance, bool* output)
 	{
 		GUITextField* field = static_cast<GUITextField*>(nativeInstance->getGUIElement());
-
 		*output = field->hasInputFocus();
 	}
 
+	void ScriptGUITextField::internal_setTint(ScriptGUITextField* nativeInstance, Color color)
+	{
+		GUITextField* field = (GUITextField*)nativeInstance->getGUIElement();
+		field->setTint(color);
+	}
+
 	void ScriptGUITextField::onChanged(MonoObject* instance, const WString& newValue)
 	{
 		MonoException* exception = nullptr;

+ 7 - 2
SBansheeEditor/Source/BsScriptGUIToggleField.cpp

@@ -33,6 +33,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIToggleField::internal_createInstance);
 		metaData.scriptClass->addInternalCall("Internal_GetValue", &ScriptGUIToggleField::internal_getValue);
 		metaData.scriptClass->addInternalCall("Internal_SetValue", &ScriptGUIToggleField::internal_setValue);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIToggleField::internal_setTint);
 
 		onChangedThunk = (OnChangedThunkDef)metaData.scriptClass->getMethod("DoOnChanged", 1)->getThunk();
 	}
@@ -67,17 +68,21 @@ namespace BansheeEngine
 	void ScriptGUIToggleField::internal_getValue(ScriptGUIToggleField* nativeInstance, bool* output)
 	{
 		GUIToggleField* toggleField = static_cast<GUIToggleField*>(nativeInstance->getGUIElement());
-
 		*output = toggleField->getValue();
 	}
 
 	void ScriptGUIToggleField::internal_setValue(ScriptGUIToggleField* nativeInstance, bool value)
 	{
 		GUIToggleField* toggleField = static_cast<GUIToggleField*>(nativeInstance->getGUIElement());
-
 		return toggleField->setValue(value);
 	}
 
+	void ScriptGUIToggleField::internal_setTint(ScriptGUIToggleField* nativeInstance, Color color)
+	{
+		GUIToggleField* toggleField = (GUIToggleField*)nativeInstance->getGUIElement();
+		toggleField->setTint(color);
+	}
+
 	void ScriptGUIToggleField::onChanged(MonoObject* instance, bool newValue)
 	{
 		MonoException* exception = nullptr;

+ 7 - 3
SBansheeEditor/Source/BsScriptGUIVector2Field.cpp

@@ -34,6 +34,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_GetValue", &ScriptGUIVector2Field::internal_getValue);
 		metaData.scriptClass->addInternalCall("Internal_SetValue", &ScriptGUIVector2Field::internal_setValue);
 		metaData.scriptClass->addInternalCall("Internal_HasInputFocus", &ScriptGUIVector2Field::internal_hasInputFocus);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIVector2Field::internal_setTint);
 
 		onChangedThunk = (OnChangedThunkDef)metaData.scriptClass->getMethod("DoOnChanged", 1)->getThunk();
 	}
@@ -68,24 +69,27 @@ namespace BansheeEngine
 	void ScriptGUIVector2Field::internal_getValue(ScriptGUIVector2Field* nativeInstance, Vector2* output)
 	{
 		GUIVector2Field* field = static_cast<GUIVector2Field*>(nativeInstance->getGUIElement());
-
 		*output = field->getValue();
 	}
 
 	void ScriptGUIVector2Field::internal_setValue(ScriptGUIVector2Field* nativeInstance, Vector2 value)
 	{
 		GUIVector2Field* field = static_cast<GUIVector2Field*>(nativeInstance->getGUIElement());
-
 		return field->setValue(value);
 	}
 
 	void ScriptGUIVector2Field::internal_hasInputFocus(ScriptGUIVector2Field* nativeInstance, bool* output)
 	{
 		GUIVector2Field* field = static_cast<GUIVector2Field*>(nativeInstance->getGUIElement());
-
 		*output = field->hasInputFocus();
 	}
 
+	void ScriptGUIVector2Field::internal_setTint(ScriptGUIVector2Field* nativeInstance, Color color)
+	{
+		GUIVector2Field* field = (GUIVector2Field*)nativeInstance->getGUIElement();
+		field->setTint(color);
+	}
+
 	void ScriptGUIVector2Field::onChanged(MonoObject* instance, Vector2 newValue)
 	{
 		MonoException* exception = nullptr;

+ 7 - 3
SBansheeEditor/Source/BsScriptGUIVector3Field.cpp

@@ -34,6 +34,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_GetValue", &ScriptGUIVector3Field::internal_getValue);
 		metaData.scriptClass->addInternalCall("Internal_SetValue", &ScriptGUIVector3Field::internal_setValue);
 		metaData.scriptClass->addInternalCall("Internal_HasInputFocus", &ScriptGUIVector3Field::internal_hasInputFocus);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIVector3Field::internal_setTint);
 
 		onChangedThunk = (OnChangedThunkDef)metaData.scriptClass->getMethod("DoOnChanged", 1)->getThunk();
 	}
@@ -68,24 +69,27 @@ namespace BansheeEngine
 	void ScriptGUIVector3Field::internal_getValue(ScriptGUIVector3Field* nativeInstance, Vector3* output)
 	{
 		GUIVector3Field* field = static_cast<GUIVector3Field*>(nativeInstance->getGUIElement());
-
 		*output = field->getValue();
 	}
 
 	void ScriptGUIVector3Field::internal_setValue(ScriptGUIVector3Field* nativeInstance, Vector3 value)
 	{
 		GUIVector3Field* field = static_cast<GUIVector3Field*>(nativeInstance->getGUIElement());
-
 		return field->setValue(value);
 	}
 
 	void ScriptGUIVector3Field::internal_hasInputFocus(ScriptGUIVector3Field* nativeInstance, bool* output)
 	{
 		GUIVector3Field* field = static_cast<GUIVector3Field*>(nativeInstance->getGUIElement());
-
 		*output = field->hasInputFocus();
 	}
 
+	void ScriptGUIVector3Field::internal_setTint(ScriptGUIVector3Field* nativeInstance, Color color)
+	{
+		GUIVector3Field* field = (GUIVector3Field*)nativeInstance->getGUIElement();
+		field->setTint(color);
+	}
+
 	void ScriptGUIVector3Field::onChanged(MonoObject* instance, Vector3 newValue)
 	{
 		MonoException* exception = nullptr;

+ 7 - 3
SBansheeEditor/Source/BsScriptGUIVector4Field.cpp

@@ -34,6 +34,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_GetValue", &ScriptGUIVector4Field::internal_getValue);
 		metaData.scriptClass->addInternalCall("Internal_SetValue", &ScriptGUIVector4Field::internal_setValue);
 		metaData.scriptClass->addInternalCall("Internal_HasInputFocus", &ScriptGUIVector4Field::internal_hasInputFocus);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIVector4Field::internal_setTint);
 
 		onChangedThunk = (OnChangedThunkDef)metaData.scriptClass->getMethod("DoOnChanged", 1)->getThunk();
 	}
@@ -68,24 +69,27 @@ namespace BansheeEngine
 	void ScriptGUIVector4Field::internal_getValue(ScriptGUIVector4Field* nativeInstance, Vector4* output)
 	{
 		GUIVector4Field* field = static_cast<GUIVector4Field*>(nativeInstance->getGUIElement());
-
 		*output = field->getValue();
 	}
 
 	void ScriptGUIVector4Field::internal_setValue(ScriptGUIVector4Field* nativeInstance, Vector4 value)
 	{
 		GUIVector4Field* field = static_cast<GUIVector4Field*>(nativeInstance->getGUIElement());
-
 		return field->setValue(value);
 	}
 
 	void ScriptGUIVector4Field::internal_hasInputFocus(ScriptGUIVector4Field* nativeInstance, bool* output)
 	{
 		GUIVector4Field* field = static_cast<GUIVector4Field*>(nativeInstance->getGUIElement());
-
 		*output = field->hasInputFocus();
 	}
 
+	void ScriptGUIVector4Field::internal_setTint(ScriptGUIVector4Field* nativeInstance, Color color)
+	{
+		GUIVector4Field* field = (GUIVector4Field*)nativeInstance->getGUIElement();
+		field->setTint(color);
+	}
+
 	void ScriptGUIVector4Field::onChanged(MonoObject* instance, Vector4 newValue)
 	{
 		MonoException* exception = nullptr;

+ 2 - 0
SBansheeEngine/Include/BsScriptGUIButton.h

@@ -2,6 +2,7 @@
 
 #include "BsScriptEnginePrerequisites.h"
 #include "BsScriptGUIElement.h"
+#include "BsColor.h"
 
 namespace BansheeEngine
 {
@@ -13,6 +14,7 @@ namespace BansheeEngine
 	private:
 		static void internal_createInstance(MonoObject* instance, MonoObject* content, MonoString* style, MonoArray* guiOptions);
 		static void internal_setContent(ScriptGUIButton* nativeInstance, MonoObject* content);
+		static void internal_setTint(ScriptGUIButton* nativeInstance, Color color);
 
 		static void onClick(MonoObject* instance);
 		static void onHover(MonoObject* instance);

+ 1 - 0
SBansheeEngine/Include/BsScriptGUIInputBox.h

@@ -16,6 +16,7 @@ namespace BansheeEngine
 
 		static void internal_setText(ScriptGUIInputBox* nativeInstance, MonoString* text);
 		static void internal_getText(ScriptGUIInputBox* nativeInstance, MonoString** text);
+		static void internal_setTint(ScriptGUIInputBox* nativeInstance, Color color);
 
 		ScriptGUIInputBox(MonoObject* instance, GUIInputBox* inputBox);
 	};

+ 1 - 0
SBansheeEngine/Include/BsScriptGUILabel.h

@@ -13,6 +13,7 @@ namespace BansheeEngine
 	private:
 		static void internal_createInstance(MonoObject* instance, MonoObject* content, MonoString* style, MonoArray* guiOptions);
 		static void internal_setContent(ScriptGUILabel* nativeInstance, MonoObject* content);
+		static void internal_setTint(ScriptGUILabel* nativeInstance, Color color);
 
 		ScriptGUILabel(MonoObject* instance, GUILabel* label);
 	};

+ 1 - 0
SBansheeEngine/Include/BsScriptGUIListBox.h

@@ -14,6 +14,7 @@ namespace BansheeEngine
 	private:
 		static void internal_createInstance(MonoObject* instance, MonoArray* elements, MonoString* style, MonoArray* guiOptions);
 		static void internal_setElements(ScriptGUIListBox* nativeInstance, MonoArray* elements);
+		static void internal_setTint(ScriptGUIListBox* nativeInstance, Color color);
 
 		static void onSelectionChanged(MonoObject* instance, UINT32 index);
 

+ 1 - 0
SBansheeEngine/Include/BsScriptGUIProgressBar.h

@@ -14,6 +14,7 @@ namespace BansheeEngine
 		static void internal_createInstance(MonoObject* instance, MonoString* style, MonoArray* guiOptions);
 		static void internal_setPercent(ScriptGUIProgressBar* nativeInstance, float percent);
 		static float internal_getPercent(ScriptGUIProgressBar* nativeInstance);
+		static void internal_setTint(ScriptGUIProgressBar* nativeInstance, Color color);
 
 		ScriptGUIProgressBar(MonoObject* instance, GUIProgressBar* progressBar);
 	};

+ 1 - 0
SBansheeEngine/Include/BsScriptGUIRenderTexture.h

@@ -14,6 +14,7 @@ namespace BansheeEngine
 		static void internal_createInstance(MonoObject* instance, ScriptRenderTexture2D* texture,
 			MonoString* style, MonoArray* guiOptions);
 		static void internal_setTexture(ScriptGUIRenderTexture* nativeInstance, ScriptRenderTexture2D* texture);
+		static void internal_setTint(ScriptGUIRenderTexture* nativeInstance, Color color);
 
 		ScriptGUIRenderTexture(MonoObject* instance, GUIRenderTexture* texture);
 	};

+ 2 - 0
SBansheeEngine/Include/BsScriptGUISlider.h

@@ -14,6 +14,7 @@ namespace BansheeEngine
 		static void internal_createInstance(MonoObject* instance, MonoString* style, MonoArray* guiOptions);
 		static void internal_setPercent(ScriptGUISliderH* nativeInstance, float percent);
 		static float internal_getPercent(ScriptGUISliderH* nativeInstance);
+		static void internal_setTint(ScriptGUISliderH* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, float percent);
 
@@ -33,6 +34,7 @@ namespace BansheeEngine
 		static void internal_createInstance(MonoObject* instance, MonoString* style, MonoArray* guiOptions);
 		static void internal_setPercent(ScriptGUISliderV* nativeInstance, float percent);
 		static float internal_getPercent(ScriptGUISliderV* nativeInstance);
+		static void internal_setTint(ScriptGUISliderV* nativeInstance, Color color);
 
 		static void onChanged(MonoObject* instance, float percent);
 

+ 1 - 0
SBansheeEngine/Include/BsScriptGUITexture.h

@@ -15,6 +15,7 @@ namespace BansheeEngine
 		static void internal_createInstance(MonoObject* instance, MonoObject* texture, 
 			GUIImageScaleMode scale, bool transparent, MonoString* style, MonoArray* guiOptions);
 		static void internal_setTexture(ScriptGUITexture* nativeInstance, MonoObject* texture);
+		static void internal_setTint(ScriptGUITexture* nativeInstance, Color color);
 
 		ScriptGUITexture(MonoObject* instance, GUITexture* texture);
 	};

+ 1 - 0
SBansheeEngine/Include/BsScriptGUIToggle.h

@@ -16,6 +16,7 @@ namespace BansheeEngine
 		static void internal_setContent(ScriptGUIToggle* nativeInstance, MonoObject* content);
 		static void internal_toggleOn(ScriptGUIToggle* nativeInstance);
 		static void internal_toggleOff(ScriptGUIToggle* nativeInstance);
+		static void internal_setTint(ScriptGUIToggle* nativeInstance, Color color);
 
 		static void onClick(MonoObject* instance);
 		static void onHover(MonoObject* instance);

+ 7 - 0
SBansheeEngine/Source/BsScriptGUIButton.cpp

@@ -31,6 +31,7 @@ namespace BansheeEngine
 	{
 		metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIButton::internal_createInstance);
 		metaData.scriptClass->addInternalCall("Internal_SetContent", &ScriptGUIButton::internal_setContent);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIButton::internal_setTint);
 
 		onClickThunk = (OnClickThunkDef)metaData.scriptClass->getMethod("DoOnClick")->getThunk();
 		onHoverThunk = (OnHoverThunkDef)metaData.scriptClass->getMethod("DoOnHover")->getThunk();
@@ -63,6 +64,12 @@ namespace BansheeEngine
 		button->setContent(nativeContent);
 	}
 
+	void ScriptGUIButton::internal_setTint(ScriptGUIButton* nativeInstance, Color color)
+	{
+		GUIButton* button = (GUIButton*)nativeInstance->getGUIElement();
+		button->setTint(color);
+	}
+
 	void ScriptGUIButton::onClick(MonoObject* instance)
 	{
 		MonoException* exception = nullptr;

+ 7 - 2
SBansheeEngine/Source/BsScriptGUIInputBox.cpp

@@ -28,6 +28,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIInputBox::internal_createInstance);
 		metaData.scriptClass->addInternalCall("Internal_GetText", &ScriptGUIInputBox::internal_getText);
 		metaData.scriptClass->addInternalCall("Internal_SetText", &ScriptGUIInputBox::internal_setText);
+		metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUIInputBox::internal_setTint);
 	}
 
 	void ScriptGUIInputBox::internal_createInstance(MonoObject* instance, bool multiline, MonoString* style, MonoArray* guiOptions)
@@ -46,14 +47,18 @@ namespace BansheeEngine
 	void ScriptGUIInputBox::internal_getText(ScriptGUIInputBox* nativeInstance, MonoString** text)
 	{
 		GUIInputBox* inputBox = (GUIInputBox*)nativeInstance->getGUIElement();
-
 		*text = MonoUtil::wstringToMono(MonoManager::instance().getDomain(), inputBox->getText());
 	}
 
 	void ScriptGUIInputBox::internal_setText(ScriptGUIInputBox* nativeInstance, MonoString* text)
 	{
 		GUIInputBox* inputBox = (GUIInputBox*)nativeInstance->getGUIElement();
-
 		inputBox->setText(MonoUtil::monoToWString(text));
 	}
+
+	void ScriptGUIInputBox::internal_setTint(ScriptGUIInputBox* nativeInstance, Color color)
+	{
+		GUIInputBox* inputBox = (GUIInputBox*)nativeInstance->getGUIElement();
+		inputBox->setTint(color);
+	}
 }

Неке датотеке нису приказане због велике количине промена