1
0
KF2-Dev-Scripts/Engine/Classes/DynamicBlockingVolume.uc
2020-12-13 18:01:13 +03:00

101 lines
2.3 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
/**
* This is a movable blocking volume. It can be moved by matinee, being based on
* dynamic objects, etc.
*/
class DynamicBlockingVolume extends BlockingVolume
native
showcategories(Movement)
placeable;
/** Is the volume enabled by default? */
var() bool bEnabled;
cpptext
{
#if WITH_EDITOR
virtual void CheckForErrors();
#endif
/**
* Force TRACE_LevelGeometry to still work with us even though bWorldGeometry is cleared
* bWorldGeometry is cleared so that actors can base properly on moving volumes
*
* @param Primitive - the primitive to trace against
*
* @param SourceActor - the actor doing the trace
*
* @param TraceFlags - misc flags describing the trace
*/
virtual UBOOL ShouldTrace(UPrimitiveComponent* Primitive, AActor *SourceActor, DWORD TraceFlags);
}
struct CheckpointRecord
{
var vector Location;
var rotator Rotation;
var bool bCollideActors;
var bool bBlockActors;
var bool bNeedsReplication;
};
/**
* Overriden to set the default collision state.
*/
simulated event PostBeginPlay()
{
Super.PostBeginPlay();
SetCollision(bEnabled, bBlockActors);
}
function CreateCheckpointRecord(out CheckpointRecord Record)
{
Record.Location = Location;
Record.Rotation = Rotation;
Record.bCollideActors = bCollideActors;
Record.bBlockActors = bBlockActors;
Record.bNeedsReplication = (RemoteRole != ROLE_None);
}
function ApplyCheckpointRecord(const out CheckpointRecord Record)
{
if (!bHardAttach)
{
SetLocation(Record.Location);
SetRotation(Record.Rotation);
}
// always leave component colliding and just use the Actor flags
CollisionComponent.SetActorCollision(true, true);
CollisionComponent.SetTraceBlocking(false, true);
CollisionComponent.SetBlockRigidBody(Record.bCollideActors);
SetCollision(Record.bCollideActors, Record.bBlockActors);
if (Record.bNeedsReplication)
{
ForceNetRelevant();
}
}
defaultproperties
{
//@todo - Change back to PHYS_None
Physics=PHYS_Interpolating
bStatic=false
bMovable=true
bAlwaysRelevant=true
bReplicateMovement=true
bOnlyDirtyReplication=true
RemoteRole=ROLE_None
bWorldGeometry=false
BrushColor=(R=255,G=255,B=100,A=255)
bEnabled=true
}