6#include "CoreMinimal.h"
8#include "Components/ActorComponent.h"
9#include "Components/SkinnedMeshComponent.h"
10#include "Components/StaticMeshComponent.h"
11#include "HAL/ThreadSafeBool.h"
12#include "OptimizationComponent.generated.h"
16UCLASS(BlueprintType, Blueprintable, Category =
"NPC Optimizator", ClassGroup=
"NPCOptimizator", DisplayName=
"NPC Optimization Component", meta=(BlueprintSpawnableComponent),
17 HideCategories=(ComponentReplication, Activation, Replication,
Collision, Sockets, Tags))
18class NPC_OPTIMIZATOR_API UOptimizationProxyComponent :
public UActorComponent,
public IOptimizationProxy
22 UOptimizationProxyComponent();
25 virtual
void BeginPlay() override;
26 virtual
void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
27 virtual
void TickComponent(
float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
31 virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
override;
43 int32 GetOptimizationHandle()
const {
return OptimizationHandle; }
46 void SetOptimizationHandle(int32 Handle) { OptimizationHandle = Handle; }
49 void SetIsNeedToBeOptimized(
bool NeedToOptimize);
50 bool IsNeedToBeOptimized()
const;
52 void OptimizeComponent();
55 UFUNCTION(BlueprintCallable, Category =
"NPC Optimizator")
56 void DisableAllOptimizations();
59 UFUNCTION(BlueprintCallable, Category = "NPC Optimizator")
60 void EnableOptimizations();
63 UFUNCTION(BlueprintCallable, Category = "NPC Optimizator")
68 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName="Distance to first wave")
69 float DistanceToFirstOptimization = 1500.f;
72 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName="Distance to second wave")
73 float DistanceToSecondOptimization = 2500.f;
76 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName="Distance to third wave")
77 float DistanceToThirdOptimization = 3500.f;
80 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName="Max visible distance")
81 float MaxVisibleDistance = 8000.f;
84 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName="Optimization type")
88 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName="
Use optimization by tag")
89 bool UseOptimizationByTag = false;
92 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName="Optimization tag", meta=(EditCondition=UseOptimizationByTag))
93 FName OptimizationTag = "NeedOptimization";
96 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName="Ignore optimization tag")
97 FName IgnoreOptimizationTag = "IgnoreOptimization";
100 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName = "Disable movement when invisible")
101 bool DisableMovementWhenNotVisible = false;
104 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName = "Ignore camera sight")
105 bool IgnoreCameraSight = false;
108 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName = "Ignore camera sight in 'no optimization' wave")
109 bool IgnoreCameraSightOnSmallDistance = false;
112 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName = "Disable skeletal mesh tick when invisible")
113 bool DisableSkeletalMeshTickWhenNotVisible = false;
117 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization", DisplayName = "Hide all attached static meshes")
118 bool HideAllStaticMeshes = true;
121 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Movement", DisplayName = "Always check floor")
122 bool FirstWave_AlwaysCheckFloor = true;
125 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Movement", DisplayName = "Enable physics interaction")
126 bool FirstWave_EnablePhysicsInteraction = true;
129 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Movement", DisplayName = "Max simulation time step")
130 float FirstWave_MaxSimulationTimeStep = 0.025f;
133 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Movement", DisplayName = "Max simulation iterations")
134 int32 FirstWave_MaxSimulationIterations = 4;
137 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Movement", DisplayName = "Run physics with no controller")
138 bool FirstWave_RunPhysicsWithNoController = true;
141 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Movement", DisplayName = "Movement mode")
142 TEnumAsByte<EMovementMode> FirstWave_MovementMode = EMovementMode::MOVE_NavWalking;
145 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Movement", DisplayName = "
Sweep while nav walking")
146 bool FirstWave_SweepWhileNavWalking = true;
149 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Movement", DisplayName = "
Fixed movement tick")
150 float FirstWave_OptimizatedMovementTick = 0.05f;
153 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Movement", DisplayName = "Min movement random tick")
154 float FirstWave_OptimizatedMovementTickMin = 0.01f;
157 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Movement", DisplayName = "Max movement random tick")
158 float FirstWave_OptimizatedMovementTickMax = 0.05f;
161 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Movement", DisplayName = "
Use random movement tick")
162 bool FirstWave_UseRandomOptimizationTickForMovement = true;
165 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "Hide shadows")
166 bool FirstWave_HideShadows = false;
169 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "Disable mesh collision")
170 bool FirstWave_DisableMeshCollision = false;
173 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "Need hide static meshes")
174 bool FirstWave_NeedHideStaticMeshes = false;
177 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "
Use URO")
178 bool FirstWave_UseUpdateRateOptimizations = true;
181 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "
Use per bone motion blur")
182 bool FirstWave_UsePerBoneMotionBlur = true;
185 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "Disable cloth simulation")
186 bool FirstWave_DisableClothSimulation = true;
189 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "Disable morph target")
190 bool FirstWave_DisableMorphTarget = true;
193 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "Skip kinematic update when interpolating")
194 bool FirstWave_SkipKinematicUpdateWhenInterpolating = true;
197 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "Skip bounds update when interpolating")
198 bool FirstWave_SkipBoundsUpdateWhenInterpolating = true;
201 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "Allow rigid body anim node")
202 bool FirstWave_AllowRigidBodyAnimNode = true;
205 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "Generate overlap events")
206 bool FirstWave_GenerateOverlapEvents = true;
208 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|First wave|Skeletal meshes", DisplayName = "Visibility Based Anim Tick Option")
209 EVisibilityBasedAnimTickOption FirstWave_VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::OnlyTickPoseWhenRendered;
212 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Movement", DisplayName = "Always check floor")
213 bool SecondWave_AlwaysCheckFloor = false;
216 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Movement", DisplayName = "Enable physics interaction")
217 bool SecondWave_EnablePhysicsInteraction = false;
220 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Movement", DisplayName = "Max simulation time step")
221 float SecondWave_MaxSimulationTimeStep = 0.035f;
224 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Movement", DisplayName = "Max simulation iterations")
225 int32 SecondWave_MaxSimulationIterations = 2;
228 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Movement", DisplayName = "Run physics with no controller")
229 bool SecondWave_RunPhysicsWithNoController = false;
232 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Movement", DisplayName = "Movement mode")
233 TEnumAsByte<EMovementMode> SecondWave_MovementMode = EMovementMode::MOVE_NavWalking;
236 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Movement", DisplayName = "
Sweep while nav walking")
237 bool SecondWave_SweepWhileNavWalking = false;
240 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Movement", DisplayName = "
Fixed movement tick")
241 float SecondWave_OptimizatedMovementTick = 0.1f;
244 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Movement", DisplayName = "Min movement random tick")
245 float SecondWave_OptimizatedMovementTickMin = 0.05f;
248 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Movement", DisplayName = "Max movement random tick")
249 float SecondWave_OptimizatedMovementTickMax = 0.1f;
252 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Movement", DisplayName = "
Use random movement tick")
253 bool SecondWave_UseRandomOptimizationTickForMovement = true;
256 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "Hide shadows")
257 bool SecondWave_HideShadows = true;
260 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "Disable mesh collision")
261 bool SecondWave_DisableMeshCollision = true;
264 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "Need hide static meshes")
265 bool SecondWave_NeedHideStaticMeshes = true;
268 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "
Use URO")
269 bool SecondWave_UseUpdateRateOptimizations = true;
272 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "
Use per bone motion blur")
273 bool SecondWave_UsePerBoneMotionBlur = false;
276 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "Disable cloth simulation")
277 bool SecondWave_DisableClothSimulation = true;
280 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "Disable morph target")
281 bool SecondWave_DisableMorphTarget = true;
284 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "Skip kinematic update when interpolating")
285 bool SecondWave_SkipKinematicUpdateWhenInterpolating = true;
288 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "Skip bounds update when interpolating")
289 bool SecondWave_SkipBoundsUpdateWhenInterpolating = true;
292 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "Allow rigid body anim node")
293 bool SecondWave_AllowRigidBodyAnimNode = false;
296 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "Generate overlap events")
297 bool SecondWave_GenerateOverlapEvents = false;
299 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Second wave|Skeletal meshes", DisplayName = "Visibility Based Anim Tick Option")
300 EVisibilityBasedAnimTickOption SecondWave_VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::OnlyTickPoseWhenRendered;
303 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Movement", DisplayName = "Always check floor")
304 bool ThirdWave_AlwaysCheckFloor = false;
307 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Movement", DisplayName = "Enable physics interaction")
308 bool ThirdWave_EnablePhysicsInteraction = false;
311 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Movement", DisplayName = "Max simulation time step")
312 float ThirdWave_MaxSimulationTimeStep = 0.05f;
315 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Movement", DisplayName = "Max simulation iterations")
316 int32 ThirdWave_MaxSimulationIterations = 1;
319 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Movement", DisplayName = "Run physics with no controller")
320 bool ThirdWave_RunPhysicsWithNoController = false;
323 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Movement", DisplayName = "Movement mode")
324 TEnumAsByte<EMovementMode> ThirdWave_MovementMode = EMovementMode::MOVE_NavWalking;
327 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Movement", DisplayName = "
Sweep while nav walking")
328 bool ThirdWave_SweepWhileNavWalking = false;
331 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Movement", DisplayName = "
Fixed movement tick")
332 float ThirdWave_OptimizatedMovementTick = 0.2f;
335 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Movement", DisplayName = "Min movement random tick")
336 float ThirdWave_OptimizatedMovementTickMin = 0.1f;
339 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Movement", DisplayName = "Max movement random tick")
340 float ThirdWave_OptimizatedMovementTickMax = 0.2f;
343 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Movement", DisplayName = "
Use random movement tick")
344 bool ThirdWave_UseRandomOptimizationTickForMovement = true;
347 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "Hide shadows")
348 bool ThirdWave_HideShadows = true;
351 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "Disable mesh collision")
352 bool ThirdWave_DisableMeshCollision = true;
355 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "Need hide static meshes")
356 bool ThirdWave_NeedHideStaticMeshes = true;
359 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "
Use URO")
360 bool ThirdWave_UseUpdateRateOptimizations = true;
363 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "
Use per bone motion blur")
364 bool ThirdWave_UsePerBoneMotionBlur = false;
367 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "Disable cloth simulation")
368 bool ThirdWave_DisableClothSimulation = true;
371 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "Disable morph target")
372 bool ThirdWave_DisableMorphTarget = true;
375 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "Skip kinematic update when interpolating")
376 bool ThirdWave_SkipKinematicUpdateWhenInterpolating = true;
379 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "Skip bounds update when interpolating")
380 bool ThirdWave_SkipBoundsUpdateWhenInterpolating = true;
383 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "Allow rigid body anim node")
384 bool ThirdWave_AllowRigidBodyAnimNode = false;
387 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "Generate overlap events")
388 bool ThirdWave_GenerateOverlapEvents = false;
390 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Third wave|Skeletal meshes", DisplayName = "Visibility Based Anim Tick Option")
391 EVisibilityBasedAnimTickOption ThirdWave_VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::OnlyTickPoseWhenRendered;
394 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Movement", DisplayName = "Always check floor")
395 bool Invisible_AlwaysCheckFloor = false;
398 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Movement", DisplayName = "Enable physics interaction")
399 bool Invisible_EnablePhysicsInteraction = false;
402 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Movement", DisplayName = "Max simulation time step")
403 float Invisible_MaxSimulationTimeStep = 0.5f;
406 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Movement", DisplayName = "Max simulation iterations")
407 int32 Invisible_MaxSimulationIterations = 1;
410 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Movement", DisplayName = "Run physics with no controller")
411 bool Invisible_RunPhysicsWithNoController = false;
414 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Movement", DisplayName = "Movement mode")
415 TEnumAsByte<EMovementMode> Invisible_MovementMode = EMovementMode::MOVE_NavWalking;
418 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Movement", DisplayName = "
Sweep while nav walking")
419 bool Invisible_SweepWhileNavWalking = false;
422 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Movement", DisplayName = "
Fixed movement tick")
423 float Invisible_OptimizatedMovementTick = 1.f;
426 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Movement", DisplayName = "Min movement random tick")
427 float Invisible_OptimizatedMovementTickMin = 1.f;
430 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Movement", DisplayName = "Max movement random tick")
431 float Invisible_OptimizatedMovementTickMax = 1.5f;
434 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Movement", DisplayName = "
Use random movement tick")
435 bool Invisible_UseRandomOptimizationTickForMovement = true;
438 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "Hide skeletal mesh")
439 bool Invisible_HideSkeletalMesh = true;
442 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "Hide shadows")
443 bool Invisible_HideShadows = true;
446 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "Disable mesh collision")
447 bool Invisible_DisableMeshCollision = true;
450 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "Need hide static meshes")
451 bool Invisible_NeedHideStaticMeshes = true;
454 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "
Use URO")
455 bool Invisible_UseUpdateRateOptimizations = true;
458 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "
Use per bone motion blur")
459 bool Invisible_UsePerBoneMotionBlur = false;
462 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "Disable cloth simulation")
463 bool Invisible_DisableClothSimulation = true;
466 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "Disable morph target")
467 bool Invisible_DisableMorphTarget = true;
470 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "Skip kinematic update when interpolating")
471 bool Invisible_SkipKinematicUpdateWhenInterpolating = true;
474 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "Skip bounds update when interpolating")
475 bool Invisible_SkipBoundsUpdateWhenInterpolating = true;
478 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "Allow rigid body anim node")
479 bool Invisible_AllowRigidBodyAnimNode = false;
482 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|Invisible|Skeletal meshes", DisplayName = "Generate overlap events")
483 bool Invisible_GenerateOverlapEvents = false;
485 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|
Debug draw")
486 bool NoOptimization_DrawDebug = false;
488 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|
Debug draw")
489 bool FirstWave_DrawDebug = false;
491 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|
Debug draw")
492 bool SecondWave_DrawDebug = false;
494 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|
Debug draw")
495 bool ThirdWave_DrawDebug = false;
497 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Optimization|
Debug draw")
498 bool Invisible_DrawDebug = false;
501 UPROPERTY(BlueprintAssignable, Category = "Optimization")
502 FOptimizationChangeWave OnChangeWave;
509 mutable FCriticalSection LockCS;
510 int32 OptimizationHandle = INDEX_NONE;
513 FThreadSafeBool bIsNeedToBeOptimized = false;
514 bool bIsForceOptimizationWaveEnabled = false;
@ Use
Definition InteractionComponent.cpp:798
UCLASS(Blueprintable, BlueprintType, ClassGroup=(BucciGames), meta=(BlueprintSpawnableComponent)) class CHATSYSTEM_API UChatSystemComponent
Definition ChatSystemComponent.h:13
EOptimizationBaseType
Definition NPC_Optimizator_Types.h:22
EOptimizationWave
Definition NPC_Optimizator_Types.h:12
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOptimizationChangeWave, EOptimizationWave, NewWave)
Definition NPC_Optimizator_Types.h:49
Definition NPC_Optimizator_Types.h:73
Definition NPC_Optimizator_Types.h:88
virtual bool IsIgnoreCameraSightOnSmallDistance() const =0
virtual float GetMaxVisibleDistance() const =0
virtual float GetDistToWave(EOptimizationWave Wave) const =0
virtual AActor * GetOwnerActor()=0
virtual bool IsForceOptimizationWaveEnabled() const =0
virtual EOptimizationBaseType GetOptimizationBasedType() const =0