A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
DlgSystemSettings.h
Go to the documentation of this file.
1// Copyright Csaba Molnar, Daniel Butum. All Rights Reserved.
2#pragma once
3#include "CoreMinimal.h"
4#include "Misc/Build.h"
5
6#include "Engine/DeveloperSettings.h"
7#include "Layout/Margin.h"
8#include "Logging/INYLogger.h"
9
10#if WITH_EDITOR
11#include "ClassViewerModule.h"
12#endif
13
14#include "DlgSystemSettings.generated.h"
15
16// Defines the format of the Dialogue text
17UENUM()
18enum class EDlgDialogueTextFormat : uint8
19{
20 // No Text Format used.
21 None UMETA(DisplayName = "No Text Format"),
22
23 // Output all text formats, mostly used for debugging
24 All UMETA(Hidden),
25
26 // DEPRECATED. The own Dialogue Text format. DEPRECATED.
27 // NOTE: this format is deprecated AND in the next version it will be removed
28 DialogueDEPRECATED UMETA(Hidden),
29
30 // Hidden represents the start of the text formats index
32
33 // The JSON format.
34 JSON UMETA(DisplayName = "JSON"),
35
36 // Hidden, represents the number of text formats */
37 NumTextFormats UMETA(Hidden),
38};
39
40// Defines the displayed properties of the voice fields.
41UENUM()
42enum class EDlgVoiceDisplayedFields : uint8
43{
44 // No Voice fields are displayed.
45 None UMETA(DisplayName = "No Voice"),
47 // Only display the SoundWave voice fields.
48 SoundWave UMETA(DisplayName = "Sound Wave"),
49
50 // Only display the DialogueWave voice fields.
51 DialogueWave UMETA(DisplayName = "Dialogue Wave"),
52
53 // Display both SoundWave and DialogueWave fields.
54 SoundWaveAndDialogueWave UMETA(DisplayName = "Sound Wave & Dialogue Wave")
55};
56
57// Defines the visibility of the SpeakerState values
58UENUM()
59enum class EDlgSpeakerStateVisibility : uint8
60{
61 // No visibility fields are displayed.
62 HideAll UMETA(DisplayName = "Hide All"),
63
64 // Only display the SoundWave voice fields.
65 ShowOnEdge UMETA(DisplayName = "Show On Edge"),
66
67 // Only display the DialogueWave voice fields.
68 ShowOnNode UMETA(DisplayName = "Show On Node"),
69
70 // Display both SoundWave and DialogueWave fields.
71 ShowOnNodeAndEdge UMETA(DisplayName = "Show On Both (Edge + Node)")
72};
73
74// Defines what key combination to press to add a new line to an FText
75UENUM()
76enum class EDlgTextInputKeyForNewLine : uint8
77{
78 // Press 'Enter' to add a new line.
79 Enter UMETA(DisplayName = "Enter"),
80
81 // Preset 'Shift + Enter' to add a new line. (like in blueprints)
82 ShiftPlusEnter UMETA(DisplayName = "Shift + Enter"),
83};
85// Defines how the overriden namespace will be set
86UENUM()
87enum class EDlgTextNamespaceLocalization : uint8
88{
89 // The system does not modify the Namespace and Key values of the Text fields.
90 Ignore UMETA(DisplayName = "Ignore"),
91
92 // The system sets the Namespace for Text fields for each dialogue separately. Unique keys are also generated.
93 PerDialogue UMETA(DisplayName = "Namespace Per Dialogue (DialogueName)"),
94
95 // Same as PerDialogue only we will have a prefix set
96 WithPrefixPerDialogue UMETA(DisplayName = "Prefix + Namespace Per Dialogue (Prefix.DialogueName)"),
98 // The system sets the Namespace for Text fields for each dialogue into the same value. Unique keys are also generated.
99 Global UMETA(DisplayName = "Global Namespace")
100};
101
102
103UENUM()
104enum class EDlgClassPickerDisplayMode : uint8
105{
106 // Default will choose what view mode based on if in Viewer or Picker mode.
108
109 // Displays all classes as a tree.
110 TreeView,
111
112 // Displays all classes as a list.
114};
115
116// UDeveloperSettings classes are auto discovered https://wiki.unrealengine.com/CustomSettings
117UCLASS(Config = Engine, DefaultConfig, meta = (DisplayName = "Dialogue System Settings"))
118class DLGSYSTEM_API UDlgSystemSettings : public UDeveloperSettings
119{
120 GENERATED_BODY()
121
122public:
124
125 // UDeveloperSettings interface
126 // Gets the settings container name for the settings, either Project or Editor
127 FName GetContainerName() const override { return TEXT("Project"); }
128 // Gets the category for the settings, some high level grouping like, Editor, Engine, Game...etc.
129 FName GetCategoryName() const override { return TEXT("Editor"); };
130 // The unique name for your section of settings, uses the class's FName.
131 FName GetSectionName() const override { return Super::GetSectionName(); };
132
133#if WITH_EDITOR
134 // Gets the section text, uses the classes DisplayName by default.
135 FText GetSectionText() const override;
136 // Gets the description for the section, uses the classes ToolTip by default.
137 FText GetSectionDescription() const override;
138
139 // Whether or not this class supports auto registration or if the settings have a custom setup
140 bool SupportsAutoRegistration() const override { return true; }
141
142 // UObject interface
143#if ENGINE_MINOR_VERSION >= 25
144 bool CanEditChange(const FProperty* InProperty) const override;
145#else
146 bool CanEditChange(const UProperty* InProperty) const override;
147#endif
148
149 void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
150#endif // WITH_EDITOR
151
152 // Own functions
153#define CREATE_SETTER(_NameMethod, _VariableType, _VariableName) \
154 void _NameMethod(_VariableType InVariableValue) \
155 { \
156 if (_VariableName != InVariableValue) \
157 { \
158 _VariableName = InVariableValue; \
159 SaveSettings(); \
160 } \
161 }
162
163 CREATE_SETTER(SetShowPrimarySecondaryEdges, bool, bShowPrimarySecondaryEdges)
164 CREATE_SETTER(SetDrawPrimaryEdges, bool, bDrawPrimaryEdges)
165 CREATE_SETTER(SetDrawSecondaryEdges, bool, bDrawSecondaryEdges)
166 CREATE_SETTER(SetHideEmptyDialogueBrowserCategories, bool, bHideEmptyDialogueBrowserCategories)
167
168#undef CREATE_SETTER
169
170 // Depends on:
171 // - LocalizationIgnoredTexts
172 // - LocalizationIgnoredStrings
173 bool IsIgnoredTextForLocalization(const FText& Text) const;
174
175 // Is this text remapped
176 FORCEINLINE bool IsTextRemapped(const FText& Text) const { return IsSourceStringRemapped(*FTextInspector::GetSourceString(Text)); }
177 FORCEINLINE bool IsSourceStringRemapped(const FString& SourceString) const { return LocalizationRemapSourceStringsToTexts.Contains(SourceString); }
178 FORCEINLINE const FText& GetTextRemappedText(const FText& Text) const { return GetSourceStringRemappedText(*FTextInspector::GetSourceString(Text)); }
179 FORCEINLINE const FText& GetSourceStringRemappedText(const FString& SourceString) const { return LocalizationRemapSourceStringsToTexts.FindChecked(SourceString); }
181 // Saves the settings to the config file depending on the settings of this class.
182 void SaveSettings()
183 {
184 const UClass* ThisClass = GetClass();
185 if (ThisClass->HasAnyClassFlags(CLASS_DefaultConfig))
186 {
187 UpdateDefaultConfigFile();
188 }
189 else if (ThisClass->HasAnyClassFlags(CLASS_GlobalUserConfig))
190 {
191 UpdateGlobalUserConfigFile();
193 else
195 SaveConfig();
196 }
198
199 // @return the extension of the text file depending on the InTextFormat.
200 static FString GetTextFileExtension(EDlgDialogueTextFormat TextFormat);
201 static bool HasTextFileExtension(EDlgDialogueTextFormat TextFormat) { return !GetTextFileExtension(TextFormat).IsEmpty(); }
202
203 // Only the current ones from the enum
204 static const TSet<FString>& GetAllCurrentTextFileExtensions();
205
206 // GetAllCurrentTextFileExtensions() + AdditionalTextFormatFileExtensionsToLookFor
207 TSet<FString> GetAllTextFileExtensions() const;
208
209#if WITH_EDITOR
210 EClassViewerDisplayMode::Type GetUnrealClassPickerDisplayMode() const
211 {
212 if (ClassPickerDisplayMode == EDlgClassPickerDisplayMode::ListView)
213 {
214 return EClassViewerDisplayMode::ListView;
215 }
216 if (ClassPickerDisplayMode == EDlgClassPickerDisplayMode::TreeView)
217 {
218 return EClassViewerDisplayMode::TreeView;
219 }
220
221 return EClassViewerDisplayMode::DefaultView;
222 }
223#endif // WITH_EDITOR
224
225public:
226 // If enabled this clears the dialogue history automatically on Editor Start PIE and On Load New Map */
227 // Calls ClearDialogueHistory
228 UPROPERTY(Category = "Runtime", Config, EditAnywhere)
229 bool bClearDialogueHistoryAutomatically = true;
230
231 // If enabled this auto registers and unregisters the dialogue console commands on Begin Play
232 // Calls RegisterDialogueConsoleCommands and UnregisterDialogueConsoleCommands
233 UPROPERTY(Category = "Runtime", Config, EditAnywhere)
234 bool bRegisterDialogueConsoleCommandsAutomatically = true;
235
236
237 // The dialogue text format used for saving and reloading from text files.
238 UPROPERTY(Category = "Dialogue", Config, EditAnywhere, DisplayName = "Text Format")
240
241 // What key combination to press to add a new line for FText fields in the Dialogue Editor.
242 UPROPERTY(Category = "Dialogue", Config, EditAnywhere, DisplayName = "Text Input Key for NewLine")
243 EDlgTextInputKeyForNewLine DialogueTextInputKeyForNewLine = EDlgTextInputKeyForNewLine::Enter;
244
245 // If true, ParticipantsClasses from each Dialogue will be set to the first Class that matches the ParticipantName
246 // NOTE: This only sets the default for participant names that have only ONE participant class
247 // NOTE: This does not work for the None Participant Name
248 UPROPERTY(Category = "Dialogue", Config, EditAnywhere)
249 bool bAutoSetDefaultParticipantClasses = true;
250
251 // Shows the NodeData that you can customize yourself
252 UPROPERTY(Category = "Dialogue Node Data", Config, EditAnywhere)
253 bool bShowNodeData = true;
254
255 // Where to display the SpeakerState FName property
256 UPROPERTY(Category = "Dialogue Node Data", Config, EditAnywhere, DisplayName = "SpeakerState Visibility")
258
259 // What Voice fields to show in the Dialogue Editor, if any.
260 UPROPERTY(Category = "Dialogue Node Data", Config, EditAnywhere, DisplayName = "Displayed Voice Fields")
261 EDlgVoiceDisplayedFields DialogueDisplayedVoiceFields = EDlgVoiceDisplayedFields::None;
262
263 // Generic data is an UObject* which can be assigned to nodes and can be asked from the active one
264 UPROPERTY(Category = "Dialogue Node Data", Config, EditAnywhere)
265 bool bShowGenericData = false;
267 UPROPERTY(Category = "Dialogue Node Data", Config, EditAnywhere, AdvancedDisplay)
268 bool bShowAdvancedChildren = true;
269
270 // Any properties that belong to these classes won't be shown in the suggestion list when you use the reflection system (class variables).
271 UPROPERTY(Category = "Dialogue", Config, EditAnywhere)
272 TArray<UClass*> BlacklistedReflectionClasses;
273
274 // How the Blueprint class pricker looks like
275 UPROPERTY(Category = "Blueprint", Config, EditAnywhere)
277
278 // Should we only process batch dialogues that are only in the /Game folder.
279 // This is used for saving all dialogues or deleting all text files.
280 UPROPERTY(Category = "Batch", Config, EditAnywhere)
281 bool bBatchOnlyInGameDialogues = true;
282
283 // Additional file extension to look for when doing operations with dialogue text formats, like: deleting/renaming.
284 // NOTE: file extensions must start with a full stop
285 UPROPERTY(Category = "Batch", Config, EditAnywhere)
286 TSet<FString> AdditionalTextFormatFileExtensionsToLookFor;
287
288
289 // Should the dialogue system set the default texts on empty edges on save dialogue and when creating them?
290 UPROPERTY(Category = "Default Texts", Config, EditAnywhere, DisplayName = "Set Default Edge Texts")
291 bool bSetDefaultEdgeTexts = true;
293 // If true the default text will be only applied to the first child instead of all children from a node
294 UPROPERTY(Category = "Default Texts", Config, EditAnywhere, DisplayName = "Set Default Edge Texts on First Child Only")
295 bool bSetDefaultEdgeTextOnFirstChildOnly = true;
296
297 // Default text that appears on empty edges that lead to an end node
298 UPROPERTY(Category = "Default Texts", Config, EditAnywhere, DisplayName = "Edge Text To End Node")
299 FText DefaultTextEdgeToEndNode;
301 // Default text that appears on empty edges texts that lead to a normal node (not an end node).
302 UPROPERTY(Category = "Default Texts", Config, EditAnywhere, DisplayName = "Edge Text To Normal Node")
303 FText DefaultTextEdgeToNormalNode;
304
305
306 // Defines what the system should do with Text Namespaces for localization
307 UPROPERTY(Category = "Localization", Config, EditAnywhere, DisplayName = "Text Namespace")
309
310 // Depending on TextLocalizationMode it can be used as the namespace for all dialogue
311 // Only used for GlobalNamespace
312 UPROPERTY(Category = "Localization", Config, EditAnywhere, DisplayName = "Text Global Namespace Name")
313 FString DialogueTextGlobalNamespaceName = "Dialogue";
314
315 // Depending on TextLocalizationMode it can be used as the prefix for all dialogues namespace name
316 // Only used for WithPrefixPerDialogue
317 UPROPERTY(Category = "Localization", Config, EditAnywhere, DisplayName = "Text Namespace Name Prefix")
318 FString DialogueTextPrefixNamespaceName = "Dialogue_";
319
320 // Additional Array of texts that this system won't overwrite the namespace or key for
321 //UPROPERTY(Category = "Localization", Config, EditAnywhere, DisplayName = "Ignored Texts")
322 //TArray<FText> LocalizationIgnoredTexts;
323
324 // Additional Array of source strings that this system won't overwrite the namespace or key for
325 UPROPERTY(Category = "Localization", Config, EditAnywhere, AdvancedDisplay, DisplayName = "Ignored Strings")
326 TSet<FString> LocalizationIgnoredStrings;
327
328 // Map used to remap some SourceStrings texts found in the dialogues with a new Text value/namespace/key
329 // Key: SourceString we are searching for
330 // Value: Text replacement. NOTE: if the text value is usually not empty
331 UPROPERTY(Category = "Localization", Config, EditAnywhere, AdvancedDisplay, DisplayName = "Remap Source Strings to Texts")
332 TMap<FString, FText> LocalizationRemapSourceStringsToTexts;
333
334
335 // Enables the message log to output info/errors/warnings to it
336 UPROPERTY(Category = "Logger", Config, EditAnywhere)
337 bool bEnableMessageLog = true;
338
339 // Should the message log mirror the message with the output log, used even if the output log is disabled.
340 UPROPERTY(Category = "Logger", Config, EditAnywhere)
341 bool bMessageLogMirrorToOutputLog = true;
342
343 // Opens the message log in front of the user if messages are displayed
344 // See OpenMessageLogLevelsHigherThan for the filter
345 UPROPERTY(Category = "Logger", Config, EditAnywhere)
346 bool bMessageLogOpen = true;
347
348 // NOTE: Not editable is intended so that not to allow the user to disable logging completely
349 UPROPERTY(Config)
350 bool bEnableOutputLog = false;
351
352 // By default the message log does not support debug output, latest is info.
353 // For the sake of sanity we redirect all levels higher than RedirectMessageLogLevelsHigherThan to the output log
354 // even if the output log is disabled.
355 // So that not to output for example debug output to the message log only to the output log.
356 // NOTE: A value of ENYLoggerLogLevel::NoLogging means no log level will get redirected
357 UPROPERTY(Category = "Logger", Config, EditAnywhere, AdvancedDisplay)
358 ENYLoggerLogLevel RedirectMessageLogLevelsHigherThan = ENYLoggerLogLevel::Warning;
359
360 // All the log levels messages that will open the message log window if bMessageLogOpen is true
361 // NOTE: A value of ENYLoggerLogLevel::NoLogging means all log levels will be opened if bMessageLogOpen is true
362 UPROPERTY(Category = "Logger", Config, EditAnywhere, AdvancedDisplay)
363 ENYLoggerLogLevel OpenMessageLogLevelsHigherThan = ENYLoggerLogLevel::NoLogging;
364
365
366 // Should we hide the categories in the Dialogue browser that do not have any children?
367 UPROPERTY(Category = "Browser", Config, EditAnywhere)
368 bool bHideEmptyDialogueBrowserCategories = true;
369
370
371 //
372 // External URLs
373 //
374
375 // Should the external URLs toolbar be displayed
376 UPROPERTY(Category = "External URLs", Config, EditAnywhere)
377 bool bShowExternalURLsToolbar = true;
378
379 FString URLNotYetPlugins = "https://bit.ly/NotYetPluginsEditor";
380 FString URLMarketplace = "https://bit.ly/DlgMarketplaceEditor";
381 FString URLWiki = "https://bit.ly/DlgWikiEditor";
382 FString URLForum = "https://bit.ly/DlgForumEditor";
383 FString URLDiscord = "https://bit.ly/NYDiscordEditor";
384
385 //
386 // Graph NOde
387 //
388
389 // Whether the description text wraps onto a new line when it's length exceeds this width;
390 // Tf this value is zero or negative, no wrapping occurs.
391 UPROPERTY(Category = "Graph Node", Config, EditAnywhere)
392 float DescriptionWrapTextAt = 256.f;
393
394 // The amount of blank space left around the edges of the description text area.
395 UPROPERTY(Category = "Graph Node", Config, EditAnywhere)
396 FMargin DescriptionTextMargin = FMargin(5.f);
397
398 // The horizontal alignment of the graph node title and icon
399 UPROPERTY(Category = "Graph Node", Config, EditAnywhere)
400 TEnumAsByte<EHorizontalAlignment> TitleHorizontalAlignment = HAlign_Fill;
401
402 // To show or not the condition icon in the case the node has any enter conditions defined on it.
403 UPROPERTY(Category = "Graph Node", Config, EditAnywhere)
404 bool bShowHasEnterConditionsIcon = true;
405
406 // To show or not the event icon in the case the node has any enter events defined on it.
407 UPROPERTY(Category = "Graph Node", Config, EditAnywhere)
408 bool bShowHasEnterEventsIcon = true;
410 // To show or not the voice icon in the case the node has any voice members set
411 UPROPERTY(Category = "Graph Node", Config, EditAnywhere)
412 bool bShowHasVoiceIcon = true;
413
414 // To show or not the voice icon in the case the node has any voice members set
415 UPROPERTY(Category = "Graph Node", Config, EditAnywhere)
416 bool bShowHasGenericDataIcon = true;
417
418 //
419 // Colors based on https://material.io/guidelines/style/color.html#color-color-palette
420 //
421
422 // The background color of the normal speech node. */
423 UPROPERTY(Category = "Graph Node Color", Config, EditAnywhere)
424 FLinearColor SpeechNodeColor = FLinearColor{0.050980f, 0.278431f, 0.631373f, 1.f}; // blueish
425
426 // The background color of the root node.
427 UPROPERTY(Category = "Graph Node Color", Config, EditAnywhere)
428 FLinearColor RootNodeColor = FLinearColor{0.105882f, 0.368627f, 0.125490f, 1.f}; // greenish
429
430 // The background color of the end node.
431 UPROPERTY(Category = "Graph Node Color", Config, EditAnywhere)
432 FLinearColor EndNodeColor = FLinearColor{0.835294f, 0.f, 0.f, 1.f}; // redish
433
434 // The background color of the virtual parent node.
435 UPROPERTY(Category = "Graph Node Color", Config, EditAnywhere)
436 FLinearColor VirtualParentNodeColor = FLinearColor{0.129412f, 0.129412f, 0.129412f, 1.0f}; // dark gray
437
438 // The background color of the selector first node.
439 UPROPERTY(Category = "Graph Node Color", Config, EditAnywhere)
440 FLinearColor SelectorFirstNodeColor = FLinearColor{0.f, 0.721569f, 0.831373f, 1.f}; // cyan
441
442 // The background color of the selector random node.
443 UPROPERTY(Category = "Graph Node Color", Config, EditAnywhere)
444 FLinearColor SelectorRandomNodeColor = FLinearColor{1.f, 0.839216f, 0.f, 1.f}; // yellow
445
446 // The background color of the selector random node.
447 UPROPERTY(Category = "Graph Node Color", Config, EditAnywhere)
448 FLinearColor SpeechSequenceNodeColor = FLinearColor{0.050980f, 0.278431f, 0.631373f, 1.f}; // blueish
449
450 // The background color of the node borders.
451 UPROPERTY(Category = "Graph Node Color", Config, EditAnywhere)
452 FLinearColor BorderBackgroundColor = FLinearColor::Black;
453
454 // The background color of the node borders when hovered over
455 UPROPERTY(Category = "Graph Node Color", Config, EditAnywhere)
456 FLinearColor BorderHoveredBackgroundColor = FLinearColor(0.380392f, 0.380392f, 0.380392f, 1.0f); // gray
457
458 // The amount of blank space left around the edges of the speaker text area in case of speech sequence nodes.
459 UPROPERTY(Category = "Graph Node Speech Sequence", Config, EditAnywhere)
460 FMargin DescriptionSpeakerMargin = FMargin(1.f);
461
462 // The horizontal alignment of the Speaker in case the node is a speech sequence.
463 UPROPERTY(Category = "Graph Node Speech Sequence", Config, EditAnywhere)
464 TEnumAsByte<EHorizontalAlignment> DescriptionSpeakerHorizontalAlignment = HAlign_Center;
465
466
467 // The wire thickness of the connections between nodes.
468 UPROPERTY(Category = "Graph Edge", Config, EditAnywhere)
469 float WireThickness = 2.0f;
470
471 // Flag indicating to draw the bubbles of the wire or not.
472 UPROPERTY(Category = "Graph Edge", Config, EditAnywhere)
473 bool bWireDrawBubbles = false;
474
475 // To show or not the condition icon in the case the edge has any conditions defined on it.
476 UPROPERTY(Category = "Graph Edge", Config, EditAnywhere)
477 bool bShowEdgeHasConditionsIcon = true;
478
479 // The base color of the wire.
480 UPROPERTY(Category = "Graph Edge Color", Config, EditAnywhere)
481 FLinearColor WireBaseColor = FLinearColor{1.0f, 1.0f, 1.0f, 1.0f}; // white
482
483 // Does the wire use the condition color (if it has conditions) in the normal mode?
484 UPROPERTY(Category = "Graph Edge Color", Config, EditAnywhere)
485 bool bShowDifferentColorForConditionWires = true;
486
487 // The color of the wire if the edge has any conditions.
488 UPROPERTY(Category = "Graph Edge Color", Config, EditAnywhere)
489 FLinearColor WireWithConditionsColor = FLinearColor{1.f, 0.341176f, 0.133333f, 1.0f}; // orangeish
490
491 // The color of the wire when hovered over
492 UPROPERTY(Category = "Graph Edge Color", Config, EditAnywhere)
493 FLinearColor WireHoveredColor = FLinearColor{1.0f, 0.596078f, 0.0f, 1.0f}; // orange
494
495 // Is the the viewing of primary/secondary edges enabled?
496 UPROPERTY(Category = "Graph Edge", Config, EditAnywhere)
497 bool bShowPrimarySecondaryEdges = true;
499 // Should we draw the primary edges?
500 UPROPERTY(Category = "Graph Edge", Config, EditAnywhere)
501 bool bDrawPrimaryEdges = true;
502
503 // Should we draw the secondary edges?
504 UPROPERTY(Category = "Graph Edge", Config, EditAnywhere)
505 bool bDrawSecondaryEdges = true;
506
507 // The Color of the wire when the edge is primary.
508 UPROPERTY(Category = "Graph Edge Color", Config, EditAnywhere)
509 FLinearColor WirePrimaryEdgeColor = FLinearColor{0.717647f, 0.109804f, 0.109804f, 1.0f}; // redish
510
511 // The Color of the wire when the edge is secondary.
512 UPROPERTY(Category = "Graph Edge Color", Config, EditAnywhere)
513 FLinearColor WireSecondaryEdgeColor = FLinearColor{0.101961f, 0.137255f, 0.494118f, 1.f}; // blueish
514
515 //
516 // Advanced Section
517 //
518
519 // The offset on the X axis (left/right) to use when automatically positioning nodes.
520 UPROPERTY(Category = "Position", Config, EditAnywhere, AdvancedDisplay)
521 int32 OffsetBetweenColumnsX = 500;
523 // The offset on the Y axis (up/down) to use when automatically positioning nodes.
524 UPROPERTY(Category = "Position", Config, EditAnywhere, AdvancedDisplay)
525 int32 OffsetBetweenRowsY = 200;
EDlgTextNamespaceLocalization
UENUM()
EDlgVoiceDisplayedFields
UENUM()
EDlgTextInputKeyForNewLine
UENUM()
EDlgClassPickerDisplayMode
UENUM()
EDlgDialogueTextFormat
UENUM()
EDlgSpeakerStateVisibility
UENUM()
#define CREATE_SETTER(_NameMethod, _VariableType, _VariableName)
ENYLoggerLogLevel
UENUM()
Definition INYLogger.h:47
UCLASS(Config = Engine, DefaultConfig, meta = (DisplayName = "Dialogue System Settings"))
FName GetCategoryName() const override
TSet< FString > LocalizationIgnoredStrings
UPROPERTY(Category = "Localization", Config, EditAnywhere, AdvancedDisplay, DisplayName = "Ignored St...
FORCEINLINE bool IsSourceStringRemapped(const FString &SourceString) const
TArray< UClass * > BlacklistedReflectionClasses
UPROPERTY(Category = "Dialogue", Config, EditAnywhere)
TSet< FString > AdditionalTextFormatFileExtensionsToLookFor
UPROPERTY(Category = "Batch", Config, EditAnywhere)
FORCEINLINE const FText & GetSourceStringRemappedText(const FString &SourceString) const
TMap< FString, FText > LocalizationRemapSourceStringsToTexts
UPROPERTY(Category = "Localization", Config, EditAnywhere, AdvancedDisplay, DisplayName = "Remap Sour...
FName GetContainerName() const override
FORCEINLINE const FText & GetTextRemappedText(const FText &Text) const
FORCEINLINE bool IsTextRemapped(const FText &Text) const
FText DefaultTextEdgeToNormalNode
UPROPERTY(Category = "Default Texts", Config, EditAnywhere, DisplayName = "Edge Text To Normal Node")
static bool HasTextFileExtension(EDlgDialogueTextFormat TextFormat)
FName GetSectionName() const override
FText DefaultTextEdgeToEndNode
UPROPERTY(Category = "Default Texts", Config, EditAnywhere, DisplayName = "Edge Text To End Node")