Add JsonAsset.Instance for C# asset object
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
#include "Engine/Debug/Exceptions/JsonParseException.h"
|
||||
#include "Engine/Profiler/ProfilerCPU.h"
|
||||
#include "Engine/Scripting/Scripting.h"
|
||||
#include "Engine/Scripting/ManagedCLR/MClass.h"
|
||||
#include "Engine/Scripting/ManagedCLR/MField.h"
|
||||
#include "Engine/Utilities/StringConverter.h"
|
||||
|
||||
JsonAssetBase::JsonAssetBase(const SpawnParams& params, const AssetInfo* info)
|
||||
@@ -212,13 +214,11 @@ Asset::LoadResult JsonAsset::loadAsset()
|
||||
|
||||
if (CreateInstance())
|
||||
return LoadResult::Failed;
|
||||
|
||||
#if USE_EDITOR
|
||||
if (Instance)
|
||||
{
|
||||
// Reload instance when module with this type gets reloaded
|
||||
Level::ScriptsReloadStart.Bind<JsonAsset, &JsonAsset::OnScriptsReloadStart>(this);
|
||||
Level::ScriptsReloaded.Bind<JsonAsset, &JsonAsset::OnScriptsReloaded>(this);
|
||||
}
|
||||
// Reload instance when module with this type gets reloaded
|
||||
Level::ScriptsReloadStart.Bind<JsonAsset, &JsonAsset::OnScriptsReloadStart>(this);
|
||||
Level::ScriptsReloaded.Bind<JsonAsset, &JsonAsset::OnScriptsReloaded>(this);
|
||||
#endif
|
||||
|
||||
return LoadResult::Ok;
|
||||
@@ -226,14 +226,11 @@ Asset::LoadResult JsonAsset::loadAsset()
|
||||
|
||||
void JsonAsset::unload(bool isReloading)
|
||||
{
|
||||
if (Instance)
|
||||
{
|
||||
#if USE_EDITOR
|
||||
Level::ScriptsReloadStart.Unbind<JsonAsset, &JsonAsset::OnScriptsReloadStart>(this);
|
||||
Level::ScriptsReloaded.Unbind<JsonAsset, &JsonAsset::OnScriptsReloaded>(this);
|
||||
Level::ScriptsReloadStart.Unbind<JsonAsset, &JsonAsset::OnScriptsReloadStart>(this);
|
||||
Level::ScriptsReloaded.Unbind<JsonAsset, &JsonAsset::OnScriptsReloaded>(this);
|
||||
#endif
|
||||
DeleteInstance();
|
||||
}
|
||||
DeleteInstance();
|
||||
|
||||
JsonAssetBase::unload(isReloading);
|
||||
}
|
||||
@@ -281,6 +278,13 @@ bool JsonAsset::CreateInstance()
|
||||
|
||||
void JsonAsset::DeleteInstance()
|
||||
{
|
||||
// C# instance
|
||||
if (MObject* object = GetManagedInstance())
|
||||
{
|
||||
GetClass()->GetField("_instance")->SetValue(object, nullptr);
|
||||
}
|
||||
|
||||
// C++ instance
|
||||
if (!Instance || !_dtor)
|
||||
return;
|
||||
_dtor(Instance);
|
||||
|
||||
Reference in New Issue
Block a user