-
Notifications
You must be signed in to change notification settings - Fork 308
/
Copy pathCesiumCreditSystem.h
95 lines (73 loc) · 2.48 KB
/
CesiumCreditSystem.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// Copyright 2020-2024 CesiumGS, Inc. and Contributors
#pragma once
#include "Components/WidgetComponent.h"
#include "Engine/Blueprint.h"
#include "GameFramework/Actor.h"
#include "UObject/Class.h"
#include "UObject/ConstructorHelpers.h"
#include <memory>
#include <string>
#include <unordered_map>
#if WITH_EDITOR
#include "IAssetViewport.h"
#include "UnrealEdMisc.h"
#endif
#include "CesiumCreditSystem.generated.h"
namespace CesiumUtility {
class CreditSystem;
}
/**
* Manages credits / atttribution for Cesium data sources. These credits
* are displayed by the corresponding Blueprints class
* /CesiumForUnreal/CesiumCreditSystemBP.CesiumCreditSystemBP_C.
*/
UCLASS(Abstract)
class CESIUMRUNTIME_API ACesiumCreditSystem : public AActor {
GENERATED_BODY()
public:
static ACesiumCreditSystem*
GetDefaultCreditSystem(const UObject* WorldContextObject);
ACesiumCreditSystem();
virtual void BeginPlay() override;
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
virtual void OnConstruction(const FTransform& Transform) override;
virtual void BeginDestroy() override;
UPROPERTY(EditDefaultsOnly, Category = "Cesium")
TSubclassOf<class UScreenCreditsWidget> CreditsWidgetClass;
/**
* Whether the credit string has changed since last frame.
*/
UPROPERTY(BlueprintReadOnly, Category = "Cesium")
bool CreditsUpdated = false;
UPROPERTY(BlueprintReadOnly, Transient, Category = "Cesium")
class UScreenCreditsWidget* CreditsWidget;
// Called every frame
virtual bool ShouldTickIfViewportsOnly() const override;
virtual void Tick(float DeltaTime) override;
const std::shared_ptr<CesiumUtility::CreditSystem>&
GetExternalCreditSystem() const {
return _pCreditSystem;
}
void updateCreditsViewport(bool recreateWidget);
void removeCreditsFromViewports();
#if WITH_EDITOR
void OnRedrawLevelEditingViewports(bool);
void OnPreBeginPIE(bool bIsSimulating);
void OnEndPIE();
void OnCleanseEditor();
#endif
private:
/**
* A tag that is assigned to Credit Systems when they are created
* as the "default" Credit System for a certain world.
*/
static FName DEFAULT_CREDITSYSTEM_TAG;
// the underlying cesium-native credit system that is managed by this actor.
std::shared_ptr<CesiumUtility::CreditSystem> _pCreditSystem;
size_t _lastCreditsCount;
FString ConvertHtmlToRtf(std::string html);
std::unordered_map<std::string, FString> _htmlToRtf;
#if WITH_EDITOR
TWeakPtr<IAssetViewport> _pLastEditorViewport;
#endif
};