Skip to content
Snippets Groups Projects
Commit 0dbd80d9 authored by Jonathan Wendt's avatar Jonathan Wendt
Browse files

improvement if switching levels

parent 6d879d75
No related branches found
No related tags found
No related merge requests found
......@@ -21,20 +21,26 @@ void FWidgetInteractionModule::ShutdownModule()
void FWidgetInteractionModule::OnWorldTickStart(ELevelTick level_tick, float val)
{
//called every Tick()
auto worlds = GEngine->GetWorldContexts();
if (widget_interaction_cmp_ != nullptr) {
if (widget_interaction_cmp_->IsValidLowLevel() == true) {
return;
}
else {
widget_interaction_cmp_ = nullptr;
}
}
for (auto world_context : worlds) {
for (auto & world_context : worlds)
{
auto world = world_context.World();
if (last_world == world && widget_interaction_cmp_ != nullptr) {
if (widget_interaction_cmp_->IsValidLowLevel() == true) {
continue;
}
else {
widget_interaction_cmp_ = nullptr;
}
}
if (world == nullptr)
continue;
auto player_controller = world->GetFirstPlayerController();
if (player_controller == nullptr)
continue;
......@@ -43,6 +49,8 @@ void FWidgetInteractionModule::OnWorldTickStart(ELevelTick level_tick, float val
if (vr_pawn == nullptr)
continue;
UE_LOG(LogTemp, Warning, TEXT("OnWorldTickStart called and interaction component will be updated"));
FString name = "";
UClass* component_class = UMotionControllerComponent::StaticClass();
......@@ -67,17 +75,18 @@ void FWidgetInteractionModule::OnWorldTickStart(ELevelTick level_tick, float val
}
auto parent_vec = vr_pawn->GetComponentsByClass(component_class);
bool success;
for (auto parent : parent_vec)
if (parent->GetName() == FString(name))
{
CreateWidgetInteraction(dynamic_cast<USceneComponent*>(parent), vr_pawn);
success = true;
}
if(!success)
UE_LOG(LogTemp, Error, TEXT("Failed to load widget asset \"%s"), *name);
}
bool success;
for (auto parent : parent_vec) {
if (parent->GetName() == FString(name)) {
CreateWidgetInteraction(dynamic_cast<USceneComponent*>(parent), vr_pawn);
success = true;
last_world = world;
}
}
if (!success)
UE_LOG(LogTemp, Error, TEXT("Failed to load widget asset \"%s"), *name);
}
}
void FWidgetInteractionModule::CreateWidgetInteraction(USceneComponent * parent, AVirtualRealityPawn* outer)
......
......@@ -25,4 +25,5 @@ private:
TBaseDelegate<void, ELevelTick, float> on_world_tick_start_delegate_;
URwthComponent * widget_interaction_cmp_;
UWorld* last_world;
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment