9Evgeny9
(9Evgeny9)
1
I want to add socket to skeletal mesh, by Python.
I’ve found add_socket
https://docs.unrealengine.com/5.1/en-US/PythonAPI/class/SkeletalMesh.html#unreal.SkeletalMesh.add_socket
it requires “SkeletalMeshSocket” as parameter
https://docs.unrealengine.com/5.1/en-US/PythonAPI/class/SkeletalMeshSocket.html
The question is:
How to create object with “SkeletalMeshSocket” object, for passing it to
unreal.SkeletalMesh.add_socket( xxx )
method?
Adenex_x
(Adenex_x)
2
you can do this only with c++
.h file:
UFUNCTION(BlueprintCallable, Category = "PyToolkit|Socket")
static USkeletalMeshSocket *AddSkeletalMeshSocket(USkeleton *InSkeleton, FName InBoneName);
UFUNCTION(BlueprintCallable, Category = "PyToolkit|Socket")
static void DeleteSkeletalMeshSocket(USkeleton *InSkeleton, TArray<USkeletalMeshSocket *> SocketList);
.cpp file:
USkeletalMeshSocket *UPyToolkitBPLibrary::AddSkeletalMeshSocket(USkeleton *InSkeleton, FName InBoneName)
{
USkeletalMeshSocket *socket = nullptr;
ISkeletonEditorModule &SkeletonEditorModule = FModuleManager::LoadModuleChecked<ISkeletonEditorModule>("SkeletonEditor");
TSharedRef<IEditableSkeleton> EditableSkeleton = SkeletonEditorModule.CreateEditableSkeleton(InSkeleton);
socket = EditableSkeleton->AddSocket(InBoneName);
return socket;
}
void UPyToolkitBPLibrary::DeleteSkeletalMeshSocket(USkeleton *InSkeleton, TArray<USkeletalMeshSocket *> SocketList)
{
InSkeleton->Modify();
for (USkeletalMeshSocket *Socket : SocketList)
{
InSkeleton->Sockets.Remove(Socket);
}
ISkeletonEditorModule &SkeletonEditorModule = FModuleManager::LoadModuleChecked<ISkeletonEditorModule>("SkeletonEditor");
TSharedRef<IEditableSkeleton> EditableSkeleton = SkeletonEditorModule.CreateEditableSkeleton(InSkeleton);
EditableSkeleton->RefreshBoneTree();
}