瀏覽代碼

Exposed default builtin font to C#

BearishSun 9 年之前
父節點
當前提交
7a734eddd0

+ 4 - 0
Source/BansheeEngine/Include/BsBuiltinResources.h

@@ -106,6 +106,9 @@ namespace BansheeEngine
 		 */
 		HShader getShader(const Path& path);
 
+		/** Returns the default font used by the engine. */
+		HFont getDefaultFont() const { return mFont; }
+
 		/**	Retrieves one of the builtin textures. */
 		static HTexture getTexture(BuiltinTexture type);
 
@@ -147,6 +150,7 @@ namespace BansheeEngine
 
 		HGUISkin mEmptySkin;
 		HGUISkin mSkin;
+		HFont mFont;
 
 		SPtr<PixelData> mCursorArrow;
 		SPtr<PixelData> mCursorArrowDrag;

+ 1 - 0
Source/BansheeEngine/Source/BsBuiltinResources.cpp

@@ -258,6 +258,7 @@ namespace BansheeEngine
 		mWhiteSpriteTexture = getSkinTexture(WhiteTex);
 		mDummySpriteTexture = SpriteTexture::create(mDummyTexture);
 
+		mFont = gResources().load<Font>(mBuiltinDataFolder + (DefaultFontFilename + L".asset"));
 		mSkin = gResources().load<GUISkin>(mBuiltinDataFolder + (GUISkinFile + L".asset"));
 		mEmptySkin = GUISkin::create();
 

+ 1 - 2
Source/BansheeEngine/Source/BsSpriteMaterials.cpp

@@ -58,8 +58,7 @@ namespace BansheeEngine
 		mMaterial->setBuffer("linePoints", lineInfo->pointBuffer);
 		mMaterial->setFloat("lineWidth", lineInfo->width);
 
-		// TODO - Create a filter texture
-
+		// Note: If the line shader ends up using a more complex filter, generate a filter LUT as a pre-process step
 		SpriteMaterial::render(mesh, texture, sampler, tint, worldTransform, invViewportSize, additionalData);
 	}
 }

+ 11 - 0
Source/MBansheeEngine/Utility/Builtin.cs

@@ -77,6 +77,14 @@ namespace BansheeEngine
             get { return Internal_GetMesh(BuiltinMesh.Disc); }
         }
 
+        /// <summary>
+        /// Returns the default Font used in the engine.
+        /// </summary>
+        public static Font DefaultFont
+        {
+            get { return Internal_GetDefaultFont(); }
+        }
+
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern SpriteTexture Internal_GetWhiteTexture();
 
@@ -85,6 +93,9 @@ namespace BansheeEngine
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern Mesh Internal_GetMesh(BuiltinMesh mesh);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern Font Internal_GetDefaultFont();
     }
 
     /** @} */

+ 1 - 0
Source/SBansheeEngine/Include/BsScriptBuiltin.h

@@ -27,6 +27,7 @@ namespace BansheeEngine
 		static MonoObject* internal_GetWhiteTexture();
 		static MonoObject* internal_GetDiffuseShader();
 		static MonoObject* internal_GetMesh(BuiltinMesh meshType);
+		static MonoObject* internal_GetDefaultFont();
 	};
 
 	/** @} */

+ 12 - 0
Source/SBansheeEngine/Source/BsScriptBuiltin.cpp

@@ -9,6 +9,7 @@
 #include "BsScriptSpriteTexture.h"
 #include "BsScriptShader.h"
 #include "BsScriptMesh.h"
+#include "BsScriptFont.h"
 #include "BsScriptResourceManager.h"
 
 namespace BansheeEngine
@@ -22,6 +23,7 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_GetWhiteTexture", &ScriptBuiltin::internal_GetWhiteTexture);
 		metaData.scriptClass->addInternalCall("Internal_GetDiffuseShader", &ScriptBuiltin::internal_GetDiffuseShader);
 		metaData.scriptClass->addInternalCall("Internal_GetMesh", &ScriptBuiltin::internal_GetMesh);
+		metaData.scriptClass->addInternalCall("Internal_GetDefaultFont", &ScriptBuiltin::internal_GetDefaultFont);
 	}
 
 	MonoObject* ScriptBuiltin::internal_GetWhiteTexture()
@@ -53,4 +55,14 @@ namespace BansheeEngine
 
 		return scriptMesh->getManagedInstance();
 	}
+
+	MonoObject* ScriptBuiltin::internal_GetDefaultFont()
+	{
+		HFont font = BuiltinResources::instance().getDefaultFont();
+
+		ScriptFont* scriptFont;
+		ScriptResourceManager::instance().getScriptResource(font, &scriptFont, true);
+
+		return scriptFont->getManagedInstance();
+	}
 }