MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / Save

Method Save

Source/Engine/Content/Assets/Model.cpp:379–425  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

377}
378
379bool Model::Save(bool withMeshDataFromGpu, Function<FlaxChunk*(int32)>& getChunk) const
380{
381 if (ModelBase::Save(withMeshDataFromGpu, getChunk))
382 return true;
383
384 if (withMeshDataFromGpu)
385 {
386 // Download SDF data
387 if (SDF.Texture)
388 {
389 auto sdfChunk = getChunk(15);
390 if (sdfChunk == nullptr)
391 return true;
392 MemoryWriteStream sdfStream;
393 sdfStream.WriteInt32(1); // Version
394 ModelSDFHeader data(SDF, SDF.Texture->GetDescription());
395 sdfStream.WriteBytes(&data, sizeof(data));
396 TextureData sdfTextureData;
397 if (SDF.Texture->DownloadData(sdfTextureData))
398 return true;
399 for (int32 mipLevel = 0; mipLevel < sdfTextureData.Items[0].Mips.Count(); mipLevel++)
400 {
401 auto& mip = sdfTextureData.Items[0].Mips[mipLevel];
402 ModelSDFMip mipData(mipLevel, mip);
403 sdfStream.WriteBytes(&mipData, sizeof(mipData));
404 sdfStream.WriteBytes(mip.Data.Get(), mip.Data.Length());
405 }
406 sdfChunk->Data.Copy(ToSpan(sdfStream));
407 }
408 }
409 else
410 {
411 if (SDF.Texture)
412 {
413 // SDF data from file (only if has no cached texture data)
414 if (LoadChunk(15))
415 return true;
416 }
417 else
418 {
419 // No SDF texture
420 ReleaseChunk(15);
421 }
422 }
423
424 return false;
425}
426
427#endif
428

Callers 1

Upgrade_5_To_30Method · 0.45

Calls 9

ToSpanFunction · 0.50
WriteInt32Method · 0.45
GetDescriptionMethod · 0.45
WriteBytesMethod · 0.45
DownloadDataMethod · 0.45
CountMethod · 0.45
GetMethod · 0.45
LengthMethod · 0.45
CopyMethod · 0.45

Tested by

no test coverage detected