37 virtual void BeginPlay()
override;
44 UFUNCTION(BlueprintCallable)
50 UFUNCTION(BlueprintCallable)
51 void ActivatePulseHighlight(
bool Activate);
57 UFUNCTION(BlueprintCallable, Category =
"Highlight Functionality")
58 void ManuallyActivatePulseHighlight(
bool Activate, TArray<UMeshComponent*> TargetComponent);
66 UFUNCTION(BlueprintCallable, Category = "Highlight Functionality")
67 void ManuallyActivatePulseHighlightOnSpecificMaterials(
bool Activate, TArray<UMeshComponent*> TargetComponent, TArray<
int> TargetMaterialIndexes);
72 bool IsShowHighlight = true;
73 UPROPERTY(BlueprintReadWrite)
74 FTimerHandle PulseHighlightTimerHandle;
76 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Highlight")
77 bool AlwaysEmissiveHighlight = false;
79 UPROPERTY(BlueprintAssignable)
80 FOnHighlightValueChanged OnHighlightValueChanged;
82 UPROPERTY(BlueprintAssignable)
83 FOnHighlightChanged OnHighlightChanged;
85 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Highlight")
86 bool UseIsObjectActiveInsteadOfActiveSteps = false;
88 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Highlight")
89 TArray<FText> HighlightActiveOnSteps;
91 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Highlight")
92 bool ActivateHighlightOnEachStep = false;
94 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Highlight")
95 bool DeactivateHighlightOnEachInactiveStep = true;
97 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Highlight")
98 TArray<UStaticMeshComponent*> DeactivatedMeshes;
102 void PerformPulseHighlight();
103 void ChangeHighlightMaterialColor(const TFunctionRef<FVector()> Color, TArray<TWeakObjectPtr<UMeshComponent>> TargetMeshes);
104 void ChangeHighlightSpecificMaterialColor(const TFunctionRef<FVector()> Color, TArray<TWeakObjectPtr<UMeshComponent>> TargetMeshes, TArray<
int> MaterialIndexes);
105 void UpdatedOwnerMeshComponents();
107 TArray<
int> AffectedMaterialIndexes;
110 float HighlightTime = 0.0f;
111 float PulseDirection = 0.0f;
112 bool BlockPulsing = false;
113 TArray<TWeakObjectPtr<UMeshComponent>> OwnerMeshComponents;