Streamed Levels, Test If Actor Is In Level Bounds - Epic Wiki

# Streamed Levels, Test If Actor Is In Level Bounds

# Contents

# Overview

Author: Rama (talk)

Dear Community,

Here's how you can determine if an actor is within the bounds of a streamed in level!

//in playercontroller class

//Get the Currently Streamed Levels const TArray<ULevelStreaming*>& StreamedLevels = GetWorld()->StreamingLevels;   for(const ULevelStreaming* EachLevelStreaming : StreamedLevels) { if( !EachLevelStreaming) { continue; }   ULevel* EachLevel = EachLevelStreaming->GetLoadedLevel();   //Is This Level Valid and Visible? if( !EachLevel || !EachLevel->bIsVisible) { continue; }   //Print Name of current Level Streaming to know which level the unit is in! ClientMessage( EachLevelStreaming->GetWorldAssetPackageName() );   //Is the Player Location Within this Level's Bounds if(ALevelBounds::CalculateLevelBounds(EachLevel).IsInside(GetPawn()->GetActorLocation())) { ClientMessage("Yes Player Is Within This Level"); } }

# Calculate Level Bounds

The most notable function here is:

FBox ALevelBounds::CalculateLevelBounds

# IsInside

CalculateLevelBounds returns an FBox,

IsInside is an FBox function that takes in an FVector and sees if the FVector is within that box's bounds

ALevelBounds::CalculateLevelBounds(EachLevel).IsInside(GetPawn()->GetActorLocation())

# Getting the Streaming Level Name

Please note as of 4.8 the way to obtain the name of the streaming level is:

EachLevelStreaming->GetWorldAssetPackageName()

# Summary

Enjoy!

Rama (talk)

Retrieved from "https://wiki.unrealengine.com/index.php?title=Streamed_Levels,_Test_If_Actor_Is_In_Level_Bounds&oldid=14820"

Category: