14#include "CoreMinimal.h"
15#include "GameFramework/Actor.h"
17#include <DeskSimV2/SaveGame/IsSaveableInterface.h>
18#include "BasicSignal.generated.h"
24enum class ESignalStatus : uint8
44enum class ESignalType : uint8
59 UPROPERTY(VisibleAnywhere)
60 UStaticMeshComponent* LightMesh;
62 UPROPERTY(VisibleAnywhere, Transient)
63 UMaterialInstanceDynamic* DynMaterial;
65 float BlinkingTimer = 1.0f;
67 FTimerHandle LightTimerHandle;
77 LightMesh(InLightMesh),
100 virtual void BeginPlay()
override;
103 virtual void EndPlay(EEndPlayReason::Type EndPlayReason)
override;
107 virtual void Tick(
float DeltaTime)
override;
110 UFUNCTION(BlueprintCallable, CallInEditor, Category =
"Signal Light")
121 UFUNCTION(BlueprintCallable, Category =
"Signal Light")
122 void SetLightOnOff(int32 InLightIndex,
bool bInLightOn);
124 UFUNCTION(BlueprintCallable, Category =
"Signal Light")
125 void ToggleLight(int32 InLightIndex);
127 UFUNCTION(BlueprintCallable, Category =
"Signal Light")
128 void SetLightColor(int32 InLightIndex, FLinearColor InColor);
130 UFUNCTION(BlueprintCallable, Category =
"Signal Light")
131 void StartLightBlink(int32 InLightIndex,
float InSeconds);
133 UFUNCTION(BlueprintCallable, Category =
"Signal Light")
134 void StopLightBlink(int32 InLightIndex);
137 UFUNCTION(BlueprintImplementableEvent, BlueprintCallable, Category =
"Signal Light")
138 void UpdateSignalStatus(ESignalStatus NewSignalStatus);
141 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Signal Light", SaveGame)
144 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Signal Light")
147 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Signal Light")
148 ESignalStatus SignalStatus;
159 UPROPERTY(EditDefaultsOnly, Category = "Signal Light")
160 UStaticMeshComponent* VisualComponent;
163 UPROPERTY(EditDefaultsOnly, Category = "Signal Light")
164 UStaticMesh* BaseLightMesh;
167 UPROPERTY(EditDefaultsOnly, Category = "Signal Light")
168 UMaterialInterface* BaseLightMaterial;
171 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Signal Light")
175 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Signal Light")
176 float MaxLightLevel = 10.0f;
179 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Signal Light")
180 float LightBlinkPeriod = 2.0f;
184 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Railway Integration")
185 bool bSnapToNearestRailway;
187 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Railway Integration")
188 float OffsetFromRailway = 400.0f;
192 USplineComponent* GetNearestRailwaySplineComponent();
194 void SnapToNearestRailway();
A component for placing static meshes along a spline.
Basic signal class, contains functionality to setup and use signal lights.
Definition: BasicSignal.h:91
Definition: IsSaveableInterface.h:20
Contains components and dynamic material of one light.
Definition: BasicSignal.h:56