Init for ActorComponents and Owning Actors not yet spawned.

Oh and one more discovery:

with this, checking on Begin Play in actor:

// Called when the game starts or when spawned
void ACPP_CelestialBody::BeginPlay()
{
	Super::BeginPlay();
	NotifyComponentsOwnerIsReady();
}

No components have tag that is set in C++

LogTemp: Error: >>>>>>>>>>>>>>>>>>>>> My Owner is Alive! <<<<<<<<<<<<<<<<<<<<<<<<
LogTemp: Error: Owner: BP_CelestialBody_C_0, Component: BodyManagerComponent
LogTemp: Error: Checking: Root
LogTemp: Component: Root does not have tag. 
LogTemp: Error: Checking: RootVisual
LogTemp: Component: RootVisual does not have tag. 
LogTemp: Error: Checking: RootGui
LogTemp: Component: RootGui does not have tag. 
LogTemp: Error: Checking: BodyMesh
LogTemp: Component: BodyMesh does not have tag. 
LogTemp: Error: Checking: 3dWidget
LogTemp: Component: 3dWidget does not have tag.

however with this, using int of component class:

ACPP_CelestialBody::ACPP_CelestialBody()
{
	PrimaryActorTick.bCanEverTick = true;
	// adding all components here and setting their tags like:
	RootGui = CreateDefaultSubobject<USceneComponent>(TEXT("RootGui"));
	if (RootGui)
	{
		RootGui->SetupAttachment(RootComponent);
		RootGui->ComponentTags.Add(FName(K2G_MANAGE_ROOT_WIDGET));
	}
	NotifyComponentsOwnerIsReady();
}

all tags are there:


LogTemp: Error: >>>>>>>>>>>>>>>>>>>>> My Owner is Alive! <<<<<<<<<<<<<<<<<<<<<<<<
LogTemp: Error: Owner: BP_CelestialBody_C_0, Component: BodyManagerComponent
LogTemp: Error: Checking: Root
LogTemp: Component: Root does not have tag. 
LogTemp: Error: Checking: RootVisual
LogTemp: Manage.PlanetRoot in: RootVisual
LogTemp: Error: Checking: RootGui
LogTemp: Manage.WidgetRoot in: RootGui
LogTemp: Error: Checking: BodyMesh
LogTemp: Manage.MyMesh in: BodyMesh

So it looks that blueprint (child class from actor) happily removes all tags set in C++.

and it does not matter what i put first:

Super::BeginPlay();
NotifyComponentsOwnerIsReady();

So is there any way to tell BP_Actor, to keep its dirty paws from variables set in C++ in parent class? Yes EditAnywhere. But cannot set it for TAGS of components.

As it looks now Custom Components in C++ are almost useless (unless they do not care about owning actor, do not interact with it , do not read its variables etc), but then with that all excluded what they are for?

Well kind of not, i made InertialShipMovementComponent and it is great. But cannot make this one that should manage 64bit coordinates rebasing visuals etc.