Skip to content

Commit 70a4082

Browse files
author
Nako Sung
committed
Merge branch 'master' of https://github.com/ncsoft/Unreal.js
2 parents 096f509 + 771a421 commit 70a4082

File tree

9 files changed

+353
-23
lines changed

9 files changed

+353
-23
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@
88
**/.idea
99
**/DerivedDataCache
1010
**/Intermediate
11-
**/ThirdParty/v8/lib
11+
**/ThirdParty/v8/lib
12+
**/Examples/**/node_modules/

Examples/Content/Scripts/2048/game/application.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"use strict"
33

44
module.exports = function (widget, container, data) {
5-
require('animframe_polyfill')
5+
require('./animframe_polyfill')
66
var Actuator = require('./actuator')(container, data)
77
var LocalStorageManager = require('./local_storage_manager')
88
var KeyboardInputManager = require('./keyboard_input_manager')(widget, container)

Examples/Content/Scripts/aliases.js

Lines changed: 107 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
UObject.prototype.Modify = UObject.prototype.ModifyObject;
12
UObject.prototype.ClearTimerbyFunctionName = UObject.prototype.K2_ClearTimer;
23
UObject.prototype.GetTimerElapsedTimebyFunctionName = UObject.prototype.K2_GetTimerElapsedTime;
34
UObject.prototype.GetTimerRemainingTimebyFunctionName = UObject.prototype.K2_GetTimerRemainingTime;
@@ -14,6 +15,13 @@ UObject.prototype.GetClass = UObject.prototype.GetObjectClass;
1415
Class.prototype.GetDisplayName = Class.prototype.GetClassDisplayName;
1516
Class.prototype.Equal = Class.prototype.EqualEqual_ClassClass;
1617
Class.prototype.NotEqual = Class.prototype.NotEqual_ClassClass;
18+
Widget.prototype.HasAnyUserFocusedDescendants = Widget.prototype.HasFocusedDescendants;
19+
WidgetBlueprintLibrary.prototype.DrawText = WidgetBlueprintLibrary.prototype.DrawTextFormatted;
20+
WidgetBlueprintLibrary.DrawText = WidgetBlueprintLibrary.DrawTextFormatted;
21+
WidgetBlueprintLibrary.prototype.DrawString = WidgetBlueprintLibrary.prototype.DrawText;
22+
WidgetBlueprintLibrary.DrawString = WidgetBlueprintLibrary.DrawText;
23+
WidgetBlueprintLibrary.prototype.CreateWidget = WidgetBlueprintLibrary.prototype.Create;
24+
WidgetBlueprintLibrary.CreateWidget = WidgetBlueprintLibrary.Create;
1725
ActorComponent.prototype.Tick = ActorComponent.prototype.ReceiveTick;
1826
ActorComponent.prototype.EndPlay = ActorComponent.prototype.ReceiveEndPlay;
1927
ActorComponent.prototype.BeginPlay = ActorComponent.prototype.ReceiveBeginPlay;
@@ -123,17 +131,11 @@ AnimInstance.prototype.TimeRemaining = AnimInstance.prototype.GetInstanceAssetPl
123131
AnimInstance.prototype.CurrentTime = AnimInstance.prototype.GetInstanceAssetPlayerTimeFraction;
124132
AnimInstance.prototype.CurrentTime = AnimInstance.prototype.GetInstanceAssetPlayerTime;
125133
AnimInstance.prototype.Length = AnimInstance.prototype.GetInstanceAssetPlayerLength;
126-
Widget.prototype.HasAnyUserFocusedDescendants = Widget.prototype.HasFocusedDescendants;
127-
WidgetBlueprintLibrary.prototype.DrawText = WidgetBlueprintLibrary.prototype.DrawTextFormatted;
128-
WidgetBlueprintLibrary.DrawText = WidgetBlueprintLibrary.DrawTextFormatted;
129-
WidgetBlueprintLibrary.prototype.DrawString = WidgetBlueprintLibrary.prototype.DrawText;
130-
WidgetBlueprintLibrary.DrawString = WidgetBlueprintLibrary.DrawText;
131-
WidgetBlueprintLibrary.prototype.CreateWidget = WidgetBlueprintLibrary.prototype.Create;
132-
WidgetBlueprintLibrary.CreateWidget = WidgetBlueprintLibrary.Create;
133134
GameInstance.prototype.Shutdown = GameInstance.prototype.ReceiveShutdown;
134135
GameInstance.prototype.Init = GameInstance.prototype.ReceiveInit;
135136
GameInstance.prototype.TravelError = GameInstance.prototype.HandleTravelError;
136137
GameInstance.prototype.NetworkError = GameInstance.prototype.HandleNetworkError;
138+
World.prototype.Modify = World.prototype.InvalidateModelGeometry;
137139
World.prototype.LogBoxShape = World.prototype.LogBox;
138140
World.prototype.BoxOverlapActors = World.prototype.BoxOverlapActors_NEW;
139141
World.prototype.BoxOverlapComponents = World.prototype.BoxOverlapComponents_NEW;
@@ -180,6 +182,7 @@ World.prototype.SingleSphereTraceByObjectDeprecated = World.prototype.SphereTrac
180182
World.prototype.SphereTraceForObjects = World.prototype.SphereTraceSingleForObjects;
181183
World.prototype.SuggestProjectileVelocity = World.prototype.BlueprintSuggestProjectileVelocity;
182184
World.prototype.CreateWidget = World.prototype.Create;
185+
Level.prototype.Modify = Level.prototype.UpdateModelComponents;
183186
PlayerController.prototype.ConvertWorldLocationToScreenLocation = PlayerController.prototype.ProjectWorldLocationToScreen;
184187
PlayerController.prototype.ConvertScreenLocationToWorldSpace = PlayerController.prototype.DeprojectScreenPositionToWorld;
185188
PlayerController.prototype.ConvertMouseLocationToWorldSpace = PlayerController.prototype.DeprojectMousePositionToWorld;
@@ -740,3 +743,100 @@ InAppPurchaseQueryCallbackProxy.prototype.ReadInAppPurchaseInformation = InAppPu
740743
InAppPurchaseQueryCallbackProxy.ReadInAppPurchaseInformation = InAppPurchaseQueryCallbackProxy.CreateProxyObjectForInAppPurchaseQuery;
741744
LeaderboardQueryCallbackProxy.prototype.ReadLeaderboardInteger = LeaderboardQueryCallbackProxy.prototype.CreateProxyObjectForIntQuery;
742745
LeaderboardQueryCallbackProxy.ReadLeaderboardInteger = LeaderboardQueryCallbackProxy.CreateProxyObjectForIntQuery;
746+
JavascriptEditorLibrary.prototype.Modify = JavascriptEditorLibrary.prototype.UpdateModelComponents;
747+
JavascriptEditorLibrary.Modify = JavascriptEditorLibrary.UpdateModelComponents;
748+
JavascriptEditorLibrary.prototype.Modify = JavascriptEditorLibrary.prototype.ModifyObject;
749+
JavascriptEditorLibrary.Modify = JavascriptEditorLibrary.ModifyObject;
750+
JavascriptEditorLibrary.prototype.Modify = JavascriptEditorLibrary.prototype.InvalidateModelGeometry;
751+
JavascriptEditorLibrary.Modify = JavascriptEditorLibrary.InvalidateModelGeometry;
752+
Guid.prototype.ToString = Guid.prototype.Conv_GuidToString;
753+
Guid.prototype.Equal = Guid.prototype.EqualEqual_GuidGuid;
754+
Guid.prototype.IsValid = Guid.prototype.IsValid_Guid;
755+
Guid.prototype.NotEqual = Guid.prototype.NotEqual_GuidGuid;
756+
Vector.prototype.ToString = Vector.prototype.Conv_VectorToString;
757+
Vector.prototype.ToLinearColor = Vector.prototype.Conv_VectorToLinearColor;
758+
Vector.prototype.RotationFromXVector = Vector.prototype.Conv_VectorToRotator;
759+
Vector.prototype.ToTransform = Vector.prototype.Conv_VectorToTransform;
760+
Vector.prototype.ToVector2D = Vector.prototype.Conv_VectorToVector2D;
761+
Vector.prototype.CrossProduct = Vector.prototype.Cross_VectorVector;
762+
Vector.prototype.DotProduct = Vector.prototype.Dot_VectorVector;
763+
Vector.prototype.Equal = Vector.prototype.EqualEqual_VectorVector;
764+
Vector.prototype.RotateVector = Vector.prototype.GreaterGreater_VectorRotator;
765+
Vector.prototype.UnrotateVector = Vector.prototype.LessLess_VectorRotator;
766+
Vector.prototype.LinePlaneIntersection = Vector.prototype.LinePlaneIntersection_OriginNormal;
767+
Vector.prototype.Normalize = Vector.prototype.Normal;
768+
Vector.prototype.NotEqual = Vector.prototype.NotEqual_VectorVector;
769+
Vector.prototype.RotateVectorAroundAxis = Vector.prototype.RotateAngleAxis;
770+
Vector.prototype.Ease = Vector.prototype.VEase;
771+
Vector.prototype.Lerp = Vector.prototype.VLerp;
772+
Vector.prototype.VectorLength = Vector.prototype.VSize;
773+
Vector.prototype.VectorLengthSquared = Vector.prototype.VSizeSquared;
774+
Vector2D.prototype.ToString = Vector2D.prototype.Conv_Vector2dToString;
775+
Vector2D.prototype.ToVector = Vector2D.prototype.Conv_Vector2DToVector;
776+
Vector2D.prototype.CrossProduct = Vector2D.prototype.CrossProduct2D;
777+
Vector2D.prototype.DotProduct = Vector2D.prototype.DotProduct2D;
778+
Vector2D.prototype.Normalize2D = Vector2D.prototype.Normal2D;
779+
Vector2D.prototype.Vector2dLength = Vector2D.prototype.VSize2D;
780+
Vector2D.prototype.Vector2dLengthSquared = Vector2D.prototype.VSize2DSquared;
781+
Rotator.prototype.ToString = Rotator.prototype.Conv_RotatorToString;
782+
Rotator.prototype.CombineRotators = Rotator.prototype.ComposeRotators;
783+
Rotator.prototype.GetRotationXVector = Rotator.prototype.Conv_RotatorToVector;
784+
Rotator.prototype.Equal = Rotator.prototype.EqualEqual_RotatorRotator;
785+
Rotator.prototype.ScaleRotator = Rotator.prototype.Multiply_RotatorFloat;
786+
Rotator.prototype.ScaleRotator = Rotator.prototype.Multiply_RotatorInt;
787+
Rotator.prototype.InvertRotator = Rotator.prototype.NegateRotator;
788+
Rotator.prototype.Delta = Rotator.prototype.NormalizedDeltaRotator;
789+
Rotator.prototype.NotEqual = Rotator.prototype.NotEqual_RotatorRotator;
790+
Rotator.prototype.Ease = Rotator.prototype.REase;
791+
Rotator.prototype.Lerp = Rotator.prototype.RLerp;
792+
Color.prototype.ToLinearColor = Color.prototype.Conv_ColorToLinearColor;
793+
LinearColor.prototype.ToString = LinearColor.prototype.Conv_ColorToString;
794+
LinearColor.prototype.ToColor = LinearColor.prototype.Conv_LinearColorToColor;
795+
LinearColor.prototype.ToVector = LinearColor.prototype.Conv_LinearColorToVector;
796+
LinearColor.prototype.HSVtoRGB = LinearColor.prototype.HSVToRGB_Vector;
797+
LinearColor.prototype.Lerp = LinearColor.prototype.LinearColorLerp;
798+
LinearColor.prototype.LerpUsingHSV = LinearColor.prototype.LinearColorLerpUsingHSV;
799+
LinearColor.prototype.RGBtoHSV = LinearColor.prototype.RGBToHSV_Vector;
800+
Transform.prototype.ToString = Transform.prototype.Conv_TransformToString;
801+
Transform.prototype.EqualTransform = Transform.prototype.EqualEqual_TransformTransform;
802+
Transform.prototype.NearlyEqual = Transform.prototype.NearlyEqual_TransformTransform;
803+
Transform.prototype.Ease = Transform.prototype.TEase;
804+
Transform.prototype.Lerp = Transform.prototype.TLerp;
805+
DateTime.prototype.AsDate = DateTime.prototype.AsDate_DateTime;
806+
DateTime.prototype.AsDateTime = DateTime.prototype.AsDateTime_DateTime;
807+
DateTime.prototype.AsTime = DateTime.prototype.AsTime_DateTime;
808+
DateTime.prototype.Equal = DateTime.prototype.EqualEqual_DateTimeDateTime;
809+
DateTime.prototype.NotEqual = DateTime.prototype.NotEqual_DateTimeDateTime;
810+
Timespan.prototype.AsTimespan = Timespan.prototype.AsTimespan_Timespan;
811+
Timespan.prototype.Equal = Timespan.prototype.EqualEqual_TimespanTimespan;
812+
Timespan.prototype.NotEqual = Timespan.prototype.NotEqual_TimespanTimespan;
813+
InputEvent.prototype.IsAltDown = InputEvent.prototype.InputEvent_IsAltDown;
814+
InputEvent.prototype.IsCommandDown = InputEvent.prototype.InputEvent_IsCommandDown;
815+
InputEvent.prototype.IsControlDown = InputEvent.prototype.InputEvent_IsControlDown;
816+
InputEvent.prototype.IsLeftAltDown = InputEvent.prototype.InputEvent_IsLeftAltDown;
817+
InputEvent.prototype.IsLeftCommandDown = InputEvent.prototype.InputEvent_IsLeftCommandDown;
818+
InputEvent.prototype.IsLeftControlDown = InputEvent.prototype.InputEvent_IsLeftControlDown;
819+
InputEvent.prototype.IsLeftShiftDown = InputEvent.prototype.InputEvent_IsLeftShiftDown;
820+
InputEvent.prototype.IsRepeat = InputEvent.prototype.InputEvent_IsRepeat;
821+
InputEvent.prototype.IsRightAltDown = InputEvent.prototype.InputEvent_IsRightAltDown;
822+
InputEvent.prototype.IsRightCommandDown = InputEvent.prototype.InputEvent_IsRightCommandDown;
823+
InputEvent.prototype.IsRightControlDown = InputEvent.prototype.InputEvent_IsRightControlDown;
824+
InputEvent.prototype.IsRightShiftDown = InputEvent.prototype.InputEvent_IsRightShiftDown;
825+
InputEvent.prototype.IsShiftDown = InputEvent.prototype.InputEvent_IsShiftDown;
826+
UPointerEvent.prototype.GetCursorDelta = UPointerEvent.prototype.PointerEvent_GetCursorDelta;
827+
UPointerEvent.prototype.GetEffectingButton = UPointerEvent.prototype.PointerEvent_GetEffectingButton;
828+
UPointerEvent.prototype.GetGestureDelta = UPointerEvent.prototype.PointerEvent_GetGestureDelta;
829+
UPointerEvent.prototype.GetLastScreenSpacePosition = UPointerEvent.prototype.PointerEvent_GetLastScreenSpacePosition;
830+
UPointerEvent.prototype.GetPointerIndex = UPointerEvent.prototype.PointerEvent_GetPointerIndex;
831+
UPointerEvent.prototype.GetScreenSpacePosition = UPointerEvent.prototype.PointerEvent_GetScreenSpacePosition;
832+
UPointerEvent.prototype.GetTouchpadIndex = UPointerEvent.prototype.PointerEvent_GetTouchpadIndex;
833+
UPointerEvent.prototype.GetUserIndex = UPointerEvent.prototype.PointerEvent_GetUserIndex;
834+
UPointerEvent.prototype.GetWheelDelta = UPointerEvent.prototype.PointerEvent_GetWheelDelta;
835+
UPointerEvent.prototype.IsMouseButtonDown = UPointerEvent.prototype.PointerEvent_IsMouseButtonDown;
836+
UPointerEvent.prototype.IsTouchEvent = UPointerEvent.prototype.PointerEvent_IsTouchEvent;
837+
Key.prototype.Equal = Key.prototype.EqualEqual_KeyKey;
838+
TimerHandle.prototype.Invalidate = TimerHandle.prototype.K2_InvalidateTimerHandle;
839+
TimerHandle.prototype.IsValid = TimerHandle.prototype.K2_IsValidTimerHandle;
840+
ControllerEvent.prototype.GetEffectingButton = ControllerEvent.prototype.ControllerEvent_GetEffectingButton;
841+
PaintContext.prototype.DrawString = PaintContext.prototype.DrawText;
842+
PaintContext.prototype.DrawText = PaintContext.prototype.DrawTextFormatted;

Examples/Content/Scripts/helloJS.js

Lines changed: 109 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
const _ = require('lodash')
66
const uclass = require('uclass')().bind(this,global)
77

8+
let game_mode, ui_mode
9+
810
function tutorial_WebSocket() {
911
// borrowed from https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String
1012
function ab2str(buf) {
@@ -56,6 +58,7 @@
5658
}
5759

5860
function tutorial_StaticMeshActor() {
61+
game_mode()
5962
console.log('creating a static mesh actor')
6063
class MySMA extends StaticMeshActor {
6164
ctor() {
@@ -68,13 +71,15 @@
6871
}
6972
let actor = new (uclass(MySMA))(GWorld,{Z:100})
7073
return _ => {
74+
ui_mode()
7175
actor.DestroyActor()
7276
}
7377
}
7478

7579
let tutorials = {
7680
'Static mesh actor' : tutorial_StaticMeshActor,
77-
'Web socket' : tutorial_WebSocket
81+
'Web socket' : tutorial_WebSocket,
82+
'Draggable' : tutorial_Draggable
7883
}
7984

8085
function Logger() {
@@ -102,30 +107,112 @@
102107
window : LogWindow
103108
}
104109
}
110+
111+
function tutorial_Draggable(root) {
112+
let sprite
113+
let mygeom
114+
class DragOp extends DragDropOperation {
115+
Dragged(event) {
116+
let pos = UPointerEvent.C(event).GetScreenSpacePosition()
117+
pos = Geometry.C(mygeom).AbsoluteToLocal(pos)
118+
sprite.Slot.SetPosition(pos)
119+
}
120+
Drop(event) {
121+
sprite.SetVisibility('Hidden')
122+
console.log('ok')
123+
}
124+
DragCancelled(event) {
125+
sprite.SetVisibility('Hidden')
126+
console.log('cancel')
127+
}
128+
}
129+
let DragOp_C = uclass(DragOp)
130+
class MyDraggable extends JavascriptWidget {
131+
AddChild(x) {
132+
this.SetRootWidget(x)
133+
return {}
134+
}
135+
RemoveChild(x) {
136+
this.SetRootWidget(null)
137+
}
138+
OnDragDetected() {
139+
let op = WidgetBlueprintLibrary.CreateDragDropOperation(DragOp_C)
140+
sprite.SetVisibility('Visible')
141+
return {
142+
$: EventReply.Handled(),
143+
Operation: op
144+
}
145+
}
146+
OnMouseButtonDown(geom,event) {
147+
mygeom = geom
148+
return event.DetectDragIfPressed(this,{KeyName:'LeftMouseButton'})
149+
}
150+
}
151+
class MyDropTarget extends JavascriptWidget {
152+
AddChild(x) {
153+
this.SetRootWidget(x)
154+
return {}
155+
}
156+
RemoveChild(x) {
157+
this.SetRootWidget(null)
158+
}
159+
OnDrop(x) {
160+
console.log('dropped',x)
161+
return EventReply.Handled()
162+
}
163+
}
164+
let MyDraggable_C = uclass(MyDraggable)
165+
let MyDropTarget_C = uclass(MyDropTarget)
166+
let widget = root.add_child(
167+
UMG(Overlay,{'Slot.Size.Rule':'Fill','VerticalAlignment':'VAlign_Fill'},
168+
UMG.div({'Slot.HorizontalAlignment':'HAlign_Fill'},
169+
UMG(MyDraggable_C,{},
170+
UMG(Border,{BrushColor:{A:0.5}},"X")
171+
),
172+
UMG(MyDropTarget_C,{},
173+
UMG(Border,{BrushColor:{R:1,A:0.5}},"Drop target")
174+
)
175+
),
176+
UMG(CanvasPanel,{
177+
'Visibility':'HitTestInvisible',
178+
'Slot.HorizontalAlignment':'HAlign_Fill','Slot.VerticalAlignment':'VAlign_Fill'
179+
},
180+
UMG(Border,{Visibility:'Hidden',$link:elem => sprite = elem})
181+
)
182+
)
183+
)
184+
return _ => {
185+
root.remove_child(widget)
186+
}
187+
}
105188

106189
function app() {
107190
let logger = Logger()
108191

109-
let cur
192+
let cur, root
110193
return UMG.div({$link:elem => {
111194
elem.bye = _ => {
112195
console.log('done')
113196
cur && cur()
114197
logger.destroy()
115198
}
199+
cur = tutorial_Draggable(root)
116200
}},
117201
_.map(tutorials,(v,k) =>
118202
UMG(Button,{OnClicked:_ => {
119203
cur && cur()
120-
cur = v()
204+
cur = v(root)
121205
}},UMG.text({},k)
122206
)),
123-
UMG(Border,{
124-
'Slot.Size.Rule':'Fill',
125-
'Slot.VerticalAlignment':'VAlign_Bottom',
126-
'BrushColor':{A:0.5}
127-
},
128-
logger.window()
207+
UMG(Overlay,{'Slot.Size.Rule':'Fill'},
208+
UMG.div({'Slot.HorizontalAlignment':'HAlign_Fill','Slot.VerticalAlignment':'VAlign_Fill',$link:elem => root = elem}),
209+
UMG(Border,{
210+
'Slot.HorizontalAlignment':'HAlign_Fill',
211+
'Slot.VerticalAlignment':'VAlign_Bottom',
212+
'BrushColor':{A:0.5}
213+
},
214+
logger.window()
215+
)
129216
)
130217
)
131218
}
@@ -145,7 +232,19 @@
145232

146233
widget.SetRootWidget(page)
147234
widget.AddToViewport()
148-
235+
236+
ui_mode = _ => {
237+
PlayerController.C(PC).bShowMouseCursor = true
238+
PlayerController.C(PC).SetInputMode_UIOnly(widget,false)
239+
}
240+
241+
game_mode = _ => {
242+
PlayerController.C(PC).bShowMouseCursor = true
243+
PlayerController.C(PC).SetInputMode_GameAndUI(widget,false,false)
244+
}
245+
246+
ui_mode()
247+
149248
return function () {
150249
page.bye()
151250
widget.RemoveFromViewport()

Plugins/UnrealJS/Source/JavascriptEditor/JavascriptEditor.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
#include "JavascriptEditorTick.h"
66
#include "IV8.h"
77
#include "ScopedTransaction.h"
8+
#if WITH_EDITOR
9+
#include "Settings/EditorLoadingSavingSettings.h"
10+
#endif
811

912
class FJavascriptEditorModule : public IJavascriptEditorModule
1013
{
@@ -47,9 +50,44 @@ void FJavascriptEditorModule::RemoveExtension(IEditorExtension* Extension)
4750
#endif
4851
}
4952

53+
#if WITH_EDITOR
54+
static void PatchReimportRule()
55+
{
56+
FAutoReimportWildcard WildcardToInject;
57+
WildcardToInject.Wildcard = TEXT("Scripts/**.json");
58+
WildcardToInject.bInclude = false;
59+
60+
auto Default = GetMutableDefault<UEditorLoadingSavingSettings>();
61+
bool bHasChanged = false;
62+
for (auto& Setting : Default->AutoReimportDirectorySettings)
63+
{
64+
bool bFound = false;
65+
for (const auto& Wildcard : Setting.Wildcards)
66+
{
67+
if (Wildcard.Wildcard == WildcardToInject.Wildcard)
68+
{
69+
bFound = true;
70+
break;
71+
}
72+
}
73+
if (!bFound)
74+
{
75+
Setting.Wildcards.Add(WildcardToInject);
76+
bHasChanged = true;
77+
}
78+
}
79+
if (bHasChanged)
80+
{
81+
Default->PostEditChange();
82+
}
83+
}
84+
#endif
85+
5086
void FJavascriptEditorModule::StartupModule()
5187
{
5288
#if WITH_EDITOR
89+
PatchReimportRule();
90+
5391
auto Isolate = NewObject<UJavascriptIsolate>();
5492
auto Context = Isolate->CreateContext();
5593

0 commit comments

Comments
 (0)