Is there any difference on what the object type returned, when using GetDefaultSubobjects and GetDefaultSubobjectByName?
Is one of them returning reference and the other not?
This works:
TArray<UObject*> ObjectArray;
GetDefaultSubobjects(ObjectArray);
for (UObject* Mesh_1P : ObjectArray)
{
if (Mesh_1P->GetName() == "FirstPersonMesh")
{
Cast<USkeletalMeshComponent>(Mesh_1P)->SetRelativeLocation(FVector(15.0f, 0.0f, 0.0f));
Cast<USkeletalMeshComponent>(Mesh_1P)->SetRelativeRotation(FRotator(0.0f, 180.0f, 0.0f));
Cast<USkeletalMeshComponent>(Mesh_1P)->bOnlyOwnerSee = true;
Cast<USkeletalMeshComponent>(Mesh_1P)->bOwnerNoSee = false;
Cast<USkeletalMeshComponent>(Mesh_1P)->bCastDynamicShadow = false;
Cast<USkeletalMeshComponent>(Mesh_1P)->CastShadow = false;
Cast<USkeletalMeshComponent>(Mesh_1P)->SetSkeletalMesh(CustomMesh_1P);
}
}
This doesn’t:
UObject* Mesh_1P = Cast<USkeletalMeshComponent>(GetClass()->GetDefaultSubobjectByName(TEXT("FirstPersonMesh")));
if (Mesh_1P->GetName() == "FirstPersonMesh")
{
Cast<USkeletalMeshComponent>(Mesh_1P)->SetRelativeLocation(FVector(15.0f, 0.0f, 0.0f));
Cast<USkeletalMeshComponent>(Mesh_1P)->SetRelativeRotation(FRotator(0.0f, 180.0f, 0.0f));
Cast<USkeletalMeshComponent>(Mesh_1P)->bOnlyOwnerSee = true;
Cast<USkeletalMeshComponent>(Mesh_1P)->bOwnerNoSee = false;
Cast<USkeletalMeshComponent>(Mesh_1P)->bCastDynamicShadow = false;
Cast<USkeletalMeshComponent>(Mesh_1P)->CastShadow = false;
Cast<USkeletalMeshComponent>(Mesh_1P)->SetSkeletalMesh(CustomMesh_1P);
}
But while using the second code segment, I don’t see the **USkeletalMeshComponent **while in game.
From what I can see while debugging Mesh_1P is the same class regardless of the two I use(UObject). So I can’t figure out why there is a difference?
UObject * GetDefaultSubobjectByName
(
FName ToFind
)
void GetDefaultSubobjects
(
TArray< UObject * > & OutDefaultSubobjects
)