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.