ShowFlag.CollisionPawn
ShowFlag.CollisionPawn
#Overview
name: ShowFlag.CollisionPawn
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Allows to override a specific showflag (works in editor and game, \
It is referenced in 25
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of ShowFlag.CollisionPawn is to control the visibility of pawn collision in the Unreal Engine viewport. This setting is primarily used for debugging and visualization purposes in the editor.
ShowFlag.CollisionPawn is primarily used by the rendering system and the editor’s viewport visualization. It’s part of the engine’s show flags system, which allows developers to toggle various visual elements in the viewport.
The value of this variable is typically set through the editor’s viewport menu or programmatically when customizing viewport behavior. It’s often toggled alongside other collision visualization options.
This variable interacts closely with ShowFlag.CollisionVisibility. Together, they determine how collision is visualized in the viewport. While CollisionPawn focuses on pawn collision, CollisionVisibility deals with visibility collision.
Developers should be aware that:
- This flag is primarily for editor and debug use, not for gameplay.
- It affects performance when enabled, as it requires additional rendering.
- It’s often used in conjunction with other collision visualization tools.
Best practices when using this variable include:
- Only enable it when necessary for debugging or level design.
- Be aware of its performance impact in complex scenes.
- Use it in combination with other collision visualization tools for a complete picture of collision in your scene.
Regarding the associated variable CollisionPawn:
The purpose of CollisionPawn is to represent the actual collision state for pawns in the game. It’s used in various parts of the engine to determine if pawn collision should be considered or rendered.
CollisionPawn is used across multiple subsystems, including rendering, physics, and game logic. It’s a core part of how the engine handles pawn interaction with the world.
The value of CollisionPawn is typically set based on the game’s logic and the specific pawn’s properties. It can be influenced by game code, blueprints, or engine systems.
CollisionPawn interacts with many other collision-related variables and systems in the engine. It’s a key part of the overall collision system.
Developers should be aware that:
- CollisionPawn affects gameplay directly, unlike ShowFlag.CollisionPawn which is for visualization.
- Changes to CollisionPawn can have wide-ranging effects on game behavior.
- It’s used in both editor and runtime contexts.
Best practices when working with CollisionPawn include:
- Carefully consider the implications of changing collision responses.
- Use the appropriate collision channels for different types of interactions.
- Test thoroughly after making changes to ensure desired gameplay behavior.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:291
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(0, CollisionVisibility, SFG_Hidden, NSLOCTEXT("UnrealEd", "CollisionVisibility", "Visibility"))
/** Collision blocking pawn against simple collision **/
SHOWFLAG_FIXED_IN_SHIPPING(0, CollisionPawn, SFG_Hidden, NSLOCTEXT("UnrealEd", "CollisionPawn", "Pawn"))
/** Render LightShafts, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(LightShafts, SFG_LightingFeatures, NSLOCTEXT("UnrealEd", "LightShaftsSF", "Light Shafts"))
/** Render the PostProcess Material */
SHOWFLAG_FIXED_IN_SHIPPING(1, PostProcessMaterial, SFG_PostProcess, NSLOCTEXT("UnrealEd", "PostProcessMaterialSF", "Post Process Material"))
/** Render Sky and Atmospheric lighting, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(Atmosphere, SFG_Normal, NSLOCTEXT("UnrealEd", "AtmosphereSF", "Atmosphere"))
#Associated Variable and Callsites
This variable is associated with another variable named CollisionPawn
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Plugins/2D/Paper2D/Source/Paper2D/Private/PaperRenderSceneProxy.cpp:569
Scope (from outer to inner):
file
function bool FPaperRenderSceneProxy::IsCollisionView
Source code excerpt:
// If in a 'collision view' and collision is enabled
const bool bInCollisionView = EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn;
if (bInCollisionView && IsCollisionEnabled())
{
// See if we have a response to the interested channel
bool bHasResponse = EngineShowFlags.CollisionPawn && (CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore);
bHasResponse |= EngineShowFlags.CollisionVisibility && (CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore);
if (bHasResponse)
{
bDrawComplexCollision = EngineShowFlags.CollisionVisibility;
bDrawSimpleCollision = EngineShowFlags.CollisionPawn;
}
}
return bInCollisionView;
}
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorViewportClient.cpp:5658
Scope (from outer to inner):
file
function void FEditorViewportClient::UpdateHiddenCollisionDrawing
Source code excerpt:
{
// See if this is a collision view mode
bool bCollisionMode = EngineShowFlags.Collision || EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn;
// Tell engine to create proxies for hidden components, so we can still draw collision
if (World->bCreateRenderStateForHiddenComponentsWithCollsion != bCollisionMode)
{
World->bCreateRenderStateForHiddenComponentsWithCollsion = bCollisionMode;
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorViewportCommands.cpp:125
Scope (from outer to inner):
file
function void FEditorViewportCommands::RegisterCommands
Source code excerpt:
UI_COMMAND( ReflectionOverrideMode, "Reflections View Mode", "Renders the scene with reflections only", EUserInterfaceActionType::RadioButton, FInputChord() );
UI_COMMAND( CollisionPawn, "Player Collision", "Renders player collision visualization", EUserInterfaceActionType::RadioButton, FInputChord() );
UI_COMMAND( CollisionVisibility, "Visibility Collision", "Renders visibility collision visualization", EUserInterfaceActionType::RadioButton, FInputChord() );
UI_COMMAND( ToggleRealTime, "Realtime", "Toggles real time rendering in this viewport", EUserInterfaceActionType::ToggleButton, FInputChord( EModifierKey::Control, EKeys::R ) );
UI_COMMAND( ToggleStats, "Show Stats", "Toggles the ability to show stats in this viewport (enables realtime)", EUserInterfaceActionType::ToggleButton, FInputChord( EModifierKey::Shift, EKeys::L ) );
UI_COMMAND( ToggleFPS, "Show FPS", "Toggles showing frames per second in this viewport (enables realtime)", EUserInterfaceActionType::ToggleButton, FInputChord( EModifierKey::Control|EModifierKey::Shift, EKeys::H ) );
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/SCommonEditorViewportToolbarBase.cpp:855
Scope (from outer to inner):
file
function void SCommonEditorViewportToolbarBase::CreateViewMenuExtensions
Source code excerpt:
MenuBuilder.BeginSection("LevelViewportCollision", LOCTEXT("CollisionViewModeHeader", "Collision") );
{
MenuBuilder.AddMenuEntry( FEditorViewportCommands::Get().CollisionPawn, NAME_None, LOCTEXT("CollisionPawnViewModeDisplayName", "Player Collision") );
MenuBuilder.AddMenuEntry( FEditorViewportCommands::Get().CollisionVisibility, NAME_None, LOCTEXT("CollisionVisibilityViewModeDisplayName", "Visibility Collision") );
}
MenuBuilder.EndSection();
//FINDME
// MenuBuilder.BeginSection("LevelViewportLandscape", LOCTEXT("LandscapeHeader", "Landscape") );
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/SEditorViewport.cpp:453
Scope (from outer to inner):
file
function void SEditorViewport::BindCommands
Source code excerpt:
MAP_VIEWMODE_ACTION( Commands.VisualizeGroomMode, VMI_VisualizeGroom);
MAP_VIEWMODE_ACTION( Commands.VisualizeVirtualShadowMapMode, VMI_VisualizeVirtualShadowMap );
MAP_VIEWMODE_ACTION( Commands.CollisionPawn, VMI_CollisionPawn);
MAP_VIEWMODE_ACTION( Commands.CollisionVisibility, VMI_CollisionVisibility);
if (GEnableGPUSkinCache)
{
MAP_VIEWMODE_ACTION(Commands.VisualizeGPUSkinCacheMode, VMI_VisualizeGPUSkinCache);
FGPUSkinCacheVisualizationMenuCommands::Get().BindCommands(CommandListRef, Client);
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/SEditorViewportViewMenu.cpp:139
Scope (from outer to inner):
file
function void SEditorViewportViewMenu::FillViewMenu
Source code excerpt:
Section.AddMenuEntry(BaseViewportActions.LightingOnlyMode, UViewModeUtils::GetViewModeDisplayName(VMI_LightingOnly));
Section.AddMenuEntry(BaseViewportActions.ReflectionOverrideMode, UViewModeUtils::GetViewModeDisplayName(VMI_ReflectionOverride));
Section.AddMenuEntry(BaseViewportActions.CollisionPawn, UViewModeUtils::GetViewModeDisplayName(VMI_CollisionPawn));
Section.AddMenuEntry(BaseViewportActions.CollisionVisibility, UViewModeUtils::GetViewModeDisplayName(VMI_CollisionVisibility));
}
#if RHI_RAYTRACING
if (IsRayTracingEnabled())
{
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Public/EditorViewportCommands.h:149
Scope (from outer to inner):
file
class class FEditorViewportCommands : public TCommands<FEditorViewportCommands>
Source code excerpt:
/** Collision Draw Mode */
TSharedPtr< FUICommandInfo > CollisionPawn;
TSharedPtr< FUICommandInfo > CollisionVisibility;
/** Toggles realtime rendering in the viewport */
TSharedPtr< FUICommandInfo > ToggleRealTime;
/** Toggles showing stats in the viewport */
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Components/BrushComponent.cpp:179
Scope (from outer to inner):
file
class class FBrushSceneProxy final : public FPrimitiveSceneProxy
function bool IsCollisionView
Source code excerpt:
bool IsCollisionView(const FEngineShowFlags& EngineShowFlags, bool & bDrawCollision) const
{
const bool bInCollisionView = EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn;
if (bInCollisionView && IsCollisionEnabled())
{
bDrawCollision = EngineShowFlags.CollisionPawn && (CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore);
bDrawCollision |= EngineShowFlags.CollisionVisibility && (CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore);
}
else
{
bDrawCollision = false;
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Components/BrushComponent.cpp:299
Scope (from outer to inner):
file
class class FBrushSceneProxy final : public FPrimitiveSceneProxy
function virtual FPrimitiveViewRelevance GetViewRelevance
Source code excerpt:
}
const bool bInCollisionView = (View->Family->EngineShowFlags.Collision || View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn);
if(IsShown(View))
{
bool bNeverShow = false;
if( GIsEditor )
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/ModelRender.cpp:270
Scope (from outer to inner):
file
class class FModelSceneProxy final : public FPrimitiveSceneProxy
function bool IsCollisionView
Source code excerpt:
bool IsCollisionView(const FSceneView* View, bool & bDrawCollision) const
{
const bool bInCollisionView = View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn;
if (bInCollisionView)
{
// use wireframe if collision is enabled, and it's not using complex
bDrawCollision = View->Family->EngineShowFlags.CollisionPawn && IsCollisionEnabled() && (CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore);
bDrawCollision |= View->Family->EngineShowFlags.CollisionVisibility && IsCollisionEnabled() && (CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore);
}
else
{
bDrawCollision = false;
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/ModelRender.cpp:541
Scope (from outer to inner):
file
class class FModelSceneProxy final : public FPrimitiveSceneProxy
function virtual FPrimitiveViewRelevance GetViewRelevance
Source code excerpt:
Result.bDrawRelevance = IsShown(View) && View->Family->EngineShowFlags.BSPTriangles && View->Family->EngineShowFlags.BSP;
bool bShowSelectedTriangles = GIsEditor && !View->bIsGameView && View->Family->EngineShowFlags.Selection;
bool bCollisionView = View->Family->EngineShowFlags.CollisionPawn || View->Family->EngineShowFlags.CollisionVisibility;
if (IsRichView(*View->Family) || HasViewDependentDPG() || bCollisionView
|| (bShowSelectedTriangles && HasSelectedSurfaces()))
{
Result.bDynamicRelevance = true;
}
else
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PrimitiveSceneProxy.cpp:1468
Scope (from outer to inner):
file
function bool FPrimitiveSceneProxy::IsShown
Source code excerpt:
// If we are in a collision view, hide anything which doesn't have collision enabled
const bool bCollisionView = (View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn);
if (bCollisionView && !IsCollisionEnabled())
{
return false;
}
if (DrawInVirtualTextureOnly(true) && !View->bIsVirtualTexture && !View->Family->EngineShowFlags.VirtualTexturePrimitives && !IsSelected())
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Rendering/NaniteResources.cpp:2148
Scope (from outer to inner):
file
namespace Nanite
function bool FSceneProxy::IsCollisionView
Source code excerpt:
bDrawSimpleCollision = bDrawComplexCollision = false;
const bool bInCollisionView = EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn;
#if NANITE_ENABLE_DEBUG_RENDERING
// If in a 'collision view' and collision is enabled
if (bInCollisionView && IsCollisionEnabled())
{
// See if we have a response to the interested channel
bool bHasResponse = EngineShowFlags.CollisionPawn && CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore;
bHasResponse |= EngineShowFlags.CollisionVisibility && CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore;
if (bHasResponse)
{
// Visibility uses complex and pawn uses simple. However, if UseSimpleAsComplex or UseComplexAsSimple is used we need to adjust accordingly
bDrawComplexCollision = (EngineShowFlags.CollisionVisibility && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseSimpleAsComplex) || (EngineShowFlags.CollisionPawn && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseComplexAsSimple);
bDrawSimpleCollision = (EngineShowFlags.CollisionPawn && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseComplexAsSimple) || (EngineShowFlags.CollisionVisibility && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseSimpleAsComplex);
}
}
#endif
return bInCollisionView;
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/ShowFlags.cpp:802
Scope: file
Source code excerpt:
return VMI_LightingOnly;
}
else if (EngineShowFlags.CollisionPawn)
{
return VMI_CollisionPawn;
}
else if (EngineShowFlags.CollisionVisibility)
{
return VMI_CollisionVisibility;
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/StaticMeshRender.cpp:1394
Scope (from outer to inner):
file
function bool FStaticMeshSceneProxy::IsCollisionView
Source code excerpt:
bDrawSimpleCollision = bDrawComplexCollision = false;
const bool bInCollisionView = EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn;
#if STATICMESH_ENABLE_DEBUG_RENDERING
// If in a 'collision view' and collision is enabled
if (bInCollisionView && IsCollisionEnabled())
{
// See if we have a response to the interested channel
bool bHasResponse = EngineShowFlags.CollisionPawn && CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore;
bHasResponse |= EngineShowFlags.CollisionVisibility && CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore;
if(bHasResponse)
{
// Visibility uses complex and pawn uses simple. However, if UseSimpleAsComplex or UseComplexAsSimple is used we need to adjust accordingly
bDrawComplexCollision = (EngineShowFlags.CollisionVisibility && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseSimpleAsComplex) || (EngineShowFlags.CollisionPawn && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseComplexAsSimple);
bDrawSimpleCollision = (EngineShowFlags.CollisionPawn && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseComplexAsSimple) || (EngineShowFlags.CollisionVisibility && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseSimpleAsComplex);
}
}
#endif
return bInCollisionView;
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:291
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(0, CollisionVisibility, SFG_Hidden, NSLOCTEXT("UnrealEd", "CollisionVisibility", "Visibility"))
/** Collision blocking pawn against simple collision **/
SHOWFLAG_FIXED_IN_SHIPPING(0, CollisionPawn, SFG_Hidden, NSLOCTEXT("UnrealEd", "CollisionPawn", "Pawn"))
/** Render LightShafts, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(LightShafts, SFG_LightingFeatures, NSLOCTEXT("UnrealEd", "LightShaftsSF", "Light Shafts"))
/** Render the PostProcess Material */
SHOWFLAG_FIXED_IN_SHIPPING(1, PostProcessMaterial, SFG_PostProcess, NSLOCTEXT("UnrealEd", "PostProcessMaterialSF", "Post Process Material"))
/** Render Sky and Atmospheric lighting, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(Atmosphere, SFG_Normal, NSLOCTEXT("UnrealEd", "AtmosphereSF", "Atmosphere"))
#Loc: <Workspace>/Engine/Source/Runtime/GeometryFramework/Private/Components/BaseDynamicMeshSceneProxy.cpp:150
Scope (from outer to inner):
file
function bool FBaseDynamicMeshSceneProxy::IsCollisionView
Source code excerpt:
bDrawSimpleCollision = bDrawComplexCollision = false;
bool bDrawCollisionView = (EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn);
#if UE_ENABLE_DEBUG_DRAWING
// If in a 'collision view' and collision is enabled
if (bHasCollisionData && bDrawCollisionView && IsCollisionEnabled())
{
// See if we have a response to the interested channel
bool bHasResponse = EngineShowFlags.CollisionPawn && CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore;
bHasResponse |= EngineShowFlags.CollisionVisibility && CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore;
if(bHasResponse)
{
// Visibility uses complex and pawn uses simple. However, if UseSimpleAsComplex or UseComplexAsSimple is used we need to adjust accordingly
bDrawComplexCollision = (EngineShowFlags.CollisionVisibility && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseSimpleAsComplex) || (EngineShowFlags.CollisionPawn && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseComplexAsSimple);
bDrawSimpleCollision = (EngineShowFlags.CollisionPawn && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseComplexAsSimple) || (EngineShowFlags.CollisionVisibility && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseSimpleAsComplex);
}
}
#endif
return bDrawCollisionView;
}
#Loc: <Workspace>/Engine/Source/Runtime/Landscape/Private/LandscapeRender.cpp:448
Scope (from outer to inner):
file
function static int32 GetDrawCollisionLodOverride
Source code excerpt:
{
#if WITH_EDITOR || !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
bool bShowCollisionPawn = View.Family->EngineShowFlags.CollisionPawn;
bool bShowCollisionVisibility = View.Family->EngineShowFlags.CollisionVisibility;
int32 DrawCollisionPawnLOD = CollisionResponse.GetResponse(ECC_Pawn) == ECR_Ignore ? -1 : SimpleCollisionLod;
int32 DrawCollisionVisibilityLOD = CollisionResponse.GetResponse(ECC_Visibility) == ECR_Ignore ? -1 : CollisionLod;
return GetDrawCollisionLodOverride(bShowCollisionPawn, bShowCollisionVisibility, DrawCollisionPawnLOD, DrawCollisionVisibilityLOD);
#else
return -1;
#Loc: <Workspace>/Engine/Source/Runtime/Landscape/Private/LandscapeRender.cpp:1982
Scope (from outer to inner):
file
function FPrimitiveViewRelevance FLandscapeComponentSceneProxy::GetViewRelevance
Source code excerpt:
{
FPrimitiveViewRelevance Result;
const bool bCollisionView = (View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn);
Result.bDrawRelevance = (IsShown(View) || bCollisionView) && View->Family->EngineShowFlags.Landscape;
Result.bRenderInMainPass = ShouldRenderInMainPass();
Result.bRenderCustomDepth = ShouldRenderCustomDepth();
Result.bUsesLightingChannels = GetLightingChannelMask() != GetDefaultLightingChannelMask();
Result.bTranslucentSelfShadow = bCastVolumetricTranslucentShadow;
#Loc: <Workspace>/Engine/Source/Runtime/Landscape/Private/LandscapeRender.cpp:2074
Scope (from outer to inner):
file
function FPrimitiveViewRelevance FLandscapeComponentSceneProxy::GetViewRelevance
Source code excerpt:
#if WITH_EDITOR || !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
const bool bInCollisionView = View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn;
#endif
// Use the dynamic path for rendering landscape components pass only for Rich Views or if the static path is disabled for debug.
if (IsRichView(*View->Family) ||
#if WITH_EDITOR || !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
bInCollisionView ||
#Loc: <Workspace>/Engine/Source/Runtime/Landscape/Private/LandscapeRender.cpp:2743
Scope: file
Source code excerpt:
#if WITH_EDITOR || !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
const bool bInCollisionView = View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn;
if (AllowDebugViewmodes() && bInCollisionView)
{
const bool bDrawSimpleCollision = View->Family->EngineShowFlags.CollisionPawn && CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore;
const bool bDrawComplexCollision = View->Family->EngineShowFlags.CollisionVisibility && CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore;
if (bDrawSimpleCollision || bDrawComplexCollision)
{
// Override the mesh's material with our material that draws the collision color
auto CollisionMaterialInstance = new FColoredMaterialRenderProxy(
GEngine->ShadedLevelColorationUnlitMaterial->GetRenderProxy(),
#Loc: <Workspace>/Engine/Source/Runtime/Landscape/Private/LandscapeRender.cpp:4417
Scope (from outer to inner):
file
function float FLandscapeComponentSceneProxy::ComputeLODForView
Source code excerpt:
int32 ViewLODOverride = GetViewLodOverride(InView, LandscapeKey);
float ViewLODDistanceFactor = InView.LODDistanceFactor;
bool ViewEngineShowFlagCollisionPawn = InView.Family->EngineShowFlags.CollisionPawn;
bool ViewEngineShowFlagCollisionVisibility = InView.Family->EngineShowFlags.CollisionVisibility;
const FVector& ViewOrigin = GetLODView(InView).ViewMatrices.GetViewOrigin();
const FMatrix& ViewProjectionMatrix = GetLODView(InView).ViewMatrices.GetProjectionMatrix();
float LODScale = ViewLODDistanceFactor * CVarStaticMeshLODDistanceScale.GetValueOnRenderThread();
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessEyeAdaptation.cpp:348
Scope (from outer to inner):
file
function bool IsAutoExposureDebugMode
Source code excerpt:
EngineShowFlags.VisualizeVolumetricCloudEmptySpaceSkipping ||
EngineShowFlags.CollisionVisibility ||
EngineShowFlags.CollisionPawn ||
!EngineShowFlags.PostProcessing;
}
float CalculateFixedAutoExposure(const FViewInfo& View)
{
const float LuminanceMax = LuminanceMaxFromLensAttenuation();
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneVisibility.cpp:4777
Scope (from outer to inner):
file
function void FSceneRenderer::PrepareViewStateForVisibility
Source code excerpt:
const bool bIsHitTesting = ViewFamily.EngineShowFlags.HitProxies;
// Don't test occlusion queries in collision viewmode as they can be bigger then the rendering bounds.
const bool bCollisionView = ViewFamily.EngineShowFlags.CollisionVisibility || ViewFamily.EngineShowFlags.CollisionPawn;
if (GIsHighResScreenshot || !DoOcclusionQueries() || bIsHitTesting || bCollisionView || ViewFamily.EngineShowFlags.DisableOcclusionQueries)
{
View.bDisableQuerySubmissions = true;
View.bIgnoreExistingQueries = true;
}