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

Method InitCSharp

Source/Engine/Graphics/Textures/TextureBase.cpp:687–727  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

685#if !COMPILE_WITHOUT_CSHARP
686
687bool TextureBase::InitCSharp(void* ptr)
688{
689 PROFILE_CPU_NAMED("Texture.Init");
690 struct InternalInitData
691 {
692 PixelFormat Format;
693 int32 Width;
694 int32 Height;
695 int32 ArraySize;
696 int32 MipLevels;
697 int32 GenerateMips;
698 int32 DataRowPitch[14];
699 int32 DataSlicePitch[14];
700 byte* Data[14];
701 };
702 auto initDataObj = (InternalInitData*)ptr;
703 auto initData = New<InitData>();
704
705 initData->Format = initDataObj->Format;
706 initData->Width = initDataObj->Width;
707 initData->Height = initDataObj->Height;
708 initData->ArraySize = initDataObj->ArraySize;
709 initData->Mips.Resize(initDataObj->GenerateMips ? MipLevelsCount(initDataObj->Width, initDataObj->Height) : initDataObj->MipLevels);
710
711 // Copy source mips data
712 for (int32 mipIndex = 0; mipIndex < initDataObj->MipLevels; mipIndex++)
713 {
714 auto& mip = initData->Mips[mipIndex];
715 mip.RowPitch = initDataObj->DataRowPitch[mipIndex];
716 mip.SlicePitch = initDataObj->DataSlicePitch[mipIndex];
717 mip.Data.Copy(initDataObj->Data[mipIndex], mip.SlicePitch * initData->ArraySize);
718 }
719
720 // Generate mips
721 for (int32 mipIndex = initDataObj->MipLevels; mipIndex < initData->Mips.Count(); mipIndex++)
722 {
723 initData->GenerateMip(mipIndex, initDataObj->GenerateMips & 2);
724 }
725
726 return Init(initData);
727}
728
729#endif
730

Callers

nothing calls this directly

Calls 6

MipLevelsCountFunction · 0.85
GenerateMipMethod · 0.80
InitFunction · 0.70
ResizeMethod · 0.45
CopyMethod · 0.45
CountMethod · 0.45

Tested by

no test coverage detected