35 virtual void PostLoad()
override;
36 virtual void BeginDestroy()
override;
46 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category =
"IVSmoke")
47 EIVSmokeHoleType HoleType = EIVSmokeHoleType::Penetration;
52 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke", meta = (ClampMin = "0.1", ClampMax = "1000.0", EditConditionHides, EditCondition = "HoleType != EIVSmokeHoleType::Dynamic"))
58 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke", meta = (ClampMin = "0.01", ClampMax = "60.0", Tooltip = "Define how
long the hole will last within the smoke"))
59 float Duration = 3.0f;
65 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke", meta = (ClampMin = "0.0", ClampMax = "1.0", Tooltip = "0 = hard edge, 1 = soft gradient"))
66 float Softness = 0.3f;
74 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke | Expansion", meta = (ClampMin = "0.0", ClampMax = "60.0", EditConditionHides, EditCondition = "HoleType == EIVSmokeHoleType::Explosion",
75 Tooltip = "Expansion time is used for expansion-related curve values."))
76 float ExpansionDuration = 0.15f;
82 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke | Expansion", meta = (EditConditionHides, EditCondition = "HoleType == EIVSmokeHoleType::Explosion",
83 Tooltip = "Fade range curve over expansion time. Use normalized time between 0 and 1"))
84 TObjectPtr<UCurveFloat> ExpansionFadeRangeCurveOverTime;
92 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke | Shrink", meta = (EditConditionHides, EditCondition = "HoleType == EIVSmokeHoleType::Explosion",
93 Tooltip = "Fade range curve over shrink time. Use normalized time between 0 and 1"))
94 TObjectPtr<UCurveFloat> ShrinkFadeRangeCurveOverTime;
100 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke | Distortion", meta = (ClampMin = "1.0", ClampMax = "5.0", EditConditionHides, EditCondition = "HoleType == EIVSmokeHoleType::Explosion",
101 Tooltip = "Distortion exp value over expansion time. 1 - pow((1 - NormalizedTime), ExpValue)"))
102 float DistortionExpOverTime = 1.0f;
108 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke | Distortion", meta = (ClampMin = "0.0", ClampMax = "1000.0", EditConditionHides, EditCondition = "HoleType == EIVSmokeHoleType::Explosion",
109 Tooltip = "Distortion degree max value."))
110 float DistortionDistance = 250.0f;
118 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke", meta = (ClampMin = "0.0", ClampMax = "1000.0", EditConditionHides, EditCondition = "HoleType == EIVSmokeHoleType::Penetration",
119 Tooltip = "EndRadius represents the radius at the EndPosition in a penetration hole."))
120 float EndRadius = 25.0f;
126 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke", meta = (ClampMin = "0.1", ClampMax = "50.0", EditConditionHides, EditCondition = "HoleType == EIVSmokeHoleType::Penetration",
127 Tooltip = "Bullet thickness for obstacle detection. Larger values make bullets more likely to be blocked by nearby walls."))
128 float BulletThickness = 5.0f;
136 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke", meta = (EditConditionHides, EditCondition = "HoleType == EIVSmokeHoleType::Dynamic",
137 Tooltip = "The size of a hole"))
138 FVector3f Extent = FVector3f(50.f, 50.f, 50.f);
143 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "
IVSmoke", meta = (ClampMin = "10.0", ClampMax = "500.0", EditConditionHides, EditCondition = "HoleType == EIVSmokeHoleType::Dynamic",
144 Tooltip = "Minimum travel distance to make a hole"))
145 float DistanceThreshold = 50.0f;
150 FORCEINLINE uint8 GetPresetID()
const {
return CachedID; }
156 static TObjectPtr<UIVSmokeHolePreset> FindByID(
const uint8 InPresetID);
162 static float GetFloatValue(
const TObjectPtr<UCurveFloat> Curve,
const float X);
169 void RegisterToGlobalRegistry();
172 void UnregisterFromGlobalRegistry();