Skip to content

Commit 5e6cbf8

Browse files
committed
JavascriptSettings(config) added
1 parent 4557053 commit 5e6cbf8

File tree

3 files changed

+59
-3
lines changed

3 files changed

+59
-3
lines changed

Plugins/UnrealJS/Source/JavascriptEditor/JavascriptEditor.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@
66
#include "IV8.h"
77
#include "ScopedTransaction.h"
88
#if WITH_EDITOR
9+
// Settings
10+
#include "JavascriptSettings.h"
11+
#include "ISettingsModule.h"
912
#include "Settings/EditorLoadingSavingSettings.h"
1013
#endif
1114

15+
#define LOCTEXT_NAMESPACE "UnrealJSEditor"
16+
1217
class FJavascriptEditorModule : public IJavascriptEditorModule
1318
{
1419
// Begin IModuleInterface
@@ -29,6 +34,25 @@ class FJavascriptEditorModule : public IJavascriptEditorModule
2934
bool bRegistered{ false };
3035

3136
void Unregister();
37+
38+
void RegisterSettings()
39+
{
40+
if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings"))
41+
{
42+
SettingsModule->RegisterSettings("Project", "Plugins", "UnrealJS",
43+
LOCTEXT("RuntimeSettingsName", "UnrealJS"),
44+
LOCTEXT("RuntimeSettingsDescription", "Configure the UnrealJS plugin"),
45+
GetMutableDefault<UJavascriptSettings>());
46+
}
47+
}
48+
49+
void UnregisterSettings()
50+
{
51+
if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings"))
52+
{
53+
SettingsModule->UnregisterSettings("Project", "Plugins", "UnrealJS");
54+
}
55+
}
3256
#endif
3357
};
3458

@@ -86,6 +110,8 @@ static void PatchReimportRule()
86110
void FJavascriptEditorModule::StartupModule()
87111
{
88112
#if WITH_EDITOR
113+
RegisterSettings();
114+
89115
PatchReimportRule();
90116

91117
auto Isolate = NewObject<UJavascriptIsolate>();
@@ -117,6 +143,11 @@ void FJavascriptEditorModule::ShutdownModule()
117143
{
118144
#if WITH_EDITOR
119145
Unregister();
146+
147+
if (UObjectInitialized())
148+
{
149+
UnregisterSettings();
150+
}
120151
#endif
121152
}
122153

Plugins/UnrealJS/Source/V8/Private/V8Module.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "JavascriptContext.h"
44
#include "IV8.h"
55
#include "JavascriptStats.h"
6+
#include "JavascriptSettings.h"
67

78
DEFINE_STAT(STAT_JavascriptDelegate);
89
DEFINE_STAT(STAT_JavascriptProxy);
@@ -22,6 +23,13 @@ DEFINE_STAT(STAT_CodeSpace);
2223
DEFINE_STAT(STAT_MapSpace);
2324
DEFINE_STAT(STAT_LoSpace);
2425

26+
UJavascriptSettings::UJavascriptSettings(const FObjectInitializer& ObjectInitializer)
27+
: Super(ObjectInitializer)
28+
{
29+
V8Flags = TEXT("--harmony --harmony-shipping --es-staging --expose-debug-as=v8debug --expose-gc --harmony_destructuring --harmony_simd --harmony_default_parameters");
30+
// --prof --prof_cpp --log-timer-events
31+
}
32+
2533
using namespace v8;
2634

2735
class V8Module : public IV8
@@ -40,13 +48,13 @@ class V8Module : public IV8
4048
Paths.Add(GetPluginScriptsDirectory3());
4149
Paths.Add(GetPakPluginScriptsDirectory());
4250

51+
const UJavascriptSettings& Settings = *GetDefault<UJavascriptSettings>();
52+
V8::SetFlagsFromString(TCHAR_TO_ANSI(*Settings.V8Flags), strlen(TCHAR_TO_ANSI(*Settings.V8Flags)));
53+
4354
V8::InitializeICU();
4455
platform_ = platform::CreateDefaultPlatform();
4556
V8::InitializePlatform(platform_);
4657
V8::Initialize();
47-
48-
auto v8flags = "--harmony --harmony-shipping --es-staging --expose-debug-as=v8debug --expose-gc --harmony_destructuring --harmony_simd --harmony_default_parameters ";
49-
V8::SetFlagsFromString(v8flags, strlen(v8flags));
5058
}
5159

5260
virtual void ShutdownModule() override
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#pragma once
2+
3+
#include "JavascriptSettings.generated.h"
4+
5+
6+
UCLASS(config = Engine, defaultconfig)
7+
class V8_API UJavascriptSettings
8+
: public UObject
9+
{
10+
GENERATED_UCLASS_BODY()
11+
12+
public:
13+
UPROPERTY(EditAnywhere, config, Category = Javascript, meta = (
14+
ConsoleVariable = "unrealjs.v8flags", DisplayName = "V8 Flags",
15+
ToolTip = "V8 Flags. Please refer to V8 documentation"))
16+
FString V8Flags;
17+
};

0 commit comments

Comments
 (0)