Custom Scene Component Do Not Register Children

Hello.

I have made a class that is derived from USceneComponent which contains 4 references for itself and two UStaticMeshComponents. Simply I am trying to make a tree structure. When I first create actor (thus my component) it works flawlessly. But when I give it the command to create its children, they do not register somehow (Or I just cannot see them, been working on this case for hours now). When I did this by deriving my class from UStaticMeshComponent, it just worked with the same code. However I definitely need a Scene Component for my needs. Here is the relevant bits of my code



.h

public:	
	// Sets default values for this component's properties
	UModifiableWall();

	// Called when the game starts
	virtual void BeginPlay() override;
	
	// Called every frame
	virtual void TickComponent( float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction ) override;

	UPROPERTY(BlueprintReadWrite, Category = Wall)
	UModifiableWall* LeftWall;

	UPROPERTY(BlueprintReadWrite, Category = Wall)
	UModifiableWall* RightWall;

	UPROPERTY(BlueprintReadWrite, Category = Wall)
	UModifiableWall* TopWall;

	UPROPERTY(BlueprintReadWrite, Category = Wall)
	UModifiableWall* BottomWall;

	UPROPERTY(BlueprintReadWrite, Category = Wall)
	UAutoRegisterSMComponent* PlacedObject;

	UPROPERTY(BlueprintReadWrite, Category = Wall)
	UAutoRegisterSMComponent* MainWall;

	UPROPERTY(BlueprintReadWrite, Category = Wall)
	bool IsBrokenDown;

	UPROPERTY(BlueprintReadWrite, Category = Wall)
	UMaterialInstanceDynamic* MaterialInstance;

	UFUNCTION(BlueprintCallable, Category = Wall)
	void Initialize(UStaticMesh* Mesh, FVector Location, FVector WorldScale);

	UFUNCTION(BlueprintCallable, Category = Wall)
	void PlaceObject(UStaticMesh* ObjectMesh, FVector ObjectWorldLocation, UModifiableWall* NewLeftWall, UModifiableWall* NewRightWall, UModifiableWall* NewTopWall, UModifiableWall* NewBottomWall);

	UFUNCTION(BlueprintCallable, Category = Wall)
	UModifiableWall* CheckForPlaceObject(UStaticMesh* ObjectMesh, FVector ObjectWorldLocation);




.cpp

UModifiableWall::UModifiableWall()
{
	// Set this component to be initialized when the game starts, and to be ticked every frame.  You can turn these features
	// off to improve performance if you don't need them.
	bWantsBeginPlay = true;
	PrimaryComponentTick.bCanEverTick = true;

	IsBrokenDown = false;

	MainWall = CreateDefaultSubobject<UAutoRegisterSMComponent>(FName("MainWall"));
	PlacedObject = CreateDefaultSubobject<UAutoRegisterSMComponent>(FName("PlacedObject"));

	MainWall->AttachTo(this);
	PlacedObject->AttachTo(this);

	bAutoActivate = true;
	bAutoRegister = true;
}

void UModifiableWall::PlaceObject(UStaticMesh* ObjectMesh, FVector ObjectWorldLocation, UModifiableWall* NewLeftWall, UModifiableWall* NewRightWall, UModifiableWall* NewTopWall, UModifiableWall* NewBottomWall)
{
	FVector LocalLocation = UKismetMathLibrary::InverseTransformLocation(this->GetComponentTransform(), ObjectWorldLocation);
	FVector ObjectSize = ObjectMesh->GetBounds().GetBox().GetSize();

	float XProjected = LocalLocation.X + (50 * MainWall->GetComponentScale().X);
	float ZProjected = LocalLocation.Z + (50 * MainWall->GetComponentScale().Z);

	//LeftWall

	float LeftXScale = (XProjected - ObjectSize.X / 2) / 100;
	FVector LeftWallScale(LeftXScale, MainWall->GetComponentScale().Y, MainWall->GetComponentScale().Z);
	FVector LeftWallLocation((LeftXScale - MainWall->GetComponentScale().X) * 50, 0, 0);

	LeftWall = NewLeftWall;
	LeftWall->AttachTo(this);
	LeftWall->Initialize(MainWall->StaticMesh, LeftWallLocation, LeftWallScale);
	LeftWall->SetVisibility(true);

	//RightWall

	float RightXScale = (MainWall->GetComponentScale().X * 100 - (XProjected + ObjectSize.X / 2)) / 100;
	FVector RightWallScale(RightXScale, MainWall->GetComponentScale().Y, MainWall->GetComponentScale().Z);
	FVector RightWallLocation((MainWall->GetComponentScale().X * 50) - (RightXScale * 50), 0, 0);

	RightWall = NewRightWall;
	RightWall->AttachTo(this);
	RightWall->Initialize(MainWall->StaticMesh, RightWallLocation, RightWallScale);
	RightWall->SetVisibility(true);

	//BottomWall

	float BottomZScale = (ZProjected - ObjectSize.Z / 2) / 100;
	FVector BottomWallScale((MainWall->GetComponentScale() - LeftWall->GetComponentScale() - RightWall->GetComponentScale()).X, MainWall->GetComponentScale().Y, BottomZScale);
	FVector BottomWallLocation(LocalLocation.X, 0, -(MainWall->GetComponentScale().Z * 50 - BottomZScale * 50));

	BottomWall = NewBottomWall;
	BottomWall->AttachTo(this);
	BottomWall->Initialize(MainWall->StaticMesh, BottomWallLocation, BottomWallScale);
	BottomWall->SetVisibility(true);

	//TopWall

	float TopZScale = (MainWall->GetComponentScale().Z * 100 - (ZProjected + ObjectSize.Z / 2)) / 100;
	FVector TopWallScale((MainWall->GetComponentScale() - LeftWall->GetComponentScale() - RightWall->GetComponentScale()).X, MainWall->GetComponentScale().Y, TopZScale);
	FVector TopWallLocation(LocalLocation.X, 0, (MainWall->GetComponentScale().Z * 50 - TopZScale * 50));

	TopWall = NewTopWall;
	TopWall->AttachTo(this);
	TopWall->Initialize(MainWall->StaticMesh, TopWallLocation, TopWallScale);
	TopWall->SetVisibility(true);

	//Object
	PlacedObject->AttachTo(this);
	PlacedObject->SetStaticMesh(ObjectMesh);
	PlacedObject->SetRelativeLocation(LocalLocation + FVector(0, 0, 0));
	PlacedObject->SetWorldScale3D(FVector(1, 1, 1));

	MainWall->SetVisibility(false);

	Activate();

	IsBrokenDown = true;
}


The PlaceObject function takes Components that is created earlier just for trying purposes (Before I used NewObject and I am 250% sure that I used RegisterComponent() afterwards, and I am using it when I am creating these parameter ones as well).

In need of some help, after a long time, I have tossed on something… Thanks in advance.

Edit: UAutoRegisterSMComponent is a class derived from UStaticMeshComponent that only has bAutoActivate = true on its constructor. Using UStaticMeshComponent did not help too.

TLDR: Stuff get rendered when the component is first created on the actor with CreateDefaultSubobject, but does not register when created dynamically with NewObject with RegisterComponent().

Up, still need help