Space Plunder
Loading...
Searching...
No Matches
AEBBullet Class Referenceabstract

#include <EBBullet.h>

Inheritance diagram for AEBBullet:

Public Member Functions

 AEBBullet ()
 
 UPROPERTY (Replicated, BlueprintReadWrite, Category="State") FVector Velocity
 
 UPROPERTY (Replicated, BlueprintReadWrite, Category="State") FRandomStream RandomStream
 
 UPROPERTY (BlueprintReadWrite, Category="State") bool OwnerSafe
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Debug") bool DebugEnabled
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Debug") float DebugTrailTime
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Debug") float DebugTrailWidth=0
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Debug") FLinearColor DebugTrailColorFast
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Debug") FLinearColor DebugTrailColorSlow
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Debug") bool DebugPooling
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="World") FVector Wind
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, SaveGame, Category="World", meta=(ToolTip="Select atmosphere model")) EEBAtmosphereType AtmosphereType
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="World", meta=(ToolTip="Air Density at sea level - in KG/m^3", ClampMin="0")) float SeaLevelAirDensity
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="World", meta=(ToolTip="in cm/s", ClampMin="0")) float SeaLevelSpeedOfSound
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="World", meta=(ToolTip="Used for Density Curve atmosphere model")) UCurveFloat *AirDensityCurve
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="World") bool SpeedOfSoundVariesWithAltitude
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="World") UCurveFloat *SpeedOfSoundCurve
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="World") float WorldScale
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, SaveGame, Category="World", meta=(ToolTip="Atmosphere pressure at 0,0,0 - in millibars", ClampMin="0")) float SeaLevelAirPressure
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, SaveGame, Category="World", meta=(ToolTip="Atmosphere Temperature at 0,0,0 - in degrees C")) float SeaLevelAirTemperature
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, SaveGame, Category="World", meta=(ToolTip="Temperature Decrease With Altitude, degrees per meter")) float TemperatureLapseRate=0.00649f
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, SaveGame, Category="World", meta=(ToolTip="Altitude at which temperature stops decreasing, in meters")) float TropopauseAltitude
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, SaveGame, Category="World", meta=(ToolTip="Specific Gas Constant, dry air = 287.058", ClampMin="0")) float SpecificGasConstant
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, SaveGame, Category="World", meta=(ToolTip="World Origin Location")) FVector WorldCenterLocation
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, SaveGame, Category="World", meta=(ToolTip="Use spherical planet model to get altitude")) bool SphericalAltitude
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, SaveGame, Category="World", meta=(ToolTip="Planet radius, in Unreal units", EditCondition="SphericalAltitude", ClampMin="0")) float SeaLevelRadius
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="World") bool OverrideGravity
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="World") FVector Gravity
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Safe launch") bool SafeLaunch
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Safe launch", Meta=(EditCondition="SafeLaunch")) bool SafeLaunchIgnoreAttachParent
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Safe launch", Meta=(EditCondition="SafeLaunchIgnoreAttachParent")) bool SafeLaunchIgnoreAllAttached
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Safe launch", Meta=(EditCondition="SafeLaunch", ClampMin="0")) float SafeDelay
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Safe launch", Meta=(EditCondition="SafeLaunch")) TArray< AActor * > SafeLaunchIgnoredActors
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Shotgun") bool Shotgun
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Shotgun", meta=(EditCondition="Shotgun")) int ShotCount
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Shotgun", meta=(EditCondition="Shotgun")) float ShotSpread=0.01
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Shotgun", meta=(EditCondition="Shotgun")) float ShotVelocitySpread=0.01
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Flight") float MuzzleVelocityMin
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Flight") float MuzzleVelocityMax
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Flight", meta=(ToolTip="Maximum bullet spread, in radians", ClampMin="0")) float Spread=0.0f
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Flight", meta=(ToolTip="Spread bias, higher is more accurate on average", ClampMin="0")) float SpreadBias=0.0f
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Flight") float Mass=0.005
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Flight") float Diameter=0.556
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Flight") float FormFactor
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Flight") UCurveFloat *MachDragCurve
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float GrazingAngleExponent
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float MinPenetration
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float MaxPenetration
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float PenetrationNormalization=0.5
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float PenetrationNormalizationGrazing=0.0
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float PenetrationEntryAngleSpread=0.1
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float PenetrationExitAngleSpread=0.1
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float RicochetProbability=0.1
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float RicochetProbabilityGrazing
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float RicochetRestitution=0.1
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float RicochetFriction=0.0
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float RicochetSpread=0.1
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") bool SpeedControlsRicochetProbability
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") bool AddImpulse
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") float ImpulseMultiplier
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") EPenTraceType DefaultPenTraceType
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") UEBMaterialResponseMap *MaterialResponseMap
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") bool MaterialDensityControlsPenetrationDepth
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Impact") bool MaterialRestitutionControlsRicochet
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Replication") bool ReliableReplication
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Collision", meta=(ToolTip="Allow components to collide, intended for use with trigger volumes. Do not use for actual collisions.")) bool AllowComponentCollisions
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Collision") TEnumAsByte< ECollisionChannel > TraceChannel
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Collision") bool TraceComplex
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Collision") float CollisionMargin
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Collision", meta=(ToolTip="Bullets with lower velocity will automatically despawn on impact, never despawn if set to zero or negative")) float DespawnVelocity
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Collision") TArray< AActor * > IgnoredActors
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Simulation", meta=(ToolTip="Spawned bullet performs first trace immediately, instead of waiting for next simulation step")) bool DoFirstStepImmediately
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Simulation", meta=(EditCondition="DoFirstStepImmediately")) bool RandomFirstStepDelta
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Simulation") bool FixedStep
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Simulation", meta=(EditCondition="FixedStep", ClampMin="0")) float FixedStepSeconds=0.1
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Simulation") int MaxTracesPerStep
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Retrace") bool Retrace
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Retrace") bool RetraceOnAnotherChannel
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Retrace", meta=(EditCondition="RetraceOnAnotherChannel")) TEnumAsByte< ECollisionChannel > RetraceChannel
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Rotation") bool RotateActor
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Rotation") bool RotateRandomRoll
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Pooling") bool EnablePooling
 
 UPROPERTY (BlueprintReadWrite, EditAnywhere, Category="Pooling") int MaxPoolSize
 
virtual void ApplyWorldOffset (const FVector &InOffset, bool bWorldShift) override
 
virtual void BeginPlay () override
 
virtual void Tick (float DeltaSeconds) override
 
virtual void LifeSpanExpired () override
 
void VelocityChangeBroadcast (FVector_NetQuantize NewLocation, FVector NewVelocity)
 
void VelocityChangeBroadcastReliable (FVector_NetQuantize NewLocation, FVector NewVelocity)
 
void OnImpact (bool Ricochet, bool PassedThrough, FVector Location, FVector IncomingVelocity, FVector Normal, FVector ExitLocation, FVector ExitVelocity, FVector Impulse, float PenetrationDepth, AActor *Actor, USceneComponent *Component, FName BoneName, UPhysicalMaterial *PhysMaterial, FHitResult HitResult)
 
void OnNetPredictedImpact (bool Ricochet, bool PassedThrough, FVector Location, FVector IncomingVelocity, FVector Normal, FVector ExitLocation, FVector ExitVelocity, FVector Impulse, float PenetrationDepth, AActor *Actor, USceneComponent *Component, FName BoneName, UPhysicalMaterial *PhysMaterial, FHitResult HitResult)
 
void OnTrace (FVector StartLocation, FVector EndLocation)
 
void OnTrajectoryUpdateReceived (FVector Location, FVector OldVelocity, FVector NewVelocity)
 
void OnDeactivated ()
 
 UFUNCTION (BlueprintNativeEvent, Category="EBBullet|Flight") FVector UpdateVelocity(UWorld *World
 
 UFUNCTION (BlueprintNativeEvent, Category="EBBullet|World") FVector GetWind(UWorld *World
 
 UFUNCTION (BlueprintNativeEvent, Category="EBBullet|World") float GetAirDensity(UWorld *World
 
 UFUNCTION (BlueprintNativeEvent, Category="EBBullet|World") float GetSpeedOfSound(UWorld *World
 
 UFUNCTION (BlueprintNativeEvent, Category="EBBullet|World") bool CollisionFilter(FHitResult HitResult) const
 
 UFUNCTION (BlueprintAuthorityOnly, BlueprintCallable, Category="EBBullet|Pooling") void Deactivate()
 
void ReactivationBroadcast (FVector_NetQuantize NewLocation, FVector NewVelocity, AActor *BulletOwner, APawn *BulletInstigator)
 
void DeactivationBroadcast ()
 

Static Public Member Functions

static void SpawnWithExactVelocity (TSubclassOf< class AEBBullet > BulletClass, AActor *BulletOwner, APawn *BulletInstigator, FVector BulletLocation, FVector BulletVelocity)
 
static void Spawn (TSubclassOf< class AEBBullet > BulletClass, AActor *BulletOwner, APawn *BulletInstigator, FVector BulletLocation, FVector BulletVelocity)
 

Public Attributes

FVector Location
 
FVector FVector PreviousVelocity
 
FVector FVector float DeltaTime const
 
FVector Location const
 

Private Member Functions

 UPROPERTY () TArray< TWeakObjectPtr< AEBBullet > > Pooled
 
void DeactivateToPool ()
 
void Step (float DeltaTime)
 
float Trace (FVector start, FVector PreviousVelocity, float delta, TEnumAsByte< ECollisionChannel > channel)
 
TArray< AActor * > GetAttachedActorsRecursive (AActor *Actor, uint16 Depth=0) const
 
float PenetrationTrace (FVector start, FVector end, TWeakObjectPtr< UPrimitiveComponent, FWeakObjectPtr > comp, EPenTraceType penType, TEnumAsByte< ECollisionChannel > channel, FVector &exitLoc, FVector &exitNormal)
 
float GetCurveValue (const UCurveFloat *curve, float in, float deflt) const
 
FHitResult FilterHits (TArray< FHitResult > Results, bool &hit) const
 
TArray< AActor * > GetSafeLaunchIgnoredActors (AActor *Owner) const
 
float GetAltitude (UWorld *World, FVector Location) const
 
float GetAltitudePressure (float AltitudeMeter) const
 
float GetAltitudeTemperature (float AltitudeMeter) const
 
float GetAltitudeDensity (float AltitudeMeter) const
 

Static Private Member Functions

static AEBBulletGetFromPool (UWorld *World, UClass *BulletClass)
 
static AEBBulletSpawnOrReactivate (UWorld *World, TSubclassOf< class AEBBullet > BulletClass, const FTransform &Transform, FVector BulletVelocity, AActor *BulletOwner, APawn *BulletInstigator)
 

Private Attributes

float AccumulatedDelta
 
bool CanRetrace = false
 
FVector LastTraceStart
 
float LastTraceDelta
 
FVector LastTraceVelocity
 
FVector LastTracePrevVelocity
 
bool IsRecycled
 

Constructor & Destructor Documentation

◆ AEBBullet()

AEBBullet::AEBBullet ( )
5 {
6 // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
7 PrimaryActorTick.bCanEverTick = true;
8 SetTickGroup(ETickingGroup::TG_PrePhysics);
9}

Member Function Documentation

◆ ApplyWorldOffset()

void AEBBullet::ApplyWorldOffset ( const FVector & InOffset,
bool bWorldShift )
overridevirtual
138 {
139 Super::ApplyWorldOffset(InOffset, bWorldShift);
140 LastTraceStart += InOffset;
141}
FVector LastTraceStart
Definition EBBullet.h:203

◆ BeginPlay()

void AEBBullet::BeginPlay ( )
overridevirtual
12 {
13 SetActorEnableCollision(AllowComponentCollisions);
14
15 if(!IsRecycled){
16 Super::BeginPlay();
17 IsRecycled = true;
18 }
19 else{
20 ReceiveBeginPlay();
21 }
22
23 if (SafeLaunch) {
24 OwnerSafe = true;
25 }
26
27 if (DoFirstStepImmediately) {
28 float DeltaTime = GetWorld()->GetDeltaSeconds();
29
30 if (RandomFirstStepDelta) {
31 DeltaTime *= RandomStream.FRand();
32 };
33
34 if (FixedStep) {
35 Step(FixedStepSeconds);
36 }
37 else {
38 Step(DeltaTime);
39 }
40 }
41}
bool IsRecycled
Definition EBBullet.h:208

◆ DeactivateToPool()

void AEBBullet::DeactivateToPool ( )
private
131 {
132 AEBBullet* Pool = Cast<AEBBullet>(GetClass()->GetDefaultObject());
133
134 if (Pool && EnablePooling) {
135 SetActorHiddenInGame(true);
136 SetActorTickEnabled(false);
137 Pool->Pooled.Add(this);
138 EndPlay(EEndPlayReason::RemovedFromWorld);
139
140 if (Pool->Pooled.Num() > MaxPoolSize) {
141 AEBBullet* Oldest = (Pool->Pooled[0].Get());
142 Pool->Pooled.RemoveAtSwap(0);
143 if (Oldest) { Oldest->Destroy(); }
144 }
145
146#ifdef WITH_EDITOR
147 if (DebugPooling) {
148 GEngine->AddOnScreenDebugMessage(2, 2, FColor::White, FString("Bullet pooled: ") + FString::FromInt(Pool->Pooled.Num()));
149 }
150#endif
151 }
152 else {
153 Destroy();
154 }
155}
Definition EBBullet.h:28

◆ DeactivationBroadcast()

void AEBBullet::DeactivationBroadcast ( )

◆ FilterHits()

FHitResult AEBBullet::FilterHits ( TArray< FHitResult > Results,
bool & hit ) const
private
7 {
8 TArray<FHitResult> OutResults;
9
10 for (FHitResult Result : Results) {
11 if (Result.bBlockingHit) {
12
13 hit = true;
14 return Result;
15 }else{
16 if (CollisionFilter(Result)) {
17 hit = true;
18 return Result;
19 }
20 }
21 }
22
23 hit = false;
24 return FHitResult(); //blank
25}

◆ GetAltitude()

float AEBBullet::GetAltitude ( UWorld * World,
FVector Location ) const
private
49 {
50 FVector DistanceFromOrigin = (Location - WorldCenterLocation + FVector(World->OriginLocation));
51 if (SphericalAltitude)
52 {
53 return (DistanceFromOrigin.Size() - SeaLevelRadius);
54 }
55 else {
56 return DistanceFromOrigin.Z;
57 }
58}
FVector Location
Definition EBBullet.h:171

◆ GetAltitudeDensity()

float AEBBullet::GetAltitudeDensity ( float AltitudeMeter) const
private
43 {
44 float Temperature = GetAltitudeTemperature(AltitudeMeter);
45 float Pressure = GetAltitudePressure(AltitudeMeter);
46 return Pressure * 100.0f / ((Temperature + 273.15) * SpecificGasConstant);
47}
float GetAltitudeTemperature(float AltitudeMeter) const
Definition Environment.cpp:39
float GetAltitudePressure(float AltitudeMeter) const
Definition Environment.cpp:35

◆ GetAltitudePressure()

float AEBBullet::GetAltitudePressure ( float AltitudeMeter) const
private
35 {
36 return FMath::Max(SeaLevelAirPressure * FMath::Pow((1 - (0.0000225577 * AltitudeMeter)), 5.25588), 0.0f);
37}

◆ GetAltitudeTemperature()

float AEBBullet::GetAltitudeTemperature ( float AltitudeMeter) const
private
39 {
40 return SeaLevelAirTemperature - (TemperatureLapseRate * FMath::Min(AltitudeMeter, TropopauseAltitude));
41}

◆ GetAttachedActorsRecursive()

TArray< AActor * > AEBBullet::GetAttachedActorsRecursive ( AActor * Actor,
uint16 Depth = 0 ) const
private

◆ GetCurveValue()

float AEBBullet::GetCurveValue ( const UCurveFloat * curve,
float in,
float deflt ) const
inlineprivate
133 {
134 if (curve == nullptr) return deflt;
135 return curve->GetFloatValue(in);
136}

◆ GetFromPool()

AEBBullet * AEBBullet::GetFromPool ( UWorld * World,
UClass * BulletClass )
staticprivate
11 {
12 AEBBullet* Pool = Cast<AEBBullet>(BulletClass->GetDefaultObject());
13
14 if (Pool) {
15 //find first of correct class;
16 bool CleanupRequired=false;
17
18 int32 FoundIndex = Pool->Pooled.IndexOfByPredicate(
19 [&](auto InItem) {
20 if (InItem.IsValid() && InItem->GetWorld() == World) {
21 return true;
22 }
23 else {
24 CleanupRequired = true;
25 return false;
26 }
27 });
28
29 TWeakObjectPtr<AEBBullet> Found = nullptr;
30 if (FoundIndex != INDEX_NONE) {
31 Found = Pool->Pooled[FoundIndex];
32 Pool->Pooled.RemoveAtSwap(FoundIndex);
33 }
34
35 if (CleanupRequired) {
36#ifdef WITH_EDITOR
37 if (Pool->DebugPooling) {
38 GEngine->AddOnScreenDebugMessage(2, 2, FColor::White, TEXT("Invalid reference in pool, cleaning up"));
39 }
40#endif
41 Pool->Pooled.RemoveAll([&](auto InItem) {
42 if (InItem.IsValid() && InItem->GetWorld() == World) {
43 return false;
44 }
45 else {
46 return true;
47 }
48 });
49 }
50
51 return(Found.Get());
52 }
53 else {
54 return nullptr;
55 }
56}

◆ GetSafeLaunchIgnoredActors()

TArray< AActor * > AEBBullet::GetSafeLaunchIgnoredActors ( AActor * Owner) const
private
5 {
6 TArray<AActor*> Results = SafeLaunchIgnoredActors;
7
8 Results.Add(BulletOwner);
9
10 if (SafeLaunchIgnoreAttachParent && BulletOwner) {
11 AActor* AttachedRoot = BulletOwner;
12
13 while (true) { //find attachment root
14 AActor* AttachedTo;
15 AttachedTo = AttachedRoot->GetAttachParentActor();
16
17 if (AttachedTo) {
18 Results.Add(AttachedTo);
19 AttachedRoot = AttachedTo;
20 }
21 else break;
22 }
23 Results.Add(AttachedRoot);
24 if (SafeLaunchIgnoreAllAttached) Results.Append(GetAttachedActorsRecursive(AttachedRoot));
25 }
26
27 return Results;
28}
TArray< AActor * > GetAttachedActorsRecursive(AActor *Actor, uint16 Depth=0) const

◆ LifeSpanExpired()

void AEBBullet::LifeSpanExpired ( )
overridevirtual
127 {
128 Deactivate();
129}

◆ OnDeactivated()

void AEBBullet::OnDeactivated ( )

◆ OnImpact()

void AEBBullet::OnImpact ( bool Ricochet,
bool PassedThrough,
FVector Location,
FVector IncomingVelocity,
FVector Normal,
FVector ExitLocation,
FVector ExitVelocity,
FVector Impulse,
float PenetrationDepth,
AActor * Actor,
USceneComponent * Component,
FName BoneName,
UPhysicalMaterial * PhysMaterial,
FHitResult HitResult )

◆ OnNetPredictedImpact()

void AEBBullet::OnNetPredictedImpact ( bool Ricochet,
bool PassedThrough,
FVector Location,
FVector IncomingVelocity,
FVector Normal,
FVector ExitLocation,
FVector ExitVelocity,
FVector Impulse,
float PenetrationDepth,
AActor * Actor,
USceneComponent * Component,
FName BoneName,
UPhysicalMaterial * PhysMaterial,
FHitResult HitResult )

◆ OnTrace()

void AEBBullet::OnTrace ( FVector StartLocation,
FVector EndLocation )

◆ OnTrajectoryUpdateReceived()

void AEBBullet::OnTrajectoryUpdateReceived ( FVector Location,
FVector OldVelocity,
FVector NewVelocity )

◆ PenetrationTrace()

float AEBBullet::PenetrationTrace ( FVector start,
FVector end,
TWeakObjectPtr< UPrimitiveComponent, FWeakObjectPtr > comp,
EPenTraceType penType,
TEnumAsByte< ECollisionChannel > channel,
FVector & exitLoc,
FVector & exitNormal )
private
5 {
6 FCollisionQueryParams QueryParams;
7 QueryParams.bTraceComplex = TraceComplex;
8 QueryParams.bFindInitialOverlaps = true;
9
10 FHitResult Result;
11
12switch (PenTraceType) {
13 case(EPenTraceType::PT_BackTrace): {
14 bool Hit = GetWorld()->LineTraceSingleByChannel(Result, EndLocation, StartLocation, CollisionChannel, QueryParams);
15 if (!Hit) return 1.0f;
16 ExitNormal = Result.Normal;
17 ExitLocation = Result.Location;
18 return (1.0f - Result.Time);
19 }
20
21 case(EPenTraceType::PT_ByComponent): {
22 bool Hit = Component->LineTraceComponent(Result, EndLocation, StartLocation, QueryParams);
23 if (!Hit) return 1.0f;
24 ExitNormal = Result.Normal;
25 ExitLocation = Result.Location;
26 return (1.0f - Result.Time);
27 }
28
29 case(EPenTraceType::PT_TwoSidedGeometry): {
30 bool Hit = GetWorld()->LineTraceSingleByChannel(Result, StartLocation, EndLocation, CollisionChannel, QueryParams);
31 if (!Hit) return 1.0f;
32 ExitLocation = Result.Location;
33 ExitNormal = -Result.Normal;
34 return Result.Time;
35 }
36
37 default:
38 return 1.0f;
39 }
40}

◆ ReactivationBroadcast()

void AEBBullet::ReactivationBroadcast ( FVector_NetQuantize NewLocation,
FVector NewVelocity,
AActor * BulletOwner,
APawn * BulletInstigator )

◆ Spawn()

void AEBBullet::Spawn ( TSubclassOf< class AEBBullet > BulletClass,
AActor * BulletOwner,
APawn * BulletInstigator,
FVector BulletLocation,
FVector BulletVelocity )
static
74 {
75 if (BulletClass != nullptr && BulletOwner != nullptr) {
76
77 FActorSpawnParameters spawnParams;
78 spawnParams.Owner = BulletOwner;
79 spawnParams.Instigator = BulletInstigator;
80
81 AEBBullet* Default = Cast<AEBBullet>(BulletClass->GetDefaultObject());
82
83 FTransform Transform;
84 Transform.SetLocation(BulletLocation);
85 Transform.SetScale3D(Default->GetActorScale());
86
87 if (Default->RotateActor) {
88 if (Default->RotateActor) {
89 FRotator Rotation = UKismetMathLibrary::MakeRotFromX(BulletVelocity);
90 if (Default->RotateRandomRoll) Rotation.Add(0, 0, Default->RandomStream.FRandRange(-180.0f, 180.0f));
91 Transform.SetRotation(Rotation.Quaternion());
92 }
93 }
94 else {
95 Transform.SetRotation(FQuat(1, 0, 0, 1));
96 }
97
98 //init velocity
99 float TotalSpread = Default->Spread;
100 if (Default->SpreadBias > 0.0f){
101 float SpreadMult = FMath::Pow(FMath::FRand(), Default->SpreadBias);
102 TotalSpread *= SpreadMult;
103 }
104
105 FVector BulletVelocityNew = Default->RandomStream.VRandCone(BulletVelocity, TotalSpread)*BulletVelocity.Size();
106 float VelocityMP = FMath::Lerp(Default->MuzzleVelocityMin, Default->MuzzleVelocityMax, Default->RandomStream.FRand());
107 BulletVelocityNew = BulletVelocityNew * VelocityMP;
108
109 if (!Default->Shotgun) {
110 AEBBullet* bullet = SpawnOrReactivate(BulletOwner->GetWorld(), BulletClass, Transform, BulletVelocityNew, BulletOwner, BulletInstigator);
111 }
112 else {
113 for (int i = 0; i < Default->ShotCount; i++) {
114 float Vel = BulletVelocityNew.Size()*Default->RandomStream.FRandRange(1.0 - Default->ShotVelocitySpread, 1.0 + Default->ShotVelocitySpread);
115 FVector SubmunitionVelocity = Default->RandomStream.VRandCone(BulletVelocityNew, Default->ShotSpread)*Vel;
116 AEBBullet* bullet = SpawnOrReactivate(BulletOwner->GetWorld(), BulletClass, Transform, SubmunitionVelocity, BulletOwner, BulletInstigator);
117 }
118 }
119 }
120 else {
121 UE_LOG(LogTemp, Warning, TEXT("Cannot spawn bullet - invalid class or owner"));
122 }
123}
static AEBBullet * SpawnOrReactivate(UWorld *World, TSubclassOf< class AEBBullet > BulletClass, const FTransform &Transform, FVector BulletVelocity, AActor *BulletOwner, APawn *BulletInstigator)
Definition Pooling.cpp:58

◆ SpawnOrReactivate()

AEBBullet * AEBBullet::SpawnOrReactivate ( UWorld * World,
TSubclassOf< class AEBBullet > BulletClass,
const FTransform & Transform,
FVector BulletVelocity,
AActor * BulletOwner,
APawn * BulletInstigator )
staticprivate
58 {
59 AEBBullet* bullet;
60
61 AEBBullet* Recycled = GetFromPool(World, BulletClass);
62
63 if (Recycled) {
64 AEBBullet* Default = Cast<AEBBullet>(BulletClass->GetDefaultObject());
65
66 Recycled->Reset();
67
68 Recycled->SetOwner(BulletOwner);
69 Recycled->SetInstigator(BulletInstigator);
70 Recycled->SetActorTransform(Transform,false,nullptr,ETeleportType::TeleportPhysics);
71 Recycled->Velocity = BulletVelocity;
72 Recycled->SetActorHiddenInGame(Default->IsHidden());
73 Recycled->SetActorTickEnabled(true);
74 Recycled->CanRetrace = false;
75 Recycled->IgnoredActors = Default->IgnoredActors;
76 Recycled->SafeDelay = Default->SafeDelay;
77 Recycled->SetLifeSpan(Default->InitialLifeSpan);
78 if (!Recycled->HasActorBegunPlay()){ Recycled->BeginPlay(); }
79 Recycled->ReactivationBroadcast(UGameplayStatics::RebaseLocalOriginOntoZero(Recycled->GetWorld(), Transform.GetLocation()), BulletVelocity, BulletOwner, BulletInstigator);
80#ifdef WITH_EDITOR
81 if (Recycled->DebugPooling) {
82 GEngine->AddOnScreenDebugMessage(0, 2, FColor::Green, TEXT("Recycling pooled bullet"));
83 }
84#endif
85 return Recycled;
86 }
87 else {
88 bullet = Cast<AEBBullet>(World->SpawnActorDeferred<AEBBullet>(BulletClass, Transform, BulletOwner, BulletInstigator));
89 bullet->RandomStream.GenerateNewSeed();
90 bullet->Velocity = BulletVelocity;
91 UGameplayStatics::FinishSpawningActor(bullet, Transform);
92#ifdef WITH_EDITOR
93 if (bullet->DebugPooling) {
94 GEngine->AddOnScreenDebugMessage(0, 2, FColor::Orange, TEXT("Spawning new bullet"));
95 }
96#endif
97 return bullet;
98 }
99}
bool CanRetrace
Definition EBBullet.h:202
virtual void BeginPlay() override
Definition EBBullet.cpp:12
static AEBBullet * GetFromPool(UWorld *World, UClass *BulletClass)
Definition Pooling.cpp:11
void ReactivationBroadcast(FVector_NetQuantize NewLocation, FVector NewVelocity, AActor *BulletOwner, APawn *BulletInstigator)

◆ SpawnWithExactVelocity()

void AEBBullet::SpawnWithExactVelocity ( TSubclassOf< class AEBBullet > BulletClass,
AActor * BulletOwner,
APawn * BulletInstigator,
FVector BulletLocation,
FVector BulletVelocity )
static
27 {
28
29 if (BulletClass != nullptr && BulletOwner != nullptr) {
30 FActorSpawnParameters spawnParams;
31 spawnParams.Owner = BulletOwner;
32 spawnParams.Instigator = BulletInstigator;
33
34 AEBBullet* Default = Cast<AEBBullet>(BulletClass->GetDefaultObject());
35
36 FTransform Transform;
37 Transform.SetLocation(BulletLocation);
38 Transform.SetScale3D(Default->GetActorScale());
39
40 if (Default->RotateActor) {
41 FRotator Rotation = UKismetMathLibrary::MakeRotFromX(BulletVelocity);
42 if (Default->RotateRandomRoll) Rotation.Add(0, 0, Default->RandomStream.FRandRange(-180.0f, 180.0f));
43 Transform.SetRotation(Rotation.Quaternion());
44 }
45 else {
46 Transform.SetRotation(FQuat(1, 0, 0, 1));
47 }
48
49 if (!Default->Shotgun) {
50 AEBBullet* bullet = SpawnOrReactivate(BulletOwner->GetWorld(), BulletClass, Transform, BulletVelocity, BulletOwner, BulletInstigator);
51 }
52 else {
53 for (int i = 0; i < Default->ShotCount; i++) {
54 float Vel = BulletVelocity.Size()*Default->RandomStream.FRandRange(1.0 - Default->ShotVelocitySpread, 1.0 + Default->ShotVelocitySpread);
55 FVector SubmunitionVelocity = Default->RandomStream.VRandCone(BulletVelocity, Default->ShotSpread)*Vel;
56 AEBBullet* bullet = SpawnOrReactivate(BulletOwner->GetWorld(), BulletClass, Transform, SubmunitionVelocity, BulletOwner, BulletInstigator);
57 }
58 }
59 }
60 else {
61 UE_LOG(LogTemp, Warning, TEXT("Cannot spawn bullet - invalid class or owner"));
62 }
63}

◆ Step()

void AEBBullet::Step ( float DeltaTime)
private
61 {
62 FVector start = GetActorLocation();
63 bool sendUpdate = false;
64
65 if (Retrace && CanRetrace) {
66 //time travel
67 float remainingTime = LastTraceDelta;
68 int remainingSteps = MaxTracesPerStep;
70 SetActorLocation(LastTraceStart);
71 Velocity = LastTraceVelocity;
72
73 do {
74 if (RetraceOnAnotherChannel) {
75 remainingTime = Trace(GetActorLocation(),
77 remainingTime,
78 RetraceChannel);
79 }
80 else {
81 remainingTime = Trace(GetActorLocation(),
83 remainingTime,
84 TraceChannel);
85 }
86 PreviousVelocity = Velocity;
87 remainingSteps -= 1;
88 if (remainingTime > 0.0f) { sendUpdate = true; };
89 } while (remainingTime > 0.0f && remainingSteps > 0);
90 }
91 CanRetrace = false;
92
93 FVector PreviousVelocity = Velocity;
94 Velocity = UpdateVelocity(GetWorld(), GetActorLocation(), Velocity, DeltaTime);
95
96 //trace
97 float remainingTime = DeltaTime;
98 int remainingSteps = MaxTracesPerStep;
99 do {
100 remainingTime = Trace(GetActorLocation(),
102 remainingTime,
103 TraceChannel
104 );
105 PreviousVelocity = Velocity;
106 remainingSteps -= 1;
107 if (remainingTime > 0.0f) { sendUpdate = true; };
108 } while (remainingTime > 0.0f && remainingSteps > 0);
109
110 if (sendUpdate) {
111 if (ReliableReplication) {
112 VelocityChangeBroadcastReliable(UGameplayStatics::RebaseLocalOriginOntoZero(GetWorld(),GetActorLocation()), Velocity);
113 }
114 else {
115 VelocityChangeBroadcast(UGameplayStatics::RebaseLocalOriginOntoZero(GetWorld(), GetActorLocation()), Velocity);
116 }
117 }
118
119 if(SafeDelay <= 0.0f){
120 OwnerSafe = false;
121 }
122 else {
123 SafeDelay -= DeltaTime;
124 }
125
126 if (RotateActor) {
127 FRotator NewRot = UKismetMathLibrary::MakeRotFromX(Velocity);
128 NewRot.Roll = GetActorRotation().Roll;
129 SetActorRotation(NewRot);
130 }
131}
void VelocityChangeBroadcastReliable(FVector_NetQuantize NewLocation, FVector NewVelocity)
FVector LastTracePrevVelocity
Definition EBBullet.h:206
float LastTraceDelta
Definition EBBullet.h:204
FVector LastTraceVelocity
Definition EBBullet.h:205
float Trace(FVector start, FVector PreviousVelocity, float delta, TEnumAsByte< ECollisionChannel > channel)
Definition Trace.cpp:5
void VelocityChangeBroadcast(FVector_NetQuantize NewLocation, FVector NewVelocity)
FVector FVector PreviousVelocity
Definition EBBullet.h:171

◆ Tick()

void AEBBullet::Tick ( float DeltaSeconds)
overridevirtual
44 {
45 Super::Tick(DeltaTime);
46
47 if (FixedStep) {
48 AccumulatedDelta += DeltaTime;
49
50 while (AccumulatedDelta >= FixedStepSeconds) {
51 Step(FixedStepSeconds);
52 AccumulatedDelta -= FixedStepSeconds;
53 }
54
55 }
56 else {
57 Step(DeltaTime);
58 }
59}
float AccumulatedDelta
Definition EBBullet.h:200

◆ Trace()

float AEBBullet::Trace ( FVector start,
FVector PreviousVelocity,
float delta,
TEnumAsByte< ECollisionChannel > channel )
private

◆ UFUNCTION() [1/6]

AEBBullet::UFUNCTION ( BlueprintAuthorityOnly ,
BlueprintCallable ,
Category = "EBBullet|Pooling" )

◆ UFUNCTION() [2/6]

AEBBullet::UFUNCTION ( BlueprintNativeEvent ,
Category = "EBBullet|Flight" )

◆ UFUNCTION() [3/6]

AEBBullet::UFUNCTION ( BlueprintNativeEvent ,
Category = "EBBullet|World" ) const

◆ UFUNCTION() [4/6]

AEBBullet::UFUNCTION ( BlueprintNativeEvent ,
Category = "EBBullet|World" )

◆ UFUNCTION() [5/6]

AEBBullet::UFUNCTION ( BlueprintNativeEvent ,
Category = "EBBullet|World" )

◆ UFUNCTION() [6/6]

AEBBullet::UFUNCTION ( BlueprintNativeEvent ,
Category = "EBBullet|World" )

◆ UPROPERTY() [1/83]

AEBBullet::UPROPERTY ( )
private

◆ UPROPERTY() [2/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
Category = "State" )

◆ UPROPERTY() [3/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Collision" )

◆ UPROPERTY() [4/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Collision" )

◆ UPROPERTY() [5/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Collision" )

◆ UPROPERTY() [6/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Collision" )

◆ UPROPERTY() [7/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Collision",
meta = (ToolTip="Allow components to collide, intended for use with trigger volumes. Do not use for actual collisions.") )

◆ UPROPERTY() [8/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Collision",
meta = (ToolTip="Bullets with lower velocity will automatically despawn on impact, never despawn if set to zero or negative") )

◆ UPROPERTY() [9/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Debug" )

◆ UPROPERTY() [10/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Debug" )

◆ UPROPERTY() [11/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Debug" )

◆ UPROPERTY() [12/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Debug" )

◆ UPROPERTY() [13/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Debug" )

◆ UPROPERTY() [14/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Debug" )
pure virtual

◆ UPROPERTY() [15/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Flight" )
pure virtual

◆ UPROPERTY() [16/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Flight" )

◆ UPROPERTY() [17/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Flight" )
pure virtual

◆ UPROPERTY() [18/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Flight" )

◆ UPROPERTY() [19/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Flight" )

◆ UPROPERTY() [20/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Flight" )

◆ UPROPERTY() [21/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Flight",
meta = (ToolTip="Maximum bullet spread, in radians", ClampMin="0") )
pure virtual

◆ UPROPERTY() [22/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Flight",
meta = (ToolTip="Spread bias, higher is more accurate on average", ClampMin="0") )
pure virtual

◆ UPROPERTY() [23/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )

◆ UPROPERTY() [24/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )

◆ UPROPERTY() [25/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )

◆ UPROPERTY() [26/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )

◆ UPROPERTY() [27/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )

◆ UPROPERTY() [28/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )

◆ UPROPERTY() [29/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )

◆ UPROPERTY() [30/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )

◆ UPROPERTY() [31/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )

◆ UPROPERTY() [32/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )
pure virtual

◆ UPROPERTY() [33/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )
pure virtual

◆ UPROPERTY() [34/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )
pure virtual

◆ UPROPERTY() [35/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )
pure virtual

◆ UPROPERTY() [36/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )
pure virtual

◆ UPROPERTY() [37/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )
pure virtual

◆ UPROPERTY() [38/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )

◆ UPROPERTY() [39/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )
pure virtual

◆ UPROPERTY() [40/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )
pure virtual

◆ UPROPERTY() [41/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Impact" )

◆ UPROPERTY() [42/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Pooling" )

◆ UPROPERTY() [43/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Pooling" )

◆ UPROPERTY() [44/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Replication" )

◆ UPROPERTY() [45/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Retrace" )

◆ UPROPERTY() [46/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Retrace" )

◆ UPROPERTY() [47/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Retrace",
meta = (EditCondition="RetraceOnAnotherChannel") )

◆ UPROPERTY() [48/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Rotation" )

◆ UPROPERTY() [49/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Rotation" )

◆ UPROPERTY() [50/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Safe launch" )

◆ UPROPERTY() [51/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Safe launch",
Meta = (EditCondition="SafeLaunch") )

◆ UPROPERTY() [52/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Safe launch",
Meta = (EditCondition="SafeLaunch") )

◆ UPROPERTY() [53/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Safe launch",
Meta = (EditCondition="SafeLaunch", ClampMin="0") )

◆ UPROPERTY() [54/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Safe launch",
Meta = (EditCondition="SafeLaunchIgnoreAttachParent") )

◆ UPROPERTY() [55/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Shotgun" )

◆ UPROPERTY() [56/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Shotgun",
meta = (EditCondition="Shotgun") )
pure virtual

◆ UPROPERTY() [57/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Shotgun",
meta = (EditCondition="Shotgun") )
pure virtual

◆ UPROPERTY() [58/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Shotgun",
meta = (EditCondition="Shotgun") )

◆ UPROPERTY() [59/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Simulation" )

◆ UPROPERTY() [60/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Simulation" )

◆ UPROPERTY() [61/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Simulation",
meta = (EditCondition="DoFirstStepImmediately") )

◆ UPROPERTY() [62/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Simulation",
meta = (EditCondition="FixedStep", ClampMin="0") )
pure virtual

◆ UPROPERTY() [63/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "Simulation",
meta = (ToolTip="Spawned bullet performs first trace immediately, instead of waiting for next simulation step") )

◆ UPROPERTY() [64/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "World" )

◆ UPROPERTY() [65/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "World" )

◆ UPROPERTY() [66/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "World" )

◆ UPROPERTY() [67/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "World" )

◆ UPROPERTY() [68/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "World" )

◆ UPROPERTY() [69/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "World" )

◆ UPROPERTY() [70/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "World",
meta = (ToolTip="Air Density at sea level - in KG/m^3", ClampMin="0") )

◆ UPROPERTY() [71/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "World",
meta = (ToolTip="in cm/s", ClampMin="0") )

◆ UPROPERTY() [72/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
Category = "World",
meta = (ToolTip="Used for Density Curve atmosphere model") )

◆ UPROPERTY() [73/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
SaveGame ,
Category = "World",
meta = (ToolTip="Altitude at which temperature stops decreasing, in meters") )

◆ UPROPERTY() [74/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
SaveGame ,
Category = "World",
meta = (ToolTip="Atmosphere pressure at 0,0,0 - in millibars", ClampMin="0") )

◆ UPROPERTY() [75/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
SaveGame ,
Category = "World",
meta = (ToolTip="Atmosphere Temperature at 0,0,0 - in degrees C") )

◆ UPROPERTY() [76/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
SaveGame ,
Category = "World",
meta = (ToolTip="Planet radius, in Unreal units", EditCondition="SphericalAltitude", ClampMin="0") )

◆ UPROPERTY() [77/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
SaveGame ,
Category = "World",
meta = (ToolTip="Select atmosphere model") )

◆ UPROPERTY() [78/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
SaveGame ,
Category = "World",
meta = (ToolTip="Specific Gas Constant, dry air = 287.058", ClampMin="0") )

◆ UPROPERTY() [79/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
SaveGame ,
Category = "World",
meta = (ToolTip="Temperature Decrease With Altitude, degrees per meter") )
pure virtual

◆ UPROPERTY() [80/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
SaveGame ,
Category = "World",
meta = (ToolTip="Use spherical planet model to get altitude") )

◆ UPROPERTY() [81/83]

AEBBullet::UPROPERTY ( BlueprintReadWrite ,
EditAnywhere ,
SaveGame ,
Category = "World",
meta = (ToolTip="World Origin Location") )

◆ UPROPERTY() [82/83]

AEBBullet::UPROPERTY ( Replicated ,
BlueprintReadWrite ,
Category = "State" )

◆ UPROPERTY() [83/83]

AEBBullet::UPROPERTY ( Replicated ,
BlueprintReadWrite ,
Category = "State" )

◆ VelocityChangeBroadcast()

void AEBBullet::VelocityChangeBroadcast ( FVector_NetQuantize NewLocation,
FVector NewVelocity )

◆ VelocityChangeBroadcastReliable()

void AEBBullet::VelocityChangeBroadcastReliable ( FVector_NetQuantize NewLocation,
FVector NewVelocity )

Member Data Documentation

◆ AccumulatedDelta

float AEBBullet::AccumulatedDelta
private

◆ CanRetrace

bool AEBBullet::CanRetrace = false
private

◆ const [1/2]

FVector Location AEBBullet::const

◆ const [2/2]

FVector Location AEBBullet::const

◆ IsRecycled

bool AEBBullet::IsRecycled
private

◆ LastTraceDelta

float AEBBullet::LastTraceDelta
private

◆ LastTracePrevVelocity

FVector AEBBullet::LastTracePrevVelocity
private

◆ LastTraceStart

FVector AEBBullet::LastTraceStart
private

◆ LastTraceVelocity

FVector AEBBullet::LastTraceVelocity
private

◆ Location

FVector AEBBullet::Location

◆ PreviousVelocity

FVector FVector AEBBullet::PreviousVelocity

The documentation for this class was generated from the following files: