Mortar Pro Plugin  Version 2
Modular Turret Plugin
All Classes Namespaces Functions Variables Enumerations Enumerator Pages
AMortarProPhysicalProjectile Class Reference

#include <MortarProPhysicalProjectile.h>

+ Inheritance diagram for AMortarProPhysicalProjectile:
+ Collaboration diagram for AMortarProPhysicalProjectile:

Public Member Functions

 AMortarProPhysicalProjectile ()
 
bool GetDynamicDeactivateSpan () const
 
float GetInitialHomingTargetDelayPercent () const
 
void GetMinMaxHomingAcceleration (double &OutMinAcceleration, double &OutMaxAcceleration) const
 
float GetProjectileSpeed ()
 
virtual void SetAfterSpawnParam (const FMortarProAfterSpawnParam &AfterSpawnParam) override
 
void SetDynamicDeactivateSpan (const bool &bIsDynamic)
 
void SetInitialHomingTargetDelayPercent (const float &DelayPercent)
 
void SetMinMaxHomingAcceleration (const double &MinAcceleration, const double &MaxAcceleration)
 
- Public Member Functions inherited from AMortarProBaseProjectile
void BPOnImpactEvent ()
 
virtual float GetProjectileSpeed ()
 
virtual void SetAfterSpawnParam (const FMortarProAfterSpawnParam &AfterSpawnParam)
 
- Public Member Functions inherited from AMortarProPoolableActor
 AMortarProPoolableActor ()
 
virtual void DeActivateActor ()
 
virtual void ReActivateActor ()
 
virtual void SetDeactivateSpan (const float &Time)
 

Public Attributes

TMap< EMortarProSignificanceValue, float > SignifianceValue
 
- Public Attributes inherited from AMortarProPoolableActor
FMortarProActorActivated BeginActivation
 
FMortarProActorDeactivated BeginDeactivation
 
float DeactivateSpan = 10.f
 

Protected Member Functions

virtual void BeginPlay () override
 
virtual void ClearTimers () override
 
virtual void EnableComponents (const bool &bEnable) override
 
virtual void InitializeBeforeSpawnParam () override
 
virtual void OnHit (UPrimitiveComponent *HitComponent, AActor *OtherActor, UPrimitiveComponent *OtherComponent, FVector NormalImpulse, const FHitResult &Hit)
 
virtual void RegisterEventsAndCallBacks ()
 
- Protected Member Functions inherited from AMortarProBaseProjectile
float GetDamageAsPerSurface (const EPhysicalSurface &SurfaceType)
 
virtual void InitializeBeforeSpawnParam () override
 
void PlayImpactSoundAndParticleEffectForSurface (const EPhysicalSurface &SurfaceType, const FVector &Location)
 
- Protected Member Functions inherited from AMortarProPoolableActor
virtual void BeginPlay () override
 
virtual void ClearTimers ()
 
virtual void EnableComponents (const bool &bEnable)
 
virtual void EndPlay (const EEndPlayReason::Type EndPlayReason) override
 
virtual void InitializeBeforeSpawnParam ()
 
virtual void StartTimers ()
 

Protected Attributes

float AvgProjectileSpeed = 0.f
 
uint32 bAlreadyHit: 1
 
uint32 bDynamicDeactivateSpan: 1
 
float BufferDeactivateSpan = 2.f
 
UStaticMeshComponent * CollisionMesh = nullptr
 
ECollisionEnabled::Type CollisionMeshCollision
 
float DeactivateDelayAfterDamage = 0.1f
 
class URadialForceComponent * ExplosionForce = nullptr
 
float InitialHomingTargetDelayPercent = 0.0f
 
double MaxHomingAcceleration = 0
 
double MinHomingAcceleration = 0
 
class UNiagaraSystem * NiagaraLaunchBlast = nullptr
 
class UNiagaraComponent * NiagaraTrail = nullptr
 
class UMortarProProjectileMovementProjectileMovement = nullptr
 
class UMortarProSignificanceComponentSignificanceComponent {nullptr}
 
class UCurveFloat * VariableSpeedCurve { nullptr }
 
- Protected Attributes inherited from AMortarProBaseProjectile
TMap< TEnumAsByte< EPhysicalSurface >, float > DamageAsPerSurface
 
FMortarProAfterSpawnParam MortarAfterSpawnParam
 
