Add support for virtual Prefab assets created from code

This commit is contained in:
2022-07-26 23:10:04 +02:00
parent adaaaa3e3f
commit cced83ca96
7 changed files with 68 additions and 5 deletions
+26
View File
@@ -45,6 +45,29 @@ String JsonAssetBase::GetData() const
return String((const char*)buffer.GetString(), (int32)buffer.GetSize());
}
bool JsonAssetBase::Init(const StringView& dataTypeName, const StringAnsiView& dataJson)
{
CHECK_RETURN(IsVirtual(), true);
unload(true);
DataTypeName = dataTypeName;
DataEngineBuild = FLAXENGINE_VERSION_BUILD;
// Parse json document
{
PROFILE_CPU_NAMED("Json.Parse");
Document.Parse(dataJson.Get(), dataJson.Length());
}
if (Document.HasParseError())
{
Log::JsonParseException(Document.GetParseError(), Document.GetErrorOffset());
return true;
}
Data = &Document;
// Load asset-specific data
return loadAsset() != LoadResult::Ok;
}
const String& JsonAssetBase::GetPath() const
{
#if USE_EDITOR
@@ -114,6 +137,9 @@ void JsonAssetBase::GetReferences(Array<Guid>& output) const
Asset::LoadResult JsonAssetBase::loadAsset()
{
if (IsVirtual())
return LoadResult::Ok;
// Load data (raw json file in editor, cooked asset in build game)
#if USE_EDITOR
BytesContainer data;