Kaynağa Gözat

Build: Fixing recursive include issue causing GCC/Clang to fail compiling

Marko Pintera 7 yıl önce
ebeveyn
işleme
eb339122da

+ 13 - 0
Source/Scripting/SBansheeEngine/Wrappers/BsScriptResource.cpp

@@ -24,6 +24,19 @@ namespace bs
 		return MonoUtil::getObjectFromGCHandle(mGCHandle);
 	}
 
+	MonoObject* ScriptResourceBase::getRRef(const HResource& resource, UINT32 rttiId)
+	{
+		::MonoClass* rrefClass = getRRefClass(rttiId);
+		if(!rrefClass)
+			return nullptr;
+
+		ScriptRRefBase* rref = ScriptResourceManager::instance().getScriptRRef(resource, rrefClass);
+		if(!rref)
+			return nullptr;
+
+		return rref->getManagedInstance();
+	}
+
 	void ScriptResourceBase::setManagedInstance(::MonoObject* instance)
 	{
 		BS_ASSERT(mGCHandle == 0 && "Attempting to set a new managed instance without freeing the old one.");

+ 9 - 10
Source/Scripting/SBansheeEngine/Wrappers/BsScriptResource.h

@@ -5,7 +5,6 @@
 #include "BsScriptEnginePrerequisites.h"
 #include "BsScriptObject.h"
 #include "BsMonoUtil.h"
-#include "BsScriptResourceManager.h"
 #include "BsScriptRRefBase.h"
 
 namespace bs
@@ -27,6 +26,14 @@ namespace bs
 		/** Returns the managed version of this resource. */
 		MonoObject* getManagedInstance() const;
 
+		/**
+		 * Returns a reference wrapper for the provided resource.
+		 *
+		 * @param[in]	resource	Handle to the resource to retrieve the reference wrapper for.
+		 * @param[in]	rttiId		Type ID for the resource type to create a RRef for.
+		 */
+		static MonoObject* getRRef(const HResource& resource, UINT32 rttiId);
+
 		/** 
 		 * Maps a RTTI ID to a class representing the specified resource type in managed code. Returns null if the ID 
 		 * cannot be mapped to a managed resource class.
@@ -87,15 +94,7 @@ namespace bs
 		/** Returns a reference wrapper for this resource. */
 		MonoObject* getRRef() const
 		{
-			::MonoClass* rrefClass = getRRefClass(ResType::getRTTIStatic()->getRTTIId());
-			if(!rrefClass)
-				return nullptr;
-
-			ScriptRRefBase* rref = ScriptResourceManager::instance().getScriptRRef(mResource, rrefClass);
-			if(!rref)
-				return nullptr;
-
-			return rref->getManagedInstance();
+			return ScriptResourceBase::getRRef(mResource, ResType::getRTTIStatic()->getRTTIId());
 		}
 
 	protected: