#include <ComposableCameraCollisionPushNode.h>
Inherits:
UComposableCameraCameraNodeBase
Node for resolving collision using self-spherical collision and trace collision.
This node does two things for collision:
(1) Casts a trace (either line or sphere) from camera to the target point and resolves any occlusion in-between;
(2) Carries a sphere around the camera and only resolves occlusion when the sphere collides with objects.
The first we call it TraceCollision, and the second SelfCollision, both dealt with collision channels.
Public Attributes¶
| Return | Name | Description |
|---|---|---|
TObjectPtr< AActor > |
PivotActor |
|
TEnumAsByte< ETraceTypeQuery > |
TraceCollisionChannel |
|
bool |
bTraceUseSphere |
|
double |
TraceSphereRadius |
|
double |
TraceOcclusionExemptionTime |
|
TEnumAsByte< ETraceTypeQuery > |
SelfCollisionChannel |
|
double |
SelfSphereRadius |
|
double |
SelfSphereDistanceOffsetFromCenter |
|
TArray< TSoftClassPtr< AActor > > |
ActorTypesToIgnore |
|
double |
ExtraPushDistance |
|
TObjectPtr< UComposableCameraInterpolatorBase > |
PushInterpolator |
|
TObjectPtr< UComposableCameraInterpolatorBase > |
PullInterpolator |
|
double |
PivotZOffset |
|
bool |
bUseBoneForDetection |
|
FName |
BoneName |
PivotActor¶
TObjectPtr< AActor > PivotActor
TraceCollisionChannel¶
TEnumAsByte< ETraceTypeQuery > TraceCollisionChannel
bTraceUseSphere¶
bool bTraceUseSphere { true }
TraceSphereRadius¶
double TraceSphereRadius { 12. }
TraceOcclusionExemptionTime¶
double TraceOcclusionExemptionTime { 0. }
SelfCollisionChannel¶
TEnumAsByte< ETraceTypeQuery > SelfCollisionChannel
SelfSphereRadius¶
double SelfSphereRadius { 12. }
SelfSphereDistanceOffsetFromCenter¶
double SelfSphereDistanceOffsetFromCenter { 10. }
ActorTypesToIgnore¶
TArray< TSoftClassPtr< AActor > > ActorTypesToIgnore
ExtraPushDistance¶
double ExtraPushDistance { 5. }
PushInterpolator¶
TObjectPtr< UComposableCameraInterpolatorBase > PushInterpolator
PullInterpolator¶
TObjectPtr< UComposableCameraInterpolatorBase > PullInterpolator
PivotZOffset¶
double PivotZOffset { 50. }
bUseBoneForDetection¶
bool bUseBoneForDetection { false }
BoneName¶
FName BoneName
Public Methods¶
| Return | Name | Description |
|---|---|---|
UComposableCameraCollisionPushNode inline |
||
void |
OnInitialize_Implementation virtual |
|
void |
OnTickNode_Implementation virtual |
|
void |
OnPreTick virtual |
|
void |
GetPinDeclarations_Implementation virtual const |
|
void |
DrawNodeDebug virtual const |
Called each frame when the CCS.Debug.Viewport CVar is enabled, for every node on the currently running camera. Override to draw world-space debug gizmos via DrawDebugHelpers (DrawDebugSphere, DrawDebugLine, etc.) that visualise this node's runtime state — e.g. a pivot sphere for PivotOffsetNode, a look-at line for LookAtNode, the collision trace for CollisionPushNode, a sampled spline path for SplineNode. |
UComposableCameraCollisionPushNode¶
inline
inline UComposableCameraCollisionPushNode()
OnInitialize_Implementation¶
virtual
virtual void OnInitialize_Implementation()
OnTickNode_Implementation¶
virtual
virtual void OnTickNode_Implementation(float DeltaTime, const FComposableCameraPose & CurrentCameraPose, FComposableCameraPose & OutCameraPose)
OnPreTick¶
virtual
virtual void OnPreTick(float DeltaTime, const FComposableCameraPose & CurrentCameraPose, FComposableCameraPose & OutCameraPose)
GetPinDeclarations_Implementation¶
virtual const
virtual void GetPinDeclarations_Implementation(TArray< FComposableCameraNodePinDeclaration > & OutPins) const
DrawNodeDebug¶
virtual const
virtual void DrawNodeDebug(UWorld * World, bool bViewerIsOutsideCamera) const
Called each frame when the CCS.Debug.Viewport CVar is enabled, for every node on the currently running camera. Override to draw world-space debug gizmos via DrawDebugHelpers (DrawDebugSphere, DrawDebugLine, etc.) that visualise this node's runtime state — e.g. a pivot sphere for PivotOffsetNode, a look-at line for LookAtNode, the collision trace for CollisionPushNode, a sampled spline path for SplineNode.
Access the owning camera via OwningCamera and current-frame pin values via the usual GetInputPinValue<T>() / member-read path — this hook fires AFTER TickNode, so pin-backed UPROPERTYs still hold the resolved values from the most recent evaluation.
bViewerIsOutsideCamera mirrors the ticker's frustum-draw flag: true when the viewer is observing the camera from outside (F8 eject, SIE, or CCS.Debug.Viewport.AlwaysShow), false when the player is looking through the camera. Most gizmos (pivot spheres at distant characters, lines to look-at targets, spline polylines far in the world) can ignore this and draw unconditionally. Gizmos that sit AT the camera's own position (e.g. CollisionPushNode's self-collision sphere) should gate on this bool so they don't hermetically seal the player inside the wireframe during live gameplay.
Default implementation does nothing. Compiled out in shipping builds.
Private Attributes¶
| Return | Name | Description |
|---|---|---|
TUniquePtr< TCameraInterpolator< TValueTypeWrapper< double > > > |
PushInterpolator_T |
|
TUniquePtr< TCameraInterpolator< TValueTypeWrapper< double > > > |
PullInterpolator_T |
|
USkeletalMeshComponent * |
SkeletalMeshComponentForPivotActor |
|
double |
ElapsedExemptionTime |
|
double |
CurrentDistanceFromCamera |
|
FVector |
OriginalCameraPosition |
|
FVector |
LastTraceStart |
Cache populated in FindCollisionPoint each frame so DrawNodeDebug can repaint the trace + self-collision sphere without re-running the physics queries. All fields reset to ZeroVector / false each tick. |
FVector |
LastTraceEnd |
|
FVector |
LastTraceHitLocation |
|
FVector |
LastSelfSphereCenter |
|
bool |
bLastTraceBlocked |
PushInterpolator_T¶
TUniquePtr< TCameraInterpolator< TValueTypeWrapper< double > > > PushInterpolator_T
PullInterpolator_T¶
TUniquePtr< TCameraInterpolator< TValueTypeWrapper< double > > > PullInterpolator_T
SkeletalMeshComponentForPivotActor¶
USkeletalMeshComponent * SkeletalMeshComponentForPivotActor { nullptr }
ElapsedExemptionTime¶
double ElapsedExemptionTime { 0. }
CurrentDistanceFromCamera¶
double CurrentDistanceFromCamera { 0. }
OriginalCameraPosition¶
FVector OriginalCameraPosition
LastTraceStart¶
FVector LastTraceStart { FVector::ZeroVector }
Cache populated in FindCollisionPoint each frame so DrawNodeDebug can repaint the trace + self-collision sphere without re-running the physics queries. All fields reset to ZeroVector / false each tick.
LastTraceEnd¶
FVector LastTraceEnd { FVector::ZeroVector }
LastTraceHitLocation¶
FVector LastTraceHitLocation { FVector::ZeroVector }
LastSelfSphereCenter¶
FVector LastSelfSphereCenter { FVector::ZeroVector }
bLastTraceBlocked¶
bool bLastTraceBlocked { false }
Private Methods¶
| Return | Name | Description |
|---|---|---|
FComposableCameraHitResult |
FindCollisionPoint |
|
FVector |
StartResolveCollision |
|
FVector |
ResumeFromCollision |
FindCollisionPoint¶
FComposableCameraHitResult FindCollisionPoint(double DeltaTime, const FVector & Start, const FVector & End, const FRotator & CameraRotation)
StartResolveCollision¶
FVector StartResolveCollision(double DeltaTime, const FVector & TargetLocation, const FVector & CameraPosition)
ResumeFromCollision¶
FVector ResumeFromCollision(double DeltaTime, const FVector & PivotPosition, const FVector & CameraPosition)