| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #include "BsScriptResourceRef.h"
- #include "BsScriptMeta.h"
- #include "BsMonoClass.h"
- #include "BsMonoUtil.h"
- #include "BsResources.h"
- #include "BsScriptResource.h"
- #include "BsScriptResourceManager.h"
- #include "BsApplication.h"
- #include "BsScriptTexture.generated.h"
- namespace bs
- {
- ScriptResourceRef::ScriptResourceRef(MonoObject* instance, const WeakResourceHandle<Resource>& resource)
- :ScriptObject(instance), mResource(resource)
- { }
- void ScriptResourceRef::initRuntimeData()
- {
- metaData.scriptClass->addInternalCall("Internal_IsLoaded", &ScriptResourceRef::internal_IsLoaded);
- metaData.scriptClass->addInternalCall("Internal_GetResource", &ScriptResourceRef::internal_GetResource);
- metaData.scriptClass->addInternalCall("Internal_GetUUID", &ScriptResourceRef::internal_GetUUID);
- }
- MonoObject* ScriptResourceRef::createInternal(const WeakResourceHandle<Resource>& handle)
- {
- MonoObject* obj = metaData.scriptClass->createInstance();
- new (bs_alloc<ScriptResourceRef>()) ScriptResourceRef(obj, handle);
- return obj;
- }
- bool ScriptResourceRef::internal_IsLoaded(ScriptResourceRef* nativeInstance)
- {
- return nativeInstance->mResource.isLoaded(false);
- }
- MonoObject* ScriptResourceRef::internal_GetResource(ScriptResourceRef* nativeInstance)
- {
- ResourceLoadFlags loadFlags = ResourceLoadFlag::LoadDependencies | ResourceLoadFlag::KeepInternalRef;
- if (gApplication().isEditor())
- loadFlags |= ResourceLoadFlag::KeepSourceData;
- HResource resource = gResources().load(nativeInstance->mResource, loadFlags);
- ScriptResourceBase* scriptResource;
- ScriptResourceManager::instance().getScriptResource(resource, &scriptResource, true);
- return scriptResource->getManagedInstance();
- }
- MonoString* ScriptResourceRef::internal_GetUUID(ScriptResourceRef* thisPtr)
- {
- const String& uuid = thisPtr->getHandle().getUUID();
- return MonoUtil::stringToMono(uuid);
- }
- }
|