TMap< TEnumAsByte< EPhysicalSurface >, class UNiagaraSystem * > NiagaraSurfaceImpact
 
TMap< TEnumAsByte< EPhysicalSurface >, class USoundBase * > SurfaceImpactSound
 
- Protected Attributes inherited from AMortarProPoolableActor
uint32 bIsActorActivated: 1
 

Private Member Functions

void InitializeAverageSpeedAfterSpawn ()
 
void InitializeDynamicDeactivateTimeAfterSpawn ()
 
void InitializeHomingTargetAfterSpawn ()
 
void InitializeVariableSpeedAfterSpawn ()
 
void SetHomingTargetTimerFunction ()
 
void SignificanceChanged (EMortarProSignificanceValue Value)
 
void SpeedTimeLineProgress (float Speed)
 
void TimelineUpdate ()
 

Private Attributes

FTimerHandle AfterDamageDeactivaterHandle
 
float TickTimelineRate = 0.1f
 
FTimeline TimelineSpeed
 
FTimerHandle TimeLineUpdateTimer
 

Detailed Description

Base class for Physical Projectiles Derived from AMortarProBaseProjectile class.Includes all the logic of projectile launching damaging etc Niagara effects can be set here including trail effect,hit impact for each surface,launch effect as well as sound. Homing Missile setting can be set here. Variable speed can also be set here. It is a physical based projectile based on float curve

Constructor & Destructor Documentation

◆ AMortarProPhysicalProjectile()

AMortarProPhysicalProjectile::AMortarProPhysicalProjectile ( )

Sets default values for this actor's properties

Member Function Documentation

◆ BeginPlay()

virtual void AMortarProPhysicalProjectile::BeginPlay ( )
overrideprotectedvirtual

Called when the game starts or when spawned

Reimplemented from AMortarProPoolableActor.

◆ ClearTimers()

virtual void AMortarProPhysicalProjectile::ClearTimers ( )
overrideprotectedvirtual

Clears All Timers of the projectile. Also Called on deactivation

Reimplemented from AMortarProPoolableActor.

Reimplemented in AMortarProMineProjectile, and AMortarProSplitProjectile.

◆ EnableComponents()

virtual void AMortarProPhysicalProjectile::EnableComponents ( const bool &  bEnable)
overrideprotectedvirtual

Enables/Disables All Components.This is also called when reactivating/deactivating actor for reusability

Parameters
[in]bEnableboolean flag true to Enable and false to Disable Components

Reimplemented from AMortarProPoolableActor.

◆ GetDynamicDeactivateSpan()

bool AMortarProPhysicalProjectile::GetDynamicDeactivateSpan ( ) const

Returns True if Deactivate time of particle is dynamic,false otherwise

Returns
Returns True if if deactivate time is dynamic,false otherwise

◆ GetInitialHomingTargetDelayPercent()

float AMortarProPhysicalProjectile::GetInitialHomingTargetDelayPercent ( ) const

Returns Percentage which represents the delay after which we set homing target component. This percentage is with respect to total time taken to hit a target. If it 100 percent then we set homing target when the projectile has reached target and if it 0 percent then we set homing target as soon as the projectile is spawned.

Returns
Percentage as float.

◆ GetMinMaxHomingAcceleration()

void AMortarProPhysicalProjectile::GetMinMaxHomingAcceleration ( double &  OutMinAcceleration,
double &  OutMaxAcceleration 
) const

Returns Minimum and Maximum Homing Acceleration

Parameters
[out]OutMinAccelerationMinimum Homing Acceleration
[out]OutMaxAccelerationMaximum Homing Acceleration

◆ GetProjectileSpeed()

float AMortarProPhysicalProjectile::GetProjectileSpeed ( )
virtual

Gets Projectile Speed

Returns
float variable containing speed

Reimplemented from AMortarProBaseProjectile.

◆ InitializeAverageSpeedAfterSpawn()

void AMortarProPhysicalProjectile::InitializeAverageSpeedAfterSpawn ( )
private

Sets Average Speed of Projectile. In case of constant speed/velocity it is equal to InitialSpeed and Velocity respectively. In Case of Variable Speed it is equal to (max speed set in curve + min speed set in curve) /2

◆ InitializeBeforeSpawnParam()

virtual void AMortarProPhysicalProjectile::InitializeBeforeSpawnParam ( )
overrideprotectedvirtual

