├── .babelrc ├── .gitignore ├── LICENSE ├── README.md ├── doc └── images │ ├── code-sample-screenshot.png │ └── editor-sample-screenshot.png ├── examples └── ReactUmgExamples │ ├── Config │ ├── DefaultEditor.ini │ ├── DefaultEngine.ini │ └── DefaultGame.ini │ ├── Content │ ├── HelloReactUMG.umap │ └── Scripts │ │ ├── .babelrc │ │ ├── aliases.js │ │ ├── bootstrap.js │ │ ├── helloReactUMG.js │ │ ├── helloReactUMG.jsx │ │ ├── package.json │ │ └── typings │ │ ├── _part_0_ue.d.ts │ │ ├── _part_1_ue.d.ts │ │ └── ue.d.ts │ ├── Plugins │ └── .keepme │ └── ReactUmgExamples.uproject ├── package.json └── src ├── ReactUMGComponent.js ├── ReactUMGDefaultInjection.js ├── ReactUMGEmptyComponent.js ├── ReactUMGMount.js ├── ReactUMGReconcileTransaction.js ├── UMGRoots.js ├── attributePayload.js ├── components ├── Button.js ├── HorizontalBox.js ├── Input.js ├── Text.js ├── VerticalBox.js └── index.js ├── devtools ├── InitializeJavaScriptAppEngine.js └── setupDevtools.js └── index.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "react", 4 | "es2015" 5 | ], 6 | "plugins": [ 7 | "transform-class-properties" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | lib 3 | 4 | Binaries 5 | Saved 6 | Plugins 7 | DerivedDataCache 8 | Intermediate 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 drywolf 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-umg 2 | A React renderer for Unreal Motion Graphics (https://docs.unrealengine.com/latest/INT/Engine/UMG/) 3 | 4 | ### Disclaimer 5 | 6 | This library is in a very early proof-of-concept phase. Many core features are missing and bugs are expected to happen. 7 | 8 | ### Screenshots 9 | 10 | Building Unreal Engine 4 user interface structures with [React](https://facebook.github.io/react/) and [JSX](https://facebook.github.io/jsx/) syntax. 11 | 12 | 13 | 14 | 15 | 16 | ### Building react-umg 17 | 18 | - `npm i` 19 | - `npm run build` 20 | 21 | ### Running the examples 22 | 23 | - build the react-umg code (see above) 24 | - compile the [Unreal.js plugin](https://github.com/ncsoft/Unreal.js) 25 | - copy the built `UnrealJS` plugin into the `examples/ReactUmgExamples/Plugins/` folder 26 | - open the `ReactUmgExamples.uproject` UE4 project 27 | - open the `ReactUmgExamples` level in the project 28 | - run the level in the editor 29 | - try out interacting with the displayed controls and the included sample behaviors 30 | 31 | ### Contact 32 | 33 | - [@DrywolfDev](https://twitter.com/intent/follow?screen_name=DrywolfDev) 34 | 35 | ### License 36 | 37 | - Licensed under the MIT license 38 | - see [LICENSE](https://github.com/drywolf/ts3-overwatch-stats-plugin/blob/master/LICENSE) for details 39 | 40 | ### Credit 41 | 42 | - This module builds upon: 43 | - [React.js](https://facebook.github.io/react/) 44 | - [Unreal.js](https://github.com/ncsoft/Unreal.js) 45 | -------------------------------------------------------------------------------- /doc/images/code-sample-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drywolf/react-umg/65b1f8c9f6149c32f6c462589dc44f4326703844/doc/images/code-sample-screenshot.png -------------------------------------------------------------------------------- /doc/images/editor-sample-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drywolf/react-umg/65b1f8c9f6149c32f6c462589dc44f4326703844/doc/images/editor-sample-screenshot.png -------------------------------------------------------------------------------- /examples/ReactUmgExamples/Config/DefaultEditor.ini: -------------------------------------------------------------------------------- 1 | [EditoronlyBP] 2 | bAllowClassAndBlueprintPinMatching=true 3 | bReplaceBlueprintWithClass=true 4 | bDontLoadBlueprintOutsideEditor=true 5 | bBlueprintIsNotBlueprintType=true 6 | -------------------------------------------------------------------------------- /examples/ReactUmgExamples/Config/DefaultEngine.ini: -------------------------------------------------------------------------------- 1 | [URL] 2 | 3 | [/Script/HardwareTargeting.HardwareTargetingSettings] 4 | TargetedHardwareClass=Desktop 5 | AppliedTargetedHardwareClass=Desktop 6 | DefaultGraphicsPerformance=Maximum 7 | AppliedDefaultGraphicsPerformance=Maximum 8 | 9 | 10 | -------------------------------------------------------------------------------- /examples/ReactUmgExamples/Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | [/Script/EngineSettings.GeneralProjectSettings] 2 | ProjectID=EDEA40E84EF7472583F4649384FA71CA 3 | -------------------------------------------------------------------------------- /examples/ReactUmgExamples/Content/HelloReactUMG.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drywolf/react-umg/65b1f8c9f6149c32f6c462589dc44f4326703844/examples/ReactUmgExamples/Content/HelloReactUMG.umap -------------------------------------------------------------------------------- /examples/ReactUmgExamples/Content/Scripts/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "react", 4 | "es2015" 5 | ], 6 | "plugins": [ 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /examples/ReactUmgExamples/Content/Scripts/aliases.js: -------------------------------------------------------------------------------- 1 | UObject.prototype.ClearTimerbyFunctionName = UObject.prototype.K2_ClearTimer; 2 | UObject.prototype.GetTimerElapsedTimebyFunctionName = UObject.prototype.K2_GetTimerElapsedTime; 3 | UObject.prototype.GetTimerRemainingTimebyFunctionName = UObject.prototype.K2_GetTimerRemainingTime; 4 | UObject.prototype.IsTimerActivebyFunctionName = UObject.prototype.K2_IsTimerActive; 5 | UObject.prototype.IsTimerPausedbyFunctionName = UObject.prototype.K2_IsTimerPaused; 6 | UObject.prototype.PauseTimerbyFunctionName = UObject.prototype.K2_PauseTimer; 7 | UObject.prototype.SetTimerbyFunctionName = UObject.prototype.K2_SetTimer; 8 | UObject.prototype.DoesTimerExistbyFunctionName = UObject.prototype.K2_TimerExists; 9 | UObject.prototype.UnpauseTimerbyFunctionName = UObject.prototype.K2_UnPauseTimer; 10 | UObject.prototype.ToString = UObject.prototype.Conv_ObjectToString; 11 | UObject.prototype.Equal = UObject.prototype.EqualEqual_ObjectObject; 12 | UObject.prototype.NotEqual = UObject.prototype.NotEqual_ObjectObject; 13 | UObject.prototype.GetClass = UObject.prototype.GetObjectClass; 14 | Class.prototype.GetDisplayName = Class.prototype.GetClassDisplayName; 15 | Class.prototype.Equal = Class.prototype.EqualEqual_ClassClass; 16 | Class.prototype.NotEqual = Class.prototype.NotEqual_ClassClass; 17 | Actor.prototype.ConstructionScript = Actor.prototype.UserConstructionScript; 18 | Actor.prototype.SnapActorTo = Actor.prototype.SnapRootComponentTo; 19 | Actor.prototype.Tick = Actor.prototype.ReceiveTick; 20 | Actor.prototype.RadialDamage = Actor.prototype.ReceiveRadialDamage; 21 | Actor.prototype.PointDamage = Actor.prototype.ReceivePointDamage; 22 | Actor.prototype.Hit = Actor.prototype.ReceiveHit; 23 | Actor.prototype.EndPlay = Actor.prototype.ReceiveEndPlay; 24 | Actor.prototype.Destroyed = Actor.prototype.ReceiveDestroyed; 25 | Actor.prototype.BeginPlay = Actor.prototype.ReceiveBeginPlay; 26 | Actor.prototype.AnyDamage = Actor.prototype.ReceiveAnyDamage; 27 | Actor.prototype.ActorOnReleased = Actor.prototype.ReceiveActorOnReleased; 28 | Actor.prototype.TouchLeave = Actor.prototype.ReceiveActorOnInputTouchLeave; 29 | Actor.prototype.TouchEnter = Actor.prototype.ReceiveActorOnInputTouchEnter; 30 | Actor.prototype.EndInputTouch = Actor.prototype.ReceiveActorOnInputTouchEnd; 31 | Actor.prototype.BeginInputTouch = Actor.prototype.ReceiveActorOnInputTouchBegin; 32 | Actor.prototype.ActorOnClicked = Actor.prototype.ReceiveActorOnClicked; 33 | Actor.prototype.ActorEndOverlap = Actor.prototype.ReceiveActorEndOverlap; 34 | Actor.prototype.ActorEndCursorOver = Actor.prototype.ReceiveActorEndCursorOver; 35 | Actor.prototype.ActorBeginOverlap = Actor.prototype.ReceiveActorBeginOverlap; 36 | Actor.prototype.ActorBeginCursorOver = Actor.prototype.ReceiveActorBeginCursorOver; 37 | Actor.prototype.Teleport = Actor.prototype.K2_TeleportTo; 38 | Actor.prototype.SetActorTransform = Actor.prototype.K2_SetActorTransform; 39 | Actor.prototype.SetActorRotation = Actor.prototype.K2_SetActorRotation; 40 | Actor.prototype.SetActorRelativeTransform = Actor.prototype.K2_SetActorRelativeTransform; 41 | Actor.prototype.SetActorRelativeRotation = Actor.prototype.K2_SetActorRelativeRotation; 42 | Actor.prototype.SetActorRelativeLocation = Actor.prototype.K2_SetActorRelativeLocation; 43 | Actor.prototype.SetActorLocationAndRotation = Actor.prototype.K2_SetActorLocationAndRotation; 44 | Actor.prototype.SetActorLocation = Actor.prototype.K2_SetActorLocation; 45 | Actor.prototype.OnReset = Actor.prototype.K2_OnReset; 46 | Actor.prototype.OnEndViewTarget = Actor.prototype.K2_OnEndViewTarget; 47 | Actor.prototype.OnBecomeViewTarget = Actor.prototype.K2_OnBecomeViewTarget; 48 | Actor.prototype.GetRootComponent = Actor.prototype.K2_GetRootComponent; 49 | Actor.prototype.GetActorRotation = Actor.prototype.K2_GetActorRotation; 50 | Actor.prototype.GetActorLocation = Actor.prototype.K2_GetActorLocation; 51 | Actor.prototype.DetachFromActor = Actor.prototype.K2_DetachFromActor; 52 | Actor.prototype.DestroyComponent = Actor.prototype.K2_DestroyComponent; 53 | Actor.prototype.DestroyActor = Actor.prototype.K2_DestroyActor; 54 | Actor.prototype.AttachToComponent = Actor.prototype.K2_AttachToComponent; 55 | Actor.prototype.AttachToActor = Actor.prototype.K2_AttachToActor; 56 | Actor.prototype.AttachActorToActor = Actor.prototype.K2_AttachRootComponentToActor; 57 | Actor.prototype.AttachActorToComponent = Actor.prototype.K2_AttachRootComponentTo; 58 | Actor.prototype.AddActorWorldTransform = Actor.prototype.K2_AddActorWorldTransform; 59 | Actor.prototype.AddActorWorldRotation = Actor.prototype.K2_AddActorWorldRotation; 60 | Actor.prototype.AddActorWorldOffset = Actor.prototype.K2_AddActorWorldOffset; 61 | Actor.prototype.AddActorLocalTransform = Actor.prototype.K2_AddActorLocalTransform; 62 | Actor.prototype.AddActorLocalRotation = Actor.prototype.K2_AddActorLocalRotation; 63 | Actor.prototype.AddActorLocalOffset = Actor.prototype.K2_AddActorLocalOffset; 64 | Actor.prototype.GetActorTransform = Actor.prototype.GetTransform; 65 | Actor.prototype.DetachActorFromActor = Actor.prototype.DetachRootComponentFromParent; 66 | ActorComponent.prototype.Tick = ActorComponent.prototype.ReceiveTick; 67 | ActorComponent.prototype.EndPlay = ActorComponent.prototype.ReceiveEndPlay; 68 | ActorComponent.prototype.BeginPlay = ActorComponent.prototype.ReceiveBeginPlay; 69 | ActorComponent.prototype.DestroyComponent = ActorComponent.prototype.K2_DestroyComponent; 70 | ActorComponent.prototype.IsComponentBeingDestroyed = ActorComponent.prototype.IsBeingDestroyed; 71 | SceneComponent.prototype.SetWorldTransform = SceneComponent.prototype.K2_SetWorldTransform; 72 | SceneComponent.prototype.SetWorldRotation = SceneComponent.prototype.K2_SetWorldRotation; 73 | SceneComponent.prototype.SetWorldLocationAndRotation = SceneComponent.prototype.K2_SetWorldLocationAndRotation; 74 | SceneComponent.prototype.SetWorldLocation = SceneComponent.prototype.K2_SetWorldLocation; 75 | SceneComponent.prototype.SetRelativeTransform = SceneComponent.prototype.K2_SetRelativeTransform; 76 | SceneComponent.prototype.SetRelativeRotation = SceneComponent.prototype.K2_SetRelativeRotation; 77 | SceneComponent.prototype.SetRelativeLocationAndRotation = SceneComponent.prototype.K2_SetRelativeLocationAndRotation; 78 | SceneComponent.prototype.SetRelativeLocation = SceneComponent.prototype.K2_SetRelativeLocation; 79 | SceneComponent.prototype.GetWorldTransform = SceneComponent.prototype.K2_GetComponentToWorld; 80 | SceneComponent.prototype.GetWorldScale = SceneComponent.prototype.K2_GetComponentScale; 81 | SceneComponent.prototype.GetWorldRotation = SceneComponent.prototype.K2_GetComponentRotation; 82 | SceneComponent.prototype.GetWorldLocation = SceneComponent.prototype.K2_GetComponentLocation; 83 | SceneComponent.prototype.DetachFromComponent = SceneComponent.prototype.K2_DetachFromComponent; 84 | SceneComponent.prototype.AttachToComponent = SceneComponent.prototype.K2_AttachToComponent; 85 | SceneComponent.prototype.AttachTo = SceneComponent.prototype.K2_AttachTo; 86 | SceneComponent.prototype.AddWorldTransform = SceneComponent.prototype.K2_AddWorldTransform; 87 | SceneComponent.prototype.AddWorldRotation = SceneComponent.prototype.K2_AddWorldRotation; 88 | SceneComponent.prototype.AddWorldOffset = SceneComponent.prototype.K2_AddWorldOffset; 89 | SceneComponent.prototype.AddRelativeRotation = SceneComponent.prototype.K2_AddRelativeRotation; 90 | SceneComponent.prototype.AddRelativeLocation = SceneComponent.prototype.K2_AddRelativeLocation; 91 | SceneComponent.prototype.AddLocalTransform = SceneComponent.prototype.K2_AddLocalTransform; 92 | SceneComponent.prototype.AddLocalRotation = SceneComponent.prototype.K2_AddLocalRotation; 93 | SceneComponent.prototype.AddLocalOffset = SceneComponent.prototype.K2_AddLocalOffset; 94 | PrimitiveComponent.prototype.ComponentOverlapActors = PrimitiveComponent.prototype.ComponentOverlapActors_NEW; 95 | PrimitiveComponent.prototype.ComponentOverlapComponents = PrimitiveComponent.prototype.ComponentOverlapComponents_NEW; 96 | PrimitiveComponent.prototype.SetPhysicalMaterialOverride = PrimitiveComponent.prototype.SetPhysMaterialOverride; 97 | PrimitiveComponent.prototype.SetMaxDrawDistance = PrimitiveComponent.prototype.SetCullDistance; 98 | PrimitiveComponent.prototype.LineTraceComponent = PrimitiveComponent.prototype.K2_LineTraceComponent; 99 | PrimitiveComponent.prototype.IsQueryCollisionEnabled = PrimitiveComponent.prototype.K2_IsQueryCollisionEnabled; 100 | PrimitiveComponent.prototype.IsPhysicsCollisionEnabled = PrimitiveComponent.prototype.K2_IsPhysicsCollisionEnabled; 101 | PrimitiveComponent.prototype.IsCollisionEnabled = PrimitiveComponent.prototype.K2_IsCollisionEnabled; 102 | PrimitiveComponent.prototype.CreateMIDForElementFromMaterial = PrimitiveComponent.prototype.CreateAndSetMaterialInstanceDynamicFromMaterial; 103 | PrimitiveComponent.prototype.CreateMIDForElement = PrimitiveComponent.prototype.CreateAndSetMaterialInstanceDynamic; 104 | PrimitiveComponent.prototype.GetMoveIgnoreActors = PrimitiveComponent.prototype.CopyArrayOfMoveIgnoreActors; 105 | HUD.prototype.HitBoxReleased = HUD.prototype.ReceiveHitBoxRelease; 106 | HUD.prototype.HitBoxEndCursorOver = HUD.prototype.ReceiveHitBoxEndCursorOver; 107 | HUD.prototype.HitBoxClicked = HUD.prototype.ReceiveHitBoxClick; 108 | HUD.prototype.HitBoxBeginCursorOver = HUD.prototype.ReceiveHitBoxBeginCursorOver; 109 | PawnActionsComponent.prototype.PushAction = PawnActionsComponent.prototype.K2_PushAction; 110 | PawnActionsComponent.prototype.PerformAction = PawnActionsComponent.prototype.K2_PerformAction; 111 | PawnActionsComponent.PerformAction = PawnActionsComponent.K2_PerformAction; 112 | PawnActionsComponent.prototype.ForceAbortAction = PawnActionsComponent.prototype.K2_ForceAbortAction; 113 | PawnActionsComponent.prototype.AbortAction = PawnActionsComponent.prototype.K2_AbortAction; 114 | Controller.prototype.GetControlledPawn = Controller.prototype.K2_GetPawn; 115 | AIController.prototype.SetFocus = AIController.prototype.K2_SetFocus; 116 | AIController.prototype.SetFocalPoint = AIController.prototype.K2_SetFocalPoint; 117 | AIController.prototype.ClearFocus = AIController.prototype.K2_ClearFocus; 118 | AISense_Blueprint.prototype.OnNewPawn = AISense_Blueprint.prototype.K2_OnNewPawn; 119 | AITask_MoveTo.prototype.MoveToLocationorActor = AITask_MoveTo.prototype.AIMoveTo; 120 | AITask_MoveTo.MoveToLocationorActor = AITask_MoveTo.AIMoveTo; 121 | Pawn.prototype.Unpossessed = Pawn.prototype.ReceiveUnpossessed; 122 | Pawn.prototype.Possessed = Pawn.prototype.ReceivePossessed; 123 | Pawn.prototype.GetMovementInputVector = Pawn.prototype.K2_GetMovementInputVector; 124 | Character.prototype.UpdateCustomMovement = Character.prototype.K2_UpdateCustomMovement; 125 | Character.prototype.OnStartCrouch = Character.prototype.K2_OnStartCrouch; 126 | Character.prototype.OnMovementModeChanged = Character.prototype.K2_OnMovementModeChanged; 127 | Character.prototype.OnEndCrouch = Character.prototype.K2_OnEndCrouch; 128 | Character.prototype.CanJump = Character.prototype.CanJumpInternal; 129 | Widget.prototype.HasAnyUserFocusedDescendants = Widget.prototype.HasFocusedDescendants; 130 | WidgetBlueprintLibrary.prototype.DrawText = WidgetBlueprintLibrary.prototype.DrawTextFormatted; 131 | WidgetBlueprintLibrary.DrawText = WidgetBlueprintLibrary.DrawTextFormatted; 132 | WidgetBlueprintLibrary.prototype.DrawString = WidgetBlueprintLibrary.prototype.DrawText; 133 | WidgetBlueprintLibrary.DrawString = WidgetBlueprintLibrary.DrawText; 134 | WidgetBlueprintLibrary.prototype.CreateWidget = WidgetBlueprintLibrary.prototype.Create; 135 | WidgetBlueprintLibrary.CreateWidget = WidgetBlueprintLibrary.Create; 136 | AnimInstance.prototype.GetTransitionTimeElapsed = AnimInstance.prototype.GetInstanceTransitionTimeElapsedFraction; 137 | AnimInstance.prototype.GetTransitionTimeElapsed = AnimInstance.prototype.GetInstanceTransitionTimeElapsed; 138 | AnimInstance.prototype.GetTransitionCrossfadeDuration = AnimInstance.prototype.GetInstanceTransitionCrossfadeDuration; 139 | AnimInstance.prototype.StateWeight = AnimInstance.prototype.GetInstanceStateWeight; 140 | AnimInstance.prototype.CurrentStateTime = AnimInstance.prototype.GetInstanceCurrentStateElapsedTime; 141 | AnimInstance.prototype.TimeRemaining = AnimInstance.prototype.GetInstanceAssetPlayerTimeFromEndFraction; 142 | AnimInstance.prototype.TimeRemaining = AnimInstance.prototype.GetInstanceAssetPlayerTimeFromEnd; 143 | AnimInstance.prototype.CurrentTime = AnimInstance.prototype.GetInstanceAssetPlayerTimeFraction; 144 | AnimInstance.prototype.CurrentTime = AnimInstance.prototype.GetInstanceAssetPlayerTime; 145 | AnimInstance.prototype.Length = AnimInstance.prototype.GetInstanceAssetPlayerLength; 146 | SkinnedMeshComponent.prototype.FindClosestBone = SkinnedMeshComponent.prototype.FindClosestBone_K2; 147 | SkeletalMeshComponent.prototype.GetClosestPointOnPhysicsAsset = SkeletalMeshComponent.prototype.K2_GetClosestPointOnPhysicsAsset; 148 | GameInstance.prototype.Shutdown = GameInstance.prototype.ReceiveShutdown; 149 | GameInstance.prototype.Init = GameInstance.prototype.ReceiveInit; 150 | GameInstance.prototype.TravelError = GameInstance.prototype.HandleTravelError; 151 | GameInstance.prototype.NetworkError = GameInstance.prototype.HandleNetworkError; 152 | World.prototype.LogBoxShape = World.prototype.LogBox; 153 | World.prototype.BoxOverlapActors = World.prototype.BoxOverlapActors_NEW; 154 | World.prototype.BoxOverlapComponents = World.prototype.BoxOverlapComponents_NEW; 155 | World.prototype.MultiBoxTraceByChannel = World.prototype.BoxTraceMulti; 156 | World.prototype.MultiBoxTraceForObjects = World.prototype.BoxTraceMultiForObjects; 157 | World.prototype.BoxTraceByChannel = World.prototype.BoxTraceSingle; 158 | World.prototype.BoxTraceForObjects = World.prototype.BoxTraceSingleForObjects; 159 | World.prototype.CapsuleOverlapActors = World.prototype.CapsuleOverlapActors_NEW; 160 | World.prototype.CapsuleOverlapComponents = World.prototype.CapsuleOverlapComponents_NEW; 161 | World.prototype.MultiCapsuleTraceByChannelDeprecated = World.prototype.CapsuleTraceMulti_DEPRECATED; 162 | World.prototype.MultiCapsuleTraceByChannel = World.prototype.CapsuleTraceMulti_NEW; 163 | World.prototype.MultiCapsuleTraceByObjectDeprecated = World.prototype.CapsuleTraceMultiByObject_DEPRECATED; 164 | World.prototype.MultiCapsuleTraceForObjects = World.prototype.CapsuleTraceMultiForObjects; 165 | World.prototype.SingleCapsuleTraceByChannelDeprecated = World.prototype.CapsuleTraceSingle_DEPRECATED; 166 | World.prototype.CapsuleTraceByChannel = World.prototype.CapsuleTraceSingle_NEW; 167 | World.prototype.SingleCapsuleTraceByObjectDeprecated = World.prototype.CapsuleTraceSingleByObject_DEPRECATED; 168 | World.prototype.CapsuleTraceForObjects = World.prototype.CapsuleTraceSingleForObjects; 169 | World.prototype.DrawDebugCone = World.prototype.DrawDebugConeInDegrees; 170 | World.prototype.ClearandInvalidateTimerbyHandle = World.prototype.K2_ClearAndInvalidateTimerHandle; 171 | World.prototype.ClearTimerbyHandle = World.prototype.K2_ClearTimerHandle; 172 | World.prototype.GetTimerElapsedTimebyHandle = World.prototype.K2_GetTimerElapsedTimeHandle; 173 | World.prototype.GetTimerRemainingTimebyHandle = World.prototype.K2_GetTimerRemainingTimeHandle; 174 | World.prototype.IsTimerActivebyHandle = World.prototype.K2_IsTimerActiveHandle; 175 | World.prototype.IsTimerPausedbyHandle = World.prototype.K2_IsTimerPausedHandle; 176 | World.prototype.PauseTimerbyHandle = World.prototype.K2_PauseTimerHandle; 177 | World.prototype.DoesTimerExistbyHandle = World.prototype.K2_TimerExistsHandle; 178 | World.prototype.UnpauseTimerbyHandle = World.prototype.K2_UnPauseTimerHandle; 179 | World.prototype.MultiLineTraceByChannelDeprecated = World.prototype.LineTraceMulti_DEPRECATED; 180 | World.prototype.MultiLineTraceByChannel = World.prototype.LineTraceMulti_NEW; 181 | World.prototype.MultiLineTraceByObjectDeprecated = World.prototype.LineTraceMultiByObject_DEPRECATED; 182 | World.prototype.MultiLineTraceForObjects = World.prototype.LineTraceMultiForObjects; 183 | World.prototype.SingleLineTraceByChannelDeprecated = World.prototype.LineTraceSingle_DEPRECATED; 184 | World.prototype.LineTraceByChannel = World.prototype.LineTraceSingle_NEW; 185 | World.prototype.SingleLineTraceByObjectDeprecated = World.prototype.LineTraceSingleByObject_DEPRECATED; 186 | World.prototype.LineTraceForObjects = World.prototype.LineTraceSingleForObjects; 187 | World.prototype.SphereOverlapActors = World.prototype.SphereOverlapActors_NEW; 188 | World.prototype.SphereOverlapComponents = World.prototype.SphereOverlapComponents_NEW; 189 | World.prototype.MultiSphereTraceByChannelDeprecated = World.prototype.SphereTraceMulti_DEPRECATED; 190 | World.prototype.MultiSphereTraceByChannel = World.prototype.SphereTraceMulti_NEW; 191 | World.prototype.MultiSphereTraceByObjectDeprecated = World.prototype.SphereTraceMultiByObject_DEPRECATED; 192 | World.prototype.MultiSphereTraceForObjects = World.prototype.SphereTraceMultiForObjects; 193 | World.prototype.SingleSphereTraceByChannelDeprecated = World.prototype.SphereTraceSingle_DEPRECATED; 194 | World.prototype.SphereTraceByChannel = World.prototype.SphereTraceSingle_NEW; 195 | World.prototype.SingleSphereTraceByObjectDeprecated = World.prototype.SphereTraceSingleByObject_DEPRECATED; 196 | World.prototype.SphereTraceForObjects = World.prototype.SphereTraceSingleForObjects; 197 | World.prototype.SuggestProjectileVelocity = World.prototype.BlueprintSuggestProjectileVelocity; 198 | World.prototype.CreateWidget = World.prototype.Create; 199 | PlayerController.prototype.ConvertWorldLocationToScreenLocation = PlayerController.prototype.ProjectWorldLocationToScreen; 200 | PlayerController.prototype.ConvertScreenLocationToWorldSpace = PlayerController.prototype.DeprojectScreenPositionToWorld; 201 | PlayerController.prototype.ConvertMouseLocationToWorldSpace = PlayerController.prototype.DeprojectMousePositionToWorld; 202 | GameMode.prototype.OnPostLogin = GameMode.prototype.K2_PostLogin; 203 | GameMode.prototype.OnSwapPlayerControllers = GameMode.prototype.K2_OnSwapPlayerControllers; 204 | GameMode.prototype.OnSetMatchState = GameMode.prototype.K2_OnSetMatchState; 205 | GameMode.prototype.OnRestartPlayer = GameMode.prototype.K2_OnRestartPlayer; 206 | GameMode.prototype.OnLogout = GameMode.prototype.K2_OnLogout; 207 | GameMode.prototype.OnChangeName = GameMode.prototype.K2_OnChangeName; 208 | GameMode.prototype.FindPlayerStart = GameMode.prototype.K2_FindPlayerStart; 209 | MovementComponent.prototype.MoveUpdatedComponent = MovementComponent.prototype.K2_MoveUpdatedComponent; 210 | MovementComponent.prototype.GetModifiedMaxSpeed = MovementComponent.prototype.K2_GetModifiedMaxSpeed; 211 | MovementComponent.prototype.GetMaxSpeedModifier = MovementComponent.prototype.K2_GetMaxSpeedModifier; 212 | PawnMovementComponent.prototype.GetInputVector = PawnMovementComponent.prototype.K2_GetInputVector; 213 | CharacterMovementComponent.prototype.GetWalkableFloorZ = CharacterMovementComponent.prototype.K2_GetWalkableFloorZ; 214 | CharacterMovementComponent.prototype.GetWalkableFloorAngle = CharacterMovementComponent.prototype.K2_GetWalkableFloorAngle; 215 | CharacterMovementComponent.prototype.GetModifiedMaxAcceleration = CharacterMovementComponent.prototype.K2_GetModifiedMaxAcceleration; 216 | AudioComponent.prototype.SetIntegerParameter = AudioComponent.prototype.SetIntParameter; 217 | AudioComponent.prototype.SetBooleanParameter = AudioComponent.prototype.SetBoolParameter; 218 | AudioComponent.prototype.GetAttenuationSettingsToApply = AudioComponent.prototype.BP_GetAttenuationSettingsToApply; 219 | ArrowComponent.prototype.SetArrowColor = ArrowComponent.prototype.SetArrowColor_New; 220 | TextRenderComponent.prototype.SetText = TextRenderComponent.prototype.K2_SetText; 221 | GameplayStatics.prototype.GetClass = GameplayStatics.prototype.GetObjectClass; 222 | GameplayStatics.GetClass = GameplayStatics.GetObjectClass; 223 | GameplayStatics.prototype.SuggestProjectileVelocity = GameplayStatics.prototype.BlueprintSuggestProjectileVelocity; 224 | GameplayStatics.SuggestProjectileVelocity = GameplayStatics.BlueprintSuggestProjectileVelocity; 225 | KismetArrayLibrary.prototype.Shuffle = KismetArrayLibrary.prototype.Array_Shuffle; 226 | KismetArrayLibrary.Shuffle = KismetArrayLibrary.Array_Shuffle; 227 | KismetArrayLibrary.prototype.SetArrayElem = KismetArrayLibrary.prototype.Array_Set; 228 | KismetArrayLibrary.SetArrayElem = KismetArrayLibrary.Array_Set; 229 | KismetArrayLibrary.prototype.Resize = KismetArrayLibrary.prototype.Array_Resize; 230 | KismetArrayLibrary.Resize = KismetArrayLibrary.Array_Resize; 231 | KismetArrayLibrary.prototype.RemoveItem = KismetArrayLibrary.prototype.Array_RemoveItem; 232 | KismetArrayLibrary.RemoveItem = KismetArrayLibrary.Array_RemoveItem; 233 | KismetArrayLibrary.prototype.RemoveIndex = KismetArrayLibrary.prototype.Array_Remove; 234 | KismetArrayLibrary.RemoveIndex = KismetArrayLibrary.Array_Remove; 235 | KismetArrayLibrary.prototype.Length = KismetArrayLibrary.prototype.Array_Length; 236 | KismetArrayLibrary.Length = KismetArrayLibrary.Array_Length; 237 | KismetArrayLibrary.prototype.LastIndex = KismetArrayLibrary.prototype.Array_LastIndex; 238 | KismetArrayLibrary.LastIndex = KismetArrayLibrary.Array_LastIndex; 239 | KismetArrayLibrary.prototype.IsValidIndex = KismetArrayLibrary.prototype.Array_IsValidIndex; 240 | KismetArrayLibrary.IsValidIndex = KismetArrayLibrary.Array_IsValidIndex; 241 | KismetArrayLibrary.prototype.Insert = KismetArrayLibrary.prototype.Array_Insert; 242 | KismetArrayLibrary.Insert = KismetArrayLibrary.Array_Insert; 243 | KismetArrayLibrary.prototype.Get = KismetArrayLibrary.prototype.Array_Get; 244 | KismetArrayLibrary.Get = KismetArrayLibrary.Array_Get; 245 | KismetArrayLibrary.prototype.FindItem = KismetArrayLibrary.prototype.Array_Find; 246 | KismetArrayLibrary.FindItem = KismetArrayLibrary.Array_Find; 247 | KismetArrayLibrary.prototype.ContainsItem = KismetArrayLibrary.prototype.Array_Contains; 248 | KismetArrayLibrary.ContainsItem = KismetArrayLibrary.Array_Contains; 249 | KismetArrayLibrary.prototype.Clear = KismetArrayLibrary.prototype.Array_Clear; 250 | KismetArrayLibrary.Clear = KismetArrayLibrary.Array_Clear; 251 | KismetArrayLibrary.prototype.AppendArray = KismetArrayLibrary.prototype.Array_Append; 252 | KismetArrayLibrary.AppendArray = KismetArrayLibrary.Array_Append; 253 | KismetArrayLibrary.prototype.AddUnique = KismetArrayLibrary.prototype.Array_AddUnique; 254 | KismetArrayLibrary.AddUnique = KismetArrayLibrary.Array_AddUnique; 255 | KismetArrayLibrary.prototype.Add = KismetArrayLibrary.prototype.Array_Add; 256 | KismetArrayLibrary.Add = KismetArrayLibrary.Array_Add; 257 | KismetGuidLibrary.prototype.ParseStringtoGuid = KismetGuidLibrary.prototype.Parse_StringToGuid; 258 | KismetGuidLibrary.ParseStringtoGuid = KismetGuidLibrary.Parse_StringToGuid; 259 | KismetGuidLibrary.prototype.NotEqual = KismetGuidLibrary.prototype.NotEqual_GuidGuid; 260 | KismetGuidLibrary.NotEqual = KismetGuidLibrary.NotEqual_GuidGuid; 261 | KismetGuidLibrary.prototype.IsValid = KismetGuidLibrary.prototype.IsValid_Guid; 262 | KismetGuidLibrary.IsValid = KismetGuidLibrary.IsValid_Guid; 263 | KismetGuidLibrary.prototype.Equal = KismetGuidLibrary.prototype.EqualEqual_GuidGuid; 264 | KismetGuidLibrary.Equal = KismetGuidLibrary.EqualEqual_GuidGuid; 265 | KismetGuidLibrary.prototype.ToString = KismetGuidLibrary.prototype.Conv_GuidToString; 266 | KismetGuidLibrary.ToString = KismetGuidLibrary.Conv_GuidToString; 267 | KismetInputLibrary.prototype.IsTouchEvent = KismetInputLibrary.prototype.PointerEvent_IsTouchEvent; 268 | KismetInputLibrary.IsTouchEvent = KismetInputLibrary.PointerEvent_IsTouchEvent; 269 | KismetInputLibrary.prototype.IsMouseButtonDown = KismetInputLibrary.prototype.PointerEvent_IsMouseButtonDown; 270 | KismetInputLibrary.IsMouseButtonDown = KismetInputLibrary.PointerEvent_IsMouseButtonDown; 271 | KismetInputLibrary.prototype.GetWheelDelta = KismetInputLibrary.prototype.PointerEvent_GetWheelDelta; 272 | KismetInputLibrary.GetWheelDelta = KismetInputLibrary.PointerEvent_GetWheelDelta; 273 | KismetInputLibrary.prototype.GetUserIndex = KismetInputLibrary.prototype.PointerEvent_GetUserIndex; 274 | KismetInputLibrary.GetUserIndex = KismetInputLibrary.PointerEvent_GetUserIndex; 275 | KismetInputLibrary.prototype.GetTouchpadIndex = KismetInputLibrary.prototype.PointerEvent_GetTouchpadIndex; 276 | KismetInputLibrary.GetTouchpadIndex = KismetInputLibrary.PointerEvent_GetTouchpadIndex; 277 | KismetInputLibrary.prototype.GetScreenSpacePosition = KismetInputLibrary.prototype.PointerEvent_GetScreenSpacePosition; 278 | KismetInputLibrary.GetScreenSpacePosition = KismetInputLibrary.PointerEvent_GetScreenSpacePosition; 279 | KismetInputLibrary.prototype.GetPointerIndex = KismetInputLibrary.prototype.PointerEvent_GetPointerIndex; 280 | KismetInputLibrary.GetPointerIndex = KismetInputLibrary.PointerEvent_GetPointerIndex; 281 | KismetInputLibrary.prototype.GetLastScreenSpacePosition = KismetInputLibrary.prototype.PointerEvent_GetLastScreenSpacePosition; 282 | KismetInputLibrary.GetLastScreenSpacePosition = KismetInputLibrary.PointerEvent_GetLastScreenSpacePosition; 283 | KismetInputLibrary.prototype.GetGestureDelta = KismetInputLibrary.prototype.PointerEvent_GetGestureDelta; 284 | KismetInputLibrary.GetGestureDelta = KismetInputLibrary.PointerEvent_GetGestureDelta; 285 | KismetInputLibrary.prototype.GetEffectingButton = KismetInputLibrary.prototype.PointerEvent_GetEffectingButton; 286 | KismetInputLibrary.GetEffectingButton = KismetInputLibrary.PointerEvent_GetEffectingButton; 287 | KismetInputLibrary.prototype.GetCursorDelta = KismetInputLibrary.prototype.PointerEvent_GetCursorDelta; 288 | KismetInputLibrary.GetCursorDelta = KismetInputLibrary.PointerEvent_GetCursorDelta; 289 | KismetInputLibrary.prototype.IsShiftDown = KismetInputLibrary.prototype.InputEvent_IsShiftDown; 290 | KismetInputLibrary.IsShiftDown = KismetInputLibrary.InputEvent_IsShiftDown; 291 | KismetInputLibrary.prototype.IsRightShiftDown = KismetInputLibrary.prototype.InputEvent_IsRightShiftDown; 292 | KismetInputLibrary.IsRightShiftDown = KismetInputLibrary.InputEvent_IsRightShiftDown; 293 | KismetInputLibrary.prototype.IsRightControlDown = KismetInputLibrary.prototype.InputEvent_IsRightControlDown; 294 | KismetInputLibrary.IsRightControlDown = KismetInputLibrary.InputEvent_IsRightControlDown; 295 | KismetInputLibrary.prototype.IsRightCommandDown = KismetInputLibrary.prototype.InputEvent_IsRightCommandDown; 296 | KismetInputLibrary.IsRightCommandDown = KismetInputLibrary.InputEvent_IsRightCommandDown; 297 | KismetInputLibrary.prototype.IsRightAltDown = KismetInputLibrary.prototype.InputEvent_IsRightAltDown; 298 | KismetInputLibrary.IsRightAltDown = KismetInputLibrary.InputEvent_IsRightAltDown; 299 | KismetInputLibrary.prototype.IsRepeat = KismetInputLibrary.prototype.InputEvent_IsRepeat; 300 | KismetInputLibrary.IsRepeat = KismetInputLibrary.InputEvent_IsRepeat; 301 | KismetInputLibrary.prototype.IsLeftShiftDown = KismetInputLibrary.prototype.InputEvent_IsLeftShiftDown; 302 | KismetInputLibrary.IsLeftShiftDown = KismetInputLibrary.InputEvent_IsLeftShiftDown; 303 | KismetInputLibrary.prototype.IsLeftControlDown = KismetInputLibrary.prototype.InputEvent_IsLeftControlDown; 304 | KismetInputLibrary.IsLeftControlDown = KismetInputLibrary.InputEvent_IsLeftControlDown; 305 | KismetInputLibrary.prototype.IsLeftCommandDown = KismetInputLibrary.prototype.InputEvent_IsLeftCommandDown; 306 | KismetInputLibrary.IsLeftCommandDown = KismetInputLibrary.InputEvent_IsLeftCommandDown; 307 | KismetInputLibrary.prototype.IsLeftAltDown = KismetInputLibrary.prototype.InputEvent_IsLeftAltDown; 308 | KismetInputLibrary.IsLeftAltDown = KismetInputLibrary.InputEvent_IsLeftAltDown; 309 | KismetInputLibrary.prototype.IsControlDown = KismetInputLibrary.prototype.InputEvent_IsControlDown; 310 | KismetInputLibrary.IsControlDown = KismetInputLibrary.InputEvent_IsControlDown; 311 | KismetInputLibrary.prototype.IsCommandDown = KismetInputLibrary.prototype.InputEvent_IsCommandDown; 312 | KismetInputLibrary.IsCommandDown = KismetInputLibrary.InputEvent_IsCommandDown; 313 | KismetInputLibrary.prototype.IsAltDown = KismetInputLibrary.prototype.InputEvent_IsAltDown; 314 | KismetInputLibrary.IsAltDown = KismetInputLibrary.InputEvent_IsAltDown; 315 | KismetInputLibrary.prototype.Equal = KismetInputLibrary.prototype.EqualEqual_KeyKey; 316 | KismetInputLibrary.Equal = KismetInputLibrary.EqualEqual_KeyKey; 317 | KismetInputLibrary.prototype.Equal = KismetInputLibrary.prototype.EqualEqual_InputChordInputChord; 318 | KismetInputLibrary.Equal = KismetInputLibrary.EqualEqual_InputChordInputChord; 319 | KismetInputLibrary.prototype.GetEffectingButton = KismetInputLibrary.prototype.ControllerEvent_GetEffectingButton; 320 | KismetInputLibrary.GetEffectingButton = KismetInputLibrary.ControllerEvent_GetEffectingButton; 321 | KismetMathLibrary.prototype.BitwiseXOR = KismetMathLibrary.prototype.Xor_IntInt; 322 | KismetMathLibrary.BitwiseXOR = KismetMathLibrary.Xor_IntInt; 323 | KismetMathLibrary.prototype.VectorLengthSquared = KismetMathLibrary.prototype.VSizeSquared; 324 | KismetMathLibrary.VectorLengthSquared = KismetMathLibrary.VSizeSquared; 325 | KismetMathLibrary.prototype.Vector2dLengthSquared = KismetMathLibrary.prototype.VSize2DSquared; 326 | KismetMathLibrary.Vector2dLengthSquared = KismetMathLibrary.VSize2DSquared; 327 | KismetMathLibrary.prototype.Vector2dLength = KismetMathLibrary.prototype.VSize2D; 328 | KismetMathLibrary.Vector2dLength = KismetMathLibrary.VSize2D; 329 | KismetMathLibrary.prototype.VectorLength = KismetMathLibrary.prototype.VSize; 330 | KismetMathLibrary.VectorLength = KismetMathLibrary.VSize; 331 | KismetMathLibrary.prototype.Lerp = KismetMathLibrary.prototype.VLerp; 332 | KismetMathLibrary.Lerp = KismetMathLibrary.VLerp; 333 | KismetMathLibrary.prototype.Ease = KismetMathLibrary.prototype.VEase; 334 | KismetMathLibrary.Ease = KismetMathLibrary.VEase; 335 | KismetMathLibrary.prototype.Lerp = KismetMathLibrary.prototype.TLerp; 336 | KismetMathLibrary.Lerp = KismetMathLibrary.TLerp; 337 | KismetMathLibrary.prototype.ZeroValue = KismetMathLibrary.prototype.TimespanZeroValue; 338 | KismetMathLibrary.ZeroValue = KismetMathLibrary.TimespanZeroValue; 339 | KismetMathLibrary.prototype.MinValue = KismetMathLibrary.prototype.TimespanMinValue; 340 | KismetMathLibrary.MinValue = KismetMathLibrary.TimespanMinValue; 341 | KismetMathLibrary.prototype.MaxValue = KismetMathLibrary.prototype.TimespanMaxValue; 342 | KismetMathLibrary.MaxValue = KismetMathLibrary.TimespanMaxValue; 343 | KismetMathLibrary.prototype.Ease = KismetMathLibrary.prototype.TEase; 344 | KismetMathLibrary.Ease = KismetMathLibrary.TEase; 345 | KismetMathLibrary.prototype.Sign = KismetMathLibrary.prototype.SignOfInteger; 346 | KismetMathLibrary.Sign = KismetMathLibrary.SignOfInteger; 347 | KismetMathLibrary.prototype.Sign = KismetMathLibrary.prototype.SignOfFloat; 348 | KismetMathLibrary.Sign = KismetMathLibrary.SignOfFloat; 349 | KismetMathLibrary.prototype.RotateVectorAroundAxis = KismetMathLibrary.prototype.RotateAngleAxis; 350 | KismetMathLibrary.RotateVectorAroundAxis = KismetMathLibrary.RotateAngleAxis; 351 | KismetMathLibrary.prototype.Lerp = KismetMathLibrary.prototype.RLerp; 352 | KismetMathLibrary.Lerp = KismetMathLibrary.RLerp; 353 | KismetMathLibrary.prototype.RGBtoHSV = KismetMathLibrary.prototype.RGBToHSV_Vector; 354 | KismetMathLibrary.RGBtoHSV = KismetMathLibrary.RGBToHSV_Vector; 355 | KismetMathLibrary.prototype.Ease = KismetMathLibrary.prototype.REase; 356 | KismetMathLibrary.Ease = KismetMathLibrary.REase; 357 | KismetMathLibrary.prototype.BitwiseOR = KismetMathLibrary.prototype.Or_IntInt; 358 | KismetMathLibrary.BitwiseOR = KismetMathLibrary.Or_IntInt; 359 | KismetMathLibrary.prototype.NotEqual = KismetMathLibrary.prototype.NotEqual_VectorVector; 360 | KismetMathLibrary.NotEqual = KismetMathLibrary.NotEqual_VectorVector; 361 | KismetMathLibrary.prototype.NotEqual = KismetMathLibrary.prototype.NotEqual_Vector2DVector2D; 362 | KismetMathLibrary.NotEqual = KismetMathLibrary.NotEqual_Vector2DVector2D; 363 | KismetMathLibrary.prototype.NotEqual = KismetMathLibrary.prototype.NotEqual_TimespanTimespan; 364 | KismetMathLibrary.NotEqual = KismetMathLibrary.NotEqual_TimespanTimespan; 365 | KismetMathLibrary.prototype.NotEqual = KismetMathLibrary.prototype.NotEqual_RotatorRotator; 366 | KismetMathLibrary.NotEqual = KismetMathLibrary.NotEqual_RotatorRotator; 367 | KismetMathLibrary.prototype.NotEqual = KismetMathLibrary.prototype.NotEqual_ObjectObject; 368 | KismetMathLibrary.NotEqual = KismetMathLibrary.NotEqual_ObjectObject; 369 | KismetMathLibrary.prototype.NotEqual = KismetMathLibrary.prototype.NotEqual_NameName; 370 | KismetMathLibrary.NotEqual = KismetMathLibrary.NotEqual_NameName; 371 | KismetMathLibrary.prototype.NotEqual = KismetMathLibrary.prototype.NotEqual_IntInt; 372 | KismetMathLibrary.NotEqual = KismetMathLibrary.NotEqual_IntInt; 373 | KismetMathLibrary.prototype.NotEqual = KismetMathLibrary.prototype.NotEqual_FloatFloat; 374 | KismetMathLibrary.NotEqual = KismetMathLibrary.NotEqual_FloatFloat; 375 | KismetMathLibrary.prototype.NotEqual = KismetMathLibrary.prototype.NotEqual_DateTimeDateTime; 376 | KismetMathLibrary.NotEqual = KismetMathLibrary.NotEqual_DateTimeDateTime; 377 | KismetMathLibrary.prototype.NotEqual = KismetMathLibrary.prototype.NotEqual_ClassClass; 378 | KismetMathLibrary.NotEqual = KismetMathLibrary.NotEqual_ClassClass; 379 | KismetMathLibrary.prototype.NotEqual = KismetMathLibrary.prototype.NotEqual_ByteByte; 380 | KismetMathLibrary.NotEqual = KismetMathLibrary.NotEqual_ByteByte; 381 | KismetMathLibrary.prototype.NotEqualBoolean = KismetMathLibrary.prototype.NotEqual_BoolBool; 382 | KismetMathLibrary.NotEqualBoolean = KismetMathLibrary.NotEqual_BoolBool; 383 | KismetMathLibrary.prototype.NOTBoolean = KismetMathLibrary.prototype.Not_PreBool; 384 | KismetMathLibrary.NOTBoolean = KismetMathLibrary.Not_PreBool; 385 | KismetMathLibrary.prototype.BitwiseNOT = KismetMathLibrary.prototype.Not_Int; 386 | KismetMathLibrary.BitwiseNOT = KismetMathLibrary.Not_Int; 387 | KismetMathLibrary.prototype.Delta = KismetMathLibrary.prototype.NormalizedDeltaRotator; 388 | KismetMathLibrary.Delta = KismetMathLibrary.NormalizedDeltaRotator; 389 | KismetMathLibrary.prototype.Normalize2D = KismetMathLibrary.prototype.Normal2D; 390 | KismetMathLibrary.Normalize2D = KismetMathLibrary.Normal2D; 391 | KismetMathLibrary.prototype.Normalize = KismetMathLibrary.prototype.Normal; 392 | KismetMathLibrary.Normalize = KismetMathLibrary.Normal; 393 | KismetMathLibrary.prototype.InvertRotator = KismetMathLibrary.prototype.NegateRotator; 394 | KismetMathLibrary.InvertRotator = KismetMathLibrary.NegateRotator; 395 | KismetMathLibrary.prototype.NearlyEqual = KismetMathLibrary.prototype.NearlyEqual_TransformTransform; 396 | KismetMathLibrary.NearlyEqual = KismetMathLibrary.NearlyEqual_TransformTransform; 397 | KismetMathLibrary.prototype.NearlyEqual = KismetMathLibrary.prototype.NearlyEqual_FloatFloat; 398 | KismetMathLibrary.NearlyEqual = KismetMathLibrary.NearlyEqual_FloatFloat; 399 | KismetMathLibrary.prototype.Power = KismetMathLibrary.prototype.MultiplyMultiply_FloatFloat; 400 | KismetMathLibrary.Power = KismetMathLibrary.MultiplyMultiply_FloatFloat; 401 | KismetMathLibrary.prototype.ScaleRotator = KismetMathLibrary.prototype.Multiply_RotatorInt; 402 | KismetMathLibrary.ScaleRotator = KismetMathLibrary.Multiply_RotatorInt; 403 | KismetMathLibrary.prototype.ScaleRotator = KismetMathLibrary.prototype.Multiply_RotatorFloat; 404 | KismetMathLibrary.ScaleRotator = KismetMathLibrary.Multiply_RotatorFloat; 405 | KismetMathLibrary.prototype.LinePlaneIntersection = KismetMathLibrary.prototype.LinePlaneIntersection_OriginNormal; 406 | KismetMathLibrary.LinePlaneIntersection = KismetMathLibrary.LinePlaneIntersection_OriginNormal; 407 | KismetMathLibrary.prototype.LerpUsingHSV = KismetMathLibrary.prototype.LinearColorLerpUsingHSV; 408 | KismetMathLibrary.LerpUsingHSV = KismetMathLibrary.LinearColorLerpUsingHSV; 409 | KismetMathLibrary.prototype.Lerp = KismetMathLibrary.prototype.LinearColorLerp; 410 | KismetMathLibrary.Lerp = KismetMathLibrary.LinearColorLerp; 411 | KismetMathLibrary.prototype.UnrotateVector = KismetMathLibrary.prototype.LessLess_VectorRotator; 412 | KismetMathLibrary.UnrotateVector = KismetMathLibrary.LessLess_VectorRotator; 413 | KismetMathLibrary.prototype.InRange = KismetMathLibrary.prototype.InRange_FloatFloat; 414 | KismetMathLibrary.InRange = KismetMathLibrary.InRange_FloatFloat; 415 | KismetMathLibrary.prototype.HSVtoRGB = KismetMathLibrary.prototype.HSVToRGB_Vector; 416 | KismetMathLibrary.HSVtoRGB = KismetMathLibrary.HSVToRGB_Vector; 417 | KismetMathLibrary.prototype.Snaptogrid = KismetMathLibrary.prototype.GridSnap_Float; 418 | KismetMathLibrary.Snaptogrid = KismetMathLibrary.GridSnap_Float; 419 | KismetMathLibrary.prototype.RotateVector = KismetMathLibrary.prototype.GreaterGreater_VectorRotator; 420 | KismetMathLibrary.RotateVector = KismetMathLibrary.GreaterGreater_VectorRotator; 421 | KismetMathLibrary.prototype.Truncate = KismetMathLibrary.prototype.FTrunc; 422 | KismetMathLibrary.Truncate = KismetMathLibrary.FTrunc; 423 | KismetMathLibrary.prototype.Division = KismetMathLibrary.prototype.FMod; 424 | KismetMathLibrary.Division = KismetMathLibrary.FMod; 425 | KismetMathLibrary.prototype.Min = KismetMathLibrary.prototype.FMin; 426 | KismetMathLibrary.Min = KismetMathLibrary.FMin; 427 | KismetMathLibrary.prototype.Max = KismetMathLibrary.prototype.FMax; 428 | KismetMathLibrary.Max = KismetMathLibrary.FMax; 429 | KismetMathLibrary.prototype.Floor = KismetMathLibrary.prototype.FFloor; 430 | KismetMathLibrary.Floor = KismetMathLibrary.FFloor; 431 | KismetMathLibrary.prototype.Clamp = KismetMathLibrary.prototype.FClamp; 432 | KismetMathLibrary.Clamp = KismetMathLibrary.FClamp; 433 | KismetMathLibrary.prototype.Equal = KismetMathLibrary.prototype.EqualEqual_VectorVector; 434 | KismetMathLibrary.Equal = KismetMathLibrary.EqualEqual_VectorVector; 435 | KismetMathLibrary.prototype.Equal = KismetMathLibrary.prototype.EqualEqual_Vector2DVector2D; 436 | KismetMathLibrary.Equal = KismetMathLibrary.EqualEqual_Vector2DVector2D; 437 | KismetMathLibrary.prototype.EqualTransform = KismetMathLibrary.prototype.EqualEqual_TransformTransform; 438 | KismetMathLibrary.EqualTransform = KismetMathLibrary.EqualEqual_TransformTransform; 439 | KismetMathLibrary.prototype.Equal = KismetMathLibrary.prototype.EqualEqual_TimespanTimespan; 440 | KismetMathLibrary.Equal = KismetMathLibrary.EqualEqual_TimespanTimespan; 441 | KismetMathLibrary.prototype.Equal = KismetMathLibrary.prototype.EqualEqual_RotatorRotator; 442 | KismetMathLibrary.Equal = KismetMathLibrary.EqualEqual_RotatorRotator; 443 | KismetMathLibrary.prototype.Equal = KismetMathLibrary.prototype.EqualEqual_ObjectObject; 444 | KismetMathLibrary.Equal = KismetMathLibrary.EqualEqual_ObjectObject; 445 | KismetMathLibrary.prototype.Equal = KismetMathLibrary.prototype.EqualEqual_NameName; 446 | KismetMathLibrary.Equal = KismetMathLibrary.EqualEqual_NameName; 447 | KismetMathLibrary.prototype.Equal = KismetMathLibrary.prototype.EqualEqual_IntInt; 448 | KismetMathLibrary.Equal = KismetMathLibrary.EqualEqual_IntInt; 449 | KismetMathLibrary.prototype.Equal = KismetMathLibrary.prototype.EqualEqual_FloatFloat; 450 | KismetMathLibrary.Equal = KismetMathLibrary.EqualEqual_FloatFloat; 451 | KismetMathLibrary.prototype.Equal = KismetMathLibrary.prototype.EqualEqual_DateTimeDateTime; 452 | KismetMathLibrary.Equal = KismetMathLibrary.EqualEqual_DateTimeDateTime; 453 | KismetMathLibrary.prototype.Equal = KismetMathLibrary.prototype.EqualEqual_ClassClass; 454 | KismetMathLibrary.Equal = KismetMathLibrary.EqualEqual_ClassClass; 455 | KismetMathLibrary.prototype.Equal = KismetMathLibrary.prototype.EqualEqual_ByteByte; 456 | KismetMathLibrary.Equal = KismetMathLibrary.EqualEqual_ByteByte; 457 | KismetMathLibrary.prototype.EqualBoolean = KismetMathLibrary.prototype.EqualEqual_BoolBool; 458 | KismetMathLibrary.EqualBoolean = KismetMathLibrary.EqualEqual_BoolBool; 459 | KismetMathLibrary.prototype.DotProduct = KismetMathLibrary.prototype.DotProduct2D; 460 | KismetMathLibrary.DotProduct = KismetMathLibrary.DotProduct2D; 461 | KismetMathLibrary.prototype.DotProduct = KismetMathLibrary.prototype.Dot_VectorVector; 462 | KismetMathLibrary.DotProduct = KismetMathLibrary.Dot_VectorVector; 463 | KismetMathLibrary.prototype.Tan = KismetMathLibrary.prototype.DegTan; 464 | KismetMathLibrary.Tan = KismetMathLibrary.DegTan; 465 | KismetMathLibrary.prototype.Sin = KismetMathLibrary.prototype.DegSin; 466 | KismetMathLibrary.Sin = KismetMathLibrary.DegSin; 467 | KismetMathLibrary.prototype.Cos = KismetMathLibrary.prototype.DegCos; 468 | KismetMathLibrary.Cos = KismetMathLibrary.DegCos; 469 | KismetMathLibrary.prototype.Atan2 = KismetMathLibrary.prototype.DegAtan2; 470 | KismetMathLibrary.Atan2 = KismetMathLibrary.DegAtan2; 471 | KismetMathLibrary.prototype.Atan = KismetMathLibrary.prototype.DegAtan; 472 | KismetMathLibrary.Atan = KismetMathLibrary.DegAtan; 473 | KismetMathLibrary.prototype.Asin = KismetMathLibrary.prototype.DegAsin; 474 | KismetMathLibrary.Asin = KismetMathLibrary.DegAsin; 475 | KismetMathLibrary.prototype.Acos = KismetMathLibrary.prototype.DegAcos; 476 | KismetMathLibrary.Acos = KismetMathLibrary.DegAcos; 477 | KismetMathLibrary.prototype.MinValue = KismetMathLibrary.prototype.DateTimeMinValue; 478 | KismetMathLibrary.MinValue = KismetMathLibrary.DateTimeMinValue; 479 | KismetMathLibrary.prototype.MaxValue = KismetMathLibrary.prototype.DateTimeMaxValue; 480 | KismetMathLibrary.MaxValue = KismetMathLibrary.DateTimeMaxValue; 481 | KismetMathLibrary.prototype.CrossProduct = KismetMathLibrary.prototype.CrossProduct2D; 482 | KismetMathLibrary.CrossProduct = KismetMathLibrary.CrossProduct2D; 483 | KismetMathLibrary.prototype.CrossProduct = KismetMathLibrary.prototype.Cross_VectorVector; 484 | KismetMathLibrary.CrossProduct = KismetMathLibrary.Cross_VectorVector; 485 | KismetMathLibrary.prototype.ToVector2D = KismetMathLibrary.prototype.Conv_VectorToVector2D; 486 | KismetMathLibrary.ToVector2D = KismetMathLibrary.Conv_VectorToVector2D; 487 | KismetMathLibrary.prototype.ToTransform = KismetMathLibrary.prototype.Conv_VectorToTransform; 488 | KismetMathLibrary.ToTransform = KismetMathLibrary.Conv_VectorToTransform; 489 | KismetMathLibrary.prototype.RotationFromXVector = KismetMathLibrary.prototype.Conv_VectorToRotator; 490 | KismetMathLibrary.RotationFromXVector = KismetMathLibrary.Conv_VectorToRotator; 491 | KismetMathLibrary.prototype.ToLinearColor = KismetMathLibrary.prototype.Conv_VectorToLinearColor; 492 | KismetMathLibrary.ToLinearColor = KismetMathLibrary.Conv_VectorToLinearColor; 493 | KismetMathLibrary.prototype.ToVector = KismetMathLibrary.prototype.Conv_Vector2DToVector; 494 | KismetMathLibrary.ToVector = KismetMathLibrary.Conv_Vector2DToVector; 495 | KismetMathLibrary.prototype.GetRotationXVector = KismetMathLibrary.prototype.Conv_RotatorToVector; 496 | KismetMathLibrary.GetRotationXVector = KismetMathLibrary.Conv_RotatorToVector; 497 | KismetMathLibrary.prototype.ToVector = KismetMathLibrary.prototype.Conv_LinearColorToVector; 498 | KismetMathLibrary.ToVector = KismetMathLibrary.Conv_LinearColorToVector; 499 | KismetMathLibrary.prototype.ToColor = KismetMathLibrary.prototype.Conv_LinearColorToColor; 500 | KismetMathLibrary.ToColor = KismetMathLibrary.Conv_LinearColorToColor; 501 | KismetMathLibrary.prototype.ToFloat = KismetMathLibrary.prototype.Conv_IntToFloat; 502 | KismetMathLibrary.ToFloat = KismetMathLibrary.Conv_IntToFloat; 503 | KismetMathLibrary.prototype.ToByte = KismetMathLibrary.prototype.Conv_IntToByte; 504 | KismetMathLibrary.ToByte = KismetMathLibrary.Conv_IntToByte; 505 | KismetMathLibrary.prototype.ToBool = KismetMathLibrary.prototype.Conv_IntToBool; 506 | KismetMathLibrary.ToBool = KismetMathLibrary.Conv_IntToBool; 507 | KismetMathLibrary.prototype.ToVector = KismetMathLibrary.prototype.Conv_FloatToVector; 508 | KismetMathLibrary.ToVector = KismetMathLibrary.Conv_FloatToVector; 509 | KismetMathLibrary.prototype.ToLinearColor = KismetMathLibrary.prototype.Conv_FloatToLinearColor; 510 | KismetMathLibrary.ToLinearColor = KismetMathLibrary.Conv_FloatToLinearColor; 511 | KismetMathLibrary.prototype.ToLinearColor = KismetMathLibrary.prototype.Conv_ColorToLinearColor; 512 | KismetMathLibrary.ToLinearColor = KismetMathLibrary.Conv_ColorToLinearColor; 513 | KismetMathLibrary.prototype.ToInt = KismetMathLibrary.prototype.Conv_ByteToInt; 514 | KismetMathLibrary.ToInt = KismetMathLibrary.Conv_ByteToInt; 515 | KismetMathLibrary.prototype.ToFloat = KismetMathLibrary.prototype.Conv_ByteToFloat; 516 | KismetMathLibrary.ToFloat = KismetMathLibrary.Conv_ByteToFloat; 517 | KismetMathLibrary.prototype.ToInt = KismetMathLibrary.prototype.Conv_BoolToInt; 518 | KismetMathLibrary.ToInt = KismetMathLibrary.Conv_BoolToInt; 519 | KismetMathLibrary.prototype.ToFloat = KismetMathLibrary.prototype.Conv_BoolToFloat; 520 | KismetMathLibrary.ToFloat = KismetMathLibrary.Conv_BoolToFloat; 521 | KismetMathLibrary.prototype.ToByte = KismetMathLibrary.prototype.Conv_BoolToByte; 522 | KismetMathLibrary.ToByte = KismetMathLibrary.Conv_BoolToByte; 523 | KismetMathLibrary.prototype.CombineRotators = KismetMathLibrary.prototype.ComposeRotators; 524 | KismetMathLibrary.CombineRotators = KismetMathLibrary.ComposeRotators; 525 | KismetMathLibrary.prototype.XORBoolean = KismetMathLibrary.prototype.BooleanXOR; 526 | KismetMathLibrary.XORBoolean = KismetMathLibrary.BooleanXOR; 527 | KismetMathLibrary.prototype.ORBoolean = KismetMathLibrary.prototype.BooleanOR; 528 | KismetMathLibrary.ORBoolean = KismetMathLibrary.BooleanOR; 529 | KismetMathLibrary.prototype.NORBoolean = KismetMathLibrary.prototype.BooleanNOR; 530 | KismetMathLibrary.NORBoolean = KismetMathLibrary.BooleanNOR; 531 | KismetMathLibrary.prototype.NANDBoolean = KismetMathLibrary.prototype.BooleanNAND; 532 | KismetMathLibrary.NANDBoolean = KismetMathLibrary.BooleanNAND; 533 | KismetMathLibrary.prototype.ANDBoolean = KismetMathLibrary.prototype.BooleanAND; 534 | KismetMathLibrary.ANDBoolean = KismetMathLibrary.BooleanAND; 535 | KismetMathLibrary.prototype.Min = KismetMathLibrary.prototype.BMin; 536 | KismetMathLibrary.Min = KismetMathLibrary.BMin; 537 | KismetMathLibrary.prototype.Max = KismetMathLibrary.prototype.BMax; 538 | KismetMathLibrary.Max = KismetMathLibrary.BMax; 539 | KismetMathLibrary.prototype.BitwiseAND = KismetMathLibrary.prototype.And_IntInt; 540 | KismetMathLibrary.BitwiseAND = KismetMathLibrary.And_IntInt; 541 | KismetMathLibrary.prototype.Absolute = KismetMathLibrary.prototype.Abs_Int; 542 | KismetMathLibrary.Absolute = KismetMathLibrary.Abs_Int; 543 | KismetMathLibrary.prototype.Absolute = KismetMathLibrary.prototype.Abs; 544 | KismetMathLibrary.Absolute = KismetMathLibrary.Abs; 545 | KismetStringLibrary.prototype.NotEqual = KismetStringLibrary.prototype.NotEqual_StrStr; 546 | KismetStringLibrary.NotEqual = KismetStringLibrary.NotEqual_StrStr; 547 | KismetStringLibrary.prototype.Equal = KismetStringLibrary.prototype.EqualEqual_StrStr; 548 | KismetStringLibrary.Equal = KismetStringLibrary.EqualEqual_StrStr; 549 | KismetStringLibrary.prototype.ToString = KismetStringLibrary.prototype.Conv_VectorToString; 550 | KismetStringLibrary.ToString = KismetStringLibrary.Conv_VectorToString; 551 | KismetStringLibrary.prototype.ToString = KismetStringLibrary.prototype.Conv_Vector2dToString; 552 | KismetStringLibrary.ToString = KismetStringLibrary.Conv_Vector2dToString; 553 | KismetStringLibrary.prototype.ToString = KismetStringLibrary.prototype.Conv_TransformToString; 554 | KismetStringLibrary.ToString = KismetStringLibrary.Conv_TransformToString; 555 | KismetStringLibrary.prototype.StringtoVector2D = KismetStringLibrary.prototype.Conv_StringToVector2D; 556 | KismetStringLibrary.StringtoVector2D = KismetStringLibrary.Conv_StringToVector2D; 557 | KismetStringLibrary.prototype.StringtoVector = KismetStringLibrary.prototype.Conv_StringToVector; 558 | KismetStringLibrary.StringtoVector = KismetStringLibrary.Conv_StringToVector; 559 | KismetStringLibrary.prototype.StringtoRotator = KismetStringLibrary.prototype.Conv_StringToRotator; 560 | KismetStringLibrary.StringtoRotator = KismetStringLibrary.Conv_StringToRotator; 561 | KismetStringLibrary.prototype.StringToName = KismetStringLibrary.prototype.Conv_StringToName; 562 | KismetStringLibrary.StringToName = KismetStringLibrary.Conv_StringToName; 563 | KismetStringLibrary.prototype.StringToInt = KismetStringLibrary.prototype.Conv_StringToInt; 564 | KismetStringLibrary.StringToInt = KismetStringLibrary.Conv_StringToInt; 565 | KismetStringLibrary.prototype.StringToFloat = KismetStringLibrary.prototype.Conv_StringToFloat; 566 | KismetStringLibrary.StringToFloat = KismetStringLibrary.Conv_StringToFloat; 567 | KismetStringLibrary.prototype.StringtoColor = KismetStringLibrary.prototype.Conv_StringToColor; 568 | KismetStringLibrary.StringtoColor = KismetStringLibrary.Conv_StringToColor; 569 | KismetStringLibrary.prototype.ToString = KismetStringLibrary.prototype.Conv_RotatorToString; 570 | KismetStringLibrary.ToString = KismetStringLibrary.Conv_RotatorToString; 571 | KismetStringLibrary.prototype.ToString = KismetStringLibrary.prototype.Conv_ObjectToString; 572 | KismetStringLibrary.ToString = KismetStringLibrary.Conv_ObjectToString; 573 | KismetStringLibrary.prototype.ToString = KismetStringLibrary.prototype.Conv_NameToString; 574 | KismetStringLibrary.ToString = KismetStringLibrary.Conv_NameToString; 575 | KismetStringLibrary.prototype.ToString = KismetStringLibrary.prototype.Conv_IntToString; 576 | KismetStringLibrary.ToString = KismetStringLibrary.Conv_IntToString; 577 | KismetStringLibrary.prototype.ToString = KismetStringLibrary.prototype.Conv_FloatToString; 578 | KismetStringLibrary.ToString = KismetStringLibrary.Conv_FloatToString; 579 | KismetStringLibrary.prototype.ToString = KismetStringLibrary.prototype.Conv_ColorToString; 580 | KismetStringLibrary.ToString = KismetStringLibrary.Conv_ColorToString; 581 | KismetStringLibrary.prototype.ToString = KismetStringLibrary.prototype.Conv_ByteToString; 582 | KismetStringLibrary.ToString = KismetStringLibrary.Conv_ByteToString; 583 | KismetStringLibrary.prototype.ToString = KismetStringLibrary.prototype.Conv_BoolToString; 584 | KismetStringLibrary.ToString = KismetStringLibrary.Conv_BoolToString; 585 | KismetStringLibrary.prototype.Append = KismetStringLibrary.prototype.Concat_StrStr; 586 | KismetStringLibrary.Append = KismetStringLibrary.Concat_StrStr; 587 | KismetStringLibrary.prototype.BuildString = KismetStringLibrary.prototype.BuildString_Vector2d; 588 | KismetStringLibrary.BuildString = KismetStringLibrary.BuildString_Vector2d; 589 | KismetStringLibrary.prototype.BuildString = KismetStringLibrary.prototype.BuildString_Vector; 590 | KismetStringLibrary.BuildString = KismetStringLibrary.BuildString_Vector; 591 | KismetStringLibrary.prototype.BuildString = KismetStringLibrary.prototype.BuildString_Rotator; 592 | KismetStringLibrary.BuildString = KismetStringLibrary.BuildString_Rotator; 593 | KismetStringLibrary.prototype.BuildString = KismetStringLibrary.prototype.BuildString_Object; 594 | KismetStringLibrary.BuildString = KismetStringLibrary.BuildString_Object; 595 | KismetStringLibrary.prototype.BuildString = KismetStringLibrary.prototype.BuildString_Name; 596 | KismetStringLibrary.BuildString = KismetStringLibrary.BuildString_Name; 597 | KismetStringLibrary.prototype.BuildString = KismetStringLibrary.prototype.BuildString_Int; 598 | KismetStringLibrary.BuildString = KismetStringLibrary.BuildString_Int; 599 | KismetStringLibrary.prototype.BuildString = KismetStringLibrary.prototype.BuildString_Float; 600 | KismetStringLibrary.BuildString = KismetStringLibrary.BuildString_Float; 601 | KismetStringLibrary.prototype.BuildString = KismetStringLibrary.prototype.BuildString_Color; 602 | KismetStringLibrary.BuildString = KismetStringLibrary.BuildString_Color; 603 | KismetStringLibrary.prototype.BuildString = KismetStringLibrary.prototype.BuildString_Bool; 604 | KismetStringLibrary.BuildString = KismetStringLibrary.BuildString_Bool; 605 | KismetSystemLibrary.prototype.SphereTraceForObjects = KismetSystemLibrary.prototype.SphereTraceSingleForObjects; 606 | KismetSystemLibrary.SphereTraceForObjects = KismetSystemLibrary.SphereTraceSingleForObjects; 607 | KismetSystemLibrary.prototype.SingleSphereTraceByObjectDeprecated = KismetSystemLibrary.prototype.SphereTraceSingleByObject_DEPRECATED; 608 | KismetSystemLibrary.SingleSphereTraceByObjectDeprecated = KismetSystemLibrary.SphereTraceSingleByObject_DEPRECATED; 609 | KismetSystemLibrary.prototype.SphereTraceByChannel = KismetSystemLibrary.prototype.SphereTraceSingle_NEW; 610 | KismetSystemLibrary.SphereTraceByChannel = KismetSystemLibrary.SphereTraceSingle_NEW; 611 | KismetSystemLibrary.prototype.SingleSphereTraceByChannelDeprecated = KismetSystemLibrary.prototype.SphereTraceSingle_DEPRECATED; 612 | KismetSystemLibrary.SingleSphereTraceByChannelDeprecated = KismetSystemLibrary.SphereTraceSingle_DEPRECATED; 613 | KismetSystemLibrary.prototype.MultiSphereTraceForObjects = KismetSystemLibrary.prototype.SphereTraceMultiForObjects; 614 | KismetSystemLibrary.MultiSphereTraceForObjects = KismetSystemLibrary.SphereTraceMultiForObjects; 615 | KismetSystemLibrary.prototype.MultiSphereTraceByObjectDeprecated = KismetSystemLibrary.prototype.SphereTraceMultiByObject_DEPRECATED; 616 | KismetSystemLibrary.MultiSphereTraceByObjectDeprecated = KismetSystemLibrary.SphereTraceMultiByObject_DEPRECATED; 617 | KismetSystemLibrary.prototype.MultiSphereTraceByChannel = KismetSystemLibrary.prototype.SphereTraceMulti_NEW; 618 | KismetSystemLibrary.MultiSphereTraceByChannel = KismetSystemLibrary.SphereTraceMulti_NEW; 619 | KismetSystemLibrary.prototype.MultiSphereTraceByChannelDeprecated = KismetSystemLibrary.prototype.SphereTraceMulti_DEPRECATED; 620 | KismetSystemLibrary.MultiSphereTraceByChannelDeprecated = KismetSystemLibrary.SphereTraceMulti_DEPRECATED; 621 | KismetSystemLibrary.prototype.SphereOverlapComponents = KismetSystemLibrary.prototype.SphereOverlapComponents_NEW; 622 | KismetSystemLibrary.SphereOverlapComponents = KismetSystemLibrary.SphereOverlapComponents_NEW; 623 | KismetSystemLibrary.prototype.SphereOverlapActors = KismetSystemLibrary.prototype.SphereOverlapActors_NEW; 624 | KismetSystemLibrary.SphereOverlapActors = KismetSystemLibrary.SphereOverlapActors_NEW; 625 | KismetSystemLibrary.prototype.LineTraceForObjects = KismetSystemLibrary.prototype.LineTraceSingleForObjects; 626 | KismetSystemLibrary.LineTraceForObjects = KismetSystemLibrary.LineTraceSingleForObjects; 627 | KismetSystemLibrary.prototype.SingleLineTraceByObjectDeprecated = KismetSystemLibrary.prototype.LineTraceSingleByObject_DEPRECATED; 628 | KismetSystemLibrary.SingleLineTraceByObjectDeprecated = KismetSystemLibrary.LineTraceSingleByObject_DEPRECATED; 629 | KismetSystemLibrary.prototype.LineTraceByChannel = KismetSystemLibrary.prototype.LineTraceSingle_NEW; 630 | KismetSystemLibrary.LineTraceByChannel = KismetSystemLibrary.LineTraceSingle_NEW; 631 | KismetSystemLibrary.prototype.SingleLineTraceByChannelDeprecated = KismetSystemLibrary.prototype.LineTraceSingle_DEPRECATED; 632 | KismetSystemLibrary.SingleLineTraceByChannelDeprecated = KismetSystemLibrary.LineTraceSingle_DEPRECATED; 633 | KismetSystemLibrary.prototype.MultiLineTraceForObjects = KismetSystemLibrary.prototype.LineTraceMultiForObjects; 634 | KismetSystemLibrary.MultiLineTraceForObjects = KismetSystemLibrary.LineTraceMultiForObjects; 635 | KismetSystemLibrary.prototype.MultiLineTraceByObjectDeprecated = KismetSystemLibrary.prototype.LineTraceMultiByObject_DEPRECATED; 636 | KismetSystemLibrary.MultiLineTraceByObjectDeprecated = KismetSystemLibrary.LineTraceMultiByObject_DEPRECATED; 637 | KismetSystemLibrary.prototype.MultiLineTraceByChannel = KismetSystemLibrary.prototype.LineTraceMulti_NEW; 638 | KismetSystemLibrary.MultiLineTraceByChannel = KismetSystemLibrary.LineTraceMulti_NEW; 639 | KismetSystemLibrary.prototype.MultiLineTraceByChannelDeprecated = KismetSystemLibrary.prototype.LineTraceMulti_DEPRECATED; 640 | KismetSystemLibrary.MultiLineTraceByChannelDeprecated = KismetSystemLibrary.LineTraceMulti_DEPRECATED; 641 | KismetSystemLibrary.prototype.UnpauseTimerbyHandle = KismetSystemLibrary.prototype.K2_UnPauseTimerHandle; 642 | KismetSystemLibrary.UnpauseTimerbyHandle = KismetSystemLibrary.K2_UnPauseTimerHandle; 643 | KismetSystemLibrary.prototype.UnpauseTimerbyFunctionName = KismetSystemLibrary.prototype.K2_UnPauseTimer; 644 | KismetSystemLibrary.UnpauseTimerbyFunctionName = KismetSystemLibrary.K2_UnPauseTimer; 645 | KismetSystemLibrary.prototype.DoesTimerExistbyHandle = KismetSystemLibrary.prototype.K2_TimerExistsHandle; 646 | KismetSystemLibrary.DoesTimerExistbyHandle = KismetSystemLibrary.K2_TimerExistsHandle; 647 | KismetSystemLibrary.prototype.DoesTimerExistbyFunctionName = KismetSystemLibrary.prototype.K2_TimerExists; 648 | KismetSystemLibrary.DoesTimerExistbyFunctionName = KismetSystemLibrary.K2_TimerExists; 649 | KismetSystemLibrary.prototype.SetTimerbyFunctionName = KismetSystemLibrary.prototype.K2_SetTimer; 650 | KismetSystemLibrary.SetTimerbyFunctionName = KismetSystemLibrary.K2_SetTimer; 651 | KismetSystemLibrary.prototype.PauseTimerbyHandle = KismetSystemLibrary.prototype.K2_PauseTimerHandle; 652 | KismetSystemLibrary.PauseTimerbyHandle = KismetSystemLibrary.K2_PauseTimerHandle; 653 | KismetSystemLibrary.prototype.PauseTimerbyFunctionName = KismetSystemLibrary.prototype.K2_PauseTimer; 654 | KismetSystemLibrary.PauseTimerbyFunctionName = KismetSystemLibrary.K2_PauseTimer; 655 | KismetSystemLibrary.prototype.IsValid = KismetSystemLibrary.prototype.K2_IsValidTimerHandle; 656 | KismetSystemLibrary.IsValid = KismetSystemLibrary.K2_IsValidTimerHandle; 657 | KismetSystemLibrary.prototype.IsTimerPausedbyHandle = KismetSystemLibrary.prototype.K2_IsTimerPausedHandle; 658 | KismetSystemLibrary.IsTimerPausedbyHandle = KismetSystemLibrary.K2_IsTimerPausedHandle; 659 | KismetSystemLibrary.prototype.IsTimerPausedbyFunctionName = KismetSystemLibrary.prototype.K2_IsTimerPaused; 660 | KismetSystemLibrary.IsTimerPausedbyFunctionName = KismetSystemLibrary.K2_IsTimerPaused; 661 | KismetSystemLibrary.prototype.IsTimerActivebyHandle = KismetSystemLibrary.prototype.K2_IsTimerActiveHandle; 662 | KismetSystemLibrary.IsTimerActivebyHandle = KismetSystemLibrary.K2_IsTimerActiveHandle; 663 | KismetSystemLibrary.prototype.IsTimerActivebyFunctionName = KismetSystemLibrary.prototype.K2_IsTimerActive; 664 | KismetSystemLibrary.IsTimerActivebyFunctionName = KismetSystemLibrary.K2_IsTimerActive; 665 | KismetSystemLibrary.prototype.Invalidate = KismetSystemLibrary.prototype.K2_InvalidateTimerHandle; 666 | KismetSystemLibrary.Invalidate = KismetSystemLibrary.K2_InvalidateTimerHandle; 667 | KismetSystemLibrary.prototype.GetTimerRemainingTimebyHandle = KismetSystemLibrary.prototype.K2_GetTimerRemainingTimeHandle; 668 | KismetSystemLibrary.GetTimerRemainingTimebyHandle = KismetSystemLibrary.K2_GetTimerRemainingTimeHandle; 669 | KismetSystemLibrary.prototype.GetTimerRemainingTimebyFunctionName = KismetSystemLibrary.prototype.K2_GetTimerRemainingTime; 670 | KismetSystemLibrary.GetTimerRemainingTimebyFunctionName = KismetSystemLibrary.K2_GetTimerRemainingTime; 671 | KismetSystemLibrary.prototype.GetTimerElapsedTimebyHandle = KismetSystemLibrary.prototype.K2_GetTimerElapsedTimeHandle; 672 | KismetSystemLibrary.GetTimerElapsedTimebyHandle = KismetSystemLibrary.K2_GetTimerElapsedTimeHandle; 673 | KismetSystemLibrary.prototype.GetTimerElapsedTimebyFunctionName = KismetSystemLibrary.prototype.K2_GetTimerElapsedTime; 674 | KismetSystemLibrary.GetTimerElapsedTimebyFunctionName = KismetSystemLibrary.K2_GetTimerElapsedTime; 675 | KismetSystemLibrary.prototype.ClearTimerbyHandle = KismetSystemLibrary.prototype.K2_ClearTimerHandle; 676 | KismetSystemLibrary.ClearTimerbyHandle = KismetSystemLibrary.K2_ClearTimerHandle; 677 | KismetSystemLibrary.prototype.ClearTimerbyFunctionName = KismetSystemLibrary.prototype.K2_ClearTimer; 678 | KismetSystemLibrary.ClearTimerbyFunctionName = KismetSystemLibrary.K2_ClearTimer; 679 | KismetSystemLibrary.prototype.ClearandInvalidateTimerbyHandle = KismetSystemLibrary.prototype.K2_ClearAndInvalidateTimerHandle; 680 | KismetSystemLibrary.ClearandInvalidateTimerbyHandle = KismetSystemLibrary.K2_ClearAndInvalidateTimerHandle; 681 | KismetSystemLibrary.prototype.GetDisplayName = KismetSystemLibrary.prototype.GetClassDisplayName; 682 | KismetSystemLibrary.GetDisplayName = KismetSystemLibrary.GetClassDisplayName; 683 | KismetSystemLibrary.prototype.DrawDebugCone = KismetSystemLibrary.prototype.DrawDebugConeInDegrees; 684 | KismetSystemLibrary.DrawDebugCone = KismetSystemLibrary.DrawDebugConeInDegrees; 685 | KismetSystemLibrary.prototype.ComponentOverlapComponents = KismetSystemLibrary.prototype.ComponentOverlapComponents_NEW; 686 | KismetSystemLibrary.ComponentOverlapComponents = KismetSystemLibrary.ComponentOverlapComponents_NEW; 687 | KismetSystemLibrary.prototype.ComponentOverlapActors = KismetSystemLibrary.prototype.ComponentOverlapActors_NEW; 688 | KismetSystemLibrary.ComponentOverlapActors = KismetSystemLibrary.ComponentOverlapActors_NEW; 689 | KismetSystemLibrary.prototype.CapsuleTraceForObjects = KismetSystemLibrary.prototype.CapsuleTraceSingleForObjects; 690 | KismetSystemLibrary.CapsuleTraceForObjects = KismetSystemLibrary.CapsuleTraceSingleForObjects; 691 | KismetSystemLibrary.prototype.SingleCapsuleTraceByObjectDeprecated = KismetSystemLibrary.prototype.CapsuleTraceSingleByObject_DEPRECATED; 692 | KismetSystemLibrary.SingleCapsuleTraceByObjectDeprecated = KismetSystemLibrary.CapsuleTraceSingleByObject_DEPRECATED; 693 | KismetSystemLibrary.prototype.CapsuleTraceByChannel = KismetSystemLibrary.prototype.CapsuleTraceSingle_NEW; 694 | KismetSystemLibrary.CapsuleTraceByChannel = KismetSystemLibrary.CapsuleTraceSingle_NEW; 695 | KismetSystemLibrary.prototype.SingleCapsuleTraceByChannelDeprecated = KismetSystemLibrary.prototype.CapsuleTraceSingle_DEPRECATED; 696 | KismetSystemLibrary.SingleCapsuleTraceByChannelDeprecated = KismetSystemLibrary.CapsuleTraceSingle_DEPRECATED; 697 | KismetSystemLibrary.prototype.MultiCapsuleTraceForObjects = KismetSystemLibrary.prototype.CapsuleTraceMultiForObjects; 698 | KismetSystemLibrary.MultiCapsuleTraceForObjects = KismetSystemLibrary.CapsuleTraceMultiForObjects; 699 | KismetSystemLibrary.prototype.MultiCapsuleTraceByObjectDeprecated = KismetSystemLibrary.prototype.CapsuleTraceMultiByObject_DEPRECATED; 700 | KismetSystemLibrary.MultiCapsuleTraceByObjectDeprecated = KismetSystemLibrary.CapsuleTraceMultiByObject_DEPRECATED; 701 | KismetSystemLibrary.prototype.MultiCapsuleTraceByChannel = KismetSystemLibrary.prototype.CapsuleTraceMulti_NEW; 702 | KismetSystemLibrary.MultiCapsuleTraceByChannel = KismetSystemLibrary.CapsuleTraceMulti_NEW; 703 | KismetSystemLibrary.prototype.MultiCapsuleTraceByChannelDeprecated = KismetSystemLibrary.prototype.CapsuleTraceMulti_DEPRECATED; 704 | KismetSystemLibrary.MultiCapsuleTraceByChannelDeprecated = KismetSystemLibrary.CapsuleTraceMulti_DEPRECATED; 705 | KismetSystemLibrary.prototype.CapsuleOverlapComponents = KismetSystemLibrary.prototype.CapsuleOverlapComponents_NEW; 706 | KismetSystemLibrary.CapsuleOverlapComponents = KismetSystemLibrary.CapsuleOverlapComponents_NEW; 707 | KismetSystemLibrary.prototype.CapsuleOverlapActors = KismetSystemLibrary.prototype.CapsuleOverlapActors_NEW; 708 | KismetSystemLibrary.CapsuleOverlapActors = KismetSystemLibrary.CapsuleOverlapActors_NEW; 709 | KismetSystemLibrary.prototype.BoxTraceForObjects = KismetSystemLibrary.prototype.BoxTraceSingleForObjects; 710 | KismetSystemLibrary.BoxTraceForObjects = KismetSystemLibrary.BoxTraceSingleForObjects; 711 | KismetSystemLibrary.prototype.BoxTraceByChannel = KismetSystemLibrary.prototype.BoxTraceSingle; 712 | KismetSystemLibrary.BoxTraceByChannel = KismetSystemLibrary.BoxTraceSingle; 713 | KismetSystemLibrary.prototype.MultiBoxTraceForObjects = KismetSystemLibrary.prototype.BoxTraceMultiForObjects; 714 | KismetSystemLibrary.MultiBoxTraceForObjects = KismetSystemLibrary.BoxTraceMultiForObjects; 715 | KismetSystemLibrary.prototype.MultiBoxTraceByChannel = KismetSystemLibrary.prototype.BoxTraceMulti; 716 | KismetSystemLibrary.MultiBoxTraceByChannel = KismetSystemLibrary.BoxTraceMulti; 717 | KismetSystemLibrary.prototype.BoxOverlapComponents = KismetSystemLibrary.prototype.BoxOverlapComponents_NEW; 718 | KismetSystemLibrary.BoxOverlapComponents = KismetSystemLibrary.BoxOverlapComponents_NEW; 719 | KismetSystemLibrary.prototype.BoxOverlapActors = KismetSystemLibrary.prototype.BoxOverlapActors_NEW; 720 | KismetSystemLibrary.BoxOverlapActors = KismetSystemLibrary.BoxOverlapActors_NEW; 721 | KismetTextLibrary.prototype.NotEqual = KismetTextLibrary.prototype.NotEqual_TextText; 722 | KismetTextLibrary.NotEqual = KismetTextLibrary.NotEqual_TextText; 723 | KismetTextLibrary.prototype.Equal = KismetTextLibrary.prototype.EqualEqual_TextText; 724 | KismetTextLibrary.Equal = KismetTextLibrary.EqualEqual_TextText; 725 | KismetTextLibrary.prototype.ToString = KismetTextLibrary.prototype.Conv_TextToString; 726 | KismetTextLibrary.ToString = KismetTextLibrary.Conv_TextToString; 727 | KismetTextLibrary.prototype.ToText = KismetTextLibrary.prototype.Conv_StringToText; 728 | KismetTextLibrary.ToText = KismetTextLibrary.Conv_StringToText; 729 | KismetTextLibrary.prototype.ToText = KismetTextLibrary.prototype.Conv_NameToText; 730 | KismetTextLibrary.ToText = KismetTextLibrary.Conv_NameToText; 731 | KismetTextLibrary.prototype.ToText = KismetTextLibrary.prototype.Conv_IntToText; 732 | KismetTextLibrary.ToText = KismetTextLibrary.Conv_IntToText; 733 | KismetTextLibrary.prototype.ToText = KismetTextLibrary.prototype.Conv_FloatToText; 734 | KismetTextLibrary.ToText = KismetTextLibrary.Conv_FloatToText; 735 | KismetTextLibrary.prototype.ToText = KismetTextLibrary.prototype.Conv_ByteToText; 736 | KismetTextLibrary.ToText = KismetTextLibrary.Conv_ByteToText; 737 | KismetTextLibrary.prototype.ToText = KismetTextLibrary.prototype.Conv_BoolToText; 738 | KismetTextLibrary.ToText = KismetTextLibrary.Conv_BoolToText; 739 | KismetTextLibrary.prototype.AsTimespan = KismetTextLibrary.prototype.AsTimespan_Timespan; 740 | KismetTextLibrary.AsTimespan = KismetTextLibrary.AsTimespan_Timespan; 741 | KismetTextLibrary.prototype.AsTime = KismetTextLibrary.prototype.AsTime_DateTime; 742 | KismetTextLibrary.AsTime = KismetTextLibrary.AsTime_DateTime; 743 | KismetTextLibrary.prototype.AsPercent = KismetTextLibrary.prototype.AsPercent_Float; 744 | KismetTextLibrary.AsPercent = KismetTextLibrary.AsPercent_Float; 745 | KismetTextLibrary.prototype.AsDateTime = KismetTextLibrary.prototype.AsDateTime_DateTime; 746 | KismetTextLibrary.AsDateTime = KismetTextLibrary.AsDateTime_DateTime; 747 | KismetTextLibrary.prototype.AsDate = KismetTextLibrary.prototype.AsDate_DateTime; 748 | KismetTextLibrary.AsDate = KismetTextLibrary.AsDate_DateTime; 749 | KismetTextLibrary.prototype.AsCurrency = KismetTextLibrary.prototype.AsCurrencyBase; 750 | KismetTextLibrary.AsCurrency = KismetTextLibrary.AsCurrencyBase; 751 | KismetTextLibrary.prototype.AsCurrency = KismetTextLibrary.prototype.AsCurrency_Integer; 752 | KismetTextLibrary.AsCurrency = KismetTextLibrary.AsCurrency_Integer; 753 | KismetTextLibrary.prototype.AsCurrency = KismetTextLibrary.prototype.AsCurrency_Float; 754 | KismetTextLibrary.AsCurrency = KismetTextLibrary.AsCurrency_Float; 755 | VisualLoggerKismetLibrary.prototype.LogBoxShape = VisualLoggerKismetLibrary.prototype.LogBox; 756 | VisualLoggerKismetLibrary.LogBoxShape = VisualLoggerKismetLibrary.LogBox; 757 | Canvas.prototype.ClippedTextSize = Canvas.prototype.K2_TextSize; 758 | Canvas.prototype.WrappedTextSize = Canvas.prototype.K2_StrLen; 759 | Canvas.prototype.Project = Canvas.prototype.K2_Project; 760 | Canvas.prototype.DrawTriangles = Canvas.prototype.K2_DrawTriangle; 761 | Canvas.prototype.DrawTexture = Canvas.prototype.K2_DrawTexture; 762 | Canvas.prototype.DrawText = Canvas.prototype.K2_DrawText; 763 | Canvas.prototype.DrawPolygon = Canvas.prototype.K2_DrawPolygon; 764 | Canvas.prototype.DrawMaterialTriangles = Canvas.prototype.K2_DrawMaterialTriangle; 765 | Canvas.prototype.DrawMaterial = Canvas.prototype.K2_DrawMaterial; 766 | Canvas.prototype.DrawLine = Canvas.prototype.K2_DrawLine; 767 | Canvas.prototype.DrawBox = Canvas.prototype.K2_DrawBox; 768 | Canvas.prototype.DrawBorder = Canvas.prototype.K2_DrawBorder; 769 | Canvas.prototype.Deproject = Canvas.prototype.K2_Deproject; 770 | GameUserSettings.prototype.SetResolutionScaleValue = GameUserSettings.prototype.SetResolutionScaleValueEx; 771 | GameUserSettings.prototype.SetResolutionScaleValue_Deprecated = GameUserSettings.prototype.SetResolutionScaleValue; 772 | GameUserSettings.prototype.GetResolutionScaleInformation = GameUserSettings.prototype.GetResolutionScaleInformationEx; 773 | GameUserSettings.prototype.GetResolutionScaleInformation_Deprecated = GameUserSettings.prototype.GetResolutionScaleInformation; 774 | MaterialInstanceDynamic.prototype.InterpolateMaterialInstanceParameters = MaterialInstanceDynamic.prototype.K2_InterpolateMaterialInstanceParams; 775 | MaterialInstanceDynamic.prototype.GetVectorParameterValue = MaterialInstanceDynamic.prototype.K2_GetVectorParameterValue; 776 | MaterialInstanceDynamic.prototype.GetTextureParameterValue = MaterialInstanceDynamic.prototype.K2_GetTextureParameterValue; 777 | MaterialInstanceDynamic.prototype.GetScalarParameterValue = MaterialInstanceDynamic.prototype.K2_GetScalarParameterValue; 778 | MaterialInstanceDynamic.prototype.CopyMaterialInstanceParameters = MaterialInstanceDynamic.prototype.K2_CopyMaterialInstanceParameters; 779 | Texture2D.prototype.GetSizeY = Texture2D.prototype.Blueprint_GetSizeY; 780 | Texture2D.prototype.GetSizeX = Texture2D.prototype.Blueprint_GetSizeX; 781 | InAppPurchaseQueryCallbackProxy.prototype.ReadInAppPurchaseInformation = InAppPurchaseQueryCallbackProxy.prototype.CreateProxyObjectForInAppPurchaseQuery; 782 | InAppPurchaseQueryCallbackProxy.ReadInAppPurchaseInformation = InAppPurchaseQueryCallbackProxy.CreateProxyObjectForInAppPurchaseQuery; 783 | LeaderboardQueryCallbackProxy.prototype.ReadLeaderboardInteger = LeaderboardQueryCallbackProxy.prototype.CreateProxyObjectForIntQuery; 784 | LeaderboardQueryCallbackProxy.ReadLeaderboardInteger = LeaderboardQueryCallbackProxy.CreateProxyObjectForIntQuery; 785 | VREditorQuickMenu.prototype.Refresh = VREditorQuickMenu.prototype.RefreshUI; 786 | ProceduralMeshComponent.prototype.UpdateMeshSection = ProceduralMeshComponent.prototype.UpdateMeshSection_LinearColor; 787 | ProceduralMeshComponent.prototype.UpdateMeshSectionFColor = ProceduralMeshComponent.prototype.UpdateMeshSection; 788 | ProceduralMeshComponent.prototype.CreateMeshSection = ProceduralMeshComponent.prototype.CreateMeshSection_LinearColor; 789 | ProceduralMeshComponent.prototype.CreateMeshSectionFColor = ProceduralMeshComponent.prototype.CreateMeshSection; 790 | Guid.prototype.ToString = Guid.prototype.Conv_GuidToString; 791 | Guid.prototype.Equal = Guid.prototype.EqualEqual_GuidGuid; 792 | Guid.prototype.IsValid = Guid.prototype.IsValid_Guid; 793 | Guid.prototype.NotEqual = Guid.prototype.NotEqual_GuidGuid; 794 | Vector.prototype.ToString = Vector.prototype.Conv_VectorToString; 795 | Vector.prototype.ToLinearColor = Vector.prototype.Conv_VectorToLinearColor; 796 | Vector.prototype.RotationFromXVector = Vector.prototype.Conv_VectorToRotator; 797 | Vector.prototype.ToTransform = Vector.prototype.Conv_VectorToTransform; 798 | Vector.prototype.ToVector2D = Vector.prototype.Conv_VectorToVector2D; 799 | Vector.prototype.CrossProduct = Vector.prototype.Cross_VectorVector; 800 | Vector.prototype.DotProduct = Vector.prototype.Dot_VectorVector; 801 | Vector.prototype.Equal = Vector.prototype.EqualEqual_VectorVector; 802 | Vector.prototype.RotateVector = Vector.prototype.GreaterGreater_VectorRotator; 803 | Vector.prototype.UnrotateVector = Vector.prototype.LessLess_VectorRotator; 804 | Vector.prototype.LinePlaneIntersection = Vector.prototype.LinePlaneIntersection_OriginNormal; 805 | Vector.prototype.Normalize = Vector.prototype.Normal; 806 | Vector.prototype.NotEqual = Vector.prototype.NotEqual_VectorVector; 807 | Vector.prototype.RotateVectorAroundAxis = Vector.prototype.RotateAngleAxis; 808 | Vector.prototype.Ease = Vector.prototype.VEase; 809 | Vector.prototype.Lerp = Vector.prototype.VLerp; 810 | Vector.prototype.VectorLength = Vector.prototype.VSize; 811 | Vector.prototype.VectorLengthSquared = Vector.prototype.VSizeSquared; 812 | Vector2D.prototype.ToString = Vector2D.prototype.Conv_Vector2dToString; 813 | Vector2D.prototype.ToVector = Vector2D.prototype.Conv_Vector2DToVector; 814 | Vector2D.prototype.CrossProduct = Vector2D.prototype.CrossProduct2D; 815 | Vector2D.prototype.DotProduct = Vector2D.prototype.DotProduct2D; 816 | Vector2D.prototype.Equal = Vector2D.prototype.EqualEqual_Vector2DVector2D; 817 | Vector2D.prototype.Normalize2D = Vector2D.prototype.Normal2D; 818 | Vector2D.prototype.NotEqual = Vector2D.prototype.NotEqual_Vector2DVector2D; 819 | Vector2D.prototype.Vector2dLength = Vector2D.prototype.VSize2D; 820 | Vector2D.prototype.Vector2dLengthSquared = Vector2D.prototype.VSize2DSquared; 821 | Rotator.prototype.ToString = Rotator.prototype.Conv_RotatorToString; 822 | Rotator.prototype.CombineRotators = Rotator.prototype.ComposeRotators; 823 | Rotator.prototype.GetRotationXVector = Rotator.prototype.Conv_RotatorToVector; 824 | Rotator.prototype.Equal = Rotator.prototype.EqualEqual_RotatorRotator; 825 | Rotator.prototype.ScaleRotator = Rotator.prototype.Multiply_RotatorFloat; 826 | Rotator.prototype.ScaleRotator = Rotator.prototype.Multiply_RotatorInt; 827 | Rotator.prototype.InvertRotator = Rotator.prototype.NegateRotator; 828 | Rotator.prototype.Delta = Rotator.prototype.NormalizedDeltaRotator; 829 | Rotator.prototype.NotEqual = Rotator.prototype.NotEqual_RotatorRotator; 830 | Rotator.prototype.Ease = Rotator.prototype.REase; 831 | Rotator.prototype.Lerp = Rotator.prototype.RLerp; 832 | Color.prototype.ToLinearColor = Color.prototype.Conv_ColorToLinearColor; 833 | LinearColor.prototype.ToString = LinearColor.prototype.Conv_ColorToString; 834 | LinearColor.prototype.ToColor = LinearColor.prototype.Conv_LinearColorToColor; 835 | LinearColor.prototype.ToVector = LinearColor.prototype.Conv_LinearColorToVector; 836 | LinearColor.prototype.HSVtoRGB = LinearColor.prototype.HSVToRGB_Vector; 837 | LinearColor.prototype.Lerp = LinearColor.prototype.LinearColorLerp; 838 | LinearColor.prototype.LerpUsingHSV = LinearColor.prototype.LinearColorLerpUsingHSV; 839 | LinearColor.prototype.RGBtoHSV = LinearColor.prototype.RGBToHSV_Vector; 840 | Transform.prototype.ToString = Transform.prototype.Conv_TransformToString; 841 | Transform.prototype.EqualTransform = Transform.prototype.EqualEqual_TransformTransform; 842 | Transform.prototype.NearlyEqual = Transform.prototype.NearlyEqual_TransformTransform; 843 | Transform.prototype.Ease = Transform.prototype.TEase; 844 | Transform.prototype.Lerp = Transform.prototype.TLerp; 845 | DateTime.prototype.AsDate = DateTime.prototype.AsDate_DateTime; 846 | DateTime.prototype.AsDateTime = DateTime.prototype.AsDateTime_DateTime; 847 | DateTime.prototype.AsTime = DateTime.prototype.AsTime_DateTime; 848 | DateTime.prototype.Equal = DateTime.prototype.EqualEqual_DateTimeDateTime; 849 | DateTime.prototype.NotEqual = DateTime.prototype.NotEqual_DateTimeDateTime; 850 | Timespan.prototype.AsTimespan = Timespan.prototype.AsTimespan_Timespan; 851 | Timespan.prototype.Equal = Timespan.prototype.EqualEqual_TimespanTimespan; 852 | Timespan.prototype.NotEqual = Timespan.prototype.NotEqual_TimespanTimespan; 853 | Key.prototype.Equal = Key.prototype.EqualEqual_KeyKey; 854 | TimerHandle.prototype.Invalidate = TimerHandle.prototype.K2_InvalidateTimerHandle; 855 | TimerHandle.prototype.IsValid = TimerHandle.prototype.K2_IsValidTimerHandle; 856 | InputEvent.prototype.IsAltDown = InputEvent.prototype.InputEvent_IsAltDown; 857 | InputEvent.prototype.IsCommandDown = InputEvent.prototype.InputEvent_IsCommandDown; 858 | InputEvent.prototype.IsControlDown = InputEvent.prototype.InputEvent_IsControlDown; 859 | InputEvent.prototype.IsLeftAltDown = InputEvent.prototype.InputEvent_IsLeftAltDown; 860 | InputEvent.prototype.IsLeftCommandDown = InputEvent.prototype.InputEvent_IsLeftCommandDown; 861 | InputEvent.prototype.IsLeftControlDown = InputEvent.prototype.InputEvent_IsLeftControlDown; 862 | InputEvent.prototype.IsLeftShiftDown = InputEvent.prototype.InputEvent_IsLeftShiftDown; 863 | InputEvent.prototype.IsRepeat = InputEvent.prototype.InputEvent_IsRepeat; 864 | InputEvent.prototype.IsRightAltDown = InputEvent.prototype.InputEvent_IsRightAltDown; 865 | InputEvent.prototype.IsRightCommandDown = InputEvent.prototype.InputEvent_IsRightCommandDown; 866 | InputEvent.prototype.IsRightControlDown = InputEvent.prototype.InputEvent_IsRightControlDown; 867 | InputEvent.prototype.IsRightShiftDown = InputEvent.prototype.InputEvent_IsRightShiftDown; 868 | InputEvent.prototype.IsShiftDown = InputEvent.prototype.InputEvent_IsShiftDown; 869 | UPointerEvent.prototype.GetCursorDelta = UPointerEvent.prototype.PointerEvent_GetCursorDelta; 870 | UPointerEvent.prototype.GetEffectingButton = UPointerEvent.prototype.PointerEvent_GetEffectingButton; 871 | UPointerEvent.prototype.GetGestureDelta = UPointerEvent.prototype.PointerEvent_GetGestureDelta; 872 | UPointerEvent.prototype.GetLastScreenSpacePosition = UPointerEvent.prototype.PointerEvent_GetLastScreenSpacePosition; 873 | UPointerEvent.prototype.GetPointerIndex = UPointerEvent.prototype.PointerEvent_GetPointerIndex; 874 | UPointerEvent.prototype.GetScreenSpacePosition = UPointerEvent.prototype.PointerEvent_GetScreenSpacePosition; 875 | UPointerEvent.prototype.GetTouchpadIndex = UPointerEvent.prototype.PointerEvent_GetTouchpadIndex; 876 | UPointerEvent.prototype.GetUserIndex = UPointerEvent.prototype.PointerEvent_GetUserIndex; 877 | UPointerEvent.prototype.GetWheelDelta = UPointerEvent.prototype.PointerEvent_GetWheelDelta; 878 | UPointerEvent.prototype.IsMouseButtonDown = UPointerEvent.prototype.PointerEvent_IsMouseButtonDown; 879 | UPointerEvent.prototype.IsTouchEvent = UPointerEvent.prototype.PointerEvent_IsTouchEvent; 880 | InputChord.prototype.Equal = InputChord.prototype.EqualEqual_InputChordInputChord; 881 | ControllerEvent.prototype.GetEffectingButton = ControllerEvent.prototype.ControllerEvent_GetEffectingButton; 882 | PaintContext.prototype.DrawString = PaintContext.prototype.DrawText; 883 | PaintContext.prototype.DrawText = PaintContext.prototype.DrawTextFormatted; 884 | -------------------------------------------------------------------------------- /examples/ReactUmgExamples/Content/Scripts/bootstrap.js: -------------------------------------------------------------------------------- 1 | (function (global) { 2 | "use strict" 3 | 4 | module.exports = function (filename) { 5 | // Context.WriteDTS(Context.Paths[0] + 'typings/ue.d.ts') 6 | // Context.WriteAliases(Context.Paths[0] + 'aliases.js') 7 | 8 | Context.RunFile('aliases.js') 9 | Context.RunFile('polyfill/unrealengine.js') 10 | Context.RunFile('polyfill/timers.js') 11 | 12 | require('devrequire')(filename) 13 | } 14 | })(this) 15 | -------------------------------------------------------------------------------- /examples/ReactUmgExamples/Content/Scripts/helloReactUMG.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 4 | 5 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 6 | 7 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 8 | 9 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } 10 | 11 | /// /> 12 | 13 | function GetPC() { 14 | return PlayerController.C(GWorld.GetAllActorsOfClass(PlayerController).OutActors[0]); 15 | } 16 | 17 | function main() { 18 | 19 | var _ = require('lodash'); 20 | var React = require('react'); 21 | var ReactUMG = require('../../../../lib'); // react-umg 22 | 23 | var widget = null; 24 | var PC = GetPC(); 25 | 26 | // create a root widget 27 | widget = GWorld.CreateWidget(JavascriptWidget, PC); 28 | widget.JavascriptContext = Context; 29 | widget.bSupportsKeyboardFocus = true; 30 | 31 | var StatelessContainer = function StatelessContainer(_ref) { 32 | var children = _ref.children; 33 | return React.createElement( 34 | 'vbox', 35 | null, 36 | children 37 | ); 38 | }; 39 | 40 | var ControlledText = function (_React$Component) { 41 | _inherits(ControlledText, _React$Component); 42 | 43 | function ControlledText(props, context) { 44 | _classCallCheck(this, ControlledText); 45 | 46 | var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(ControlledText).call(this, props, context)); 47 | 48 | _this.state = { text: "controlled text-component" }; 49 | return _this; 50 | } 51 | 52 | _createClass(ControlledText, [{ 53 | key: 'onChange', 54 | value: function onChange(value) { 55 | this.setState({ text: value }); 56 | } 57 | }, { 58 | key: 'render', 59 | value: function render() { 60 | var _this2 = this; 61 | 62 | return React.createElement( 63 | 'hbox', 64 | null, 65 | React.createElement('input', { value: this.state.text, onChange: function onChange(value) { 66 | return _this2.onChange(value); 67 | } }), 68 | React.createElement( 69 | 'text', 70 | null, 71 | this.state.text 72 | ) 73 | ); 74 | } 75 | }]); 76 | 77 | return ControlledText; 78 | }(React.Component); 79 | 80 | var UncontrolledText = function (_React$Component2) { 81 | _inherits(UncontrolledText, _React$Component2); 82 | 83 | function UncontrolledText(props, context) { 84 | _classCallCheck(this, UncontrolledText); 85 | 86 | var _this3 = _possibleConstructorReturn(this, Object.getPrototypeOf(UncontrolledText).call(this, props, context)); 87 | 88 | _this3.state = { text: "uncontrolled text-component" }; 89 | return _this3; 90 | } 91 | 92 | _createClass(UncontrolledText, [{ 93 | key: 'onChange', 94 | value: function onChange(value) { 95 | this.setState({ text: value }); 96 | } 97 | }, { 98 | key: 'render', 99 | value: function render() { 100 | var _this4 = this; 101 | 102 | return React.createElement( 103 | 'hbox', 104 | null, 105 | React.createElement('input', { onChange: function onChange(value) { 106 | return _this4.onChange(value); 107 | } }), 108 | React.createElement( 109 | 'text', 110 | null, 111 | this.state.text 112 | ) 113 | ); 114 | } 115 | }]); 116 | 117 | return UncontrolledText; 118 | }(React.Component); 119 | 120 | var Stateful = function (_React$Component3) { 121 | _inherits(Stateful, _React$Component3); 122 | 123 | function Stateful(props, context) { 124 | _classCallCheck(this, Stateful); 125 | 126 | var _this5 = _possibleConstructorReturn(this, Object.getPrototypeOf(Stateful).call(this, props, context)); 127 | 128 | _this5.state = { count: 5 }; 129 | return _this5; 130 | } 131 | 132 | _createClass(Stateful, [{ 133 | key: 'onChange', 134 | value: function onChange(value) { 135 | this.setState({ count: parseInt(value) || 0 }); 136 | } 137 | }, { 138 | key: 'render', 139 | value: function render() { 140 | var _this6 = this; 141 | 142 | return React.createElement( 143 | 'vbox', 144 | null, 145 | React.createElement('input', { value: this.state.count.toString(), onChange: function onChange(value) { 146 | return _this6.onChange(value); 147 | } }), 148 | React.createElement( 149 | 'text', 150 | null, 151 | 'item-count: ' + this.state.count.toString() 152 | ), 153 | _.times(this.state.count, function (i) { 154 | return React.createElement( 155 | 'text', 156 | { key: i }, 157 | 'item_' + i.toString() 158 | ); 159 | }) 160 | ); 161 | } 162 | }]); 163 | 164 | return Stateful; 165 | }(React.Component); 166 | 167 | ReactUMG.render(React.createElement( 168 | 'vbox', 169 | null, 170 | React.createElement( 171 | 'text', 172 | null, 173 | 'Hello react-umg!' 174 | ), 175 | React.createElement( 176 | 'text', 177 | null, 178 | 'by @DrywolfDev' 179 | ), 180 | React.createElement('text', null), 181 | React.createElement( 182 | 'text', 183 | null, 184 | new Date().toISOString() 185 | ), 186 | React.createElement( 187 | StatelessContainer, 188 | null, 189 | React.createElement( 190 | 'text', 191 | null, 192 | 'A' 193 | ), 194 | React.createElement( 195 | 'text', 196 | null, 197 | 'B' 198 | ) 199 | ), 200 | React.createElement( 201 | StatelessContainer, 202 | null, 203 | React.createElement( 204 | 'button', 205 | { onClick: function onClick() { 206 | return console.log("click 1"); 207 | } }, 208 | React.createElement( 209 | 'text', 210 | null, 211 | 'Button 1' 212 | ) 213 | ), 214 | React.createElement( 215 | 'button', 216 | { onClick: function onClick() { 217 | return console.log("click 2"); 218 | } }, 219 | React.createElement( 220 | 'text', 221 | null, 222 | 'Button 2' 223 | ) 224 | ), 225 | React.createElement(UncontrolledText, null), 226 | React.createElement(ControlledText, null), 227 | React.createElement(Stateful, null) 228 | ) 229 | ), widget); 230 | 231 | widget.AddToViewport(); 232 | 233 | // Switch PC to UI only mode. 234 | PC.bShowMouseCursor = true; 235 | PC.SetInputMode_UIOnly(widget); 236 | 237 | return function () { 238 | widget.RemoveFromViewport(); 239 | }; 240 | } 241 | 242 | try { 243 | module.exports = function () { 244 | var cleanup = null; 245 | process.nextTick(function () { 246 | return cleanup = main(); 247 | }); 248 | return function () { 249 | return cleanup(); 250 | }; 251 | }; 252 | } catch (e) { 253 | require('bootstrap')('helloReactUMG'); 254 | } 255 | -------------------------------------------------------------------------------- /examples/ReactUmgExamples/Content/Scripts/helloReactUMG.jsx: -------------------------------------------------------------------------------- 1 | /// /> 2 | 3 | function GetPC() { 4 | return PlayerController.C(GWorld.GetAllActorsOfClass(PlayerController).OutActors[0]) 5 | } 6 | 7 | function main() { 8 | 9 | const _ = require('lodash'); 10 | const React = require('react'); 11 | const ReactUMG = require('../../../../lib'); // react-umg 12 | 13 | let widget = null 14 | let PC = GetPC() 15 | 16 | // create a root widget 17 | widget = GWorld.CreateWidget(JavascriptWidget, PC) 18 | widget.JavascriptContext = Context 19 | widget.bSupportsKeyboardFocus = true 20 | 21 | const StatelessContainer = ({children}) => 22 | ( 23 | 24 | {children} 25 | 26 | ); 27 | 28 | class ControlledText extends React.Component 29 | { 30 | constructor(props, context) 31 | { 32 | super(props, context); 33 | this.state = {text: "controlled text-component"}; 34 | } 35 | 36 | onChange(value) 37 | { 38 | this.setState({text: value}); 39 | } 40 | 41 | render() 42 | { 43 | return ( 44 | 45 | this.onChange(value)}> 46 | {this.state.text} 47 | 48 | ); 49 | } 50 | } 51 | 52 | class UncontrolledText extends React.Component 53 | { 54 | constructor(props, context) 55 | { 56 | super(props, context); 57 | this.state = {text: "uncontrolled text-component"}; 58 | } 59 | 60 | onChange(value) 61 | { 62 | this.setState({text: value}); 63 | } 64 | 65 | render() 66 | { 67 | return ( 68 | 69 | this.onChange(value)}> 70 | {this.state.text} 71 | 72 | ); 73 | } 74 | } 75 | 76 | class Stateful extends React.Component 77 | { 78 | constructor(props, context) 79 | { 80 | super(props, context); 81 | this.state = {count: 5}; 82 | } 83 | 84 | onChange(value) 85 | { 86 | this.setState({count: parseInt(value) || 0}); 87 | } 88 | 89 | render() 90 | { 91 | return ( 92 | 93 | this.onChange(value)}> 94 | {'item-count: ' + this.state.count.toString()} 95 | {_.times(this.state.count, i => {'item_' + i.toString()})} 96 | 97 | ); 98 | } 99 | } 100 | 101 | ReactUMG.render( 102 | 103 | Hello react-umg! 104 | by @DrywolfDev 105 | 106 | {new Date().toISOString()} 107 | 108 | 109 | A 110 | B 111 | 112 | 113 | 114 | 117 | 118 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | , 128 | widget 129 | ); 130 | 131 | widget.AddToViewport() 132 | 133 | // Switch PC to UI only mode. 134 | PC.bShowMouseCursor = true 135 | PC.SetInputMode_UIOnly(widget) 136 | 137 | return function () { 138 | widget.RemoveFromViewport() 139 | } 140 | } 141 | 142 | try { 143 | module.exports = () => { 144 | let cleanup = null 145 | process.nextTick(() => cleanup = main()); 146 | return () => cleanup() 147 | } 148 | } 149 | catch (e) { 150 | require('bootstrap')('helloReactUMG') 151 | } 152 | -------------------------------------------------------------------------------- /examples/ReactUmgExamples/Content/Scripts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-umg-examples", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "build": "babel helloReactUMG.jsx --out-file helloReactUMG.js", 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "DryWolf", 10 | "license": "ISC", 11 | "description": "", 12 | "dependencies": { 13 | "lodash": "^4.14.1", 14 | "react": "^15.3.0" 15 | }, 16 | "devDependencies": { 17 | "babel-cli": "^6.6.4", 18 | "babel-eslint": "^5.0.0", 19 | "babel-plugin-transform-class-properties": "^6.6.0", 20 | "babel-preset-es2015": "^6.6.0", 21 | "babel-preset-react": "^6.5.0", 22 | "babel-register": "^6.7.2" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /examples/ReactUmgExamples/Plugins/.keepme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drywolf/react-umg/65b1f8c9f6149c32f6c462589dc44f4326703844/examples/ReactUmgExamples/Plugins/.keepme -------------------------------------------------------------------------------- /examples/ReactUmgExamples/ReactUmgExamples.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "4.12", 4 | "Category": "", 5 | "Description": "" 6 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-umg", 3 | "version": "0.1.0", 4 | "description": "", 5 | "main": "lib/index.js", 6 | "scripts": { 7 | "build": "babel src -d lib", 8 | "watch": "babel --watch src -d lib", 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "keywords": [], 12 | "author": "", 13 | "license": "ISC", 14 | "devDependencies": { 15 | "babel-cli": "^6.6.4", 16 | "babel-eslint": "^5.0.0", 17 | "babel-plugin-transform-class-properties": "^6.6.0", 18 | "babel-preset-es2015": "^6.6.0", 19 | "babel-preset-react": "^6.5.0", 20 | "babel-register": "^6.7.2" 21 | }, 22 | "dependencies": { 23 | "fbjs": "^0.8.3", 24 | "react": "^15.2.1" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/ReactUMGComponent.js: -------------------------------------------------------------------------------- 1 | import ReactMultiChild from 'react/lib/ReactMultiChild'; 2 | import ReactCurrentOwner from 'react/lib/ReactCurrentOwner'; 3 | 4 | // import {create, diff} from './attributePayload'; 5 | import invariant from 'fbjs/lib/invariant'; 6 | import warning from 'fbjs/lib/warning'; 7 | 8 | import UmgRoots from './UMGRoots'; 9 | import TypeThunks from './components'; 10 | 11 | const builtin_types = Object.keys(TypeThunks); 12 | 13 | // In some cases we might not have a owner and when 14 | // that happens there is no need to inlcude "Check the render method of ...". 15 | const checkRenderMethod = () => ReactCurrentOwner.owner && ReactCurrentOwner.owner.getName() 16 | ? ` Check the render method of "${ReactCurrentOwner.owner.getName()}".` : ''; 17 | 18 | /** 19 | * @constructor ReactUMGComponent 20 | * @extends ReactComponent 21 | * @extends ReactMultiChild 22 | */ 23 | const ReactUMGComponent = function(element) { 24 | this.node = null; 25 | this._mountImage = null; 26 | this._renderedChildren = null; 27 | this._currentElement = element; 28 | this._umgElem = null; 29 | 30 | this._rootNodeID = null; 31 | this._typeThunk = TypeThunks[element.type]; 32 | 33 | if (process.env.NODE_ENV !== 'production') { 34 | warning( 35 | builtin_types.indexOf(element.type) > -1, 36 | 'Attempted to render an unsupported generic component "%s". ' + 37 | 'Must be one of the following: ' + builtin_types, 38 | element.type, 39 | checkRenderMethod() 40 | ); 41 | } 42 | }; 43 | 44 | /** 45 | * Mixin for UMG components. 46 | */ 47 | ReactUMGComponent.Mixin = { 48 | // this is called when changing a component in the middle of a tree 49 | // currently a noop since _nativeNode is not defined. 50 | getHostNode() {}, 51 | 52 | getPublicInstance() { 53 | // TODO: This should probably use a composite wrapper 54 | return this; 55 | }, 56 | 57 | unmountComponent() { 58 | 59 | if (this._umgElem) 60 | { 61 | this._umgElem.RemoveFromParent(); 62 | this._umgElem.destroy(); 63 | } 64 | 65 | this.unmountChildren(); 66 | this._rootNodeID = null; 67 | this._umgElem = null; 68 | }, 69 | 70 | updateProperties() 71 | { 72 | if (this._typeThunk.applyProperties) 73 | this._typeThunk.applyProperties(this._umgElem, this._currentElement); 74 | }, 75 | 76 | /** 77 | * 78 | */ 79 | mountComponent( 80 | transaction, // for creating/updating 81 | rootID, // Root ID of this subtree 82 | hostContainerInfo, // nativeContainerInfo 83 | context // secret context, shhhh 84 | ) { 85 | let parent = rootID; 86 | 87 | rootID = typeof rootID === 'object' ? rootID._rootNodeID : rootID; 88 | this._rootNodeID = rootID; 89 | 90 | let umgRoot = parent._umgElem ? parent._umgElem : UmgRoots[rootID]; 91 | 92 | this._umgElem = this._typeThunk.createUmgElement( 93 | this._currentElement, 94 | elem => umgRoot.add_child(elem) 95 | ); 96 | 97 | this.updateProperties(); 98 | 99 | this.initializeChildren( 100 | this._currentElement.props.children, 101 | transaction, 102 | context 103 | ); 104 | return rootID; 105 | }, 106 | 107 | /** 108 | * Updates the component's currently mounted representation. 109 | */ 110 | receiveComponent( 111 | nextElement, 112 | transaction, 113 | context 114 | ) { 115 | const prevElement = this._currentElement; 116 | this._currentElement = nextElement; 117 | 118 | this.updateProperties(); 119 | 120 | // TODO: _reconcileListenersUponUpdate(prevElement.props, nextElement.props) 121 | this.updateChildren(nextElement.props.children, transaction, context); 122 | }, 123 | 124 | initializeChildren( 125 | children, 126 | transaction, // for creating/updating 127 | context // secret context, shhhh 128 | ) { 129 | this.mountChildren(children, transaction, context); 130 | }, 131 | }; 132 | 133 | /** 134 | * Order of mixins is important. ReactUMGComponent overrides methods in 135 | * ReactMultiChild. 136 | */ 137 | Object.assign( 138 | ReactUMGComponent.prototype, 139 | ReactMultiChild.Mixin, 140 | ReactUMGComponent.Mixin 141 | ); 142 | 143 | export default ReactUMGComponent; 144 | -------------------------------------------------------------------------------- /src/ReactUMGDefaultInjection.js: -------------------------------------------------------------------------------- 1 | /** 2 | * React UMG Default Injection 3 | */ 4 | import './devtools/InitializeJavaScriptAppEngine'; 5 | import ReactInjection from 'react/lib/ReactInjection'; 6 | import ReactDefaultBatchingStrategy from 'react/lib/ReactDefaultBatchingStrategy'; 7 | import ReactComponentEnvironment from 'react/lib/ReactComponentEnvironment'; 8 | import ReactUMGReconcileTransaction from './ReactUMGReconcileTransaction'; 9 | import ReactUMGComponent from './ReactUMGComponent'; 10 | import ReactUMGEmptyComponent from './ReactUMGEmptyComponent'; 11 | 12 | function inject() { 13 | ReactInjection.HostComponent.injectGenericComponentClass( 14 | ReactUMGComponent 15 | ); 16 | 17 | // Maybe? 18 | ReactInjection.HostComponent.injectTextComponentClass( 19 | (instantiate) => new ReactUMGEmptyComponent(instantiate) 20 | ); 21 | 22 | ReactInjection.Updates.injectReconcileTransaction( 23 | ReactUMGReconcileTransaction 24 | ); 25 | 26 | ReactInjection.Updates.injectBatchingStrategy( 27 | ReactDefaultBatchingStrategy 28 | ); 29 | 30 | ReactInjection.EmptyComponent.injectEmptyComponentFactory( 31 | (instantiate) => new ReactUMGEmptyComponent(instantiate) 32 | ); 33 | 34 | ReactComponentEnvironment.processChildrenUpdates = function() {}; 35 | ReactComponentEnvironment.replaceNodeWithMarkup = function() {}; 36 | ReactComponentEnvironment.unmountIDFromEnvironment = function() {}; 37 | } 38 | 39 | export default { 40 | inject, 41 | }; 42 | -------------------------------------------------------------------------------- /src/ReactUMGEmptyComponent.js: -------------------------------------------------------------------------------- 1 | 2 | const ReactMultiChild = require('react/lib/ReactMultiChild'); 3 | 4 | const ReactUMGEmptyComponent = function(element) { 5 | 6 | this.node = null; 7 | this._mountImage = null; 8 | this._renderedChildren = null; 9 | this._currentElement = element; 10 | this._rootNodeID = null; 11 | }; 12 | 13 | ReactUMGEmptyComponent.prototype = Object.assign( 14 | { 15 | construct(element) {}, 16 | 17 | getPublicInstance() {}, 18 | mountComponent() {}, 19 | receiveComponent() {}, 20 | unmountComponent() {}, 21 | // Implement both of these for now. React <= 15.0 uses getNativeNode, but 22 | // that is confusing. Host environment is more accurate and will be used 23 | // going forward 24 | getNativeNode() {}, 25 | getHostNode() {} 26 | }, 27 | ReactMultiChild.Mixin 28 | ); 29 | 30 | export default ReactUMGEmptyComponent; 31 | -------------------------------------------------------------------------------- /src/ReactUMGMount.js: -------------------------------------------------------------------------------- 1 | /** 2 | * React Hardware mount method. 3 | * 4 | * @flow 5 | */ 6 | 7 | import ReactInstanceHandles from 'react/lib/ReactInstanceHandles'; 8 | import ReactElement from 'react/lib/ReactElement'; 9 | import ReactUpdates from 'react/lib/ReactUpdates'; 10 | import ReactUpdateQueue from 'react/lib/ReactUpdateQueue'; 11 | import ReactReconciler from 'react/lib/ReactReconciler'; 12 | import shouldUpdateReactComponent from 'react/lib/shouldUpdateReactComponent'; 13 | import instantiateReactComponent from 'react/lib/instantiateReactComponent'; 14 | 15 | import invariant from 'fbjs/lib/invariant'; 16 | import warning from 'fbjs/lib/warning'; 17 | 18 | import ReactUMGDefaultInjection from './ReactUMGDefaultInjection'; 19 | 20 | import UMGInstantiator from 'instantiator'; 21 | 22 | ReactUMGDefaultInjection.inject(); 23 | 24 | // TODO: externalize management of UMG node meta-data (id, component, ...) 25 | let idCounter = 1; 26 | 27 | import UmgRoots from './UMGRoots'; 28 | import TypeThunks from './components'; 29 | 30 | const ReactUMGMount = { 31 | // for react devtools 32 | _instancesByReactRootID: {}, 33 | nativeTagToRootNodeID(nativeTag) { 34 | throw new Error('TODO: implement nativeTagToRootNodeID ' + nativeTag); 35 | }, 36 | 37 | /** 38 | * Renders a React component to the supplied `container` port. 39 | * 40 | * If the React component was previously rendered into `container`, this will 41 | * perform an update on it and only mutate the pins as necessary to reflect 42 | * the latest React component. 43 | */ 44 | render( 45 | nextElement, 46 | umgWidget, 47 | callback 48 | ) { 49 | // WIP: it appears as though nextElement.props is an empty object... 50 | invariant( 51 | ReactElement.isValidElement(nextElement), 52 | 'ReactUMG.render(): Invalid component element.%s', 53 | ( 54 | typeof nextElement === 'function' ? 55 | ' Instead of passing a component class, make sure to instantiate ' + 56 | 'it by passing it to React.createElement.' : 57 | // Check if it quacks like an element 58 | nextElement != null && nextElement.props !== undefined ? 59 | ' This may be caused by unintentionally loading two independent ' + 60 | 'copies of React.' : 61 | '' 62 | ) 63 | ); 64 | 65 | if (umgWidget) { 66 | const prevComponent = umgWidget.component; 67 | 68 | if (prevComponent) { 69 | const prevWrappedElement = prevComponent._currentElement; 70 | const prevElement = prevWrappedElement.props; 71 | if (shouldUpdateReactComponent(prevElement, nextElement)) { 72 | // $FlowFixMe 73 | const publicInst = prevComponent._renderedComponent.getPublicInstance(); 74 | const updatedCallback = callback && function() { 75 | // appease flow 76 | if (callback) { 77 | callback.call(publicInst); 78 | } 79 | }; 80 | 81 | ReactUMGMount._updateRootComponent( 82 | prevComponent, 83 | nextElement, 84 | container, 85 | updatedCallback 86 | ); 87 | return publicInst; 88 | } else { 89 | warning( 90 | true, 91 | 'Unexpected `else` branch in ReactUMG.render()' 92 | ); 93 | } 94 | } 95 | } 96 | 97 | if (!umgWidget.reactUmgId) 98 | umgWidget.reactUmgId = idCounter++; 99 | 100 | const rootId = ReactInstanceHandles.createReactRootID(umgWidget.reactUmgId); 101 | 102 | let umgRoot = UmgRoots[rootId]; 103 | 104 | if (!umgRoot) 105 | { 106 | let typeThunk = TypeThunks[nextElement.type]; 107 | umgRoot = typeThunk.createUmgElement(nextElement, UMGInstantiator); 108 | 109 | if (typeThunk.applyProperties) 110 | typeThunk.applyProperties(umgRoot, nextElement); 111 | 112 | UmgRoots[rootId] = umgRoot; 113 | 114 | umgWidget.SetRootWidget(umgRoot); 115 | } 116 | 117 | const nextComponent = instantiateReactComponent(nextElement); 118 | 119 | if (!umgWidget.component) 120 | umgWidget.component = nextComponent; 121 | 122 | ReactUpdates.batchedUpdates(() => { 123 | // Two points to React for using object pooling internally and being good 124 | // stewards of garbage collection and memory pressure. 125 | const transaction = ReactUpdates.ReactReconcileTransaction.getPooled(); 126 | transaction.perform(() => { 127 | // The `component` here is an instance of your 128 | // `ReactCustomRendererComponent` class. To be 100% honest, I’m not 129 | // certain if the method signature is enforced by React core or if it is 130 | // renderer specific. This is following the ReactDOM renderer. The 131 | // important piece is that we pass our transaction and rootId through, in 132 | // addition to any other contextual information needed. 133 | 134 | nextComponent.mountComponent( 135 | transaction, 136 | rootId, 137 | // TODO: what is _idCounter used for and when should it be nonzero? 138 | {_idCounter: 0}, 139 | {} 140 | ); 141 | if (callback) { 142 | callback(nextComponent.getPublicInstance()); 143 | } 144 | }); 145 | ReactUpdates.ReactReconcileTransaction.release(transaction); 146 | }); 147 | 148 | // needed for react-devtools 149 | ReactUMGMount._instancesByReactRootID[rootId] = nextComponent; 150 | 151 | return nextComponent.getPublicInstance(); 152 | }, 153 | 154 | /** 155 | * Unmounts a component. 156 | */ 157 | unmountComponentAtNode( 158 | container 159 | ) { 160 | throw new Error("not implemented yet"); 161 | 162 | return true; 163 | }, 164 | 165 | /** 166 | * Take a component that’s already mounted and replace its props 167 | */ 168 | _updateRootComponent( 169 | prevComponent, // component instance already in the DOM 170 | nextElement, // component instance to render 171 | container, // firmata connection port 172 | callback // function triggered on completion 173 | ) { 174 | ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement); 175 | if (callback) { 176 | ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback); 177 | } 178 | 179 | return prevComponent; 180 | }, 181 | 182 | renderComponent( 183 | rootID, 184 | container, 185 | nextComponent, 186 | nextElement, 187 | board, // Firmata instnace 188 | callback 189 | ) { 190 | 191 | const component = nextComponent || instantiateReactComponent(nextElement); 192 | 193 | // The initial render is synchronous but any updates that happen during 194 | // rendering, in componentWillMount or componentDidMount, will be batched 195 | // according to the current batching strategy. 196 | ReactUpdates.batchedUpdates(() => { 197 | // Batched mount component 198 | const transaction = ReactUpdates.ReactReconcileTransaction.getPooled(); 199 | transaction.perform(() => { 200 | 201 | component.mountComponent( 202 | transaction, 203 | rootID, 204 | {_idCounter: 0}, 205 | {} 206 | ); 207 | if (callback) { 208 | const publicInst = component.getPublicInstance(); 209 | callback(publicInst); 210 | } 211 | }); 212 | ReactUpdates.ReactReconcileTransaction.release(transaction); 213 | }); 214 | 215 | return component.getPublicInstance(); 216 | }, 217 | 218 | getNode(nativeTag) { 219 | return nativeTag; 220 | }, 221 | 222 | // // needed for react devtools ?! 223 | // getID(nativeTag: number): string { 224 | // const id = ReactInstanceHandles.getReactRootIDFromNodeID(nativeTag); 225 | // console.warn('TODO: ReactUMGMount.getID(%s) -> %s', nativeTag, id); 226 | // return id; 227 | // }, 228 | }; 229 | 230 | export default ReactUMGMount; 231 | -------------------------------------------------------------------------------- /src/ReactUMGReconcileTransaction.js: -------------------------------------------------------------------------------- 1 | import CallbackQueue from 'react/lib/CallbackQueue'; 2 | import PooledClass from 'react/lib/PooledClass'; 3 | import Transaction from 'react/lib/Transaction'; 4 | var ReactUpdateQueue = require('react/lib/ReactUpdateQueue'); 5 | 6 | /** 7 | * Provides a `CallbackQueue` queue for collecting `onDOMReady` callbacks during 8 | * the performing of the transaction. 9 | */ 10 | var ON_UMG_READY_QUEUEING = { 11 | /** 12 | * Initializes the internal firmata `connected` queue. 13 | */ 14 | initialize: function() { 15 | this.reactMountReady.reset(); 16 | }, 17 | 18 | /** 19 | * After Hardware is connected, invoke all registered `ready` callbacks. 20 | */ 21 | close: function() { 22 | this.reactMountReady.notifyAll(); 23 | }, 24 | }; 25 | 26 | /** 27 | * Executed within the scope of the `Transaction` instance. Consider these as 28 | * being member methods, but with an implied ordering while being isolated from 29 | * each other. 30 | */ 31 | var TRANSACTION_WRAPPERS = [ON_UMG_READY_QUEUEING]; 32 | 33 | function ReactUMGReconcileTransaction() { 34 | this.reinitializeTransaction(); 35 | this.reactMountReady = CallbackQueue.getPooled(null); 36 | } 37 | 38 | const Mixin = { 39 | /** 40 | * @see Transaction 41 | * @abstract 42 | * @final 43 | * @return {array} List of operation wrap procedures. 44 | */ 45 | getTransactionWrappers: function() { 46 | return TRANSACTION_WRAPPERS; 47 | }, 48 | 49 | /** 50 | * @return {object} The queue to collect `ready` callbacks with. 51 | */ 52 | getReactMountReady: function() { 53 | return this.reactMountReady; 54 | }, 55 | 56 | getUpdateQueue: function() { 57 | return ReactUpdateQueue; 58 | }, 59 | 60 | /** 61 | * `PooledClass` looks for this, and will invoke this before allowing this 62 | * instance to be resused. 63 | */ 64 | destructor: function() { 65 | CallbackQueue.release(this.reactMountReady); 66 | this.reactMountReady = null; 67 | }, 68 | }; 69 | 70 | Object.assign( 71 | ReactUMGReconcileTransaction.prototype, 72 | Transaction.Mixin, 73 | ReactUMGReconcileTransaction, 74 | Mixin 75 | ); 76 | 77 | PooledClass.addPoolingTo(ReactUMGReconcileTransaction); 78 | 79 | export default ReactUMGReconcileTransaction; 80 | 81 | -------------------------------------------------------------------------------- /src/UMGRoots.js: -------------------------------------------------------------------------------- 1 | 2 | export default {}; 3 | -------------------------------------------------------------------------------- /src/attributePayload.js: -------------------------------------------------------------------------------- 1 | /** @flow */ 2 | 3 | /** 4 | * diffProperties takes two sets of props and a set of valid attributes 5 | * and write to updatePayload the values that changed or were deleted. 6 | * If no updatePayload is provided, a new one is created and returned if 7 | * anything changed. 8 | */ 9 | const diffProperties = ( 10 | updatePayload: ?Object, 11 | prevProps: Object, 12 | nextProps: Object, 13 | validAttributes: Object 14 | ) => { 15 | // first iterate through the next props 16 | for (const propKey in nextProps) { 17 | if (!validAttributes[propKey]) { 18 | continue; // not valid propKey 19 | } 20 | 21 | const prevProp = prevProps[propKey]; 22 | const nextProp = nextProps[propKey]; 23 | 24 | if (prevProp === nextProp) { 25 | continue; // nothing changed 26 | } 27 | 28 | (updatePayload || (updatePayload = {}))[propKey] = nextProp; 29 | } 30 | 31 | // iterate through previous props and flag for removal to reset to default 32 | for (const propKey in prevProps) { 33 | if (nextProps[propKey] !== undefined) { 34 | continue; // already covered this key in the previous pass 35 | } 36 | 37 | if (!validAttributes[propKey]) { 38 | continue; // not valid propKey 39 | } 40 | 41 | const prevProp = prevProps[propKey]; 42 | if (prevProp === undefined) { 43 | continue; // was already empty anyway 44 | } 45 | 46 | // Pattern match on: validAttribute[propKey] 47 | if (typeof validAttributes[propKey] !== 'object') { 48 | // Flag the leaf property for removal 49 | (updatePayload || (updatePayload = {}))[propKey] = null; 50 | } 51 | } 52 | 53 | return updatePayload; 54 | }; 55 | 56 | type C = (props:Object, validAttributes:Object) => ?Object; 57 | export const create:C = ( 58 | props, 59 | validAttributes 60 | ) => { 61 | let result = null; 62 | for (const p in props) { 63 | if (!validAttributes[p]) { 64 | continue; 65 | } 66 | 67 | (result || (result = {}))[p] = props[p]; 68 | } 69 | 70 | return result; 71 | }; 72 | 73 | export const diff = ( 74 | prevProps: Object, 75 | nextProps: Object, 76 | validAttributes: Object 77 | ) => { 78 | return diffProperties( 79 | null, 80 | prevProps, 81 | nextProps, 82 | validAttributes 83 | ); 84 | }; 85 | 86 | -------------------------------------------------------------------------------- /src/components/Button.js: -------------------------------------------------------------------------------- 1 | let UMG = require('UMG'); 2 | 3 | class UMGButton { 4 | static createUmgElement(element, instantiator) { 5 | let declaration = UMG(Button, 6 | { 7 | OnClicked: _ => { 8 | if (element.props.onClick) 9 | element.props.onClick(); 10 | } 11 | }); 12 | 13 | let elem = instantiator(declaration); 14 | return elem; 15 | } 16 | } 17 | 18 | export default UMGButton; 19 | -------------------------------------------------------------------------------- /src/components/HorizontalBox.js: -------------------------------------------------------------------------------- 1 | let UMG = require('UMG'); 2 | 3 | class UMGHorizontalBox { 4 | static createUmgElement(element, instantiator) { 5 | let declaration = UMG.span({}); 6 | let elem = instantiator(declaration); 7 | return elem; 8 | } 9 | } 10 | 11 | export default UMGHorizontalBox; 12 | -------------------------------------------------------------------------------- /src/components/Input.js: -------------------------------------------------------------------------------- 1 | let UMG = require('UMG'); 2 | 3 | class UMGInput { 4 | static createUmgElement(element, instantiator) { 5 | let declaration = UMG(EditableTextBox, 6 | { 7 | OnTextChanged: text => { 8 | if (element.props.onChange) 9 | element.props.onChange(text); 10 | }, 11 | WidgetStyle: 12 | { 13 | 'font.font-object': GEngine.SmallFont, 14 | 'font.size': 20 15 | }, 16 | }); 17 | 18 | let elem = instantiator(declaration); 19 | return elem; 20 | } 21 | 22 | static applyProperties(umgElem, reactElem) { 23 | if (!umgElem) 24 | return; 25 | 26 | let value = reactElem.props.value; 27 | 28 | if (typeof value === 'string') 29 | umgElem.SetText(value); 30 | else if (value) 31 | console.warn(" can only use string values") 32 | } 33 | } 34 | 35 | export default UMGInput; 36 | -------------------------------------------------------------------------------- /src/components/Text.js: -------------------------------------------------------------------------------- 1 | let UMG = require('UMG'); 2 | 3 | class UMGText { 4 | static createUmgElement(element, instantiator) { 5 | let declaration = UMG.text({}); 6 | let elem = instantiator(declaration); 7 | return elem; 8 | } 9 | 10 | static applyProperties(umgElem, reactElem) { 11 | if (!umgElem) 12 | return; 13 | 14 | let value = reactElem.props.value || reactElem.props.children; 15 | 16 | if (typeof value === 'string') 17 | umgElem.SetText(value); 18 | else if (value) 19 | console.warn(" can only use string values") 20 | } 21 | } 22 | 23 | export default UMGText; 24 | -------------------------------------------------------------------------------- /src/components/VerticalBox.js: -------------------------------------------------------------------------------- 1 | let UMG = require('UMG'); 2 | 3 | class UMGVerticalBox { 4 | static createUmgElement(element, instantiator) { 5 | let declaration = UMG.div({}); 6 | let elem = instantiator(declaration); 7 | return elem; 8 | } 9 | } 10 | 11 | export default UMGVerticalBox; 12 | -------------------------------------------------------------------------------- /src/components/index.js: -------------------------------------------------------------------------------- 1 | // export {default as Root} from './Root'; 2 | // export {default as TextBlock} from './TextBlock'; 3 | 4 | import Button from './Button'; 5 | import HorizontalBox from './HorizontalBox'; 6 | import Input from './Input'; 7 | import Text from './Text'; 8 | import VerticalBox from './VerticalBox'; 9 | 10 | export default 11 | { 12 | button: Button, 13 | hbox: HorizontalBox, 14 | input: Input, 15 | text: Text, 16 | vbox: VerticalBox, 17 | } 18 | -------------------------------------------------------------------------------- /src/devtools/InitializeJavaScriptAppEngine.js: -------------------------------------------------------------------------------- 1 | import setupDevtools from './setupDevtools'; 2 | 3 | if (typeof GLOBAL === 'undefined') { 4 | global.GLOBAL = this; 5 | } 6 | 7 | if (typeof window === 'undefined') { 8 | global.window = GLOBAL; 9 | } 10 | 11 | if (!window || !window.document) { 12 | setupDevtools(); 13 | } 14 | 15 | if (typeof process === 'undefined') { 16 | global.process = { env: 'development' }; 17 | } 18 | -------------------------------------------------------------------------------- /src/devtools/setupDevtools.js: -------------------------------------------------------------------------------- 1 | /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ 2 | //import WS from 'ws'; 3 | const window = typeof window === 'undefined' ? global : window; 4 | 5 | function setupDevtools() { 6 | var messageListeners = []; 7 | var closeListeners = []; 8 | //var ws = new WS('ws://localhost:8097/devtools'); 9 | // this is accessed by the eval'd backend code 10 | var FOR_BACKEND = { // eslint-disable-line no-unused-vars 11 | wall: { 12 | listen(fn) { 13 | messageListeners.push(fn); 14 | }, 15 | onClose(fn) { 16 | closeListeners.push(fn); 17 | }, 18 | send(data) { 19 | console.log('sending\n%s\n', JSON.stringify(data, null, 2)); 20 | //ws.send(JSON.stringify(data)); 21 | }, 22 | }, 23 | }; 24 | } 25 | 26 | export default setupDevtools; 27 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import ReactUMGMount from './ReactUMGMount'; 2 | import * as ReactUMGComponents from './components'; 3 | 4 | export * from './components'; 5 | export const render = ReactUMGMount.render; 6 | export const unmountComponentAtNode = ReactUMGMount.unmountComponentAtNode; 7 | 8 | const ReactUMG = Object.assign( 9 | {}, 10 | { 11 | render: ReactUMGMount.render, 12 | unmountComponentAtNode: ReactUMGMount.unmountComponentAtNode, 13 | }, 14 | ReactUMGComponents 15 | ); 16 | 17 | export default ReactUMG; 18 | --------------------------------------------------------------------------------