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

Method CreateModel

Source/Engine/ContentImporters/ImportModel.cpp:626–666  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

624}
625
626CreateAssetResult ImportModel::CreateModel(CreateAssetContext& context, const ModelData& modelData, const Options* options)
627{
628 PROFILE_CPU();
629 IMPORT_SETUP(Model, Model::SerializedVersion);
630 static_assert(Model::SerializedVersion == 30, "Update code.");
631
632 // Save model header
633 MemoryWriteStream stream(4096);
634 if (Model::SaveHeader(stream, modelData))
635 return CreateAssetResult::Error;
636 if (context.AllocateChunk(0))
637 return CreateAssetResult::CannotAllocateChunk;
638 context.Data.Header.Chunks[0]->Data.Copy(ToSpan(stream));
639
640 // Pack model LODs data
641 const auto lodCount = modelData.LODs.Count();
642 for (int32 lodIndex = 0; lodIndex < lodCount; lodIndex++)
643 {
644 stream.SetPosition(0);
645 if (Model::SaveLOD(stream, modelData, lodIndex))
646 return CreateAssetResult::Error;
647 const int32 chunkIndex = MODEL_LOD_TO_CHUNK_INDEX(lodIndex);
648 if (context.AllocateChunk(chunkIndex))
649 return CreateAssetResult::CannotAllocateChunk;
650 context.Data.Header.Chunks[chunkIndex]->Data.Copy(ToSpan(stream));
651 }
652
653 // Generate SDF
654 if (options && options->GenerateSDF)
655 {
656 stream.SetPosition(0);
657 if (!ModelTool::GenerateModelSDF(nullptr, &modelData, options->SDFResolution, lodCount - 1, nullptr, &stream, context.TargetAssetPath))
658 {
659 if (context.AllocateChunk(15))
660 return CreateAssetResult::CannotAllocateChunk;
661 context.Data.Header.Chunks[15]->Data.Copy(ToSpan(stream));
662 }
663 }
664
665 return CreateAssetResult::Ok;
666}
667
668CreateAssetResult ImportModel::CreateSkinnedModel(CreateAssetContext& context, const ModelData& modelData, const Options* options)
669{

Callers

nothing calls this directly

Calls 5

ToSpanFunction · 0.50
AllocateChunkMethod · 0.45
CopyMethod · 0.45
CountMethod · 0.45
SetPositionMethod · 0.45

Tested by

no test coverage detected