Initializes All local Parameter before spawning. This is also called when reactivating actor for reusability

Reimplemented from AMortarProBaseProjectile.

Reimplemented in AMortarProMineProjectile, and AMortarProSplitProjectile.

◆ InitializeDynamicDeactivateTimeAfterSpawn()

void AMortarProPhysicalProjectile::InitializeDynamicDeactivateTimeAfterSpawn ( )
private

Initialize Dynamic Deactivation based on time taken to hit the target.

◆ InitializeHomingTargetAfterSpawn()

void AMortarProPhysicalProjectile::InitializeHomingTargetAfterSpawn ( )
private

Initialize Homing Target to the target actor set

◆ InitializeVariableSpeedAfterSpawn()

void AMortarProPhysicalProjectile::InitializeVariableSpeedAfterSpawn ( )
private

Initialize Variable Speed Timer after spawning

◆ OnHit()

virtual void AMortarProPhysicalProjectile::OnHit ( UPrimitiveComponent *  HitComponent,
AActor *  OtherActor,
UPrimitiveComponent *  OtherComponent,
FVector  NormalImpulse,
const FHitResult &  Hit 
)
protectedvirtual

On Every Collision of Projectile This Function will be called.This is Called on ComponentHit Function of Collision Mesh of Projectile Mesh.

See also
https://docs.unrealengine.com/en-US/API/Runtime/Engine/Components/UPrimitiveComponent/OnComponentHit/index.html

Reimplemented in AMortarProMineProjectile.

◆ RegisterEventsAndCallBacks()

virtual void AMortarProPhysicalProjectile::RegisterEventsAndCallBacks ( )
protectedvirtual

Register ANy Call Backs. This is basically Done once. Called in Begin Play

◆ SetAfterSpawnParam()

virtual void AMortarProPhysicalProjectile::SetAfterSpawnParam ( const FMortarProAfterSpawnParam AfterSpawnParam)
overridevirtual

Initializes Projectile params

Parameters
[in]AfterSpawnParamParameters to set after spawning
See also
FMortarProAfterSpawnParam

Reimplemented from AMortarProBaseProjectile.

Reimplemented in AMortarProSplitProjectile.

◆ SetDynamicDeactivateSpan()

void AMortarProPhysicalProjectile::SetDynamicDeactivateSpan ( const bool &  bIsDynamic)

Sets whether Deactivate Time is dynamic

Parameters
[in]bIsDynamicBoolean Value where true means the deativate time of particle is dynamic ,false otherwise

◆ SetHomingTargetTimerFunction()

void AMortarProPhysicalProjectile::SetHomingTargetTimerFunction ( )
private

Sets Homing Target and acceleration. Called as a callback to timer

◆ SetInitialHomingTargetDelayPercent()

void AMortarProPhysicalProjectile::SetInitialHomingTargetDelayPercent ( const float &  DelayPercent)

Sets Percentage Delay For Setting Homing Target Component

Parameters
[in]DelayPercentPercentage between 0 and 100

◆ SetMinMaxHomingAcceleration()

void AMortarProPhysicalProjectile::SetMinMaxHomingAcceleration ( const double &  MinAcceleration,
const double &  MaxAcceleration 
)

Sets Minimum and Maximum Homing Acceleration to have some randomness

Parameters
[in]MinAccelerationMinimum Homing acceleration
[in]MaxAccelerationMaximum Homing acceleration

◆ SignificanceChanged()

void AMortarProPhysicalProjectile::SignificanceChanged ( EMortarProSignificanceValue  Value)
private

Significance Changed Callback . Called whenever significance Value is changed

◆ SpeedTimeLineProgress()

void AMortarProPhysicalProjectile::SpeedTimeLineProgress ( float  Speed)
private

Progress function called on time line updation for speed of projectile param[in] Speed float Variable containing updated Speed

◆ TimelineUpdate()

void AMortarProPhysicalProjectile::TimelineUpdate ( )
private

Update Time line with a rate of TickTimelineRate. Not doing in tick Since Tick won't be required after timeline ends

Member Data Documentation

◆ AfterDamageDeactivaterHandle

FTimerHandle AMortarProPhysicalProjectile::AfterDamageDeactivaterHandle
private

Handle for after Hit projectile Deactivation Handle

◆ AvgProjectileSpeed

float AMortarProPhysicalProjectile::AvgProjectileSpeed = 0.f
protected

