Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
TimeManagementSubsystem.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "Subsystems/WorldSubsystem.h"
6#include "TimeManagementSubsystem.generated.h"
7
8
9// 강제로 시간 배율이 올라갔을 때(= 느려져 있던 시간이 풀렸을 때) 알린다.
10DECLARE_MULTICAST_DELEGATE_OneParam(FOnTimeScaleRaised, float /*NewTimeScale*/);
11
12
25UCLASS()
26class CK_UE_API UTimeManagementSubsystem : public UWorldSubsystem
27{
28 GENERATED_BODY()
29
30public:
31 virtual void Deinitialize() override;
32
33public:
34 // 더 느린 요청만 반영한다. bForce = true 면 현재 값보다 빨라도 적용한다.
35 UFUNCTION(BlueprintCallable, Category = "Time")
36 void ApplyTimeScale(float TimeScale, bool bForce = false);
37
38 // 1.0 으로 되돌린다. bForce 로 올리는 것과 같지만 의도가 드러난다.
39 UFUNCTION(BlueprintCallable, Category = "Time")
40 void ResetTimeScale();
41
42 UFUNCTION(BlueprintPure, Category = "Time")
43 FORCEINLINE float GetCurrentTimeScale() const
44 {
45 return CurrentTimeScale;
46 }
47
48 FORCEINLINE FOnTimeScaleRaised& GetOnTimeScaleRaised()
49 {
50 return OnTimeScaleRaised;
51 }
52
53private:
54 void SetTimeScaleInternal(float NewTimeScale);
55
56private:
57 FOnTimeScaleRaised OnTimeScaleRaised;
58
59 float CurrentTimeScale = 1.0f;
60
61 // 브로드캐스트를 받은 쪽이 다시 ApplyTimeScale 을 부르므로 재진입을 막는다.
62 uint8 bBroadcasting : 1 = false;
63};
DECLARE_MULTICAST_DELEGATE_OneParam(FOnTimeScaleRaised, float)
Definition TimeManagementSubsystem.h:27
FORCEINLINE FOnTimeScaleRaised & GetOnTimeScaleRaised()
Definition TimeManagementSubsystem.h:48
uint8 bBroadcasting
Definition TimeManagementSubsystem.h:62
FOnTimeScaleRaised OnTimeScaleRaised
Definition TimeManagementSubsystem.h:57