You’re welcome! Good luck! My only suggestion would be to take world position in Z and localize it to a starting/ending height you want to blend between and then lerp between the two colors. There’s probably a better way but that’s a quick way to do it.
Looking at it, the only thing that stands out as potentially a problem is registration. You’re not giving it a parent object or registering it.
URuntimeMeshComponent* NewTile = NewObject<URuntimeMeshComponent>(this);
NewTile->RegisterComponent();
NewTile->SetupAttachment(RootComponent);
but if you’re in the constructor then the easier way is just
URuntimeMeshComponent* NewTile = CreateDefaultSubobject<URuntimeMeshComponent>(TEXT("TerrainTile"));
RootComponent = NewTile;
(All of the above is done by memory, as I’m not at my desk atm, but I think it’s right)