Avg Speed oF projectile. In case of variable speed it is (minSpeed + maxSpeed)/2 and in case it is not a variable speed it is just simply equal to max value of projectile

◆ bAlreadyHit

uint32 AMortarProPhysicalProjectile::bAlreadyHit
protected

◆ bDynamicDeactivateSpan

uint32 AMortarProPhysicalProjectile::bDynamicDeactivateSpan
protected

Whether the Deactivate time of particle is dynamic. The life is calculated based on time to target. plus some additional time in second

◆ BufferDeactivateSpan

float AMortarProPhysicalProjectile::BufferDeactivateSpan = 2.f
protected

Buffer Deactivate span time in seconds to be added to deativate span of actor. This Is Activated only When We set Dynamic Deactivate Span for the projectile

◆ CollisionMesh

UStaticMeshComponent* AMortarProPhysicalProjectile::CollisionMesh = nullptr
protected

Mesh of projectile Which will enable collision event

◆ CollisionMeshCollision

ECollisionEnabled::Type AMortarProPhysicalProjectile::CollisionMeshCollision
protected

Collision Type of Collision Mesh

◆ DeactivateDelayAfterDamage

float AMortarProPhysicalProjectile::DeactivateDelayAfterDamage = 0.1f
protected

Time after which projectiles will be deactivated after impact or explosion in case of Mine Projectile.

◆ ExplosionForce

class URadialForceComponent* AMortarProPhysicalProjectile::ExplosionForce = nullptr
protected

This is impulse Force x change in time see wikipedia

◆ InitialHomingTargetDelayPercent

float AMortarProPhysicalProjectile::InitialHomingTargetDelayPercent = 0.0f
protected

It if is 100 percent then it means we set homing target component when the projectile has reached its target that it is 100 percent of total time taken to hit the target. If it is 0 then it means it is 0 of the total time taken to hit the target i.e at 0th second we set Homing Component. We call timer for setting homing target based on the time we calculated here.

◆ MaxHomingAcceleration

double AMortarProPhysicalProjectile::MaxHomingAcceleration = 0
protected

Max acceleration with which homing missile acceleration is set Homing Acceleration Magnitude lies between min and max homing acceleration

◆ MinHomingAcceleration

double AMortarProPhysicalProjectile::MinHomingAcceleration = 0
protected

Minimum acceleration with which homing missile acceleration is set Homing Acceleration Magnitude lies between min and max homing acceleration

◆ NiagaraLaunchBlast

class UNiagaraSystem* AMortarProPhysicalProjectile::NiagaraLaunchBlast = nullptr
protected

Particle System That will be emitted on Launch from Mortar Gun

◆ NiagaraTrail

class UNiagaraComponent* AMortarProPhysicalProjectile::NiagaraTrail = nullptr
protected

Niagara System That will be used on the Projectile Mesh like Smoke Trail etc

◆ ProjectileMovement

class UMortarProProjectileMovement* AMortarProPhysicalProjectile::ProjectileMovement = nullptr
protected

Projectile Movement For Movement of Projectile We are using Custom Projectile MOvement which basically ticks in aggregate manner we register tick of projectile movement component for all projectile actors and tick using MortarProAggregateTickSubsystem

◆ SignifianceValue

TMap<EMortarProSignificanceValue,float> AMortarProPhysicalProjectile::SignifianceValue

Represents The tick rate for the significance Value Mentioned Key is EMortarProSignificanceValue and value is tick rate

◆ SignificanceComponent

class UMortarProSignificanceComponent* AMortarProPhysicalProjectile::SignificanceComponent {nullptr}
protected

Significance Component which controls the tick rate of the projectile movement

◆ TickTimelineRate

float AMortarProPhysicalProjectile::TickTimelineRate = 0.1f
private

Timer Rate for Updating Timeline

◆ TimelineSpeed

FTimeline AMortarProPhysicalProjectile::TimelineSpeed
private

Time line for updating speed of projectile

◆ TimeLineUpdateTimer

FTimerHandle AMortarProPhysicalProjectile::TimeLineUpdateTimer
private

Handle For Time line of updating speed

◆ VariableSpeedCurve

class UCurveFloat* AMortarProPhysicalProjectile::VariableSpeedCurve { nullptr }
protected

Curve float For Variable Speed of Projectile.Only Works when gravity scale is off that is when gravity scale is 0 and would be disabled


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