I want to change the texture of an attachment with an external texture.
I passed a UTexture2D from blueprint to cpp. Then use the following code to change the texture.
Attachment *attachment = slot->getAttachment();
RegionAttachment* atta = (RegionAttachment*)attachment;
AtlasPage *page = NULL;
char *name = TCHAR_TO_ANSI(*texture->GetName());
UE_LOG(LogTemp, Log, TEXT("name is:%s"), TCHAR_TO_UTF8(*SlotName));
page = new (__FILE__, __LINE__) AtlasPage(TCHAR_TO_UTF8(*SlotName));
page->setRendererObject(texture);
page->texturePath = TCHAR_TO_UTF8(*texture->GetPathName());
page->width = texture->GetSizeX();
page->height = texture->GetSizeY();
page->uWrap = TextureWrap_ClampToEdge;
page->vWrap = TextureWrap_ClampToEdge;
UE_LOG(LogTemp, Log, TEXT("width is:%d, height is:%d"), page->width, page->height);
AtlasRegion *region = new (__FILE__, __LINE__) AtlasRegion();
region->width = texture->GetSizeX();
region->height = texture->GetSizeY();
region->originalWidth = texture->GetSizeX();
region->originalHeight = texture->GetSizeY();
region->page = page;
region->u = 0;
region->v = 0;
region->u2 = 1;
region->u2 = 1;
region->degrees = 0;
region->offsetX = 0;
region->offsetY = 0;
atta->setRendererObject(region);
atta->updateOffset();
Now the output is the following picture. The head(which I am trying to change) disappears and nothing shows RegionAttachment* atta = (RegionAttachment*)attachment;
AtlasPage *page = NULL;
char *name = TCHAR_TO_ANSI(*texture->GetName());
UE_LOG(LogTemp, Log, TEXT("name is:%s"), TCHAR_TO_UTF8(*SlotName));
page = new (__FILE__, __LINE__) AtlasPage(TCHAR_TO_UTF8(*SlotName));
page->setRendererObject(texture);
page->texturePath = TCHAR_TO_UTF8(*texture->GetPathName());
page->width = texture->GetSizeX();
page->height = texture->GetSizeY();
page->uWrap = TextureWrap_ClampToEdge;
page->vWrap = TextureWrap_ClampToEdge;
UE_LOG(LogTemp, Log, TEXT("width is:%d, height is:%d"), page->width, page->height);
AtlasRegion *region = new (__FILE__, __LINE__) AtlasRegion();
region->width = texture->GetSizeX();
region->height = texture->GetSizeY();
region->originalWidth = texture->GetSizeX();
region->originalHeight = texture->GetSizeY();
region->page = page;
region->u = 0;
region->v = 0;
region->u2 = 1;
region->u2 = 1;
region->degrees = 0;
region->offsetX = 0;
region->offsetY = 0;
atta->setRendererObject(region);
atta->updateOffset();

I kinda have no idea where to go now.
Could anyone help me with this? Thanks!
