diff --git a/.vsconfig b/.vsconfig new file mode 100644 index 00000000..1a9d7180 --- /dev/null +++ b/.vsconfig @@ -0,0 +1,13 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.Net.Component.4.6.2.TargetingPack", + "Microsoft.VisualStudio.Component.VC.14.36.17.6.x86.x64", + "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", + "Microsoft.VisualStudio.Component.Windows10SDK.22000", + "Microsoft.VisualStudio.Workload.CoreEditor", + "Microsoft.VisualStudio.Workload.ManagedDesktop", + "Microsoft.VisualStudio.Workload.NativeDesktop", + "Microsoft.VisualStudio.Workload.NativeGame" + ] +} diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index fa7a7030..35898a22 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -7,7 +7,7 @@ GlobalDefaultGameMode=/Game/Blueprints/BP_Gamemode.BP_Gamemode_C MinimumiOSVersion=IOS_14 [/Script/Engine.RendererSettings] -r.Shadow.Virtual.Enable=1 +r.Shadow.Virtual.Enable=0 r.Mobile.EnableNoPrecomputedLightingCSMShader=1 r.GenerateMeshDistanceFields=True r.DynamicGlobalIlluminationMethod=2 @@ -22,6 +22,32 @@ AppliedDefaultGraphicsPerformance=Maximum [/Script/WindowsTargetPlatform.WindowsTargetSettings] DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 +-D3D12TargetedShaderFormats=PCD3D_SM5 ++D3D12TargetedShaderFormats=PCD3D_SM6 +-D3D11TargetedShaderFormats=PCD3D_SM5 ++D3D11TargetedShaderFormats=PCD3D_SM5 +Compiler=Default +AudioSampleRate=48000 +AudioCallbackBufferFrameSize=1024 +AudioNumBuffersToEnqueue=1 +AudioMaxChannels=0 +AudioNumSourceWorkers=4 +SpatializationPlugin= +SourceDataOverridePlugin= +ReverbPlugin= +OcclusionPlugin= +CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) +CacheSizeKB=65536 +MaxChunkSizeOverrideKB=0 +bResampleForDevice=False +MaxSampleRate=48000.000000 +HighSampleRate=32000.000000 +MedSampleRate=24000.000000 +LowSampleRate=12000.000000 +MinSampleRate=8000.000000 +CompressionQualityModifier=1.000000 +AutoStreamingThreshold=0.000000 +SoundCueCookQualityIndex=-1 [/Script/Engine.Engine] +ActiveGameNameRedirects=(OldGameName="TP_ThirdPerson",NewGameName="/Script/MassAITesting") diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini index 9998190c..bd2de43f 100644 --- a/Config/DefaultInput.ini +++ b/Config/DefaultInput.ini @@ -68,6 +68,11 @@ bEnableMouseSmoothing=True bEnableFOVScaling=True bCaptureMouseOnLaunch=True bEnableLegacyInputScales=True +bEnableMotionControls=True +bFilterInputByPlatformUser=False +bEnableInputDeviceSubsystem=True +bShouldFlushPressedKeysOnViewportFocusLost=True +bEnableDynamicComponentInputBinding=True bAlwaysShowTouchInterface=False bShowConsoleOnFourFingerTap=True bEnableGestureRecognizer=False @@ -92,8 +97,8 @@ DoubleClickTime=0.200000 +AxisMappings=(AxisName="Turn Right / Left Mouse",Scale=1.000000,Key=MouseX) +AxisMappings=(AxisName="Look Up / Down Gamepad",Scale=1.000000,Key=Gamepad_RightY) +AxisMappings=(AxisName="Look Up / Down Mouse",Scale=-1.000000,Key=MouseY) -DefaultPlayerInputClass=/Script/Engine.PlayerInput -DefaultInputComponentClass=/Script/Engine.InputComponent +DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput +DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks -ConsoleKeys=Tilde +ConsoleKeys=Tilde diff --git a/Config/DefaultMass.ini b/Config/DefaultMass.ini index e149af7e..9e3a0bc7 100644 --- a/Config/DefaultMass.ini +++ b/Config/DefaultMass.ini @@ -5,3 +5,6 @@ MaxActivationsPerLOD[2]=50 MaxActivationsPerLOD[3]=50 ExecutionOrder=(ExecuteInGroup="",ExecuteBefore=("Behavior"),ExecuteAfter=("LOD")) +[/Script/MassMovement.MassMovementSettings] ++MovementStyles=(Name="Default",ID=2518F2684D252D77C636B69051AB42E0) + diff --git a/Content/Blueprints/Agents/BP_ISM_Test.uasset b/Content/Blueprints/Agents/BP_ISM_Test.uasset new file mode 100644 index 00000000..24037e3e Binary files /dev/null and b/Content/Blueprints/Agents/BP_ISM_Test.uasset differ diff --git a/Content/Blueprints/Agents/BP_RTSAgent.uasset b/Content/Blueprints/Agents/BP_RTSAgent.uasset new file mode 100644 index 00000000..10624940 Binary files /dev/null and b/Content/Blueprints/Agents/BP_RTSAgent.uasset differ diff --git a/Content/Blueprints/Agents/DA_Entity.uasset b/Content/Blueprints/Agents/DA_Entity.uasset new file mode 100644 index 00000000..80c1cf5d Binary files /dev/null and b/Content/Blueprints/Agents/DA_Entity.uasset differ diff --git a/Content/Blueprints/BP_Home.uasset b/Content/Blueprints/BP_Home.uasset index a4ce9107..59cd8d15 100644 Binary files a/Content/Blueprints/BP_Home.uasset and b/Content/Blueprints/BP_Home.uasset differ diff --git a/Content/Blueprints/BP_ISM_Test.uasset b/Content/Blueprints/BP_ISM_Test.uasset deleted file mode 100644 index 89f9b751..00000000 Binary files a/Content/Blueprints/BP_ISM_Test.uasset and /dev/null differ diff --git a/Content/Blueprints/BP_RTSAgent.uasset b/Content/Blueprints/BP_RTSAgent.uasset deleted file mode 100644 index 2bd87983..00000000 Binary files a/Content/Blueprints/BP_RTSAgent.uasset and /dev/null differ diff --git a/Content/Blueprints/BP_ResourceSpawner.uasset b/Content/Blueprints/BP_ResourceSpawner.uasset deleted file mode 100644 index ce0fbcca..00000000 Binary files a/Content/Blueprints/BP_ResourceSpawner.uasset and /dev/null differ diff --git a/Content/Blueprints/BP_Rock.uasset b/Content/Blueprints/BP_Rock.uasset deleted file mode 100644 index 91e4de0c..00000000 Binary files a/Content/Blueprints/BP_Rock.uasset and /dev/null differ diff --git a/Content/Blueprints/BP_SO_BehaviorConfig.uasset b/Content/Blueprints/BP_SO_BehaviorConfig.uasset deleted file mode 100644 index 84a07524..00000000 Binary files a/Content/Blueprints/BP_SO_BehaviorConfig.uasset and /dev/null differ diff --git a/Content/Blueprints/BP_SO_Behavior_Test.uasset b/Content/Blueprints/BP_SO_Behavior_Test.uasset deleted file mode 100644 index 334a59c7..00000000 Binary files a/Content/Blueprints/BP_SO_Behavior_Test.uasset and /dev/null differ diff --git a/Content/Blueprints/BP_Tree.uasset b/Content/Blueprints/BP_Tree.uasset deleted file mode 100644 index 9316ca8f..00000000 Binary files a/Content/Blueprints/BP_Tree.uasset and /dev/null differ diff --git a/Content/Blueprints/DA_Entity.uasset b/Content/Blueprints/DA_Entity.uasset deleted file mode 100644 index 398252c9..00000000 Binary files a/Content/Blueprints/DA_Entity.uasset and /dev/null differ diff --git a/Content/Blueprints/DA_Item.uasset b/Content/Blueprints/DA_Item.uasset deleted file mode 100644 index 60cf7955..00000000 Binary files a/Content/Blueprints/DA_Item.uasset and /dev/null differ diff --git a/Content/Blueprints/DA_Obstacle.uasset b/Content/Blueprints/DA_Obstacle.uasset deleted file mode 100644 index 0d522977..00000000 Binary files a/Content/Blueprints/DA_Obstacle.uasset and /dev/null differ diff --git a/Content/Blueprints/Environment/BP_ResourceSpawner.uasset b/Content/Blueprints/Environment/BP_ResourceSpawner.uasset new file mode 100644 index 00000000..27b2ed61 Binary files /dev/null and b/Content/Blueprints/Environment/BP_ResourceSpawner.uasset differ diff --git a/Content/Blueprints/Environment/BP_Rock.uasset b/Content/Blueprints/Environment/BP_Rock.uasset new file mode 100644 index 00000000..2d163b73 Binary files /dev/null and b/Content/Blueprints/Environment/BP_Rock.uasset differ diff --git a/Content/Blueprints/Environment/BP_Tree.uasset b/Content/Blueprints/Environment/BP_Tree.uasset new file mode 100644 index 00000000..cc4c2aa1 Binary files /dev/null and b/Content/Blueprints/Environment/BP_Tree.uasset differ diff --git a/Content/Blueprints/Environment/DA_Item.uasset b/Content/Blueprints/Environment/DA_Item.uasset new file mode 100644 index 00000000..9886f270 Binary files /dev/null and b/Content/Blueprints/Environment/DA_Item.uasset differ diff --git a/Content/Blueprints/Environment/DA_Obstacle.uasset b/Content/Blueprints/Environment/DA_Obstacle.uasset new file mode 100644 index 00000000..c481f0ce Binary files /dev/null and b/Content/Blueprints/Environment/DA_Obstacle.uasset differ diff --git a/Content/Blueprints/SO_Home.uasset b/Content/Blueprints/SO_Home.uasset deleted file mode 100644 index 9b8e28ad..00000000 Binary files a/Content/Blueprints/SO_Home.uasset and /dev/null differ diff --git a/Content/Blueprints/SO_Rock.uasset b/Content/Blueprints/SO_Rock.uasset deleted file mode 100644 index e9f61cc1..00000000 Binary files a/Content/Blueprints/SO_Rock.uasset and /dev/null differ diff --git a/Content/Blueprints/SO_Tree.uasset b/Content/Blueprints/SO_Tree.uasset deleted file mode 100644 index 5c8b04f7..00000000 Binary files a/Content/Blueprints/SO_Tree.uasset and /dev/null differ diff --git a/Content/Blueprints/ST_RTSAgent.uasset b/Content/Blueprints/ST_RTSAgent.uasset deleted file mode 100644 index f0b68d01..00000000 Binary files a/Content/Blueprints/ST_RTSAgent.uasset and /dev/null differ diff --git a/Content/Blueprints/ST_Testing.uasset b/Content/Blueprints/ST_Testing.uasset deleted file mode 100644 index a884b9bd..00000000 Binary files a/Content/Blueprints/ST_Testing.uasset and /dev/null differ diff --git a/Content/Blueprints/SmartObjects/SO_Home.uasset b/Content/Blueprints/SmartObjects/SO_Home.uasset new file mode 100644 index 00000000..9cc46b39 Binary files /dev/null and b/Content/Blueprints/SmartObjects/SO_Home.uasset differ diff --git a/Content/Blueprints/SmartObjects/SO_Rock.uasset b/Content/Blueprints/SmartObjects/SO_Rock.uasset new file mode 100644 index 00000000..1d21efd4 Binary files /dev/null and b/Content/Blueprints/SmartObjects/SO_Rock.uasset differ diff --git a/Content/Blueprints/SmartObjects/SO_Tree.uasset b/Content/Blueprints/SmartObjects/SO_Tree.uasset new file mode 100644 index 00000000..c3a844f1 Binary files /dev/null and b/Content/Blueprints/SmartObjects/SO_Tree.uasset differ diff --git a/Content/Blueprints/StateTree/STC_Test.uasset b/Content/Blueprints/StateTree/STC_Test.uasset deleted file mode 100644 index 986e9850..00000000 Binary files a/Content/Blueprints/StateTree/STC_Test.uasset and /dev/null differ diff --git a/Content/Blueprints/StateTree/STE_Test.uasset b/Content/Blueprints/StateTree/STE_Test.uasset deleted file mode 100644 index f1e3a187..00000000 Binary files a/Content/Blueprints/StateTree/STE_Test.uasset and /dev/null differ diff --git a/Content/Blueprints/StateTree/STT_Test.uasset b/Content/Blueprints/StateTree/STT_Test.uasset deleted file mode 100644 index 8faf91fb..00000000 Binary files a/Content/Blueprints/StateTree/STT_Test.uasset and /dev/null differ diff --git a/Content/Blueprints/StateTree/ST_RTSAgent.uasset b/Content/Blueprints/StateTree/ST_RTSAgent.uasset new file mode 100644 index 00000000..9f1ddfc1 Binary files /dev/null and b/Content/Blueprints/StateTree/ST_RTSAgent.uasset differ diff --git a/Content/StarterContent/Architecture/Floor_400x400.uasset b/Content/StarterContent/Architecture/Floor_400x400.uasset index 8c29567f..568b3e23 100644 Binary files a/Content/StarterContent/Architecture/Floor_400x400.uasset and b/Content/StarterContent/Architecture/Floor_400x400.uasset differ diff --git a/Content/StarterContent/Architecture/Pillar_50x500.uasset b/Content/StarterContent/Architecture/Pillar_50x500.uasset index bdc6300c..46aed7dc 100644 Binary files a/Content/StarterContent/Architecture/Pillar_50x500.uasset and b/Content/StarterContent/Architecture/Pillar_50x500.uasset differ diff --git a/Content/StarterContent/Architecture/SM_AssetPlatform.uasset b/Content/StarterContent/Architecture/SM_AssetPlatform.uasset index 91af5455..1f0f0bec 100644 Binary files a/Content/StarterContent/Architecture/SM_AssetPlatform.uasset and b/Content/StarterContent/Architecture/SM_AssetPlatform.uasset differ diff --git a/Content/StarterContent/Architecture/Wall_400x200.uasset b/Content/StarterContent/Architecture/Wall_400x200.uasset index dbe6a03b..a7aeff7e 100644 Binary files a/Content/StarterContent/Architecture/Wall_400x200.uasset and b/Content/StarterContent/Architecture/Wall_400x200.uasset differ diff --git a/Content/StarterContent/Architecture/Wall_400x300.uasset b/Content/StarterContent/Architecture/Wall_400x300.uasset index 2d054587..959fd410 100644 Binary files a/Content/StarterContent/Architecture/Wall_400x300.uasset and b/Content/StarterContent/Architecture/Wall_400x300.uasset differ diff --git a/Content/StarterContent/Architecture/Wall_400x400.uasset b/Content/StarterContent/Architecture/Wall_400x400.uasset index 8de09bf7..9ad5e36a 100644 Binary files a/Content/StarterContent/Architecture/Wall_400x400.uasset and b/Content/StarterContent/Architecture/Wall_400x400.uasset differ diff --git a/Content/StarterContent/Architecture/Wall_500x500.uasset b/Content/StarterContent/Architecture/Wall_500x500.uasset index d5069d01..96e5e9ba 100644 Binary files a/Content/StarterContent/Architecture/Wall_500x500.uasset and b/Content/StarterContent/Architecture/Wall_500x500.uasset differ diff --git a/Content/StarterContent/Architecture/Wall_Door_400x300.uasset b/Content/StarterContent/Architecture/Wall_Door_400x300.uasset index e8e8c435..8b60b28f 100644 Binary files a/Content/StarterContent/Architecture/Wall_Door_400x300.uasset and b/Content/StarterContent/Architecture/Wall_Door_400x300.uasset differ diff --git a/Content/StarterContent/Architecture/Wall_Door_400x400.uasset b/Content/StarterContent/Architecture/Wall_Door_400x400.uasset index b2374ef4..55b60cbb 100644 Binary files a/Content/StarterContent/Architecture/Wall_Door_400x400.uasset and b/Content/StarterContent/Architecture/Wall_Door_400x400.uasset differ diff --git a/Content/StarterContent/Architecture/Wall_Window_400x300.uasset b/Content/StarterContent/Architecture/Wall_Window_400x300.uasset index 09557eac..cb91768f 100644 Binary files a/Content/StarterContent/Architecture/Wall_Window_400x300.uasset and b/Content/StarterContent/Architecture/Wall_Window_400x300.uasset differ diff --git a/Content/StarterContent/Architecture/Wall_Window_400x400.uasset b/Content/StarterContent/Architecture/Wall_Window_400x400.uasset index 482ed750..1d2259df 100644 Binary files a/Content/StarterContent/Architecture/Wall_Window_400x400.uasset and b/Content/StarterContent/Architecture/Wall_Window_400x400.uasset differ diff --git a/Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset b/Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset index ea2837b3..6babc5b6 100644 Binary files a/Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset and b/Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset differ diff --git a/Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset b/Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset index 5c2ebaac..55151f59 100644 Binary files a/Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset and b/Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset differ diff --git a/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset index 26b68757..1e8f009f 100644 Binary files a/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset and b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset differ diff --git a/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset index 14867a5e..c81172b5 100644 Binary files a/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset and b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset differ diff --git a/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset index 730f0590..e47d5e08 100644 Binary files a/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset and b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset differ diff --git a/Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset b/Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset index b19da9a2..94e62036 100644 Binary files a/Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset and b/Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset differ diff --git a/Content/StarterContent/Blueprints/Assets/Skybox.uasset b/Content/StarterContent/Blueprints/Assets/Skybox.uasset index 85c063aa..54dc67ab 100644 Binary files a/Content/StarterContent/Blueprints/Assets/Skybox.uasset and b/Content/StarterContent/Blueprints/Assets/Skybox.uasset differ diff --git a/Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset b/Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset index 454ca01b..e2c37657 100644 Binary files a/Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset and b/Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset differ diff --git a/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset index 4cc6c685..6639322f 100644 Binary files a/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset and b/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset differ diff --git a/Content/StarterContent/Maps/Minimal_Default.umap b/Content/StarterContent/Maps/Minimal_Default.umap index e056d46c..378270c2 100644 Binary files a/Content/StarterContent/Maps/Minimal_Default.umap and b/Content/StarterContent/Maps/Minimal_Default.umap differ diff --git a/Content/StarterContent/Maps/StarterMap.umap b/Content/StarterContent/Maps/StarterMap.umap index 5bea6423..3d551474 100644 Binary files a/Content/StarterContent/Maps/StarterMap.umap and b/Content/StarterContent/Maps/StarterMap.umap differ diff --git a/Content/StarterContent/Materials/M_AssetPlatform.uasset b/Content/StarterContent/Materials/M_AssetPlatform.uasset index bbff73a8..49627770 100644 Binary files a/Content/StarterContent/Materials/M_AssetPlatform.uasset and b/Content/StarterContent/Materials/M_AssetPlatform.uasset differ diff --git a/Content/StarterContent/Materials/M_Basic_Floor.uasset b/Content/StarterContent/Materials/M_Basic_Floor.uasset index 498b3d54..6b05cb4b 100644 Binary files a/Content/StarterContent/Materials/M_Basic_Floor.uasset and b/Content/StarterContent/Materials/M_Basic_Floor.uasset differ diff --git a/Content/StarterContent/Materials/M_Basic_Wall.uasset b/Content/StarterContent/Materials/M_Basic_Wall.uasset index 61ef19aa..dd5ae24f 100644 Binary files a/Content/StarterContent/Materials/M_Basic_Wall.uasset and b/Content/StarterContent/Materials/M_Basic_Wall.uasset differ diff --git a/Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset b/Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset index 4a8b2816..2b8a349d 100644 Binary files a/Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset and b/Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset differ diff --git a/Content/StarterContent/Materials/M_Brick_Clay_New.uasset b/Content/StarterContent/Materials/M_Brick_Clay_New.uasset index 55f4bbcb..e5192452 100644 Binary files a/Content/StarterContent/Materials/M_Brick_Clay_New.uasset and b/Content/StarterContent/Materials/M_Brick_Clay_New.uasset differ diff --git a/Content/StarterContent/Materials/M_Brick_Clay_Old.uasset b/Content/StarterContent/Materials/M_Brick_Clay_Old.uasset index 4d14eff2..bd493235 100644 Binary files a/Content/StarterContent/Materials/M_Brick_Clay_Old.uasset and b/Content/StarterContent/Materials/M_Brick_Clay_Old.uasset differ diff --git a/Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset b/Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset index 334d799a..2ff69bc8 100644 Binary files a/Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset and b/Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset differ diff --git a/Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset b/Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset index a3df1d76..d1d7e679 100644 Binary files a/Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset and b/Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset differ diff --git a/Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset b/Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset index 02d8081b..e5f05900 100644 Binary files a/Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset and b/Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset differ diff --git a/Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset b/Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset index 626e0c98..958dd1b6 100644 Binary files a/Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset and b/Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset differ diff --git a/Content/StarterContent/Materials/M_CobbleStone_Rough.uasset b/Content/StarterContent/Materials/M_CobbleStone_Rough.uasset index 30db2d48..fb1c6d3f 100644 Binary files a/Content/StarterContent/Materials/M_CobbleStone_Rough.uasset and b/Content/StarterContent/Materials/M_CobbleStone_Rough.uasset differ diff --git a/Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset b/Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset index d8cd78a6..642aaaaa 100644 Binary files a/Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset and b/Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset differ diff --git a/Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset b/Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset index 86b91aa7..4b25f743 100644 Binary files a/Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset and b/Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset differ diff --git a/Content/StarterContent/Materials/M_Concrete_Grime.uasset b/Content/StarterContent/Materials/M_Concrete_Grime.uasset index 6418d5d0..3be6070d 100644 Binary files a/Content/StarterContent/Materials/M_Concrete_Grime.uasset and b/Content/StarterContent/Materials/M_Concrete_Grime.uasset differ diff --git a/Content/StarterContent/Materials/M_Concrete_Panels.uasset b/Content/StarterContent/Materials/M_Concrete_Panels.uasset index 03f5560e..d8436264 100644 Binary files a/Content/StarterContent/Materials/M_Concrete_Panels.uasset and b/Content/StarterContent/Materials/M_Concrete_Panels.uasset differ diff --git a/Content/StarterContent/Materials/M_Concrete_Poured.uasset b/Content/StarterContent/Materials/M_Concrete_Poured.uasset index 3a67e61f..34661dab 100644 Binary files a/Content/StarterContent/Materials/M_Concrete_Poured.uasset and b/Content/StarterContent/Materials/M_Concrete_Poured.uasset differ diff --git a/Content/StarterContent/Materials/M_Concrete_Tiles.uasset b/Content/StarterContent/Materials/M_Concrete_Tiles.uasset index 1f094644..26e71635 100644 Binary files a/Content/StarterContent/Materials/M_Concrete_Tiles.uasset and b/Content/StarterContent/Materials/M_Concrete_Tiles.uasset differ diff --git a/Content/StarterContent/Materials/M_Glass.uasset b/Content/StarterContent/Materials/M_Glass.uasset index 7a724fa5..7168e4f5 100644 Binary files a/Content/StarterContent/Materials/M_Glass.uasset and b/Content/StarterContent/Materials/M_Glass.uasset differ diff --git a/Content/StarterContent/Materials/M_Ground_Grass.uasset b/Content/StarterContent/Materials/M_Ground_Grass.uasset index 14dc3f41..1cbe2a55 100644 Binary files a/Content/StarterContent/Materials/M_Ground_Grass.uasset and b/Content/StarterContent/Materials/M_Ground_Grass.uasset differ diff --git a/Content/StarterContent/Materials/M_Ground_Gravel.uasset b/Content/StarterContent/Materials/M_Ground_Gravel.uasset index ae1e67f7..7d3d68f2 100644 Binary files a/Content/StarterContent/Materials/M_Ground_Gravel.uasset and b/Content/StarterContent/Materials/M_Ground_Gravel.uasset differ diff --git a/Content/StarterContent/Materials/M_Ground_Moss.uasset b/Content/StarterContent/Materials/M_Ground_Moss.uasset index 95a0fc58..ff1f454d 100644 Binary files a/Content/StarterContent/Materials/M_Ground_Moss.uasset and b/Content/StarterContent/Materials/M_Ground_Moss.uasset differ diff --git a/Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset b/Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset index 0694e6d8..e34b6061 100644 Binary files a/Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset and b/Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset differ diff --git a/Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset b/Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset index eec4dec5..5091518e 100644 Binary files a/Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset and b/Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset differ diff --git a/Content/StarterContent/Materials/M_Metal_Chrome.uasset b/Content/StarterContent/Materials/M_Metal_Chrome.uasset index 9a822c51..2997cde3 100644 Binary files a/Content/StarterContent/Materials/M_Metal_Chrome.uasset and b/Content/StarterContent/Materials/M_Metal_Chrome.uasset differ diff --git a/Content/StarterContent/Materials/M_Metal_Copper.uasset b/Content/StarterContent/Materials/M_Metal_Copper.uasset index 42633ce8..2f3841c6 100644 Binary files a/Content/StarterContent/Materials/M_Metal_Copper.uasset and b/Content/StarterContent/Materials/M_Metal_Copper.uasset differ diff --git a/Content/StarterContent/Materials/M_Metal_Gold.uasset b/Content/StarterContent/Materials/M_Metal_Gold.uasset index 7bde4256..0fc3df3a 100644 Binary files a/Content/StarterContent/Materials/M_Metal_Gold.uasset and b/Content/StarterContent/Materials/M_Metal_Gold.uasset differ diff --git a/Content/StarterContent/Materials/M_Metal_Rust.uasset b/Content/StarterContent/Materials/M_Metal_Rust.uasset index b1d05f5a..8402144d 100644 Binary files a/Content/StarterContent/Materials/M_Metal_Rust.uasset and b/Content/StarterContent/Materials/M_Metal_Rust.uasset differ diff --git a/Content/StarterContent/Materials/M_Metal_Steel.uasset b/Content/StarterContent/Materials/M_Metal_Steel.uasset index 912470a6..e303340d 100644 Binary files a/Content/StarterContent/Materials/M_Metal_Steel.uasset and b/Content/StarterContent/Materials/M_Metal_Steel.uasset differ diff --git a/Content/StarterContent/Materials/M_Rock_Basalt.uasset b/Content/StarterContent/Materials/M_Rock_Basalt.uasset index 5b209f73..d2cf1ba9 100644 Binary files a/Content/StarterContent/Materials/M_Rock_Basalt.uasset and b/Content/StarterContent/Materials/M_Rock_Basalt.uasset differ diff --git a/Content/StarterContent/Materials/M_Rock_Marble_Polished.uasset b/Content/StarterContent/Materials/M_Rock_Marble_Polished.uasset index 97bf29de..d177e32f 100644 Binary files a/Content/StarterContent/Materials/M_Rock_Marble_Polished.uasset and b/Content/StarterContent/Materials/M_Rock_Marble_Polished.uasset differ diff --git a/Content/StarterContent/Materials/M_Rock_Sandstone.uasset b/Content/StarterContent/Materials/M_Rock_Sandstone.uasset index 873d4f6e..4ca7e317 100644 Binary files a/Content/StarterContent/Materials/M_Rock_Sandstone.uasset and b/Content/StarterContent/Materials/M_Rock_Sandstone.uasset differ diff --git a/Content/StarterContent/Materials/M_Rock_Slate.uasset b/Content/StarterContent/Materials/M_Rock_Slate.uasset index 7a8f580e..53f6bb87 100644 Binary files a/Content/StarterContent/Materials/M_Rock_Slate.uasset and b/Content/StarterContent/Materials/M_Rock_Slate.uasset differ diff --git a/Content/StarterContent/Materials/M_Tech_Checker_Dot.uasset b/Content/StarterContent/Materials/M_Tech_Checker_Dot.uasset index ee140320..041b0f8e 100644 Binary files a/Content/StarterContent/Materials/M_Tech_Checker_Dot.uasset and b/Content/StarterContent/Materials/M_Tech_Checker_Dot.uasset differ diff --git a/Content/StarterContent/Materials/M_Tech_Hex_Tile.uasset b/Content/StarterContent/Materials/M_Tech_Hex_Tile.uasset index f66870dd..f1023688 100644 Binary files a/Content/StarterContent/Materials/M_Tech_Hex_Tile.uasset and b/Content/StarterContent/Materials/M_Tech_Hex_Tile.uasset differ diff --git a/Content/StarterContent/Materials/M_Tech_Hex_Tile_Pulse.uasset b/Content/StarterContent/Materials/M_Tech_Hex_Tile_Pulse.uasset index 2f785edd..570262a0 100644 Binary files a/Content/StarterContent/Materials/M_Tech_Hex_Tile_Pulse.uasset and b/Content/StarterContent/Materials/M_Tech_Hex_Tile_Pulse.uasset differ diff --git a/Content/StarterContent/Materials/M_Tech_Panel.uasset b/Content/StarterContent/Materials/M_Tech_Panel.uasset index c1867770..1afccae3 100644 Binary files a/Content/StarterContent/Materials/M_Tech_Panel.uasset and b/Content/StarterContent/Materials/M_Tech_Panel.uasset differ diff --git a/Content/StarterContent/Materials/M_Water_Lake.uasset b/Content/StarterContent/Materials/M_Water_Lake.uasset index 3a0789aa..88a63337 100644 Binary files a/Content/StarterContent/Materials/M_Water_Lake.uasset and b/Content/StarterContent/Materials/M_Water_Lake.uasset differ diff --git a/Content/StarterContent/Materials/M_Water_Ocean.uasset b/Content/StarterContent/Materials/M_Water_Ocean.uasset index 367ea6e2..1ff0460a 100644 Binary files a/Content/StarterContent/Materials/M_Water_Ocean.uasset and b/Content/StarterContent/Materials/M_Water_Ocean.uasset differ diff --git a/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Polished.uasset b/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Polished.uasset index a2f3818f..8bbba08d 100644 Binary files a/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Polished.uasset and b/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Polished.uasset differ diff --git a/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Worn.uasset b/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Worn.uasset index f59f6b2c..229a2949 100644 Binary files a/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Worn.uasset and b/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Worn.uasset differ diff --git a/Content/StarterContent/Materials/M_Wood_Oak.uasset b/Content/StarterContent/Materials/M_Wood_Oak.uasset index 2eeda9aa..d722444f 100644 Binary files a/Content/StarterContent/Materials/M_Wood_Oak.uasset and b/Content/StarterContent/Materials/M_Wood_Oak.uasset differ diff --git a/Content/StarterContent/Materials/M_Wood_Pine.uasset b/Content/StarterContent/Materials/M_Wood_Pine.uasset index 6cac5eca..b02101c9 100644 Binary files a/Content/StarterContent/Materials/M_Wood_Pine.uasset and b/Content/StarterContent/Materials/M_Wood_Pine.uasset differ diff --git a/Content/StarterContent/Materials/M_Wood_Walnut.uasset b/Content/StarterContent/Materials/M_Wood_Walnut.uasset index 3f20536f..6e763410 100644 Binary files a/Content/StarterContent/Materials/M_Wood_Walnut.uasset and b/Content/StarterContent/Materials/M_Wood_Walnut.uasset differ diff --git a/Content/StarterContent/Particles/Materials/M_Burst.uasset b/Content/StarterContent/Particles/Materials/M_Burst.uasset index 95fa7feb..12caa0a3 100644 Binary files a/Content/StarterContent/Particles/Materials/M_Burst.uasset and b/Content/StarterContent/Particles/Materials/M_Burst.uasset differ diff --git a/Content/StarterContent/Particles/Materials/M_Dust_Particle.uasset b/Content/StarterContent/Particles/Materials/M_Dust_Particle.uasset index 9af46f11..4f665d03 100644 Binary files a/Content/StarterContent/Particles/Materials/M_Dust_Particle.uasset and b/Content/StarterContent/Particles/Materials/M_Dust_Particle.uasset differ diff --git a/Content/StarterContent/Particles/Materials/M_Fire_SubUV.uasset b/Content/StarterContent/Particles/Materials/M_Fire_SubUV.uasset index 4b2548d3..73f3eaab 100644 Binary files a/Content/StarterContent/Particles/Materials/M_Fire_SubUV.uasset and b/Content/StarterContent/Particles/Materials/M_Fire_SubUV.uasset differ diff --git a/Content/StarterContent/Particles/Materials/M_Heat_Distortion.uasset b/Content/StarterContent/Particles/Materials/M_Heat_Distortion.uasset index a7f38a58..d34ee589 100644 Binary files a/Content/StarterContent/Particles/Materials/M_Heat_Distortion.uasset and b/Content/StarterContent/Particles/Materials/M_Heat_Distortion.uasset differ diff --git a/Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset b/Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset index a2dbd9ee..9829b9a1 100644 Binary files a/Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset and b/Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset differ diff --git a/Content/StarterContent/Particles/Materials/M_Spark.uasset b/Content/StarterContent/Particles/Materials/M_Spark.uasset index 0ecf6f1c..6f6f6994 100644 Binary files a/Content/StarterContent/Particles/Materials/M_Spark.uasset and b/Content/StarterContent/Particles/Materials/M_Spark.uasset differ diff --git a/Content/StarterContent/Particles/Materials/M_explosion_subUV.uasset b/Content/StarterContent/Particles/Materials/M_explosion_subUV.uasset index 9a9041a5..1af76e6a 100644 Binary files a/Content/StarterContent/Particles/Materials/M_explosion_subUV.uasset and b/Content/StarterContent/Particles/Materials/M_explosion_subUV.uasset differ diff --git a/Content/StarterContent/Particles/Materials/M_radial_ramp.uasset b/Content/StarterContent/Particles/Materials/M_radial_ramp.uasset index 4a7c8f70..b0228262 100644 Binary files a/Content/StarterContent/Particles/Materials/M_radial_ramp.uasset and b/Content/StarterContent/Particles/Materials/M_radial_ramp.uasset differ diff --git a/Content/StarterContent/Particles/Materials/M_smoke_subUV.uasset b/Content/StarterContent/Particles/Materials/M_smoke_subUV.uasset index 8a89654c..2086e5f0 100644 Binary files a/Content/StarterContent/Particles/Materials/M_smoke_subUV.uasset and b/Content/StarterContent/Particles/Materials/M_smoke_subUV.uasset differ diff --git a/Content/StarterContent/Particles/Materials/m_flare_01.uasset b/Content/StarterContent/Particles/Materials/m_flare_01.uasset index a2af5ac9..824b44b5 100644 Binary files a/Content/StarterContent/Particles/Materials/m_flare_01.uasset and b/Content/StarterContent/Particles/Materials/m_flare_01.uasset differ diff --git a/Content/StarterContent/Props/MaterialSphere.uasset b/Content/StarterContent/Props/MaterialSphere.uasset index c1463ff1..6a2538f0 100644 Binary files a/Content/StarterContent/Props/MaterialSphere.uasset and b/Content/StarterContent/Props/MaterialSphere.uasset differ diff --git a/Content/StarterContent/Props/Materials/M_Bush.uasset b/Content/StarterContent/Props/Materials/M_Bush.uasset index 887ffe86..eaa4a2a5 100644 Binary files a/Content/StarterContent/Props/Materials/M_Bush.uasset and b/Content/StarterContent/Props/Materials/M_Bush.uasset differ diff --git a/Content/StarterContent/Props/Materials/M_Chair.uasset b/Content/StarterContent/Props/Materials/M_Chair.uasset index 659b2232..76ef00f7 100644 Binary files a/Content/StarterContent/Props/Materials/M_Chair.uasset and b/Content/StarterContent/Props/Materials/M_Chair.uasset differ diff --git a/Content/StarterContent/Props/Materials/M_Door.uasset b/Content/StarterContent/Props/Materials/M_Door.uasset index 9bbe9d7f..714d0f61 100644 Binary files a/Content/StarterContent/Props/Materials/M_Door.uasset and b/Content/StarterContent/Props/Materials/M_Door.uasset differ diff --git a/Content/StarterContent/Props/Materials/M_Frame.uasset b/Content/StarterContent/Props/Materials/M_Frame.uasset index d34ec7a2..2a2dff88 100644 Binary files a/Content/StarterContent/Props/Materials/M_Frame.uasset and b/Content/StarterContent/Props/Materials/M_Frame.uasset differ diff --git a/Content/StarterContent/Props/Materials/M_Lamp.uasset b/Content/StarterContent/Props/Materials/M_Lamp.uasset index 20db6e89..3eb6663c 100644 Binary files a/Content/StarterContent/Props/Materials/M_Lamp.uasset and b/Content/StarterContent/Props/Materials/M_Lamp.uasset differ diff --git a/Content/StarterContent/Props/Materials/M_Rock.uasset b/Content/StarterContent/Props/Materials/M_Rock.uasset index 7f62d334..2d59537c 100644 Binary files a/Content/StarterContent/Props/Materials/M_Rock.uasset and b/Content/StarterContent/Props/Materials/M_Rock.uasset differ diff --git a/Content/StarterContent/Props/Materials/M_Shelf.uasset b/Content/StarterContent/Props/Materials/M_Shelf.uasset index d9116810..24442584 100644 Binary files a/Content/StarterContent/Props/Materials/M_Shelf.uasset and b/Content/StarterContent/Props/Materials/M_Shelf.uasset differ diff --git a/Content/StarterContent/Props/Materials/M_Statue.uasset b/Content/StarterContent/Props/Materials/M_Statue.uasset index ca31d2d2..775313d2 100644 Binary files a/Content/StarterContent/Props/Materials/M_Statue.uasset and b/Content/StarterContent/Props/Materials/M_Statue.uasset differ diff --git a/Content/StarterContent/Props/Materials/M_StatueGlass.uasset b/Content/StarterContent/Props/Materials/M_StatueGlass.uasset index 18d8bca9..d1592b36 100644 Binary files a/Content/StarterContent/Props/Materials/M_StatueGlass.uasset and b/Content/StarterContent/Props/Materials/M_StatueGlass.uasset differ diff --git a/Content/StarterContent/Props/Materials/M_TableRound.uasset b/Content/StarterContent/Props/Materials/M_TableRound.uasset index 753a1618..b0084288 100644 Binary files a/Content/StarterContent/Props/Materials/M_TableRound.uasset and b/Content/StarterContent/Props/Materials/M_TableRound.uasset differ diff --git a/Content/StarterContent/Props/SM_Bush.uasset b/Content/StarterContent/Props/SM_Bush.uasset index afdadf59..060a3766 100644 Binary files a/Content/StarterContent/Props/SM_Bush.uasset and b/Content/StarterContent/Props/SM_Bush.uasset differ diff --git a/Content/StarterContent/Props/SM_Chair.uasset b/Content/StarterContent/Props/SM_Chair.uasset index 0fc71ec7..e0624263 100644 Binary files a/Content/StarterContent/Props/SM_Chair.uasset and b/Content/StarterContent/Props/SM_Chair.uasset differ diff --git a/Content/StarterContent/Props/SM_CornerFrame.uasset b/Content/StarterContent/Props/SM_CornerFrame.uasset index c62df6ca..57101518 100644 Binary files a/Content/StarterContent/Props/SM_CornerFrame.uasset and b/Content/StarterContent/Props/SM_CornerFrame.uasset differ diff --git a/Content/StarterContent/Props/SM_Couch.uasset b/Content/StarterContent/Props/SM_Couch.uasset index 3e560f4b..cc7d4088 100644 Binary files a/Content/StarterContent/Props/SM_Couch.uasset and b/Content/StarterContent/Props/SM_Couch.uasset differ diff --git a/Content/StarterContent/Props/SM_Door.uasset b/Content/StarterContent/Props/SM_Door.uasset index cf15f19a..22c9bfc4 100644 Binary files a/Content/StarterContent/Props/SM_Door.uasset and b/Content/StarterContent/Props/SM_Door.uasset differ diff --git a/Content/StarterContent/Props/SM_DoorFrame.uasset b/Content/StarterContent/Props/SM_DoorFrame.uasset index 7e1301bf..ab5e96fb 100644 Binary files a/Content/StarterContent/Props/SM_DoorFrame.uasset and b/Content/StarterContent/Props/SM_DoorFrame.uasset differ diff --git a/Content/StarterContent/Props/SM_GlassWindow.uasset b/Content/StarterContent/Props/SM_GlassWindow.uasset index a63f833b..93863f48 100644 Binary files a/Content/StarterContent/Props/SM_GlassWindow.uasset and b/Content/StarterContent/Props/SM_GlassWindow.uasset differ diff --git a/Content/StarterContent/Props/SM_Lamp_Ceiling.uasset b/Content/StarterContent/Props/SM_Lamp_Ceiling.uasset index d01ce53c..4e55f048 100644 Binary files a/Content/StarterContent/Props/SM_Lamp_Ceiling.uasset and b/Content/StarterContent/Props/SM_Lamp_Ceiling.uasset differ diff --git a/Content/StarterContent/Props/SM_Lamp_Wall.uasset b/Content/StarterContent/Props/SM_Lamp_Wall.uasset index 7a38684d..a1b112ff 100644 Binary files a/Content/StarterContent/Props/SM_Lamp_Wall.uasset and b/Content/StarterContent/Props/SM_Lamp_Wall.uasset differ diff --git a/Content/StarterContent/Props/SM_PillarFrame.uasset b/Content/StarterContent/Props/SM_PillarFrame.uasset index fb764dcf..7cafefeb 100644 Binary files a/Content/StarterContent/Props/SM_PillarFrame.uasset and b/Content/StarterContent/Props/SM_PillarFrame.uasset differ diff --git a/Content/StarterContent/Props/SM_PillarFrame300.uasset b/Content/StarterContent/Props/SM_PillarFrame300.uasset index 370dac32..c681a0a3 100644 Binary files a/Content/StarterContent/Props/SM_PillarFrame300.uasset and b/Content/StarterContent/Props/SM_PillarFrame300.uasset differ diff --git a/Content/StarterContent/Props/SM_Rock.uasset b/Content/StarterContent/Props/SM_Rock.uasset index feace854..419f4d52 100644 Binary files a/Content/StarterContent/Props/SM_Rock.uasset and b/Content/StarterContent/Props/SM_Rock.uasset differ diff --git a/Content/StarterContent/Props/SM_Shelf.uasset b/Content/StarterContent/Props/SM_Shelf.uasset index 59a1d442..7ebb8207 100644 Binary files a/Content/StarterContent/Props/SM_Shelf.uasset and b/Content/StarterContent/Props/SM_Shelf.uasset differ diff --git a/Content/StarterContent/Props/SM_Stairs.uasset b/Content/StarterContent/Props/SM_Stairs.uasset index 5a868ee4..d0e84ccc 100644 Binary files a/Content/StarterContent/Props/SM_Stairs.uasset and b/Content/StarterContent/Props/SM_Stairs.uasset differ diff --git a/Content/StarterContent/Props/SM_Statue.uasset b/Content/StarterContent/Props/SM_Statue.uasset index 90fdfa8a..d0e5b8d8 100644 Binary files a/Content/StarterContent/Props/SM_Statue.uasset and b/Content/StarterContent/Props/SM_Statue.uasset differ diff --git a/Content/StarterContent/Props/SM_TableRound.uasset b/Content/StarterContent/Props/SM_TableRound.uasset index 535549c7..317b8ffb 100644 Binary files a/Content/StarterContent/Props/SM_TableRound.uasset and b/Content/StarterContent/Props/SM_TableRound.uasset differ diff --git a/Content/StarterContent/Props/SM_WindowFrame.uasset b/Content/StarterContent/Props/SM_WindowFrame.uasset index 4d850113..bfc9f902 100644 Binary files a/Content/StarterContent/Props/SM_WindowFrame.uasset and b/Content/StarterContent/Props/SM_WindowFrame.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Cone.uasset b/Content/StarterContent/Shapes/Shape_Cone.uasset index 8879ee79..200f0a2a 100644 Binary files a/Content/StarterContent/Shapes/Shape_Cone.uasset and b/Content/StarterContent/Shapes/Shape_Cone.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Cube.uasset b/Content/StarterContent/Shapes/Shape_Cube.uasset index d5d054a2..4d169fe1 100644 Binary files a/Content/StarterContent/Shapes/Shape_Cube.uasset and b/Content/StarterContent/Shapes/Shape_Cube.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Cylinder.uasset b/Content/StarterContent/Shapes/Shape_Cylinder.uasset index 983bd32b..06541d9f 100644 Binary files a/Content/StarterContent/Shapes/Shape_Cylinder.uasset and b/Content/StarterContent/Shapes/Shape_Cylinder.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_NarrowCapsule.uasset b/Content/StarterContent/Shapes/Shape_NarrowCapsule.uasset index b7a0399f..0322b310 100644 Binary files a/Content/StarterContent/Shapes/Shape_NarrowCapsule.uasset and b/Content/StarterContent/Shapes/Shape_NarrowCapsule.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Pipe.uasset b/Content/StarterContent/Shapes/Shape_Pipe.uasset index fbe821cd..f2549a38 100644 Binary files a/Content/StarterContent/Shapes/Shape_Pipe.uasset and b/Content/StarterContent/Shapes/Shape_Pipe.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Pipe_180.uasset b/Content/StarterContent/Shapes/Shape_Pipe_180.uasset index 7d7aa082..b1523303 100644 Binary files a/Content/StarterContent/Shapes/Shape_Pipe_180.uasset and b/Content/StarterContent/Shapes/Shape_Pipe_180.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Pipe_90.uasset b/Content/StarterContent/Shapes/Shape_Pipe_90.uasset index 82fa6d03..db79ad40 100644 Binary files a/Content/StarterContent/Shapes/Shape_Pipe_90.uasset and b/Content/StarterContent/Shapes/Shape_Pipe_90.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Plane.uasset b/Content/StarterContent/Shapes/Shape_Plane.uasset index ee62e1ae..f338efa1 100644 Binary files a/Content/StarterContent/Shapes/Shape_Plane.uasset and b/Content/StarterContent/Shapes/Shape_Plane.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_QuadPyramid.uasset b/Content/StarterContent/Shapes/Shape_QuadPyramid.uasset index 3de9f384..e228f15a 100644 Binary files a/Content/StarterContent/Shapes/Shape_QuadPyramid.uasset and b/Content/StarterContent/Shapes/Shape_QuadPyramid.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Sphere.uasset b/Content/StarterContent/Shapes/Shape_Sphere.uasset index a21aa6cb..0b7fc69f 100644 Binary files a/Content/StarterContent/Shapes/Shape_Sphere.uasset and b/Content/StarterContent/Shapes/Shape_Sphere.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Torus.uasset b/Content/StarterContent/Shapes/Shape_Torus.uasset index 230db123..cfbaac4d 100644 Binary files a/Content/StarterContent/Shapes/Shape_Torus.uasset and b/Content/StarterContent/Shapes/Shape_Torus.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_TriPyramid.uasset b/Content/StarterContent/Shapes/Shape_TriPyramid.uasset index 20e1fd68..f28d8571 100644 Binary files a/Content/StarterContent/Shapes/Shape_TriPyramid.uasset and b/Content/StarterContent/Shapes/Shape_TriPyramid.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Trim.uasset b/Content/StarterContent/Shapes/Shape_Trim.uasset index c100a523..09091611 100644 Binary files a/Content/StarterContent/Shapes/Shape_Trim.uasset and b/Content/StarterContent/Shapes/Shape_Trim.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Trim_90_In.uasset b/Content/StarterContent/Shapes/Shape_Trim_90_In.uasset index a08d338b..6e33a907 100644 Binary files a/Content/StarterContent/Shapes/Shape_Trim_90_In.uasset and b/Content/StarterContent/Shapes/Shape_Trim_90_In.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Trim_90_Out.uasset b/Content/StarterContent/Shapes/Shape_Trim_90_Out.uasset index 86ac9e9f..8125f773 100644 Binary files a/Content/StarterContent/Shapes/Shape_Trim_90_Out.uasset and b/Content/StarterContent/Shapes/Shape_Trim_90_Out.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Tube.uasset b/Content/StarterContent/Shapes/Shape_Tube.uasset index d6380a08..b2e9a438 100644 Binary files a/Content/StarterContent/Shapes/Shape_Tube.uasset and b/Content/StarterContent/Shapes/Shape_Tube.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Wedge_A.uasset b/Content/StarterContent/Shapes/Shape_Wedge_A.uasset index e94366d2..b99fde7c 100644 Binary files a/Content/StarterContent/Shapes/Shape_Wedge_A.uasset and b/Content/StarterContent/Shapes/Shape_Wedge_A.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_Wedge_B.uasset b/Content/StarterContent/Shapes/Shape_Wedge_B.uasset index a0f5775e..2e8f430a 100644 Binary files a/Content/StarterContent/Shapes/Shape_Wedge_B.uasset and b/Content/StarterContent/Shapes/Shape_Wedge_B.uasset differ diff --git a/Content/StarterContent/Shapes/Shape_WideCapsule.uasset b/Content/StarterContent/Shapes/Shape_WideCapsule.uasset index 83c5158a..830b90d5 100644 Binary files a/Content/StarterContent/Shapes/Shape_WideCapsule.uasset and b/Content/StarterContent/Shapes/Shape_WideCapsule.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Clay_Beveled_D.uasset b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_D.uasset index cde8a37e..8ea92271 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Clay_Beveled_D.uasset and b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Clay_Beveled_M.uasset b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_M.uasset index 0f78bcf6..995cc827 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Clay_Beveled_M.uasset and b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Clay_Beveled_N.uasset b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_N.uasset index c02df912..bf6633df 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Clay_Beveled_N.uasset and b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Clay_New_D.uasset b/Content/StarterContent/Textures/T_Brick_Clay_New_D.uasset index ab1de4ac..5d328509 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Clay_New_D.uasset and b/Content/StarterContent/Textures/T_Brick_Clay_New_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Clay_New_M.uasset b/Content/StarterContent/Textures/T_Brick_Clay_New_M.uasset index 4cb592b0..e386e9dc 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Clay_New_M.uasset and b/Content/StarterContent/Textures/T_Brick_Clay_New_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Clay_New_N.uasset b/Content/StarterContent/Textures/T_Brick_Clay_New_N.uasset index 3620deec..f4dc14a9 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Clay_New_N.uasset and b/Content/StarterContent/Textures/T_Brick_Clay_New_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Clay_Old_D.uasset b/Content/StarterContent/Textures/T_Brick_Clay_Old_D.uasset index 37a6d4fc..acec5205 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Clay_Old_D.uasset and b/Content/StarterContent/Textures/T_Brick_Clay_Old_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Clay_Old_N.uasset b/Content/StarterContent/Textures/T_Brick_Clay_Old_N.uasset index 01561d17..49fac3f6 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Clay_Old_N.uasset and b/Content/StarterContent/Textures/T_Brick_Clay_Old_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Cut_Stone_D.uasset b/Content/StarterContent/Textures/T_Brick_Cut_Stone_D.uasset index 70940313..1f76e633 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Cut_Stone_D.uasset and b/Content/StarterContent/Textures/T_Brick_Cut_Stone_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Cut_Stone_N.uasset b/Content/StarterContent/Textures/T_Brick_Cut_Stone_N.uasset index 2474d512..9cf63cee 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Cut_Stone_N.uasset and b/Content/StarterContent/Textures/T_Brick_Cut_Stone_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Hewn_Stone_D.uasset b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_D.uasset index ffdad9d2..cf676141 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Hewn_Stone_D.uasset and b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Hewn_Stone_M.uasset b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_M.uasset index 3d525e9d..81c5fcf5 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Hewn_Stone_M.uasset and b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Brick_Hewn_Stone_N.uasset b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_N.uasset index 7d1d773b..27c49b5d 100644 Binary files a/Content/StarterContent/Textures/T_Brick_Hewn_Stone_N.uasset and b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Burst_M.uasset b/Content/StarterContent/Textures/T_Burst_M.uasset index e43e1db7..35b26fce 100644 Binary files a/Content/StarterContent/Textures/T_Burst_M.uasset and b/Content/StarterContent/Textures/T_Burst_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Bush_D.uasset b/Content/StarterContent/Textures/T_Bush_D.uasset index 3b247846..d5399367 100644 Binary files a/Content/StarterContent/Textures/T_Bush_D.uasset and b/Content/StarterContent/Textures/T_Bush_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Bush_N.uasset b/Content/StarterContent/Textures/T_Bush_N.uasset index f62e5595..a9f1c7e3 100644 Binary files a/Content/StarterContent/Textures/T_Bush_N.uasset and b/Content/StarterContent/Textures/T_Bush_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Ceramic_Tile_M.uasset b/Content/StarterContent/Textures/T_Ceramic_Tile_M.uasset index ba203d60..82142181 100644 Binary files a/Content/StarterContent/Textures/T_Ceramic_Tile_M.uasset and b/Content/StarterContent/Textures/T_Ceramic_Tile_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Ceramic_Tile_N.uasset b/Content/StarterContent/Textures/T_Ceramic_Tile_N.uasset index d6fb7537..343aeb8c 100644 Binary files a/Content/StarterContent/Textures/T_Ceramic_Tile_N.uasset and b/Content/StarterContent/Textures/T_Ceramic_Tile_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Chair_M.uasset b/Content/StarterContent/Textures/T_Chair_M.uasset index f306216e..40e1e6fb 100644 Binary files a/Content/StarterContent/Textures/T_Chair_M.uasset and b/Content/StarterContent/Textures/T_Chair_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Chair_N.uasset b/Content/StarterContent/Textures/T_Chair_N.uasset index ad310000..af1c8a4e 100644 Binary files a/Content/StarterContent/Textures/T_Chair_N.uasset and b/Content/StarterContent/Textures/T_Chair_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Checker_Noise_M.uasset b/Content/StarterContent/Textures/T_Checker_Noise_M.uasset index 8136c037..58b56682 100644 Binary files a/Content/StarterContent/Textures/T_Checker_Noise_M.uasset and b/Content/StarterContent/Textures/T_Checker_Noise_M.uasset differ diff --git a/Content/StarterContent/Textures/T_CobbleStone_Pebble_D.uasset b/Content/StarterContent/Textures/T_CobbleStone_Pebble_D.uasset index cb630ca0..bc3db66c 100644 Binary files a/Content/StarterContent/Textures/T_CobbleStone_Pebble_D.uasset and b/Content/StarterContent/Textures/T_CobbleStone_Pebble_D.uasset differ diff --git a/Content/StarterContent/Textures/T_CobbleStone_Pebble_M.uasset b/Content/StarterContent/Textures/T_CobbleStone_Pebble_M.uasset index 281af6a1..7a953e96 100644 Binary files a/Content/StarterContent/Textures/T_CobbleStone_Pebble_M.uasset and b/Content/StarterContent/Textures/T_CobbleStone_Pebble_M.uasset differ diff --git a/Content/StarterContent/Textures/T_CobbleStone_Pebble_N.uasset b/Content/StarterContent/Textures/T_CobbleStone_Pebble_N.uasset index 14dd97ab..46da5475 100644 Binary files a/Content/StarterContent/Textures/T_CobbleStone_Pebble_N.uasset and b/Content/StarterContent/Textures/T_CobbleStone_Pebble_N.uasset differ diff --git a/Content/StarterContent/Textures/T_CobbleStone_Rough_D.uasset b/Content/StarterContent/Textures/T_CobbleStone_Rough_D.uasset index 2e4ee405..1bc46669 100644 Binary files a/Content/StarterContent/Textures/T_CobbleStone_Rough_D.uasset and b/Content/StarterContent/Textures/T_CobbleStone_Rough_D.uasset differ diff --git a/Content/StarterContent/Textures/T_CobbleStone_Rough_N.uasset b/Content/StarterContent/Textures/T_CobbleStone_Rough_N.uasset index 1a3facfa..935d1aff 100644 Binary files a/Content/StarterContent/Textures/T_CobbleStone_Rough_N.uasset and b/Content/StarterContent/Textures/T_CobbleStone_Rough_N.uasset differ diff --git a/Content/StarterContent/Textures/T_CobbleStone_Smooth_D.uasset b/Content/StarterContent/Textures/T_CobbleStone_Smooth_D.uasset index 2cddc4e0..44e55970 100644 Binary files a/Content/StarterContent/Textures/T_CobbleStone_Smooth_D.uasset and b/Content/StarterContent/Textures/T_CobbleStone_Smooth_D.uasset differ diff --git a/Content/StarterContent/Textures/T_CobbleStone_Smooth_M.uasset b/Content/StarterContent/Textures/T_CobbleStone_Smooth_M.uasset index e0ca1b40..165106fe 100644 Binary files a/Content/StarterContent/Textures/T_CobbleStone_Smooth_M.uasset and b/Content/StarterContent/Textures/T_CobbleStone_Smooth_M.uasset differ diff --git a/Content/StarterContent/Textures/T_CobbleStone_Smooth_N.uasset b/Content/StarterContent/Textures/T_CobbleStone_Smooth_N.uasset index 64a4afec..4207398c 100644 Binary files a/Content/StarterContent/Textures/T_CobbleStone_Smooth_N.uasset and b/Content/StarterContent/Textures/T_CobbleStone_Smooth_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Concrete_Grime_D.uasset b/Content/StarterContent/Textures/T_Concrete_Grime_D.uasset index d02857b9..d6667d2b 100644 Binary files a/Content/StarterContent/Textures/T_Concrete_Grime_D.uasset and b/Content/StarterContent/Textures/T_Concrete_Grime_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Concrete_Panels_D.uasset b/Content/StarterContent/Textures/T_Concrete_Panels_D.uasset index dd911c3a..75134e34 100644 Binary files a/Content/StarterContent/Textures/T_Concrete_Panels_D.uasset and b/Content/StarterContent/Textures/T_Concrete_Panels_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Concrete_Panels_N.uasset b/Content/StarterContent/Textures/T_Concrete_Panels_N.uasset index 8309e99b..6db04328 100644 Binary files a/Content/StarterContent/Textures/T_Concrete_Panels_N.uasset and b/Content/StarterContent/Textures/T_Concrete_Panels_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Concrete_Poured_D.uasset b/Content/StarterContent/Textures/T_Concrete_Poured_D.uasset index a27b6024..f2d651cd 100644 Binary files a/Content/StarterContent/Textures/T_Concrete_Poured_D.uasset and b/Content/StarterContent/Textures/T_Concrete_Poured_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Concrete_Poured_N.uasset b/Content/StarterContent/Textures/T_Concrete_Poured_N.uasset index 6bcd8352..edc2e1b7 100644 Binary files a/Content/StarterContent/Textures/T_Concrete_Poured_N.uasset and b/Content/StarterContent/Textures/T_Concrete_Poured_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Concrete_Tiles_D.uasset b/Content/StarterContent/Textures/T_Concrete_Tiles_D.uasset index b893e223..b98f3a74 100644 Binary files a/Content/StarterContent/Textures/T_Concrete_Tiles_D.uasset and b/Content/StarterContent/Textures/T_Concrete_Tiles_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Concrete_Tiles_M.uasset b/Content/StarterContent/Textures/T_Concrete_Tiles_M.uasset index 6983f7f3..cc1fe760 100644 Binary files a/Content/StarterContent/Textures/T_Concrete_Tiles_M.uasset and b/Content/StarterContent/Textures/T_Concrete_Tiles_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Concrete_Tiles_N.uasset b/Content/StarterContent/Textures/T_Concrete_Tiles_N.uasset index 952bfc3f..d5d6b3a2 100644 Binary files a/Content/StarterContent/Textures/T_Concrete_Tiles_N.uasset and b/Content/StarterContent/Textures/T_Concrete_Tiles_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Concrete_Tiles_Variation_M.uasset b/Content/StarterContent/Textures/T_Concrete_Tiles_Variation_M.uasset index 06ed5863..5edef8fe 100644 Binary files a/Content/StarterContent/Textures/T_Concrete_Tiles_Variation_M.uasset and b/Content/StarterContent/Textures/T_Concrete_Tiles_Variation_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Detail_Rocky_N.uasset b/Content/StarterContent/Textures/T_Detail_Rocky_N.uasset index 2fa59589..a80dc77f 100644 Binary files a/Content/StarterContent/Textures/T_Detail_Rocky_N.uasset and b/Content/StarterContent/Textures/T_Detail_Rocky_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Door_M.uasset b/Content/StarterContent/Textures/T_Door_M.uasset index 9cfbae9e..b5eec216 100644 Binary files a/Content/StarterContent/Textures/T_Door_M.uasset and b/Content/StarterContent/Textures/T_Door_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Door_N.uasset b/Content/StarterContent/Textures/T_Door_N.uasset index 24ab9328..93e2c303 100644 Binary files a/Content/StarterContent/Textures/T_Door_N.uasset and b/Content/StarterContent/Textures/T_Door_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Dust_Particle_D.uasset b/Content/StarterContent/Textures/T_Dust_Particle_D.uasset index 88a2c149..d80b3a04 100644 Binary files a/Content/StarterContent/Textures/T_Dust_Particle_D.uasset and b/Content/StarterContent/Textures/T_Dust_Particle_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Explosion_SubUV.uasset b/Content/StarterContent/Textures/T_Explosion_SubUV.uasset index eee9a6d4..d30f8428 100644 Binary files a/Content/StarterContent/Textures/T_Explosion_SubUV.uasset and b/Content/StarterContent/Textures/T_Explosion_SubUV.uasset differ diff --git a/Content/StarterContent/Textures/T_Fire_SubUV.uasset b/Content/StarterContent/Textures/T_Fire_SubUV.uasset index b24d56aa..6e87ac72 100644 Binary files a/Content/StarterContent/Textures/T_Fire_SubUV.uasset and b/Content/StarterContent/Textures/T_Fire_SubUV.uasset differ diff --git a/Content/StarterContent/Textures/T_Fire_Tiled_D.uasset b/Content/StarterContent/Textures/T_Fire_Tiled_D.uasset index 43bf95a9..825765f0 100644 Binary files a/Content/StarterContent/Textures/T_Fire_Tiled_D.uasset and b/Content/StarterContent/Textures/T_Fire_Tiled_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Frame_M.uasset b/Content/StarterContent/Textures/T_Frame_M.uasset index 8994a83f..4aeac1c1 100644 Binary files a/Content/StarterContent/Textures/T_Frame_M.uasset and b/Content/StarterContent/Textures/T_Frame_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Frame_N.uasset b/Content/StarterContent/Textures/T_Frame_N.uasset index c4d6c32b..b1a335dd 100644 Binary files a/Content/StarterContent/Textures/T_Frame_N.uasset and b/Content/StarterContent/Textures/T_Frame_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Gradinet_01.uasset b/Content/StarterContent/Textures/T_Gradinet_01.uasset index 68165b1b..a71d3ddd 100644 Binary files a/Content/StarterContent/Textures/T_Gradinet_01.uasset and b/Content/StarterContent/Textures/T_Gradinet_01.uasset differ diff --git a/Content/StarterContent/Textures/T_Ground_Grass_D.uasset b/Content/StarterContent/Textures/T_Ground_Grass_D.uasset index b981ed8c..0ce49d33 100644 Binary files a/Content/StarterContent/Textures/T_Ground_Grass_D.uasset and b/Content/StarterContent/Textures/T_Ground_Grass_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Ground_Grass_N.uasset b/Content/StarterContent/Textures/T_Ground_Grass_N.uasset index 1373c23b..c69da0d6 100644 Binary files a/Content/StarterContent/Textures/T_Ground_Grass_N.uasset and b/Content/StarterContent/Textures/T_Ground_Grass_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Ground_Gravel_D.uasset b/Content/StarterContent/Textures/T_Ground_Gravel_D.uasset index a9f9cc6a..3064541e 100644 Binary files a/Content/StarterContent/Textures/T_Ground_Gravel_D.uasset and b/Content/StarterContent/Textures/T_Ground_Gravel_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Ground_Gravel_N.uasset b/Content/StarterContent/Textures/T_Ground_Gravel_N.uasset index 08ca85ed..e9f55a71 100644 Binary files a/Content/StarterContent/Textures/T_Ground_Gravel_N.uasset and b/Content/StarterContent/Textures/T_Ground_Gravel_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Ground_Moss_N.uasset b/Content/StarterContent/Textures/T_Ground_Moss_N.uasset index 87d7f21b..898e6ee7 100644 Binary files a/Content/StarterContent/Textures/T_Ground_Moss_N.uasset and b/Content/StarterContent/Textures/T_Ground_Moss_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Lamp_M.uasset b/Content/StarterContent/Textures/T_Lamp_M.uasset index 94fbc128..e1958b0e 100644 Binary files a/Content/StarterContent/Textures/T_Lamp_M.uasset and b/Content/StarterContent/Textures/T_Lamp_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Lamp_N.uasset b/Content/StarterContent/Textures/T_Lamp_N.uasset index d4030129..77e47bda 100644 Binary files a/Content/StarterContent/Textures/T_Lamp_N.uasset and b/Content/StarterContent/Textures/T_Lamp_N.uasset differ diff --git a/Content/StarterContent/Textures/T_MacroVariation.uasset b/Content/StarterContent/Textures/T_MacroVariation.uasset index 0096f2d9..dca6463f 100644 Binary files a/Content/StarterContent/Textures/T_MacroVariation.uasset and b/Content/StarterContent/Textures/T_MacroVariation.uasset differ diff --git a/Content/StarterContent/Textures/T_Metal_Aluminum_D.uasset b/Content/StarterContent/Textures/T_Metal_Aluminum_D.uasset index a63f7ffc..225628a0 100644 Binary files a/Content/StarterContent/Textures/T_Metal_Aluminum_D.uasset and b/Content/StarterContent/Textures/T_Metal_Aluminum_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Metal_Copper_D.uasset b/Content/StarterContent/Textures/T_Metal_Copper_D.uasset index 2fd139e8..df0cacb1 100644 Binary files a/Content/StarterContent/Textures/T_Metal_Copper_D.uasset and b/Content/StarterContent/Textures/T_Metal_Copper_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Metal_Gold_D.uasset b/Content/StarterContent/Textures/T_Metal_Gold_D.uasset index 8325e891..0762c018 100644 Binary files a/Content/StarterContent/Textures/T_Metal_Gold_D.uasset and b/Content/StarterContent/Textures/T_Metal_Gold_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Metal_Gold_N.uasset b/Content/StarterContent/Textures/T_Metal_Gold_N.uasset index 79df211f..938e7c37 100644 Binary files a/Content/StarterContent/Textures/T_Metal_Gold_N.uasset and b/Content/StarterContent/Textures/T_Metal_Gold_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Metal_Rust_D.uasset b/Content/StarterContent/Textures/T_Metal_Rust_D.uasset index d3a70344..2a47b538 100644 Binary files a/Content/StarterContent/Textures/T_Metal_Rust_D.uasset and b/Content/StarterContent/Textures/T_Metal_Rust_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Metal_Rust_N.uasset b/Content/StarterContent/Textures/T_Metal_Rust_N.uasset index 1b72ede8..c94e24d4 100644 Binary files a/Content/StarterContent/Textures/T_Metal_Rust_N.uasset and b/Content/StarterContent/Textures/T_Metal_Rust_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Metal_Steel_D.uasset b/Content/StarterContent/Textures/T_Metal_Steel_D.uasset index ad962826..bc8ee97e 100644 Binary files a/Content/StarterContent/Textures/T_Metal_Steel_D.uasset and b/Content/StarterContent/Textures/T_Metal_Steel_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Metal_Steel_N.uasset b/Content/StarterContent/Textures/T_Metal_Steel_N.uasset index 54d2d277..bd90253a 100644 Binary files a/Content/StarterContent/Textures/T_Metal_Steel_N.uasset and b/Content/StarterContent/Textures/T_Metal_Steel_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Perlin_Noise_M.uasset b/Content/StarterContent/Textures/T_Perlin_Noise_M.uasset index 4608987c..a71f39dd 100644 Binary files a/Content/StarterContent/Textures/T_Perlin_Noise_M.uasset and b/Content/StarterContent/Textures/T_Perlin_Noise_M.uasset differ diff --git a/Content/StarterContent/Textures/T_RockMesh_M.uasset b/Content/StarterContent/Textures/T_RockMesh_M.uasset index 80b2accc..91a8dbe0 100644 Binary files a/Content/StarterContent/Textures/T_RockMesh_M.uasset and b/Content/StarterContent/Textures/T_RockMesh_M.uasset differ diff --git a/Content/StarterContent/Textures/T_RockMesh_N.uasset b/Content/StarterContent/Textures/T_RockMesh_N.uasset index 20f002e4..cf183466 100644 Binary files a/Content/StarterContent/Textures/T_RockMesh_N.uasset and b/Content/StarterContent/Textures/T_RockMesh_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Rock_Basalt_D.uasset b/Content/StarterContent/Textures/T_Rock_Basalt_D.uasset index 5d9634d5..15197b24 100644 Binary files a/Content/StarterContent/Textures/T_Rock_Basalt_D.uasset and b/Content/StarterContent/Textures/T_Rock_Basalt_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Rock_Basalt_N.uasset b/Content/StarterContent/Textures/T_Rock_Basalt_N.uasset index cf15e3b5..17ac16e6 100644 Binary files a/Content/StarterContent/Textures/T_Rock_Basalt_N.uasset and b/Content/StarterContent/Textures/T_Rock_Basalt_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Rock_Marble_Polished_D.uasset b/Content/StarterContent/Textures/T_Rock_Marble_Polished_D.uasset index 2f36a4a3..cc564e59 100644 Binary files a/Content/StarterContent/Textures/T_Rock_Marble_Polished_D.uasset and b/Content/StarterContent/Textures/T_Rock_Marble_Polished_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Rock_Sandstone_D.uasset b/Content/StarterContent/Textures/T_Rock_Sandstone_D.uasset index 966a188b..efc7c835 100644 Binary files a/Content/StarterContent/Textures/T_Rock_Sandstone_D.uasset and b/Content/StarterContent/Textures/T_Rock_Sandstone_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Rock_Sandstone_N.uasset b/Content/StarterContent/Textures/T_Rock_Sandstone_N.uasset index fdb17b13..942331bb 100644 Binary files a/Content/StarterContent/Textures/T_Rock_Sandstone_N.uasset and b/Content/StarterContent/Textures/T_Rock_Sandstone_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Rock_Slate_D.uasset b/Content/StarterContent/Textures/T_Rock_Slate_D.uasset index 18d2d8dc..b460e816 100644 Binary files a/Content/StarterContent/Textures/T_Rock_Slate_D.uasset and b/Content/StarterContent/Textures/T_Rock_Slate_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Rock_Slate_N.uasset b/Content/StarterContent/Textures/T_Rock_Slate_N.uasset index fc190517..3eb6b14c 100644 Binary files a/Content/StarterContent/Textures/T_Rock_Slate_N.uasset and b/Content/StarterContent/Textures/T_Rock_Slate_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Rock_Smooth_Granite_D.uasset b/Content/StarterContent/Textures/T_Rock_Smooth_Granite_D.uasset index 3f88593f..9c11db26 100644 Binary files a/Content/StarterContent/Textures/T_Rock_Smooth_Granite_D.uasset and b/Content/StarterContent/Textures/T_Rock_Smooth_Granite_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Shelf_M.uasset b/Content/StarterContent/Textures/T_Shelf_M.uasset index f4bf8a3f..40bea034 100644 Binary files a/Content/StarterContent/Textures/T_Shelf_M.uasset and b/Content/StarterContent/Textures/T_Shelf_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Shelf_N.uasset b/Content/StarterContent/Textures/T_Shelf_N.uasset index c5896013..5cb6c715 100644 Binary files a/Content/StarterContent/Textures/T_Shelf_N.uasset and b/Content/StarterContent/Textures/T_Shelf_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Single_Tile_N.uasset b/Content/StarterContent/Textures/T_Single_Tile_N.uasset index 4f928783..ddc08283 100644 Binary files a/Content/StarterContent/Textures/T_Single_Tile_N.uasset and b/Content/StarterContent/Textures/T_Single_Tile_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Smoke_SubUV.uasset b/Content/StarterContent/Textures/T_Smoke_SubUV.uasset index 268de728..5c8a2d91 100644 Binary files a/Content/StarterContent/Textures/T_Smoke_SubUV.uasset and b/Content/StarterContent/Textures/T_Smoke_SubUV.uasset differ diff --git a/Content/StarterContent/Textures/T_Smoke_Tiled_D.uasset b/Content/StarterContent/Textures/T_Smoke_Tiled_D.uasset index d073a012..aad7a5ea 100644 Binary files a/Content/StarterContent/Textures/T_Smoke_Tiled_D.uasset and b/Content/StarterContent/Textures/T_Smoke_Tiled_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Spark_Core.uasset b/Content/StarterContent/Textures/T_Spark_Core.uasset index b8d27d49..3881b885 100644 Binary files a/Content/StarterContent/Textures/T_Spark_Core.uasset and b/Content/StarterContent/Textures/T_Spark_Core.uasset differ diff --git a/Content/StarterContent/Textures/T_Statue_M.uasset b/Content/StarterContent/Textures/T_Statue_M.uasset index 191b60a0..d43158a0 100644 Binary files a/Content/StarterContent/Textures/T_Statue_M.uasset and b/Content/StarterContent/Textures/T_Statue_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Statue_N.uasset b/Content/StarterContent/Textures/T_Statue_N.uasset index c4cf78fe..787d2d50 100644 Binary files a/Content/StarterContent/Textures/T_Statue_N.uasset and b/Content/StarterContent/Textures/T_Statue_N.uasset differ diff --git a/Content/StarterContent/Textures/T_TableRound_M.uasset b/Content/StarterContent/Textures/T_TableRound_M.uasset index 8d6959e7..a76573e0 100644 Binary files a/Content/StarterContent/Textures/T_TableRound_M.uasset and b/Content/StarterContent/Textures/T_TableRound_M.uasset differ diff --git a/Content/StarterContent/Textures/T_TableRound_N.uasset b/Content/StarterContent/Textures/T_TableRound_N.uasset index 094f780d..619c4201 100644 Binary files a/Content/StarterContent/Textures/T_TableRound_N.uasset and b/Content/StarterContent/Textures/T_TableRound_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Tech_Dot_M.uasset b/Content/StarterContent/Textures/T_Tech_Dot_M.uasset index 1454f65d..fb692b3b 100644 Binary files a/Content/StarterContent/Textures/T_Tech_Dot_M.uasset and b/Content/StarterContent/Textures/T_Tech_Dot_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Tech_Dot_N.uasset b/Content/StarterContent/Textures/T_Tech_Dot_N.uasset index 17f43338..50d81c20 100644 Binary files a/Content/StarterContent/Textures/T_Tech_Dot_N.uasset and b/Content/StarterContent/Textures/T_Tech_Dot_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Tech_Hex_Tile_M.uasset b/Content/StarterContent/Textures/T_Tech_Hex_Tile_M.uasset index 0f00fe2b..502170b3 100644 Binary files a/Content/StarterContent/Textures/T_Tech_Hex_Tile_M.uasset and b/Content/StarterContent/Textures/T_Tech_Hex_Tile_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Tech_Hex_Tile_N.uasset b/Content/StarterContent/Textures/T_Tech_Hex_Tile_N.uasset index cdba20ed..549633cf 100644 Binary files a/Content/StarterContent/Textures/T_Tech_Hex_Tile_N.uasset and b/Content/StarterContent/Textures/T_Tech_Hex_Tile_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Tech_Panel_M.uasset b/Content/StarterContent/Textures/T_Tech_Panel_M.uasset index 64bd5fdd..192a8e4d 100644 Binary files a/Content/StarterContent/Textures/T_Tech_Panel_M.uasset and b/Content/StarterContent/Textures/T_Tech_Panel_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Tech_Panel_N.uasset b/Content/StarterContent/Textures/T_Tech_Panel_N.uasset index e3d40921..b12087e7 100644 Binary files a/Content/StarterContent/Textures/T_Tech_Panel_N.uasset and b/Content/StarterContent/Textures/T_Tech_Panel_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Water_M.uasset b/Content/StarterContent/Textures/T_Water_M.uasset index 68e8bbb7..63e9b4e1 100644 Binary files a/Content/StarterContent/Textures/T_Water_M.uasset and b/Content/StarterContent/Textures/T_Water_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Water_N.uasset b/Content/StarterContent/Textures/T_Water_N.uasset index 17e56b27..dc83c1b0 100644 Binary files a/Content/StarterContent/Textures/T_Water_N.uasset and b/Content/StarterContent/Textures/T_Water_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Wood_Floor_Walnut_D.uasset b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_D.uasset index db808c2d..0598d9ec 100644 Binary files a/Content/StarterContent/Textures/T_Wood_Floor_Walnut_D.uasset and b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Wood_Floor_Walnut_M.uasset b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_M.uasset index dc0dcdc8..1af473f0 100644 Binary files a/Content/StarterContent/Textures/T_Wood_Floor_Walnut_M.uasset and b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_M.uasset differ diff --git a/Content/StarterContent/Textures/T_Wood_Floor_Walnut_N.uasset b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_N.uasset index 1868a72b..dae4bb42 100644 Binary files a/Content/StarterContent/Textures/T_Wood_Floor_Walnut_N.uasset and b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Wood_Oak_D.uasset b/Content/StarterContent/Textures/T_Wood_Oak_D.uasset index cfc42a43..c5494a93 100644 Binary files a/Content/StarterContent/Textures/T_Wood_Oak_D.uasset and b/Content/StarterContent/Textures/T_Wood_Oak_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Wood_Oak_N.uasset b/Content/StarterContent/Textures/T_Wood_Oak_N.uasset index 164208dc..71543aa3 100644 Binary files a/Content/StarterContent/Textures/T_Wood_Oak_N.uasset and b/Content/StarterContent/Textures/T_Wood_Oak_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Wood_Pine_D.uasset b/Content/StarterContent/Textures/T_Wood_Pine_D.uasset index 546ecd21..eac50af4 100644 Binary files a/Content/StarterContent/Textures/T_Wood_Pine_D.uasset and b/Content/StarterContent/Textures/T_Wood_Pine_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Wood_Pine_N.uasset b/Content/StarterContent/Textures/T_Wood_Pine_N.uasset index 0acf8502..051a794e 100644 Binary files a/Content/StarterContent/Textures/T_Wood_Pine_N.uasset and b/Content/StarterContent/Textures/T_Wood_Pine_N.uasset differ diff --git a/Content/StarterContent/Textures/T_Wood_Walnut_D.uasset b/Content/StarterContent/Textures/T_Wood_Walnut_D.uasset index 1379c019..bc3c3df8 100644 Binary files a/Content/StarterContent/Textures/T_Wood_Walnut_D.uasset and b/Content/StarterContent/Textures/T_Wood_Walnut_D.uasset differ diff --git a/Content/StarterContent/Textures/T_Wood_Walnut_N.uasset b/Content/StarterContent/Textures/T_Wood_Walnut_N.uasset index 2a628e59..856a1f86 100644 Binary files a/Content/StarterContent/Textures/T_Wood_Walnut_N.uasset and b/Content/StarterContent/Textures/T_Wood_Walnut_N.uasset differ diff --git a/Content/StarterContent/Textures/T_ground_Moss_D.uasset b/Content/StarterContent/Textures/T_ground_Moss_D.uasset index 66a0da5d..2b9ca5b3 100644 Binary files a/Content/StarterContent/Textures/T_ground_Moss_D.uasset and b/Content/StarterContent/Textures/T_ground_Moss_D.uasset differ diff --git a/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset b/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset index d241f2e0..29759925 100644 Binary files a/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset and b/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset differ diff --git a/Content/ThirdPerson/Maps/SingleEntityTest.umap b/Content/ThirdPerson/Maps/SingleEntityTest.umap index fd36a11b..19e9b454 100644 Binary files a/Content/ThirdPerson/Maps/SingleEntityTest.umap and b/Content/ThirdPerson/Maps/SingleEntityTest.umap differ diff --git a/Content/ThirdPerson/Maps/ThirdPersonMap.umap b/Content/ThirdPerson/Maps/ThirdPersonMap.umap index 3e3dfee0..88fdf073 100644 Binary files a/Content/ThirdPerson/Maps/ThirdPersonMap.umap and b/Content/ThirdPerson/Maps/ThirdPersonMap.umap differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/F0/9KAZ8YVH2ZCO5MBQUFBE5F.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/F0/9KAZ8YVH2ZCO5MBQUFBE5F.uasset index 1986dcde..7227d845 100644 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/F0/9KAZ8YVH2ZCO5MBQUFBE5F.uasset and b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/F0/9KAZ8YVH2ZCO5MBQUFBE5F.uasset differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/FZ/4XWWUGWFDLX56REQRH8Z9W.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/FZ/4XWWUGWFDLX56REQRH8Z9W.uasset deleted file mode 100644 index abfdad58..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/FZ/4XWWUGWFDLX56REQRH8Z9W.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/0G/HOAJZN9E4DDI6Y1W3JU13K.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/0G/HOAJZN9E4DDI6Y1W3JU13K.uasset deleted file mode 100644 index 03fa4e9b..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/0G/HOAJZN9E4DDI6Y1W3JU13K.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/2J/AQ1PWWT9TBAI7AA470T014.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/2J/AQ1PWWT9TBAI7AA470T014.uasset deleted file mode 100644 index 5bf67fbf..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/2J/AQ1PWWT9TBAI7AA470T014.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/EJ/PGUWWHRTS59S34GKBX0OUI.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/EJ/PGUWWHRTS59S34GKBX0OUI.uasset index cb4139c0..819e0adf 100644 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/EJ/PGUWWHRTS59S34GKBX0OUI.uasset and b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/EJ/PGUWWHRTS59S34GKBX0OUI.uasset differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/HF/YFYBQ72OYLHJQS0TSSXGBV.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/HF/YFYBQ72OYLHJQS0TSSXGBV.uasset deleted file mode 100644 index e0f3ba9c..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/HF/YFYBQ72OYLHJQS0TSSXGBV.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/M5/IS1HYQTTFYBVLE7RUKZLW9.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/M5/IS1HYQTTFYBVLE7RUKZLW9.uasset index 1f49ade6..31fe0b6b 100644 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/M5/IS1HYQTTFYBVLE7RUKZLW9.uasset and b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/M5/IS1HYQTTFYBVLE7RUKZLW9.uasset differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/MW/CBIWOOCHMJUMWZRGLLKRTV.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/MW/CBIWOOCHMJUMWZRGLLKRTV.uasset index 584f9814..34f0bc1c 100644 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/MW/CBIWOOCHMJUMWZRGLLKRTV.uasset and b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/MW/CBIWOOCHMJUMWZRGLLKRTV.uasset differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/QS/VHQF8JWOATZI5V3ZVY5YTM.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/QS/VHQF8JWOATZI5V3ZVY5YTM.uasset deleted file mode 100644 index 1bb494b1..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/QS/VHQF8JWOATZI5V3ZVY5YTM.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/WU/NB37RT5Q32Z8MJWD8BD2SO.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/WU/NB37RT5Q32Z8MJWD8BD2SO.uasset index 7d291b6d..76d3dea7 100644 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/WU/NB37RT5Q32Z8MJWD8BD2SO.uasset and b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/WU/NB37RT5Q32Z8MJWD8BD2SO.uasset differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/2/42/RW71E1Z01YGR5EBGLNCG5N.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/2/42/RW71E1Z01YGR5EBGLNCG5N.uasset index d09eb840..0f54b57d 100644 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/2/42/RW71E1Z01YGR5EBGLNCG5N.uasset and b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/2/42/RW71E1Z01YGR5EBGLNCG5N.uasset differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/P3/O43ETCZTFMLWWH1CJ941H2.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/P3/O43ETCZTFMLWWH1CJ941H2.uasset deleted file mode 100644 index 6e38618d..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/P3/O43ETCZTFMLWWH1CJ941H2.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/U1/A5ZENKE1C5CL0XI0YZRP8I.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/U1/A5ZENKE1C5CL0XI0YZRP8I.uasset deleted file mode 100644 index a4ed7dc5..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/U1/A5ZENKE1C5CL0XI0YZRP8I.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/NC/UUYHDUFQAXTRRN4RVOPIUF.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/NC/UUYHDUFQAXTRRN4RVOPIUF.uasset deleted file mode 100644 index 9ab73bbe..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/NC/UUYHDUFQAXTRRN4RVOPIUF.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/S9/WGPI2H1UMVE5VSRAI10BC8.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/S9/WGPI2H1UMVE5VSRAI10BC8.uasset deleted file mode 100644 index 5344f753..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/S9/WGPI2H1UMVE5VSRAI10BC8.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/UV/1C6W14EIHMXOXXB657JYKB.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/UV/1C6W14EIHMXOXXB657JYKB.uasset deleted file mode 100644 index 6790ab0c..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/UV/1C6W14EIHMXOXXB657JYKB.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/PT/774NXP9XIX06EK1YJPDOR3.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/PT/774NXP9XIX06EK1YJPDOR3.uasset index 92518e95..eff594e3 100644 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/PT/774NXP9XIX06EK1YJPDOR3.uasset and b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/PT/774NXP9XIX06EK1YJPDOR3.uasset differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/7Y/C94R5C0R01QSL2SVHUG3KD.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/7Y/C94R5C0R01QSL2SVHUG3KD.uasset deleted file mode 100644 index dbdddb62..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/7Y/C94R5C0R01QSL2SVHUG3KD.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/6I/RU1L28PS820IOVH625A0DA.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/6I/RU1L28PS820IOVH625A0DA.uasset deleted file mode 100644 index b7db4ea7..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/6I/RU1L28PS820IOVH625A0DA.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/EE/UF6PR640K4OIKKPR762VSA.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/EE/UF6PR640K4OIKKPR762VSA.uasset deleted file mode 100644 index a7810147..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/EE/UF6PR640K4OIKKPR762VSA.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/IO/07IVU4EY14FMETPGTJULEO.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/IO/07IVU4EY14FMETPGTJULEO.uasset deleted file mode 100644 index e36bad6a..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/IO/07IVU4EY14FMETPGTJULEO.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/1U/JR5P5AWYJ94WETXKDVRHA1.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/1U/JR5P5AWYJ94WETXKDVRHA1.uasset deleted file mode 100644 index b43ca068..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/1U/JR5P5AWYJ94WETXKDVRHA1.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/RV/9ZIQX6A64JAQ54VWM40VXG.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/RV/9ZIQX6A64JAQ54VWM40VXG.uasset index 2b02bb0e..6eeb0784 100644 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/RV/9ZIQX6A64JAQ54VWM40VXG.uasset and b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/RV/9ZIQX6A64JAQ54VWM40VXG.uasset differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/C/AL/3NMNU01JNZW8P6FRPNKI29.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/C/AL/3NMNU01JNZW8P6FRPNKI29.uasset deleted file mode 100644 index f4b32222..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/C/AL/3NMNU01JNZW8P6FRPNKI29.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/4H/WAVPWR90OQ8K0B98VZ0HT9.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/4H/WAVPWR90OQ8K0B98VZ0HT9.uasset index ddfff575..175722da 100644 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/4H/WAVPWR90OQ8K0B98VZ0HT9.uasset and b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/4H/WAVPWR90OQ8K0B98VZ0HT9.uasset differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/MM/5416TNIX8GKJW3B714Y6WF.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/MM/5416TNIX8GKJW3B714Y6WF.uasset deleted file mode 100644 index 658ce5bf..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/MM/5416TNIX8GKJW3B714Y6WF.uasset and /dev/null differ diff --git a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/IU/40FNG9DBLDGHVC8NSWT5IT.uasset b/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/IU/40FNG9DBLDGHVC8NSWT5IT.uasset deleted file mode 100644 index b8df5882..00000000 Binary files a/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/IU/40FNG9DBLDGHVC8NSWT5IT.uasset and /dev/null differ diff --git a/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/6/EZ/7OAQR97ET34QNHTOINGSG0.uasset b/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/6/EZ/7OAQR97ET34QNHTOINGSG0.uasset new file mode 100644 index 00000000..e31bbb11 Binary files /dev/null and b/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/6/EZ/7OAQR97ET34QNHTOINGSG0.uasset differ diff --git a/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/8/8R/DKDJS6VR1UWMIBC47WDMX9.uasset b/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/8/8R/DKDJS6VR1UWMIBC47WDMX9.uasset new file mode 100644 index 00000000..4913d7d1 Binary files /dev/null and b/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/8/8R/DKDJS6VR1UWMIBC47WDMX9.uasset differ diff --git a/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/A/UU/6JIM0K1WJX7OEBG5HNH1WP.uasset b/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/A/UU/6JIM0K1WJX7OEBG5HNH1WP.uasset new file mode 100644 index 00000000..7a4b5ba1 Binary files /dev/null and b/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/A/UU/6JIM0K1WJX7OEBG5HNH1WP.uasset differ diff --git a/MassAITesting.uproject b/MassAITesting.uproject index 43218440..4982f1d2 100644 --- a/MassAITesting.uproject +++ b/MassAITesting.uproject @@ -1,6 +1,6 @@ { "FileVersion": 3, - "EngineAssociation": "5.0", + "EngineAssociation": "5.3", "Category": "", "Description": "", "Modules": [ @@ -31,6 +31,10 @@ "Linux" ] }, + { + "Name": "AnimToTexture", + "Enabled": true + }, { "Name": "MassEntity", "Enabled": true @@ -46,6 +50,10 @@ { "Name": "MassGameplay", "Enabled": true + }, + { + "Name": "MassWanderAI", + "Enabled": true } ] } \ No newline at end of file diff --git a/Plugins/MassSmartObjectAI/Content/BP_ExampleInteractable.uasset b/Plugins/MassSmartObjectAI/Content/BP_ExampleInteractable.uasset new file mode 100644 index 00000000..07b89b2d Binary files /dev/null and b/Plugins/MassSmartObjectAI/Content/BP_ExampleInteractable.uasset differ diff --git a/Plugins/MassSmartObjectAI/Content/DA_SOInteractEntity.uasset b/Plugins/MassSmartObjectAI/Content/DA_SOInteractEntity.uasset new file mode 100644 index 00000000..023d58ec Binary files /dev/null and b/Plugins/MassSmartObjectAI/Content/DA_SOInteractEntity.uasset differ diff --git a/Plugins/MassSmartObjectAI/Content/EQ_SimplePoint.uasset b/Plugins/MassSmartObjectAI/Content/EQ_SimplePoint.uasset new file mode 100644 index 00000000..0aa2c504 Binary files /dev/null and b/Plugins/MassSmartObjectAI/Content/EQ_SimplePoint.uasset differ diff --git a/Plugins/MassSmartObjectAI/Content/Maps/SingleEntityUseSmartObject.umap b/Plugins/MassSmartObjectAI/Content/Maps/SingleEntityUseSmartObject.umap new file mode 100644 index 00000000..3ace6a8f Binary files /dev/null and b/Plugins/MassSmartObjectAI/Content/Maps/SingleEntityUseSmartObject.umap differ diff --git a/Plugins/MassSmartObjectAI/Content/SO_Example.uasset b/Plugins/MassSmartObjectAI/Content/SO_Example.uasset new file mode 100644 index 00000000..2c1343e4 Binary files /dev/null and b/Plugins/MassSmartObjectAI/Content/SO_Example.uasset differ diff --git a/Plugins/MassSmartObjectAI/Content/ST_UseSmartObject.uasset b/Plugins/MassSmartObjectAI/Content/ST_UseSmartObject.uasset new file mode 100644 index 00000000..f0ab7b32 Binary files /dev/null and b/Plugins/MassSmartObjectAI/Content/ST_UseSmartObject.uasset differ diff --git a/Plugins/MassSmartObjectAI/MassSmartObjectAI.uplugin b/Plugins/MassSmartObjectAI/MassSmartObjectAI.uplugin new file mode 100644 index 00000000..7c03b823 --- /dev/null +++ b/Plugins/MassSmartObjectAI/MassSmartObjectAI.uplugin @@ -0,0 +1,23 @@ +{ + "FileVersion": 3, + "Version": 1, + "VersionName": "1.0", + "FriendlyName": "MassSmartObjectAI", + "Description": "A simple example of using smart objects for Mass AI", + "Category": "Other", + "CreatedBy": "Gareth Aguilar", + "CreatedByURL": "https://github.com/Ji-Rath/MassAITesting", + "DocsURL": "", + "MarketplaceURL": "", + "CanContainContent": true, + "IsBetaVersion": false, + "IsExperimentalVersion": false, + "Installed": false, + "Modules": [ + { + "Name": "MassSmartObjectAI", + "Type": "Runtime", + "LoadingPhase": "Default" + } + ] +} \ No newline at end of file diff --git a/Plugins/MassSmartObjectAI/Resources/Icon128.png b/Plugins/MassSmartObjectAI/Resources/Icon128.png new file mode 100644 index 00000000..1231d4aa Binary files /dev/null and b/Plugins/MassSmartObjectAI/Resources/Icon128.png differ diff --git a/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/MassSmartObjectAI.Build.cs b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/MassSmartObjectAI.Build.cs new file mode 100644 index 00000000..703ab06e --- /dev/null +++ b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/MassSmartObjectAI.Build.cs @@ -0,0 +1,57 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; + +public class MassSmartObjectAI : ModuleRules +{ + public MassSmartObjectAI(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicIncludePaths.AddRange( + new string[] { + // ... add public include paths required here ... + } + ); + + + PrivateIncludePaths.AddRange( + new string[] { + // ... add other private include paths required here ... + } + ); + + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + // ... add other public dependencies that you statically link with here ... + } + ); + + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "CoreUObject", + "Engine", + "Slate", + "SlateCore", + "MassSmartObjects", + "MassAIBehavior", + "MassEntity", + "MassSignals" + // ... add private dependencies that you statically link with here ... + } + ); + + + DynamicallyLoadedModuleNames.AddRange( + new string[] + { + // ... add any modules that your module loads dynamically here ... + } + ); + } +} diff --git a/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/MassSmartObjectAI.cpp b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/MassSmartObjectAI.cpp new file mode 100644 index 00000000..8c5475ed --- /dev/null +++ b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/MassSmartObjectAI.cpp @@ -0,0 +1,20 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#include "MassSmartObjectAI.h" + +#define LOCTEXT_NAMESPACE "FMassSmartObjectAIModule" + +void FMassSmartObjectAIModule::StartupModule() +{ + // This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module +} + +void FMassSmartObjectAIModule::ShutdownModule() +{ + // This function may be called during shutdown to clean up your module. For modules that support dynamic reloading, + // we call this function before unloading the module. +} + +#undef LOCTEXT_NAMESPACE + +IMPLEMENT_MODULE(FMassSmartObjectAIModule, MassSmartObjectAI) \ No newline at end of file diff --git a/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/Processors/TickSTProcessor.cpp b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/Processors/TickSTProcessor.cpp new file mode 100644 index 00000000..1003dd97 --- /dev/null +++ b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/Processors/TickSTProcessor.cpp @@ -0,0 +1,35 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "TickSTProcessor.h" + +#include "MassExecutionContext.h" +#include "MassSignalSubsystem.h" +#include "MassStateTreeFragments.h" + +void UTickSTProcessor::ConfigureQueries() +{ + EntityQuery.AddRequirement(EMassFragmentAccess::ReadOnly); + EntityQuery.AddSubsystemRequirement(EMassFragmentAccess::ReadWrite); + EntityQuery.RegisterWithProcessor(*this); +} + +void UTickSTProcessor::Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) +{ + + // Iterate through chunks + EntityQuery.ForEachEntityChunk(EntityManager, Context,[](FMassExecutionContext& Context) + { + UMassSignalSubsystem& SignalSubsystem = Context.GetMutableSubsystemChecked(); + const auto& StateTreeInstanceArray = Context.GetFragmentView(); + + // Iterate through entities in chunk + const int32 NumEntities = Context.GetNumEntities(); + for(int32 EntityIndex = 0; EntityIndex < NumEntities; EntityIndex++) + { + const auto& StateTreeInstance = StateTreeInstanceArray[EntityIndex]; + + SignalSubsystem.DelaySignalEntityDeferred(Context, UE::Mass::Signals::StateTreeActivate, Context.GetEntity(EntityIndex), 1.f); + } + }); +} diff --git a/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/Processors/TickSTProcessor.h b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/Processors/TickSTProcessor.h new file mode 100644 index 00000000..40f2a8cf --- /dev/null +++ b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/Processors/TickSTProcessor.h @@ -0,0 +1,23 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "MassProcessor.h" +#include "TickSTProcessor.generated.h" + +/** + * Processor whos function is to tick the state tree at certain intervals. + * This may fluctuate due to distance, LOD, or other factors. + */ +UCLASS() +class MASSSMARTOBJECTAI_API UTickSTProcessor : public UMassProcessor +{ + GENERATED_BODY() + +protected: + virtual void ConfigureQueries() override; + virtual void Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) override; + + FMassEntityQuery EntityQuery; +}; diff --git a/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/SmartObjects/BenchSOBehavior.cpp b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/SmartObjects/BenchSOBehavior.cpp new file mode 100644 index 00000000..26a89d30 --- /dev/null +++ b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/SmartObjects/BenchSOBehavior.cpp @@ -0,0 +1,16 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "BenchSOBehavior.h" +#include "MassSmartObjectAI.h" + +DEFINE_LOG_CATEGORY(LogMassSmartObjectAI); + +void UBenchSOBehavior::Activate(FMassCommandBuffer& CommandBuffer, + const FMassBehaviorEntityContext& EntityContext) const +{ + Super::Activate(CommandBuffer, EntityContext); + + // This is where you would implement logic that you want run when an entity interacts with a smart object + UE_LOG(LogMassSmartObjectAI, Log, TEXT("Ran Bench behavior on %llu"), EntityContext.EntityView.GetEntity().AsNumber()); +} diff --git a/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/SmartObjects/BenchSOBehavior.h b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/SmartObjects/BenchSOBehavior.h new file mode 100644 index 00000000..685f72d8 --- /dev/null +++ b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Private/SmartObjects/BenchSOBehavior.h @@ -0,0 +1,19 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "MassSmartObjectBehaviorDefinition.h" + +#include "BenchSOBehavior.generated.h" + +/** + * + */ +UCLASS() +class MASSSMARTOBJECTAI_API UBenchSOBehavior : public USmartObjectMassBehaviorDefinition +{ + GENERATED_BODY() +protected: + virtual void Activate(FMassCommandBuffer& CommandBuffer, const FMassBehaviorEntityContext& EntityContext) const override; +}; diff --git a/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Public/MassSmartObjectAI.h b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Public/MassSmartObjectAI.h new file mode 100644 index 00000000..c89481ac --- /dev/null +++ b/Plugins/MassSmartObjectAI/Source/MassSmartObjectAI/Public/MassSmartObjectAI.h @@ -0,0 +1,17 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "Modules/ModuleManager.h" + +DECLARE_LOG_CATEGORY_EXTERN(LogMassSmartObjectAI, Log, All); + +class FMassSmartObjectAIModule : public IModuleInterface +{ +public: + + /** IModuleInterface implementation */ + virtual void StartupModule() override; + virtual void ShutdownModule() override; +}; diff --git a/Plugins/MassWanderAI/Content/DA_WanderEntity.uasset b/Plugins/MassWanderAI/Content/DA_WanderEntity.uasset new file mode 100644 index 00000000..014a8534 Binary files /dev/null and b/Plugins/MassWanderAI/Content/DA_WanderEntity.uasset differ diff --git a/Plugins/MassWanderAI/Content/EQ_SpawnWanderers.uasset b/Plugins/MassWanderAI/Content/EQ_SpawnWanderers.uasset new file mode 100644 index 00000000..b2916c4a Binary files /dev/null and b/Plugins/MassWanderAI/Content/EQ_SpawnWanderers.uasset differ diff --git a/Plugins/MassWanderAI/Content/Maps/WanderLevel.umap b/Plugins/MassWanderAI/Content/Maps/WanderLevel.umap new file mode 100644 index 00000000..3aca9e54 Binary files /dev/null and b/Plugins/MassWanderAI/Content/Maps/WanderLevel.umap differ diff --git a/Plugins/MassWanderAI/Content/ST_Wander.uasset b/Plugins/MassWanderAI/Content/ST_Wander.uasset new file mode 100644 index 00000000..0564dfca Binary files /dev/null and b/Plugins/MassWanderAI/Content/ST_Wander.uasset differ diff --git a/Plugins/MassWanderAI/MassWanderAI.uplugin b/Plugins/MassWanderAI/MassWanderAI.uplugin new file mode 100644 index 00000000..19a8d0f3 --- /dev/null +++ b/Plugins/MassWanderAI/MassWanderAI.uplugin @@ -0,0 +1,23 @@ +{ + "FileVersion": 3, + "Version": 1, + "VersionName": "1.0", + "FriendlyName": "MassWanderAI", + "Description": "Simple Mass AI used to demonstrate baseline usage using Processors and State Trees", + "Category": "Other", + "CreatedBy": "Gareth Aguilar", + "CreatedByURL": "https://github.com/Ji-Rath/MassAITesting", + "DocsURL": "", + "MarketplaceURL": "", + "CanContainContent": true, + "IsBetaVersion": true, + "IsExperimentalVersion": false, + "Installed": false, + "Modules": [ + { + "Name": "MassWanderAI", + "Type": "Runtime", + "LoadingPhase": "Default" + } + ] +} \ No newline at end of file diff --git a/Plugins/MassWanderAI/Resources/Icon128.png b/Plugins/MassWanderAI/Resources/Icon128.png new file mode 100644 index 00000000..1231d4aa Binary files /dev/null and b/Plugins/MassWanderAI/Resources/Icon128.png differ diff --git a/Plugins/MassWanderAI/Source/MassWanderAI/MassWanderAI.Build.cs b/Plugins/MassWanderAI/Source/MassWanderAI/MassWanderAI.Build.cs new file mode 100644 index 00000000..06e3a9ce --- /dev/null +++ b/Plugins/MassWanderAI/Source/MassWanderAI/MassWanderAI.Build.cs @@ -0,0 +1,58 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; + +public class MassWanderAI : ModuleRules +{ + public MassWanderAI(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicIncludePaths.AddRange( + new string[] { + // ... add public include paths required here ... + } + ); + + + PrivateIncludePaths.AddRange( + new string[] { + // ... add other private include paths required here ... + } + ); + + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", "MassAIBehavior", + // ... add other public dependencies that you statically link with here ... + } + ); + + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "CoreUObject", + "Engine", + "Slate", + "SlateCore", + "MassAIBehavior", + "StateTreeModule", + "MassCommon", + "MassNavigation", + "MassSignals" + // ... add private dependencies that you statically link with here ... + } + ); + + + DynamicallyLoadedModuleNames.AddRange( + new string[] + { + // ... add any modules that your module loads dynamically here ... + } + ); + } +} diff --git a/Plugins/MassWanderAI/Source/MassWanderAI/Private/MassWanderAI.cpp b/Plugins/MassWanderAI/Source/MassWanderAI/Private/MassWanderAI.cpp new file mode 100644 index 00000000..aa932a41 --- /dev/null +++ b/Plugins/MassWanderAI/Source/MassWanderAI/Private/MassWanderAI.cpp @@ -0,0 +1,20 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#include "MassWanderAI.h" + +#define LOCTEXT_NAMESPACE "FMassWanderAIModule" + +void FMassWanderAIModule::StartupModule() +{ + // This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module +} + +void FMassWanderAIModule::ShutdownModule() +{ + // This function may be called during shutdown to clean up your module. For modules that support dynamic reloading, + // we call this function before unloading the module. +} + +#undef LOCTEXT_NAMESPACE + +IMPLEMENT_MODULE(FMassWanderAIModule, MassWanderAI) \ No newline at end of file diff --git a/Plugins/MassWanderAI/Source/MassWanderAI/Private/StateTree/Tasks/MW_FindRandomLocationTask.cpp b/Plugins/MassWanderAI/Source/MassWanderAI/Private/StateTree/Tasks/MW_FindRandomLocationTask.cpp new file mode 100644 index 00000000..c787b6cb --- /dev/null +++ b/Plugins/MassWanderAI/Source/MassWanderAI/Private/StateTree/Tasks/MW_FindRandomLocationTask.cpp @@ -0,0 +1,28 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "StateTree/Tasks/MW_FindRandomLocationTask.h" + +#include "MassCommonFragments.h" +#include "StateTreeExecutionContext.h" +#include "StateTreeLinker.h" + +bool FMW_FindRandomLocationTask::Link(FStateTreeLinker& Linker) +{ + Linker.LinkExternalData(TransformHandle); + + return FMassStateTreeTaskBase::Link(Linker); +} + +EStateTreeRunStatus FMW_FindRandomLocationTask::EnterState(FStateTreeExecutionContext& Context, + const FStateTreeTransitionResult& Transition) const +{ + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + const float Range = InstanceData.Range; + FTransformFragment& Transform = Context.GetExternalData(TransformHandle); + const auto NewOffset = FVector(FMath::RandRange(Range/2*-1, Range/2), FMath::RandRange(Range/2*-1, Range/2), 0.f);; + + InstanceData.OutLocation = Transform.GetTransform().GetLocation()+NewOffset; + + return EStateTreeRunStatus::Succeeded; +} diff --git a/Plugins/MassWanderAI/Source/MassWanderAI/Private/StateTree/Tasks/MW_GotoLocation.cpp b/Plugins/MassWanderAI/Source/MassWanderAI/Private/StateTree/Tasks/MW_GotoLocation.cpp new file mode 100644 index 00000000..66bf4f0b --- /dev/null +++ b/Plugins/MassWanderAI/Source/MassWanderAI/Private/StateTree/Tasks/MW_GotoLocation.cpp @@ -0,0 +1,65 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "StateTree/Tasks/MW_GotoLocation.h" + +#include "MassCommonFragments.h" +#include "MassNavigationFragments.h" +#include "MassSignalSubsystem.h" +#include "MassStateTreeExecutionContext.h" +#include "StateTreeExecutionContext.h" +#include "StateTreeLinker.h" + +bool FMW_GotoLocation::Link(FStateTreeLinker& Linker) +{ + Linker.LinkExternalData(MoveTargetHandle); + Linker.LinkExternalData(TransformHandle); + Linker.LinkExternalData(MassSignalSubsystemHandle); + return FMassStateTreeTaskBase::Link(Linker); +} + +EStateTreeRunStatus FMW_GotoLocation::EnterState(FStateTreeExecutionContext& Context, + const FStateTreeTransitionResult& Transition) const +{ + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + const FVector& Destination = InstanceData.Destination; + auto& TransformFragment = Context.GetExternalData(TransformHandle); + + // Create movement action + auto& MoveTarget = Context.GetExternalData(MoveTargetHandle); + MoveTarget.Center = Destination; + MoveTarget.DistanceToGoal = FVector::Dist(Destination, TransformFragment.GetTransform().GetLocation()); + MoveTarget.CreateNewAction(EMassMovementAction::Move, *Context.GetWorld()); + + // Signal task tick + const FMassStateTreeExecutionContext& MassContext = static_cast(Context); + auto& MassSignalSubsystem = Context.GetExternalData(MassSignalSubsystemHandle); + MassSignalSubsystem.DelaySignalEntity(UE::Mass::Signals::StateTreeActivate, MassContext.GetEntity(), 1.f); + + return EStateTreeRunStatus::Running; +} + +EStateTreeRunStatus FMW_GotoLocation::Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const +{ + const auto& TransformFragment = Context.GetExternalData(TransformHandle); + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + // Update distance to goal and agent location + auto& MoveTarget = Context.GetExternalData(MoveTargetHandle); + InstanceData.AgentLocation = TransformFragment.GetTransform().GetLocation(); + MoveTarget.DistanceToGoal = FVector::Dist(MoveTarget.Center, InstanceData.AgentLocation); + + // Signal next task tick + const FMassStateTreeExecutionContext& MassContext = static_cast(Context); + auto& MassSignalSubsystem = Context.GetExternalData(MassSignalSubsystemHandle); + MassSignalSubsystem.DelaySignalEntity(UE::Mass::Signals::StateTreeActivate, MassContext.GetEntity(), 1.f); + + return EStateTreeRunStatus::Running; +} + +void FMW_GotoLocation::ExitState(FStateTreeExecutionContext& Context, + const FStateTreeTransitionResult& Transition) const +{ + auto& MoveTarget = Context.GetExternalData(MoveTargetHandle); + MoveTarget.CreateNewAction(EMassMovementAction::Stand, *Context.GetWorld()); +} diff --git a/Plugins/MassWanderAI/Source/MassWanderAI/Public/MassWanderAI.h b/Plugins/MassWanderAI/Source/MassWanderAI/Public/MassWanderAI.h new file mode 100644 index 00000000..bedb1c81 --- /dev/null +++ b/Plugins/MassWanderAI/Source/MassWanderAI/Public/MassWanderAI.h @@ -0,0 +1,15 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "Modules/ModuleManager.h" + +class FMassWanderAIModule : public IModuleInterface +{ +public: + + /** IModuleInterface implementation */ + virtual void StartupModule() override; + virtual void ShutdownModule() override; +}; diff --git a/Plugins/MassWanderAI/Source/MassWanderAI/Public/StateTree/Tasks/MW_FindRandomLocationTask.h b/Plugins/MassWanderAI/Source/MassWanderAI/Public/StateTree/Tasks/MW_FindRandomLocationTask.h new file mode 100644 index 00000000..abbae9ba --- /dev/null +++ b/Plugins/MassWanderAI/Source/MassWanderAI/Public/StateTree/Tasks/MW_FindRandomLocationTask.h @@ -0,0 +1,40 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "MassStateTreeTypes.h" +#include "MW_FindRandomLocationTask.generated.h" + +class UMassSignalSubsystem; +struct FTransformFragment; + +USTRUCT() +struct MASSWANDERAI_API FMW_FindRandomLocationTaskInstanceData +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, Category=Input) + float Range = 1000.f; + + UPROPERTY(EditAnywhere, Category=Output) + FVector OutLocation; +}; + +/** + * Find a random location to wander to + */ +USTRUCT(meta = (DisplayName = "MW Find Random Location")) +struct MASSWANDERAI_API FMW_FindRandomLocationTask : public FMassStateTreeTaskBase +{ + GENERATED_BODY() + + using FInstanceDataType = FMW_FindRandomLocationTaskInstanceData; + + virtual bool Link(FStateTreeLinker& Linker) override; + virtual const UStruct* GetInstanceDataType() const override { return FMW_FindRandomLocationTaskInstanceData::StaticStruct(); } + + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; +protected: + TStateTreeExternalDataHandle TransformHandle; +}; diff --git a/Plugins/MassWanderAI/Source/MassWanderAI/Public/StateTree/Tasks/MW_GotoLocation.h b/Plugins/MassWanderAI/Source/MassWanderAI/Public/StateTree/Tasks/MW_GotoLocation.h new file mode 100644 index 00000000..984e697b --- /dev/null +++ b/Plugins/MassWanderAI/Source/MassWanderAI/Public/StateTree/Tasks/MW_GotoLocation.h @@ -0,0 +1,45 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "MassStateTreeTypes.h" +#include "MW_GotoLocation.generated.h" + +class UMassSignalSubsystem; +struct FTransformFragment; +struct FMassMoveTargetFragment; + +USTRUCT() +struct MASSWANDERAI_API FMW_GotoLocationInstanceData +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, Category=Input) + FVector Destination; + + UPROPERTY(EditAnywhere, Category=Output) + FVector AgentLocation; +}; + +/** + * Sets the target location that the entity should go to. Returns successful when the entity has reached the location + */ +USTRUCT(meta = (DisplayName = "MW Goto Location")) +struct MASSWANDERAI_API FMW_GotoLocation : public FMassStateTreeTaskBase +{ + GENERATED_BODY() + + using FInstanceDataType = FMW_GotoLocationInstanceData; + + virtual bool Link(FStateTreeLinker& Linker) override; + virtual const UStruct* GetInstanceDataType() const override { return FMW_GotoLocationInstanceData::StaticStruct(); } + + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + virtual EStateTreeRunStatus Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const override; + virtual void ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; +protected: + TStateTreeExternalDataHandle MoveTargetHandle; + TStateTreeExternalDataHandle TransformHandle; + TStateTreeExternalDataHandle MassSignalSubsystemHandle; +}; diff --git a/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VATEditorUtils.cpp b/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VATEditorUtils.cpp index 9ed5e3cc..85794454 100644 --- a/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VATEditorUtils.cpp +++ b/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VATEditorUtils.cpp @@ -40,7 +40,6 @@ #include "Toolkits/ToolkitManager.h" #include "Dialogs/DlgPickAssetPath.h" -#include "AssetRegistryModule.h" #include "VertexAnimProfile.h" @@ -103,6 +102,7 @@ #include "Animation/AnimSingleNodeInstance.h" #include "MeshDescription.h" +#include "AssetRegistry/AssetRegistryModule.h" #define LOCTEXT_NAMESPACE "VATEditorUtils" @@ -435,7 +435,7 @@ void GatherAndBakeAllAnimVertData( { bool bCachedCPUSkinning = false; constexpr bool bRecreateRenderStateImmediately = true; - // 1º switch to CPU skinning + // 1� switch to CPU skinning { const int32 InLODIndex = 0; { @@ -462,7 +462,7 @@ void GatherAndBakeAllAnimVertData( } } - // 2º Make Sure it in ref pose + // 2� Make Sure it in ref pose PreviewComponent->EnablePreview(true, NULL); PreviewComponent->RefreshBoneTransforms(nullptr); PreviewComponent->ClearMotionVector(); @@ -502,7 +502,7 @@ void GatherAndBakeAllAnimVertData( const auto& ActiveBoneIndices = LODData.ActiveBoneIndices; TArray RefToLocal; - // 3º Store Values + // 3� Store Values // Vert Anim if (Profile->Anims_Vert.Num()) { @@ -629,7 +629,7 @@ void GatherAndBakeAllAnimVertData( } } - // 4º Put Mesh back into ref pose + // 4� Put Mesh back into ref pose { PreviewComponent->EnablePreview(true, NULL); PreviewComponent->RefreshBoneTransforms(nullptr); @@ -800,7 +800,7 @@ static UTexture2D* SetTexture2( } else { - UPackage* Package = CreatePackage(NULL, *(PackagePath + Name)); + UPackage* Package = CreatePackage(*(PackagePath + Name)); check(Package); Package->FullyLoad(); diff --git a/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VertexAnimToolsetEditor.cpp b/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VertexAnimToolsetEditor.cpp index f1f916a6..3da2f3a9 100644 --- a/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VertexAnimToolsetEditor.cpp +++ b/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VertexAnimToolsetEditor.cpp @@ -38,7 +38,6 @@ #include "Toolkits/ToolkitManager.h" #include "Dialogs/DlgPickAssetPath.h" -#include "AssetRegistryModule.h" #include "VertexAnimUtils.h" #include "VertexAnimProfile.h" diff --git a/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VertexAnimUtils.cpp b/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VertexAnimUtils.cpp index 30dd8815..264874d2 100644 --- a/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VertexAnimUtils.cpp +++ b/Plugins/VertexAnimToolset/Source/VertexAnimToolsetEditor/Private/VertexAnimUtils.cpp @@ -85,7 +85,6 @@ #include "Toolkits/ToolkitManager.h" #include "Dialogs/DlgPickAssetPath.h" -#include "AssetRegistryModule.h" #include "VertexAnimProfile.h" @@ -144,6 +143,7 @@ #include "AnimationRuntime.h" #include "Animation/AnimSingleNodeInstance.h" +#include "AssetRegistry/AssetRegistryModule.h" #define LOCTEXT_NAMESPACE "PickAssetDialog" @@ -254,7 +254,7 @@ static void AddOrDuplicateMaterial(UMaterialInterface* InMaterialInterface, cons FString MaterialName; FAssetToolsModule& AssetToolsModule = FModuleManager::LoadModuleChecked("AssetTools"); AssetToolsModule.Get().CreateUniqueAssetName(MaterialPath, TEXT(""), MaterialPath, MaterialName); - UPackage* MaterialPackage = CreatePackage(NULL, *MaterialPath); + UPackage* MaterialPackage = CreatePackage(*MaterialPath); // Duplicate the object into the new package UMaterialInterface* NewMaterialInterface = DuplicateObject(InMaterialInterface, MaterialPackage, *MaterialName); @@ -540,7 +540,7 @@ UStaticMesh* FVertexAnimUtils::ConvertMeshesToStaticMesh(const TArray(); } @@ -21,9 +22,9 @@ UAdvancedRandomMovementProcessor::UAdvancedRandomMovementProcessor() ExecutionOrder.ExecuteBefore.Add(UE::Mass::ProcessorGroupNames::Avoidance); } -void UAdvancedRandomMovementProcessor::Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) +void UAdvancedRandomMovementProcessor::Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) { - EntityQuery.ForEachEntityChunk(EntitySubsystem, Context, ([this](FMassExecutionContext& Context) + EntityQuery.ForEachEntityChunk(EntityManager, Context, ([this](FMassExecutionContext& Context) { const TConstArrayView TransformsList = Context.GetFragmentView(); const TArrayView NavTargetsList = Context.GetMutableFragmentView(); diff --git a/Source/MassAITesting/Mass/Fragments/AdvancedRandomMovementTrait.h b/Source/MassAITesting/Mass/Fragments/AdvancedRandomMovementTrait.h index 285493d2..3e5f4ab2 100644 --- a/Source/MassAITesting/Mass/Fragments/AdvancedRandomMovementTrait.h +++ b/Source/MassAITesting/Mass/Fragments/AdvancedRandomMovementTrait.h @@ -8,6 +8,8 @@ #include "MassProcessor.h" #include "AdvancedRandomMovementTrait.generated.h" +class UMassEntitySubsystem; + USTRUCT() struct MASSAITESTING_API FNPC : public FMassTag { @@ -22,7 +24,7 @@ class MASSAITESTING_API UAdvancedRandomMovementTrait : public UMassEntityTraitBa { GENERATED_BODY() - virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, UWorld& World) const override; + virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const override; }; UCLASS() @@ -32,7 +34,7 @@ class MASSAITESTING_API UAdvancedRandomMovementProcessor : public UMassProcessor UAdvancedRandomMovementProcessor(); - virtual void Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) override; + virtual void Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) override; virtual void ConfigureQueries() override; FMassEntityQuery EntityQuery; diff --git a/Source/MassAITesting/Mass/Fragments/NavMeshMovementTrait.cpp b/Source/MassAITesting/Mass/Fragments/NavMeshMovementTrait.cpp index be85cfd8..71e61660 100644 --- a/Source/MassAITesting/Mass/Fragments/NavMeshMovementTrait.cpp +++ b/Source/MassAITesting/Mass/Fragments/NavMeshMovementTrait.cpp @@ -7,6 +7,7 @@ #include "AITypes.h" #include "MassCommonFragments.h" #include "MassEntityTemplateRegistry.h" +#include "MassExecutionContext.h" #include "MassMovementFragments.h" #include "MassNavigationFragments.h" #include "NavigationSystem.h" @@ -15,7 +16,7 @@ struct FMassMoveTargetFragment; struct FMassMovementParameters; -void UNavMeshMovementTrait::BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, UWorld& World) const +void UNavMeshMovementTrait::BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const { BuildContext.AddTag(); BuildContext.AddFragment(); @@ -28,9 +29,9 @@ UNavMeshMovementProcessor::UNavMeshMovementProcessor() ExecutionOrder.ExecuteBefore.Add(UE::Mass::ProcessorGroupNames::Avoidance); } -void UNavMeshMovementProcessor::Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) +void UNavMeshMovementProcessor::Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) { - EntityQuery.ForEachEntityChunk(EntitySubsystem, Context, ([this](FMassExecutionContext& Context) + EntityQuery.ForEachEntityChunk(EntityManager, Context, ([this](FMassExecutionContext& Context) { const TConstArrayView TransformsList = Context.GetFragmentView(); const TArrayView NavTargetsList = Context.GetMutableFragmentView(); diff --git a/Source/MassAITesting/Mass/Fragments/NavMeshMovementTrait.h b/Source/MassAITesting/Mass/Fragments/NavMeshMovementTrait.h index 7574ee1c..b95d57b3 100644 --- a/Source/MassAITesting/Mass/Fragments/NavMeshMovementTrait.h +++ b/Source/MassAITesting/Mass/Fragments/NavMeshMovementTrait.h @@ -38,7 +38,7 @@ class MASSAITESTING_API UNavMeshMovementTrait : public UMassEntityTraitBase { GENERATED_BODY() - virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, UWorld& World) const override; + virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const override; }; UCLASS() @@ -48,7 +48,7 @@ class MASSAITESTING_API UNavMeshMovementProcessor : public UMassProcessor UNavMeshMovementProcessor(); - virtual void Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) override; + virtual void Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) override; virtual void ConfigureQueries() override; FMassEntityQuery EntityQuery; diff --git a/Source/MassAITesting/Mass/Fragments/SimpleRandomMovementTrait.cpp b/Source/MassAITesting/Mass/Fragments/SimpleRandomMovementTrait.cpp index d4dec804..34e0305b 100644 --- a/Source/MassAITesting/Mass/Fragments/SimpleRandomMovementTrait.cpp +++ b/Source/MassAITesting/Mass/Fragments/SimpleRandomMovementTrait.cpp @@ -5,7 +5,7 @@ #include "MassEntityTemplateRegistry.h" -void USimpleRandomMovementTrait::BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, UWorld& World) const +void USimpleRandomMovementTrait::BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const { BuildContext.AddFragment(); } diff --git a/Source/MassAITesting/Mass/Fragments/SimpleRandomMovementTrait.h b/Source/MassAITesting/Mass/Fragments/SimpleRandomMovementTrait.h index 95ae075f..926abd09 100644 --- a/Source/MassAITesting/Mass/Fragments/SimpleRandomMovementTrait.h +++ b/Source/MassAITesting/Mass/Fragments/SimpleRandomMovementTrait.h @@ -24,6 +24,6 @@ class MASSAITESTING_API USimpleRandomMovementTrait : public UMassEntityTraitBase GENERATED_BODY() protected: - virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, UWorld& World) const override; + virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const override; }; diff --git a/Source/MassAITesting/Mass/Processors/MoveTargetProcessor.cpp b/Source/MassAITesting/Mass/Processors/MoveTargetProcessor.cpp index 4f7db83a..77c92de9 100644 --- a/Source/MassAITesting/Mass/Processors/MoveTargetProcessor.cpp +++ b/Source/MassAITesting/Mass/Processors/MoveTargetProcessor.cpp @@ -20,12 +20,13 @@ void UMoveTargetProcessor::ConfigureQueries() EntityQuery.AddRequirement(EMassFragmentAccess::ReadWrite); EntityQuery.AddChunkRequirement(EMassFragmentAccess::ReadOnly, EMassFragmentPresence::Optional); EntityQuery.SetChunkFilter(&FMassSimulationVariableTickChunkFragment::ShouldTickChunkThisFrame); + EntityQuery.RegisterWithProcessor(*this); } -void UMoveTargetProcessor::Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) +void UMoveTargetProcessor::Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) { TArray EntitiesToSignal; - EntityQuery.ParallelForEachEntityChunk(EntitySubsystem, Context, ([this, &EntitiesToSignal](FMassExecutionContext& Context) + EntityQuery.ForEachEntityChunk(EntityManager, Context, ([this, &EntitiesToSignal](FMassExecutionContext& Context) { const TArrayView TransformsList = Context.GetMutableFragmentView(); const TArrayView MoveTargets = Context.GetMutableFragmentView(); @@ -43,6 +44,7 @@ void UMoveTargetProcessor::Execute(UMassEntitySubsystem& EntitySubsystem, FMassE if (MoveTarget.DistanceToGoal <= MoveTarget.SlackRadius) { EntitiesToSignal.Add(Context.GetEntity(EntityIndex)); + MoveTarget.CreateNewAction(EMassMovementAction::Stand, *Context.GetWorld()); } } } diff --git a/Source/MassAITesting/Mass/Processors/MoveTargetProcessor.h b/Source/MassAITesting/Mass/Processors/MoveTargetProcessor.h index a7f81040..8731e94b 100644 --- a/Source/MassAITesting/Mass/Processors/MoveTargetProcessor.h +++ b/Source/MassAITesting/Mass/Processors/MoveTargetProcessor.h @@ -20,7 +20,7 @@ class MASSAITESTING_API UMoveTargetProcessor : public UMassProcessor protected: virtual void ConfigureQueries() override; - virtual void Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) override; + virtual void Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) override; virtual void Initialize(UObject& Owner) override; diff --git a/Source/MassAITesting/Mass/RTSAgentTrait.cpp b/Source/MassAITesting/Mass/RTSAgentTrait.cpp index 98b52539..ed1170e1 100644 --- a/Source/MassAITesting/Mass/RTSAgentTrait.cpp +++ b/Source/MassAITesting/Mass/RTSAgentTrait.cpp @@ -2,6 +2,8 @@ #include "RTSAgentTrait.h" + +#include "AnimToTextureDataAsset.h" #include "MassCommonFragments.h" #include "MassEntityTemplateRegistry.h" #include "MassMovementFragments.h" @@ -10,14 +12,15 @@ #include "SmartObjectSubsystem.h" #include "Components/InstancedStaticMeshComponent.h" #include "AnimToTextureInstancePlaybackHelpers.h" +#include "MassEntitySubsystem.h" #include "MassAITesting/RTSBuildingSubsystem.h" //----------------------------------------------------------------------// // URTSGatherResourceProcessor //----------------------------------------------------------------------// -void URTSGatherResourceProcessor::Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) +void URTSGatherResourceProcessor::Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) { - EntityQuery.ForEachEntityChunk(EntitySubsystem, Context, ([this](FMassExecutionContext& Context) + EntityQuery.ForEachEntityChunk(EntityManager, Context, ([this](FMassExecutionContext& Context) { const TConstArrayView GatherResourceFragments = Context.GetFragmentView(); const TArrayView RTSAgentFragment = Context.GetMutableFragmentView(); @@ -49,6 +52,7 @@ void URTSGatherResourceProcessor::ConfigureQueries() { EntityQuery.AddRequirement(EMassFragmentAccess::ReadOnly); EntityQuery.AddRequirement(EMassFragmentAccess::ReadWrite); + EntityQuery.RegisterWithProcessor(*this); } void URTSGatherResourceProcessor::Initialize(UObject& Owner) @@ -59,7 +63,7 @@ void URTSGatherResourceProcessor::Initialize(UObject& Owner) //----------------------------------------------------------------------// // URTSAgentTrait //----------------------------------------------------------------------// -void URTSAgentTrait::BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, UWorld& World) const +void URTSAgentTrait::BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const { UMassEntitySubsystem* EntitySubsystem = UWorld::GetSubsystem(&World); check(EntitySubsystem); @@ -68,7 +72,7 @@ void URTSAgentTrait::BuildTemplate(FMassEntityTemplateBuildContext& BuildContext BuildContext.AddFragment(); BuildContext.AddTag(); - const FConstSharedStruct RTSAgentFragment = EntitySubsystem->GetOrCreateConstSharedFragment(UE::StructUtils::GetStructCrc32(FConstStructView::Make(AgentParameters)), AgentParameters); + const FConstSharedStruct RTSAgentFragment = EntitySubsystem->GetMutableEntityManager().GetOrCreateConstSharedFragment(AgentParameters); BuildContext.AddConstSharedFragment(RTSAgentFragment); } @@ -81,9 +85,9 @@ URTSAgentInitializer::URTSAgentInitializer() Operation = EMassObservedOperation::Add; } -void URTSAgentInitializer::Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) +void URTSAgentInitializer::Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) { - EntityQuery.ParallelForEachEntityChunk(EntitySubsystem, Context, ([this](FMassExecutionContext& Context) + EntityQuery.ForEachEntityChunk(EntityManager, Context, ([this](FMassExecutionContext& Context) { const TArrayView RTSMoveFragmentList = Context.GetMutableFragmentView(); const FRTSAgentParameters& RTSAgentParameters = Context.GetConstSharedFragment(); @@ -115,6 +119,7 @@ void URTSAgentInitializer::ConfigureQueries() EntityQuery.AddTagRequirement(EMassFragmentPresence::All); EntityQuery.AddRequirement(EMassFragmentAccess::ReadWrite); EntityQuery.AddRequirement(EMassFragmentAccess::ReadWrite); + EntityQuery.RegisterWithProcessor(*this); } void URTSAgentInitializer::Initialize(UObject& Owner) @@ -156,11 +161,12 @@ void URTSAnimationProcessor::ConfigureQueries() EntityQuery.AddConstSharedRequirement(EMassFragmentPresence::All); EntityQuery.AddChunkRequirement(EMassFragmentAccess::ReadOnly); EntityQuery.SetChunkFilter(&FMassVisualizationChunkFragment::AreAnyEntitiesVisibleInChunk); + EntityQuery.RegisterWithProcessor(*this); } -void URTSAnimationProcessor::Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) +void URTSAnimationProcessor::Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) { - EntityQuery.ParallelForEachEntityChunk(EntitySubsystem, Context, [this](FMassExecutionContext& Context) + EntityQuery.ForEachEntityChunk(EntityManager, Context, [this](FMassExecutionContext& Context) { TConstArrayView MoveFragments = Context.GetFragmentView(); TConstArrayView VelocityFragments = Context.GetFragmentView(); @@ -243,9 +249,11 @@ void URTSAnimationProcessor::Execute(UMassEntitySubsystem& EntitySubsystem, FMas void URTSAnimationProcessor::UpdateISMVertexAnimation(FMassInstancedStaticMeshInfo& ISMInfo, FRTSAnimationFragment& AnimationData, const float LODSignificance, const float PrevLODSignificance, const int32 NumFloatsToPad /*= 0*/) { + /* FAnimToTextureInstancePlaybackData InstanceData; - UAnimToTextureInstancePlaybackLibrary::AnimStateFromDataAsset(AnimationData.AnimToTextureData.Get(), AnimationData.AnimationStateIndex, InstanceData.CurrentState); + UAnimToTextureInstancePlaybackLibrary::GetFrameDataFromDataAsset(AnimationData.AnimToTextureData.Get(), AnimationData.AnimationStateIndex, InstanceData.CurrentState); InstanceData.CurrentState.GlobalStartTime = AnimationData.GlobalStartTime; InstanceData.CurrentState.PlayRate = AnimationData.PlayRate; ISMInfo.AddBatchedCustomData(InstanceData, LODSignificance, PrevLODSignificance, NumFloatsToPad); + */ } diff --git a/Source/MassAITesting/Mass/RTSAgentTrait.h b/Source/MassAITesting/Mass/RTSAgentTrait.h index c46cebe6..dc401cd5 100644 --- a/Source/MassAITesting/Mass/RTSAgentTrait.h +++ b/Source/MassAITesting/Mass/RTSAgentTrait.h @@ -9,10 +9,9 @@ #include "MassRepresentationSubsystem.h" #include "MassSignalSubsystem.h" #include "SmartObjectSubsystem.h" -#include "../../../Plugins/AnimToTexture/Source/AnimToTexture/Public/AnimToTextureDataAsset.h" #include "RTSAgentTrait.generated.h" -class UMassEntitySubsystem; +class UAnimToTextureDataAsset; class URTSBuildingSubsystem; class USmartObjectSubsystem; @@ -55,7 +54,7 @@ class MASSAITESTING_API URTSGatherResourceProcessor : public UMassProcessor { GENERATED_BODY() public: - virtual void Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) override; + virtual void Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) override; virtual void ConfigureQueries() override; virtual void Initialize(UObject& Owner) override; @@ -137,7 +136,7 @@ class MASSAITESTING_API URTSAgentTrait : public UMassEntityTraitBase { GENERATED_BODY() - virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, UWorld& World) const override; + virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const override; UPROPERTY(EditAnywhere) FRTSAgentParameters AgentParameters; @@ -153,7 +152,7 @@ class MASSAITESTING_API URTSAgentInitializer : public UMassObserverProcessor URTSAgentInitializer(); - virtual void Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) override; + virtual void Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) override; virtual void ConfigureQueries() override; virtual void Initialize(UObject& Owner) override; @@ -175,7 +174,7 @@ class URTSAnimationProcessor : public UMassProcessor virtual void Initialize(UObject& Owner) override; virtual void ConfigureQueries() override; - virtual void Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) override; + virtual void Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) override; void UpdateISMVertexAnimation(FMassInstancedStaticMeshInfo& ISMInfo, FRTSAnimationFragment& AnimationData, float LODSignificance, float PrevLODSignificance, int32 NumFloatsToPad); diff --git a/Source/MassAITesting/Mass/RTSConstruction.cpp b/Source/MassAITesting/Mass/RTSConstruction.cpp index ad880c7b..f5b4a460 100644 --- a/Source/MassAITesting/Mass/RTSConstruction.cpp +++ b/Source/MassAITesting/Mass/RTSConstruction.cpp @@ -8,7 +8,7 @@ #include "Kismet/GameplayStatics.h" #include "MassAITesting/BuildingBase.h" #include "MassAITesting/BuildingManager.h" -#include "MassAITesting/MassAITestingGameMode.h" +#include "MassExecutionContext.h" //----------------------------------------------------------------------// // URTSConstructBuilding @@ -19,9 +19,9 @@ URTSConstructBuilding::URTSConstructBuilding() Operation = EMassObservedOperation::Add; } -void URTSConstructBuilding::Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) +void URTSConstructBuilding::Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) { - EntityQuery.ParallelForEachEntityChunk(EntitySubsystem, Context, [this](FMassExecutionContext& Context) + EntityQuery.ForEachEntityChunk(EntityManager, Context, [this](FMassExecutionContext& Context) { TArrayView RTSAgents = Context.GetMutableFragmentView(); TConstArrayView SOUsers = Context.GetFragmentView(); @@ -30,7 +30,7 @@ void URTSConstructBuilding::Execute(UMassEntitySubsystem& EntitySubsystem, FMass FRTSAgentFragment& RTSAgent = RTSAgents[EntityIndex]; const FMassSmartObjectUserFragment& SOUser = SOUsers[EntityIndex]; - if (const USmartObjectComponent* SmartObjectComponent = SmartObjectSubsystem->GetSmartObjectComponent(SOUser.ClaimHandle)) + if (const USmartObjectComponent* SmartObjectComponent = SmartObjectSubsystem->GetSmartObjectComponent(SOUser.InteractionHandle)) { ABuildingBase* Actor = SmartObjectComponent->GetOwner(); ABuildingManager* BuildingManager = Cast(UGameplayStatics::GetActorOfClass(GetWorld(), ABuildingManager::StaticClass())); @@ -66,6 +66,7 @@ void URTSConstructBuilding::ConfigureQueries() { EntityQuery.AddRequirement(EMassFragmentAccess::ReadWrite); EntityQuery.AddRequirement(EMassFragmentAccess::ReadOnly); + EntityQuery.RegisterWithProcessor(*this); } void URTSConstructBuilding::Initialize(UObject& Owner) diff --git a/Source/MassAITesting/Mass/RTSConstruction.h b/Source/MassAITesting/Mass/RTSConstruction.h index 4c5c0e34..1b456435 100644 --- a/Source/MassAITesting/Mass/RTSConstruction.h +++ b/Source/MassAITesting/Mass/RTSConstruction.h @@ -14,7 +14,7 @@ class MASSAITESTING_API URTSConstructBuilding : public UMassObserverProcessor URTSConstructBuilding(); - virtual void Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) override; + virtual void Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) override; virtual void ConfigureQueries() override; virtual void Initialize(UObject& Owner) override; diff --git a/Source/MassAITesting/Mass/RTSItemTrait.cpp b/Source/MassAITesting/Mass/RTSItemTrait.cpp index 9b762513..f93e254f 100644 --- a/Source/MassAITesting/Mass/RTSItemTrait.cpp +++ b/Source/MassAITesting/Mass/RTSItemTrait.cpp @@ -9,7 +9,7 @@ #include "Engine/World.h" #include "MassAITesting/RTSBuildingSubsystem.h" -void URTSItemTrait::BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, UWorld& World) const +void URTSItemTrait::BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const { BuildContext.AddFragment(); } @@ -19,9 +19,9 @@ UItemProcessor::UItemProcessor() } -void UItemProcessor::Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) +void UItemProcessor::Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) { - EntityQuery.ParallelForEachEntityChunk(EntitySubsystem, Context, [this](FMassExecutionContext& Context) + EntityQuery.ForEachEntityChunk(EntityManager, Context, [this](FMassExecutionContext& Context) { TConstArrayView Transforms = Context.GetFragmentView(); TArrayView ItemFragments = Context.GetMutableFragmentView(); @@ -38,7 +38,11 @@ void UItemProcessor::Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecuti const FMassRepresentationLODFragment& RepresentationLOD = RepresentationLODFragments[EntityIndex]; // Update Item Hash Grid with new position (Probably does not need to be done for an item...that should keep the same location) - //BuildingSubsystem->ItemHashGrid.UpdatePoint(Context.GetEntity(EntityIndex), Item.OldLocation, Location); + float Radius = 25.f; + const FBox OldBounds(Item.OldLocation - FVector(Radius, Radius, 0.f), Item.OldLocation + FVector(Radius, Radius, 0.f)); + const FBox NewBounds(Location - FVector(Radius, Radius, 0.f), Location + FVector(Radius, Radius, 0.f)); + + Item.CellLoc = BuildingSubsystem->ItemHashGrid.Move(Context.GetEntity(EntityIndex), OldBounds, NewBounds); Item.OldLocation = Location; //@todo move this to its own processor @@ -56,6 +60,7 @@ void UItemProcessor::ConfigureQueries() EntityQuery.AddRequirement(EMassFragmentAccess::ReadOnly); EntityQuery.AddChunkRequirement(EMassFragmentAccess::ReadOnly); EntityQuery.SetChunkFilter(&FMassVisualizationChunkFragment::AreAnyEntitiesVisibleInChunk); + EntityQuery.RegisterWithProcessor(*this); } void UItemProcessor::Initialize(UObject& Owner) @@ -75,8 +80,7 @@ void UItemInitializerProcessor::ConfigureQueries() { EntityQuery.AddRequirement(EMassFragmentAccess::ReadWrite); EntityQuery.AddRequirement(EMassFragmentAccess::ReadWrite); - EntityQuery.AddRequirement(EMassFragmentAccess::ReadWrite); - EntityQuery.AddRequirement(EMassFragmentAccess::ReadOnly); + EntityQuery.RegisterWithProcessor(*this); } void UItemInitializerProcessor::Initialize(UObject& Owner) @@ -85,21 +89,17 @@ void UItemInitializerProcessor::Initialize(UObject& Owner) RepresentationSubsystem = UWorld::GetSubsystem(Owner.GetWorld()); } -void UItemInitializerProcessor::Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) +void UItemInitializerProcessor::Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) { - EntityQuery.ForEachEntityChunk(EntitySubsystem, Context, [this](FMassExecutionContext& Context) + EntityQuery.ForEachEntityChunk(EntityManager, Context, [this](FMassExecutionContext& Context) { TArrayView Transforms = Context.GetMutableFragmentView(); TArrayView ItemFragments = Context.GetMutableFragmentView(); - TArrayView RepresentationFragments = Context.GetMutableFragmentView(); - TConstArrayView RepresentationLODFragments = Context.GetFragmentView(); FMassInstancedStaticMeshInfoArrayView MeshInfo = RepresentationSubsystem->GetMutableInstancedStaticMeshInfos(); for (int32 EntityIndex = 0; EntityIndex < Context.GetNumEntities(); ++EntityIndex) { - FMassRepresentationFragment& Representation = RepresentationFragments[EntityIndex]; - const FMassRepresentationLODFragment& RepresentationLOD = RepresentationLODFragments[EntityIndex]; FItemFragment& Item = ItemFragments[EntityIndex]; FTransform& Transform = Transforms[EntityIndex].GetMutableTransform(); diff --git a/Source/MassAITesting/Mass/RTSItemTrait.h b/Source/MassAITesting/Mass/RTSItemTrait.h index ecf50d81..7f99f6c3 100644 --- a/Source/MassAITesting/Mass/RTSItemTrait.h +++ b/Source/MassAITesting/Mass/RTSItemTrait.h @@ -19,7 +19,7 @@ class MASSAITESTING_API URTSItemTrait : public UMassEntityTraitBase { GENERATED_BODY() - virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, UWorld& World) const override; + virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const override; }; USTRUCT() @@ -53,7 +53,7 @@ class MASSAITESTING_API UItemInitializerProcessor : public UMassObserverProcesso UItemInitializerProcessor(); public: - virtual void Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) override; + virtual void Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) override; virtual void ConfigureQueries() override; virtual void Initialize(UObject& Owner) override; @@ -74,7 +74,7 @@ class MASSAITESTING_API UItemProcessor : public UMassProcessor UItemProcessor(); public: - virtual void Execute(UMassEntitySubsystem& EntitySubsystem, FMassExecutionContext& Context) override; + virtual void Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) override; virtual void ConfigureQueries() override; virtual void Initialize(UObject& Owner) override; diff --git a/Source/MassAITesting/RTSBuildingSubsystem.cpp b/Source/MassAITesting/RTSBuildingSubsystem.cpp index 71200b7b..714d737b 100644 --- a/Source/MassAITesting/RTSBuildingSubsystem.cpp +++ b/Source/MassAITesting/RTSBuildingSubsystem.cpp @@ -38,11 +38,18 @@ bool URTSBuildingSubsystem::FindItem(const FVector& Location, float Radius, ERes const FBox Bounds(Location - FVector(Radius, Radius, 0.f), Location + FVector(Radius, Radius, 0.f)); ItemHashGrid.Query(Bounds,Entities); + + Entities = Entities.FilterByPredicate([&EntitySubsystem](const FMassEntityHandle& A) + { + return EntitySubsystem->GetEntityManager().IsEntityValid(A); + }); + + // Sort potential entities by distance Entities.Sort([&EntitySubsystem, &Location](const FMassEntityHandle& A, const FMassEntityHandle& B) { - const FVector& LocA = EntitySubsystem->GetFragmentDataPtr(A)->GetTransform().GetLocation(); - const FVector& LocB = EntitySubsystem->GetFragmentDataPtr(B)->GetTransform().GetLocation(); + const FVector& LocA = EntitySubsystem->GetEntityManager().GetFragmentDataPtr(A)->GetTransform().GetLocation(); + const FVector& LocB = EntitySubsystem->GetEntityManager().GetFragmentDataPtr(B)->GetTransform().GetLocation(); return FVector::Dist(Location, LocA) < FVector::Dist(Location, LocB); }); @@ -50,12 +57,12 @@ bool URTSBuildingSubsystem::FindItem(const FVector& Location, float Radius, ERes // Perform filtering for(const FMassEntityHandle& Entity : Entities) { - if (const FItemFragment* Item = EntitySubsystem->GetFragmentDataPtr(Entity)) + if (const FItemFragment* Item = EntitySubsystem->GetEntityManager().GetFragmentDataPtr(Entity)) { if (Item->ItemType == ResourceType && !Item->bClaimed) { OutItemHandle = Entity; - return EntitySubsystem->IsEntityValid(Entity); + return EntitySubsystem->GetEntityManager().IsEntityValid(Entity); } } } @@ -95,7 +102,7 @@ void URTSBuildingSubsystem::SelectClosestAgent(const FVector& Location) UMassEntitySubsystem* EntitySubsystem = GetWorld()->GetSubsystem(); for(const FMassEntityHandle& Entity : RTSAgents) { - const FVector& EntityLocation = EntitySubsystem->GetFragmentDataPtr(Entity)->GetTransform().GetLocation(); + const FVector& EntityLocation = EntitySubsystem->GetEntityManager().GetFragmentDataPtr(Entity)->GetTransform().GetLocation(); float Distance = FVector::Dist(EntityLocation, Location); if (ClosestDistance == -1 || Distance < ClosestDistance) { @@ -110,7 +117,7 @@ void URTSBuildingSubsystem::GetAgentLocation(FVector& OutLocation) UMassEntitySubsystem* EntitySubsystem = GetWorld()->GetSubsystem(); if (EntitySubsystem && RTSAgent.IsValid()) { - OutLocation = EntitySubsystem->GetFragmentDataPtr(RTSAgent)->GetTransform().GetLocation(); + OutLocation = EntitySubsystem->GetEntityManager().GetFragmentDataPtr(RTSAgent)->GetTransform().GetLocation(); } } @@ -119,6 +126,6 @@ void URTSBuildingSubsystem::GetAgentInformation(FRTSAgentFragment& OutAgentInfo) UMassEntitySubsystem* EntitySubsystem = GetWorld()->GetSubsystem(); if (EntitySubsystem && RTSAgent.IsValid()) { - OutAgentInfo = *EntitySubsystem->GetFragmentDataPtr(RTSAgent); + OutAgentInfo = *EntitySubsystem->GetEntityManager().GetFragmentDataPtr(RTSAgent); } } diff --git a/Source/MassAITesting/SmartObject/ConstructLevelBehaviorDefinition.cpp b/Source/MassAITesting/SmartObject/ConstructLevelBehaviorDefinition.cpp index c50a808a..c4cd9a98 100644 --- a/Source/MassAITesting/SmartObject/ConstructLevelBehaviorDefinition.cpp +++ b/Source/MassAITesting/SmartObject/ConstructLevelBehaviorDefinition.cpp @@ -13,7 +13,7 @@ void UConstructLevelBehaviorDefinition::Activate(FMassCommandBuffer& CommandBuff Super::Activate(CommandBuffer, EntityContext); FMassSmartObjectUserFragment& SOUser = EntityContext.EntityView.GetFragmentData(); - CommandBuffer.PushCommand(FCommandAddTag(EntityContext.EntityView.GetEntity(), FRTSConstructFloor::StaticStruct())); + CommandBuffer.PushCommand>(EntityContext.EntityView.GetEntity()); } void UConstructLevelBehaviorDefinition::Deactivate(FMassCommandBuffer& CommandBuffer, diff --git a/Source/MassAITesting/SmartObject/GatherResourceBehaviorDefinition.cpp b/Source/MassAITesting/SmartObject/GatherResourceBehaviorDefinition.cpp index 1e88c230..a004f912 100644 --- a/Source/MassAITesting/SmartObject/GatherResourceBehaviorDefinition.cpp +++ b/Source/MassAITesting/SmartObject/GatherResourceBehaviorDefinition.cpp @@ -6,6 +6,7 @@ #include "MassCommandBuffer.h" #include "MassCommonFragments.h" #include "MassEntityConfigAsset.h" +#include "MassEntitySubsystem.h" #include "MassSmartObjectFragments.h" #include "MassSpawnerSubsystem.h" #include "SmartObjectComponent.h" @@ -18,18 +19,16 @@ void UGatherResourceBehaviorDefinition::Activate(FMassCommandBuffer& CommandBuff Super::Activate(CommandBuffer, EntityContext); // Spawn resource fragment with set values - /* FRTSGatherResourceFragment RTSResourceFragment; RTSResourceFragment.Resource = ResourceType; RTSResourceFragment.Amount = ResourceAmount; - CommandBuffer.PushCommand(FCommandAddFragmentInstance(EntityContext.EntityView.GetEntity(), FConstStructView::Make(RTSResourceFragment))); - */ + CommandBuffer.PushCommand(EntityContext.EntityView.GetEntity(), RTSResourceFragment); FRTSAgentFragment& Agent = EntityContext.EntityView.GetFragmentData(); Agent.bPunching = true; // Invalidate resource handle when complete - Agent.ResourceHandle.Reset(); + Agent.ResourceHandle.Invalidate(); // Traditional way to spawn a default fragment //CommandBuffer.AddFragment(EntityContext.EntityView.GetEntity()); @@ -50,8 +49,8 @@ void UGatherResourceBehaviorDefinition::Deactivate(FMassCommandBuffer& CommandBu // Spawn items on the ground // @todo clean up this mess lol TArray Items; - const FMassEntityTemplate* EntityTemplate = ItemConfig->GetConfig().GetOrCreateEntityTemplate(*UGameplayStatics::GetPlayerPawn(EntityContext.SmartObjectSubsystem.GetWorld(), 0), *ItemConfig); - SpawnerSubsystem->SpawnEntities(*EntityTemplate, 4, Items); + const FMassEntityTemplate EntityTemplate = ItemConfig->GetConfig().GetOrCreateEntityTemplate(*EntityContext.SmartObjectSubsystem.GetWorld()); + SpawnerSubsystem->SpawnEntities(EntityTemplate, 4, Items); for(const FMassEntityHandle& ItemHandle : Items) { @@ -60,19 +59,19 @@ void UGatherResourceBehaviorDefinition::Deactivate(FMassCommandBuffer& CommandBu FItemFragment ItemFragment; ItemFragment.ItemType = ResourceType; ItemFragment.OldLocation = SpawnLocation; - CommandBuffer.PushCommand(FCommandAddFragmentInstance(ItemHandle, FConstStructView::Make(ItemFragment))); + CommandBuffer.PushCommand(ItemHandle, ItemFragment); } FRTSAgentFragment& Agent = EntityContext.EntityView.GetFragmentData(); Agent.bPunching = false; const FMassSmartObjectUserFragment& SOUser = EntityContext.EntityView.GetFragmentData(); - if (USmartObjectComponent* SOComp = EntityContext.SmartObjectSubsystem.GetSmartObjectComponent(SOUser.ClaimHandle)) + if (USmartObjectComponent* SOComp = EntityContext.SmartObjectSubsystem.GetSmartObjectComponent(SOUser.InteractionHandle)) { - CommandBuffer.PushCommand(FDeferredCommand([SOComp, EntityContext](UMassEntitySubsystem& System) + CommandBuffer.PushCommand([SOComp, EntityContext](FMassEntityManager& System) { SOComp->GetOwner()->Destroy(); - })); + }); } } } diff --git a/Source/MassAITesting/StateTree/Evaluators/MassStateTreeRequiredMaterialsEvaluator.cpp b/Source/MassAITesting/StateTree/Evaluators/MassStateTreeRequiredMaterialsEvaluator.cpp index 9d5bf5bc..71ce4c14 100644 --- a/Source/MassAITesting/StateTree/Evaluators/MassStateTreeRequiredMaterialsEvaluator.cpp +++ b/Source/MassAITesting/StateTree/Evaluators/MassStateTreeRequiredMaterialsEvaluator.cpp @@ -3,32 +3,39 @@ #include "MassStateTreeRequiredMaterialsEvaluator.h" +#include "MassEntitySubsystem.h" #include "MassSmartObjectBehaviorDefinition.h" +#include "MassStateTreeExecutionContext.h" #include "SmartObjectSubsystem.h" #include "StateTreeExecutionContext.h" +#include "StateTreeLinker.h" #include "MassAITesting/RTSBuildingSubsystem.h" #include "MassAITesting/Mass/RTSItemTrait.h" -void FMassStateTreeRequiredMaterialsEvaluator::Evaluate(FStateTreeExecutionContext& Context, - const EStateTreeEvaluationType EvalType, const float DeltaTime) const +void FMassStateTreeRequiredMaterialsEvaluator::TreeStart(FStateTreeExecutionContext& Context) const +{ + // Signal task tick + const FMassStateTreeExecutionContext& MassContext = static_cast(Context); + //auto& MassSignalSubsystem = Context.GetExternalData(MassSignalSubsystemHandle); + //MassSignalSubsystem.DelaySignalEntity(UE::Mass::Signals::StateTreeActivate, MassContext.GetEntity(), 1.f); +} + +void FMassStateTreeRequiredMaterialsEvaluator::Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const { TRACE_CPUPROFILER_EVENT_SCOPE(TEXT("RequiredMaterialsEvaluator")); - // Since this eval does stuff thats not just...evaluating we need to make sure that it only gets called in the PreSelect - // to avoid unintended results. - // @todo move task-related logic to their own state tree tasks - if (EvalType == EStateTreeEvaluationType::Tick) - return; + + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); FRTSAgentFragment& RTSAgent = Context.GetExternalData(RTSAgentHandle); UMassEntitySubsystem& EntitySubsystem = Context.GetExternalData(EntitySubsystemHandle); URTSBuildingSubsystem& BuildingSubsystem = Context.GetExternalData(BuildingSubsystemHandle); const FVector& Location = Context.GetExternalData(TransformHandle).GetTransform().GetLocation(); - FSmartObjectRequestFilter& Filter = Context.GetInstanceData(FilterHandle); - bool& bFoundSmartObject = Context.GetInstanceData(FoundSmartObjectHandle); - bool& bFoundItemHandle = Context.GetInstanceData(FoundItemHandle); - FSmartObjectHandle& SOHandle = Context.GetInstanceData(SmartObjectHandle); - FMassEntityHandle& EntityHandle = Context.GetInstanceData(ItemHandle); + FSmartObjectRequestFilter& Filter = InstanceData.Filter; + bool& bFoundSmartObject = InstanceData.bFoundSmartObject; + bool& bFoundItemHandle = InstanceData.bFoundItemHandle; + FSmartObjectHandle& SOHandle = InstanceData.SmartObjectHandle; + FMassEntityHandle& EntityHandle = InstanceData.ItemHandle; bFoundSmartObject = false; bFoundItemHandle = false; @@ -45,13 +52,13 @@ void FMassStateTreeRequiredMaterialsEvaluator::Evaluate(FStateTreeExecutionConte // - AgentState: Chopping Resources/Gathering Item/Building Floor // We are currently gathering resources - if (!EntitySubsystem.IsEntityValid(EntityHandle) && RTSAgent.QueuedItems.Num() > 0) + if (!EntitySubsystem.GetEntityManager().IsEntityValid(EntityHandle) && RTSAgent.QueuedItems.Num() > 0) { EntityHandle = RTSAgent.QueuedItems.Pop(); - if (EntitySubsystem.IsEntityValid(EntityHandle)) + if (EntitySubsystem.GetEntityManager().IsEntityValid(EntityHandle)) { bFoundItemHandle = true; - FItemFragment* ItemFragment = EntitySubsystem.GetFragmentDataPtr(EntityHandle); + FItemFragment* ItemFragment = EntitySubsystem.GetEntityManager().GetFragmentDataPtr(EntityHandle); if (ItemFragment) { ItemFragment->bClaimed = true; @@ -85,7 +92,7 @@ void FMassStateTreeRequiredMaterialsEvaluator::Evaluate(FStateTreeExecutionConte // We need to claim both because then its possible that another agent also 'wants' the item on the ground for(const FMassEntityHandle& Item : ItemHandles) { - if (FItemFragment* ItemFragment = EntitySubsystem.GetFragmentDataPtr(Item)) + if (FItemFragment* ItemFragment = EntitySubsystem.GetEntityManager().GetFragmentDataPtr(Item)) { ItemFragment->bClaimed = true; } @@ -125,12 +132,7 @@ bool FMassStateTreeRequiredMaterialsEvaluator::Link(FStateTreeLinker& Linker) Linker.LinkExternalData(TransformHandle); Linker.LinkExternalData(EntitySubsystemHandle); Linker.LinkExternalData(BuildingSubsystemHandle); - - Linker.LinkInstanceDataProperty(FoundSmartObjectHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeRequiredMaterialsEvaluatorInstanceData, bFoundSmartObject)); - Linker.LinkInstanceDataProperty(FilterHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeRequiredMaterialsEvaluatorInstanceData, Filter)); - Linker.LinkInstanceDataProperty(FoundItemHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeRequiredMaterialsEvaluatorInstanceData, bFoundItemHandle)); - Linker.LinkInstanceDataProperty(SmartObjectHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeRequiredMaterialsEvaluatorInstanceData, SmartObjectHandle)); - Linker.LinkInstanceDataProperty(ItemHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeRequiredMaterialsEvaluatorInstanceData, ItemHandle)); + Linker.LinkExternalData(MassSignalSubsystemHandle); return true; } diff --git a/Source/MassAITesting/StateTree/Evaluators/MassStateTreeRequiredMaterialsEvaluator.h b/Source/MassAITesting/StateTree/Evaluators/MassStateTreeRequiredMaterialsEvaluator.h index a6ae04ff..e225a729 100644 --- a/Source/MassAITesting/StateTree/Evaluators/MassStateTreeRequiredMaterialsEvaluator.h +++ b/Source/MassAITesting/StateTree/Evaluators/MassStateTreeRequiredMaterialsEvaluator.h @@ -7,6 +7,8 @@ #include "SmartObjectSubsystem.h" #include "MassStateTreeRequiredMaterialsEvaluator.generated.h" +class UMassSignalSubsystem; +class UMassEntitySubsystem; class URTSBuildingSubsystem; struct FRTSAgentFragment; USTRUCT() @@ -38,7 +40,10 @@ struct MASSAITESTING_API FMassStateTreeRequiredMaterialsEvaluator : public FMass { GENERATED_BODY() - virtual void Evaluate(FStateTreeExecutionContext& Context, const EStateTreeEvaluationType EvalType, const float DeltaTime) const override; + using FInstanceDataType = FMassStateTreeRequiredMaterialsEvaluatorInstanceData; + + virtual void TreeStart(FStateTreeExecutionContext& Context) const override; + virtual void Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const override; virtual bool Link(FStateTreeLinker& Linker) override; virtual const UStruct* GetInstanceDataType() const override { return FMassStateTreeRequiredMaterialsEvaluatorInstanceData::StaticStruct(); } @@ -47,10 +52,5 @@ struct MASSAITESTING_API FMassStateTreeRequiredMaterialsEvaluator : public FMass TStateTreeExternalDataHandle EntitySubsystemHandle; TStateTreeExternalDataHandle TransformHandle; TStateTreeExternalDataHandle BuildingSubsystemHandle; - - TStateTreeInstanceDataPropertyHandle FoundSmartObjectHandle; - TStateTreeInstanceDataPropertyHandle FilterHandle; - TStateTreeInstanceDataPropertyHandle FoundItemHandle; - TStateTreeInstanceDataPropertyHandle SmartObjectHandle; - TStateTreeInstanceDataPropertyHandle ItemHandle; + TStateTreeExternalDataHandle MassSignalSubsystemHandle; }; diff --git a/Source/MassAITesting/StateTree/Evaluators/MassStateTreeSmartObjectEvaluatorPlus.cpp b/Source/MassAITesting/StateTree/Evaluators/MassStateTreeSmartObjectEvaluatorPlus.cpp index c58db42e..a6037f56 100644 --- a/Source/MassAITesting/StateTree/Evaluators/MassStateTreeSmartObjectEvaluatorPlus.cpp +++ b/Source/MassAITesting/StateTree/Evaluators/MassStateTreeSmartObjectEvaluatorPlus.cpp @@ -7,6 +7,7 @@ #include "MassCommonFragments.h" #include "MassSmartObjectFragments.h" #include "StateTreeExecutionContext.h" +#include "StateTreeLinker.h" #include "MassAITesting/Mass/RTSAgentTrait.h" bool FMassStateTreeSmartObjectEvaluatorPlus::Link(FStateTreeLinker& Linker) @@ -17,51 +18,41 @@ bool FMassStateTreeSmartObjectEvaluatorPlus::Link(FStateTreeLinker& Linker) Linker.LinkExternalData(SmartObjectUserHandle); Linker.LinkExternalData(RTSAgentHandle); - Linker.LinkInstanceDataProperty(SmartObjectHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeSmartObjectEvaluatorPlusInstanceData, SOHandle)); - Linker.LinkInstanceDataProperty(CandidatesFoundHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeSmartObjectEvaluatorPlusInstanceData, bCandidatesFound)); - Linker.LinkInstanceDataProperty(RangeHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeSmartObjectEvaluatorPlusInstanceData, Range)); - Linker.LinkInstanceDataProperty(SmartObjectHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeSmartObjectEvaluatorPlusInstanceData, SOHandle)); - return true; } -void FMassStateTreeSmartObjectEvaluatorPlus::ExitState(FStateTreeExecutionContext& Context, - const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const +void FMassStateTreeSmartObjectEvaluatorPlus::TreeStop(FStateTreeExecutionContext& Context) const { - if (ChangeType != EStateTreeStateChangeType::Changed) - { - return; - } - Reset(Context); } -void FMassStateTreeSmartObjectEvaluatorPlus::Evaluate(FStateTreeExecutionContext& Context, - const EStateTreeEvaluationType EvalType, const float DeltaTime) const +void FMassStateTreeSmartObjectEvaluatorPlus::Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const { + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + USmartObjectSubsystem& SmartObjectSubsystem = Context.GetExternalData(SmartObjectSubsystemHandle); FTransformFragment& TransformFragment = Context.GetExternalData(EntityTransformHandle); UMassSignalSubsystem& SignalSubsystem = Context.GetExternalData(MassSignalSubsystemHandle); FMassSmartObjectUserFragment& SOUser = Context.GetExternalData(SmartObjectUserHandle); FRTSAgentFragment& RTSAgent = Context.GetExternalData(RTSAgentHandle); - FMassSmartObjectRequestResult& RequestResult = Context.GetInstanceData(SearchRequestResultHandle); - FSmartObjectRequestFilter& Filter = Context.GetInstanceData(FilterHandle); - FSmartObjectHandle& SOHandle = Context.GetInstanceData(SmartObjectHandle); - bool& CandidatesFound = Context.GetInstanceData(CandidatesFoundHandle); - float& Range = Context.GetInstanceData(RangeHandle); + FMassSmartObjectRequestResultFragment& RequestResult = InstanceData.SearchRequestResult; + FSmartObjectRequestFilter& Filter = InstanceData.Filter; + FSmartObjectHandle& SOHandle = InstanceData.SOHandle; + bool& CandidatesFound = InstanceData.bCandidatesFound; + float& Range = InstanceData.Range; const FTransform& Transform = TransformFragment.GetTransform(); - bool bClaimed = SOUser.ClaimHandle.IsValid(); + bool bClaimed = SOUser.InteractionHandle.IsValid(); // We are returning to our claimed floor home, we dont need to perform any searching. FGameplayTagQueryExpression Expression; Filter.ActivityRequirements.GetQueryExpr(Expression); if (RTSAgent.BuildingHandle.IsValid() && Expression.TagSet.Contains(FGameplayTag::RequestGameplayTag(TEXT("Object.Home")))) { - RequestResult.Candidates[0] = FSmartObjectCandidate(RTSAgent.BuildingHandle, 0); - RequestResult.NumCandidates++; + //RequestResult.Candidates[0] = FSmartObjectCandidate(RTSAgent.BuildingHandle, 0); + //RequestResult.NumCandidates++; RequestResult.bProcessed = true; CandidatesFound = true; @@ -80,8 +71,8 @@ void FMassStateTreeSmartObjectEvaluatorPlus::Evaluate(FStateTreeExecutionContext FSmartObjectRequestResult Result = SmartObjectSubsystem.FindSmartObject(Request); if (Result.IsValid()) { - RequestResult.Candidates[0] = FSmartObjectCandidate(Result.SmartObjectHandle, 0); - RequestResult.NumCandidates++; + //RequestResult.Candidates[0] = FSmartObjectCandidate(Result.SmartObjectHandle, 0); + //RequestResult.NumCandidates++; RequestResult.bProcessed = true; CandidatesFound = true; } @@ -89,9 +80,10 @@ void FMassStateTreeSmartObjectEvaluatorPlus::Evaluate(FStateTreeExecutionContext void FMassStateTreeSmartObjectEvaluatorPlus::Reset(FStateTreeExecutionContext& Context) const { - bool& bCandidatesFound = Context.GetInstanceData(CandidatesFoundHandle); - FMassSmartObjectRequestResult& RequestResult = Context.GetInstanceData(SearchRequestResultHandle); + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + bool& bCandidatesFound = InstanceData.bCandidatesFound; + FMassSmartObjectRequestResultFragment& RequestResult = InstanceData.SearchRequestResult; bCandidatesFound = false; RequestResult.bProcessed = false; - RequestResult.NumCandidates = 0; + //RequestResult.NumCandidates = 0; } diff --git a/Source/MassAITesting/StateTree/Evaluators/MassStateTreeSmartObjectEvaluatorPlus.h b/Source/MassAITesting/StateTree/Evaluators/MassStateTreeSmartObjectEvaluatorPlus.h index d229de6a..10c1f55c 100644 --- a/Source/MassAITesting/StateTree/Evaluators/MassStateTreeSmartObjectEvaluatorPlus.h +++ b/Source/MassAITesting/StateTree/Evaluators/MassStateTreeSmartObjectEvaluatorPlus.h @@ -19,7 +19,7 @@ struct MASSAITESTING_API FMassStateTreeSmartObjectEvaluatorPlusInstanceData /** The identifier of the search request send by the evaluator to find candidates */ UPROPERTY(EditAnywhere, Category = Output) - FMassSmartObjectRequestResult SearchRequestResult; + FMassSmartObjectRequestResultFragment SearchRequestResult; /** Indicates that the result of the candidates search is ready and contains some candidates */ UPROPERTY(EditAnywhere, Category = Output) @@ -43,21 +43,18 @@ struct MASSAITESTING_API FMassStateTreeSmartObjectEvaluatorPlus : public FMassSt { GENERATED_BODY() + using FInstanceDataType = FMassStateTreeSmartObjectEvaluatorPlusInstanceData; + virtual bool Link(FStateTreeLinker& Linker) override; virtual const UStruct* GetInstanceDataType() const override { return FMassStateTreeSmartObjectEvaluatorPlusInstanceData::StaticStruct(); } - virtual void ExitState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const override; - virtual void Evaluate(FStateTreeExecutionContext& Context, const EStateTreeEvaluationType EvalType, const float DeltaTime) const override; + virtual void TreeStop(FStateTreeExecutionContext& Context) const override; + //virtual void Evaluate(FStateTreeExecutionContext& Context, const EStateTreeEvaluationType EvalType, const float DeltaTime) const override; + virtual void Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const override; void Reset(FStateTreeExecutionContext& Context) const; - - TStateTreeInstanceDataPropertyHandle SearchRequestResultHandle; - TStateTreeInstanceDataPropertyHandle CandidatesFoundHandle; - TStateTreeInstanceDataPropertyHandle FilterHandle; - TStateTreeInstanceDataPropertyHandle RangeHandle; TStateTreeExternalDataHandle SmartObjectSubsystemHandle; TStateTreeExternalDataHandle MassSignalSubsystemHandle; TStateTreeExternalDataHandle EntityTransformHandle; TStateTreeExternalDataHandle SmartObjectUserHandle; TStateTreeExternalDataHandle RTSAgentHandle; - TStateTreeInstanceDataPropertyHandle SmartObjectHandle; }; diff --git a/Source/MassAITesting/StateTree/Tasks/MassMoveTask.cpp b/Source/MassAITesting/StateTree/Tasks/MassMoveTask.cpp index e282a274..0d7b6c59 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassMoveTask.cpp +++ b/Source/MassAITesting/StateTree/Tasks/MassMoveTask.cpp @@ -10,7 +10,7 @@ bool FMassMoveTask::Link(FStateTreeLinker& Linker) //Linker.LinkExternalData(MassSignalSubsystemHandle); //Linker.LinkExternalData(PathHandle); - Linker.LinkInstanceDataProperty(DurationHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassMoveTaskInstanceData, Duration)); + //Linker.LinkInstanceDataProperty(DurationHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassMoveTaskInstanceData, Duration)); //Linker.LinkInstanceDataProperty(TargetEntityHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassLookAtTaskInstanceData, TargetEntity)); //Linker.LinkInstanceDataProperty(TimeHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassLookAtTaskInstanceData, Time)); @@ -23,8 +23,9 @@ EStateTreeRunStatus FMassMoveTask::Tick(FStateTreeExecutionContext& Context, con } -EStateTreeRunStatus FMassMoveTask::EnterState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const +EStateTreeRunStatus FMassMoveTask::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const { - const float Duration = Context.GetInstanceData(DurationHandle); + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + const float Duration = InstanceData.Duration; return EStateTreeRunStatus::Failed; } diff --git a/Source/MassAITesting/StateTree/Tasks/MassMoveTask.h b/Source/MassAITesting/StateTree/Tasks/MassMoveTask.h index 668c4e8b..f1f1265d 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassMoveTask.h +++ b/Source/MassAITesting/StateTree/Tasks/MassMoveTask.h @@ -39,14 +39,16 @@ struct MASSAITESTING_API FMassMoveTask : public FMassStateTreeTaskBase { GENERATED_BODY() + using FInstanceDataType = FMassMoveTaskInstanceData; + virtual bool Link(FStateTreeLinker& Linker) override; virtual const UStruct* GetInstanceDataType() const override { return FMassMoveTaskInstanceData::StaticStruct(); } - virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const override; + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; //virtual void ExitState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const {} //virtual void StateCompleted(FStateTreeExecutionContext& Context, const EStateTreeRunStatus CompletionStatus, const FStateTreeHandle CompletedState) const {} virtual EStateTreeRunStatus Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const override; protected: - TStateTreeInstanceDataPropertyHandle DurationHandle; + //TStateTreeInstanceDataPropertyHandle DurationHandle; TStateTreeExternalDataHandle PathHandle; }; diff --git a/Source/MassAITesting/StateTree/Tasks/MassPlayAnimationTask.cpp b/Source/MassAITesting/StateTree/Tasks/MassPlayAnimationTask.cpp index 744b854e..8544248a 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassPlayAnimationTask.cpp +++ b/Source/MassAITesting/StateTree/Tasks/MassPlayAnimationTask.cpp @@ -5,36 +5,38 @@ #include "MassSignalSubsystem.h" #include "MassStateTreeExecutionContext.h" +#include "StateTreeLinker.h" bool FMassPlayAnimationTask::Link(FStateTreeLinker& Linker) { Linker.LinkExternalData(MoveTargetHandle); Linker.LinkExternalData(MassSignalSubsystemHandle); Linker.LinkExternalData(AnimationHandle); - Linker.LinkInstanceDataProperty(DurationHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassPlayAnimationTaskInstanceData, Duration)); - Linker.LinkInstanceDataProperty(TimeHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassPlayAnimationTaskInstanceData, Time)); - Linker.LinkInstanceDataProperty(AnimationIndexHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassPlayAnimationTaskInstanceData, AnimationIndex)); + //Linker.LinkInstanceDataProperty(DurationHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassPlayAnimationTaskInstanceData, Duration)); + //Linker.LinkInstanceDataProperty(TimeHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassPlayAnimationTaskInstanceData, Time)); + //Linker.LinkInstanceDataProperty(AnimationIndexHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassPlayAnimationTaskInstanceData, AnimationIndex)); return true; } -EStateTreeRunStatus FMassPlayAnimationTask::EnterState(FStateTreeExecutionContext& Context, - const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const +EStateTreeRunStatus FMassPlayAnimationTask::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const { // Update MoveTarget location const FMassStateTreeExecutionContext& MassContext = static_cast(Context); FMassMoveTargetFragment& MoveTarget = Context.GetExternalData(MoveTargetHandle); FRTSAnimationFragment& AnimationFragment = Context.GetExternalData(AnimationHandle); - float& Time = Context.GetInstanceData(TimeHandle); + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + float& Time = InstanceData.Time; Time = 0; AnimationFragment.bCustomAnimation = true; AnimationFragment.AnimPosition = 0; - AnimationFragment.AnimationStateIndex = Context.GetInstanceData(AnimationIndexHandle); + AnimationFragment.AnimationStateIndex = InstanceData.AnimationIndex; MoveTarget.CreateNewAction(EMassMovementAction::Animate, *Context.GetWorld()); - const float Duration = Context.GetInstanceData(DurationHandle); + const float Duration = InstanceData.Duration; if (Duration > 0.0f) { UMassSignalSubsystem& MassSignalSubsystem = MassContext.GetExternalData(MassSignalSubsystemHandle); @@ -51,8 +53,10 @@ EStateTreeRunStatus FMassPlayAnimationTask::Tick(FStateTreeExecutionContext& Con const FMassMoveTargetFragment& MoveTarget = Context.GetExternalData(MoveTargetHandle); FRTSAnimationFragment& AnimationFragment = Context.GetExternalData(AnimationHandle); - float& Time = Context.GetInstanceData(TimeHandle); - const float Duration = Context.GetInstanceData(DurationHandle); + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + float& Time = InstanceData.Time; + const float Duration = InstanceData.Duration; Time += DeltaTime; diff --git a/Source/MassAITesting/StateTree/Tasks/MassPlayAnimationTask.h b/Source/MassAITesting/StateTree/Tasks/MassPlayAnimationTask.h index 3f39db8c..3c66afa3 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassPlayAnimationTask.h +++ b/Source/MassAITesting/StateTree/Tasks/MassPlayAnimationTask.h @@ -36,11 +36,13 @@ USTRUCT() struct MASSAITESTING_API FMassPlayAnimationTask : public FMassStateTreeTaskBase { GENERATED_BODY() + + using FInstanceDataType = FMassPlayAnimationTaskInstanceData; virtual bool Link(FStateTreeLinker& Linker) override; virtual const UStruct* GetInstanceDataType() const override { return FMassPlayAnimationTaskInstanceData::StaticStruct(); } - virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const override; + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; //virtual void ExitState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const override; //virtual void StateCompleted(FStateTreeExecutionContext& Context, const EStateTreeRunStatus CompletionStatus, const FStateTreeHandle CompletedState) const {} virtual EStateTreeRunStatus Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const override; @@ -50,7 +52,7 @@ struct MASSAITESTING_API FMassPlayAnimationTask : public FMassStateTreeTaskBase TStateTreeExternalDataHandle MassSignalSubsystemHandle; TStateTreeExternalDataHandle AnimationHandle; - TStateTreeInstanceDataPropertyHandle TimeHandle; - TStateTreeInstanceDataPropertyHandle DurationHandle; - TStateTreeInstanceDataPropertyHandle AnimationIndexHandle; + //TStateTreeInstanceDataPropertyHandle TimeHandle; + //TStateTreeInstanceDataPropertyHandle DurationHandle; + //TStateTreeInstanceDataPropertyHandle AnimationIndexHandle; }; diff --git a/Source/MassAITesting/StateTree/Tasks/MassSetSmartObjectMoveTargetTask.cpp b/Source/MassAITesting/StateTree/Tasks/MassSetSmartObjectMoveTargetTask.cpp index baf8506e..6f541df4 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassSetSmartObjectMoveTargetTask.cpp +++ b/Source/MassAITesting/StateTree/Tasks/MassSetSmartObjectMoveTargetTask.cpp @@ -7,6 +7,7 @@ #include "MassSignalSubsystem.h" #include "MassSmartObjectFragments.h" #include "MassStateTreeExecutionContext.h" +#include "StateTreeLinker.h" bool FMassSetSmartObjectMoveTargetTask::Link(FStateTreeLinker& Linker) { @@ -15,25 +16,23 @@ bool FMassSetSmartObjectMoveTargetTask::Link(FStateTreeLinker& Linker) Linker.LinkExternalData(SOUserHandle); Linker.LinkExternalData(MassSignalSubsystemHandle); Linker.LinkExternalData(MoveParametersHandle); + Linker.LinkExternalData(SmartObjectSubsystemHandle); return true; } -EStateTreeRunStatus FMassSetSmartObjectMoveTargetTask::EnterState(FStateTreeExecutionContext& Context, - const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const +EStateTreeRunStatus FMassSetSmartObjectMoveTargetTask::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const { // Update MoveTarget location //const FMassStateTreeExecutionContext& MassContext = static_cast(Context); FMassMoveTargetFragment& MoveTarget = Context.GetExternalData(MoveTargetHandle); const FMassSmartObjectUserFragment& SOUserFragment = Context.GetExternalData(SOUserHandle); const FMassMovementParameters& MoveParameters = Context.GetExternalData(MoveParametersHandle); - - if (!SOUserFragment.ClaimHandle.IsValid()) - return EStateTreeRunStatus::Failed; - + auto& SmartObjectSubsystem = Context.GetExternalData(SmartObjectSubsystemHandle); + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); - MoveTarget.Center = SOUserFragment.TargetLocation; - MoveTarget.Forward = SOUserFragment.TargetDirection; + MoveTarget.Center = SmartObjectSubsystem.GetSlotLocation(InstanceData.ClaimHandle).Get(FVector::ZeroVector); + //MoveTarget.Forward = SOUserFragment.InteractionHandle; MoveTarget.SlackRadius = 100.f; MoveTarget.DesiredSpeed.Set(MoveParameters.DefaultDesiredSpeed); MoveTarget.CreateNewAction(EMassMovementAction::Move, *Context.GetWorld()); diff --git a/Source/MassAITesting/StateTree/Tasks/MassSetSmartObjectMoveTargetTask.h b/Source/MassAITesting/StateTree/Tasks/MassSetSmartObjectMoveTargetTask.h index d519d88b..0d10c8ce 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassSetSmartObjectMoveTargetTask.h +++ b/Source/MassAITesting/StateTree/Tasks/MassSetSmartObjectMoveTargetTask.h @@ -17,6 +17,9 @@ USTRUCT() struct MASSAITESTING_API FMassSetSmartObjectMoveTargetInstanceData { GENERATED_BODY() + + UPROPERTY(EditAnywhere, Category=Input) + FSmartObjectClaimHandle ClaimHandle; }; /** @@ -26,11 +29,13 @@ USTRUCT() struct MASSAITESTING_API FMassSetSmartObjectMoveTargetTask : public FMassStateTreeTaskBase { GENERATED_BODY() + + using FInstanceDataType = FMassSetSmartObjectMoveTargetInstanceData; virtual bool Link(FStateTreeLinker& Linker) override; virtual const UStruct* GetInstanceDataType() const override { return FMassSetSmartObjectMoveTargetInstanceData::StaticStruct(); } - virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const override; + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; //virtual void ExitState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const override; //virtual void StateCompleted(FStateTreeExecutionContext& Context, const EStateTreeRunStatus CompletionStatus, const FStateTreeHandle CompletedState) const {} virtual EStateTreeRunStatus Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const override; @@ -41,4 +46,5 @@ struct MASSAITESTING_API FMassSetSmartObjectMoveTargetTask : public FMassStateTr TStateTreeExternalDataHandle SOUserHandle; TStateTreeExternalDataHandle MassSignalSubsystemHandle; TStateTreeExternalDataHandle MoveParametersHandle; + TStateTreeExternalDataHandle SmartObjectSubsystemHandle; }; diff --git a/Source/MassAITesting/StateTree/Tasks/MassStateTreeClaimSmartObjectTaskPlus.cpp b/Source/MassAITesting/StateTree/Tasks/MassStateTreeClaimSmartObjectTaskPlus.cpp index 4e85f6e8..82537b63 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassStateTreeClaimSmartObjectTaskPlus.cpp +++ b/Source/MassAITesting/StateTree/Tasks/MassStateTreeClaimSmartObjectTaskPlus.cpp @@ -7,23 +7,22 @@ #include "MassSmartObjectFragments.h" #include "SmartObjectSubsystem.h" #include "StateTreeExecutionContext.h" +#include "StateTreeLinker.h" bool FMassStateTreeClaimSmartObjectTaskPlus::Link(FStateTreeLinker& Linker) { - Linker.LinkInstanceDataProperty(SmartObjectHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeClaimSmartObjectTaskInstanceData, SOHandle)); - Linker.LinkInstanceDataProperty(ClaimResultHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeClaimSmartObjectTaskInstanceData, ClaimResult)); - Linker.LinkExternalData(SmartObjectUserHandle); Linker.LinkExternalData(SmartObjectSubsystemHandle); return true; } -EStateTreeRunStatus FMassStateTreeClaimSmartObjectTaskPlus::EnterState(FStateTreeExecutionContext& Context, - const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const +EStateTreeRunStatus FMassStateTreeClaimSmartObjectTaskPlus::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const { - const FSmartObjectHandle& SOHandle = Context.GetInstanceData(SmartObjectHandle); - EMassSmartObjectClaimResult& ClaimResult = Context.GetInstanceData(ClaimResultHandle); + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + const FSmartObjectHandle& SOHandle = InstanceData.SOHandle; + //EMassSmartObjectClaimResult& ClaimResult = InstanceData.ClaimResult; FSmartObjectRequestFilter Filter; Filter.BehaviorDefinitionClass = USmartObjectMassBehaviorDefinition::StaticClass(); @@ -33,17 +32,25 @@ EStateTreeRunStatus FMassStateTreeClaimSmartObjectTaskPlus::EnterState(FStateTre FMassSmartObjectUserFragment& SOUser = Context.GetExternalData(SmartObjectUserHandle); // Setup MassSmartObject handler and claim - FSmartObjectClaimHandle ClaimHandle = SmartObjectSubsystem.Claim(SOHandle, Filter); + TArray SOSlots; + SmartObjectSubsystem.FindSlots(SOHandle, Filter, SOSlots); + if (!SOSlots.IsEmpty() && SmartObjectSubsystem.CanBeClaimed(SOSlots[0])) + { + InstanceData.ClaimHandle = SmartObjectSubsystem.MarkSlotAsClaimed(SOSlots[0]); + + } + - if (!ClaimHandle.IsValid()) + if (!InstanceData.ClaimHandle.IsValid()) return EStateTreeRunStatus::Failed; - SOUser.ClaimHandle = ClaimHandle; - SOUser.InteractionStatus = EMassSmartObjectInteractionStatus::Unset; - const FTransform Transform = SmartObjectSubsystem.GetSlotTransform(SOUser.ClaimHandle).Get(FTransform::Identity); - SOUser.TargetLocation = Transform.GetLocation(); - SOUser.TargetDirection = Transform.GetRotation().Vector(); - - ClaimResult = EMassSmartObjectClaimResult::Succeeded; + //SOUser.InteractionHandle = InstanceData.ClaimHandle; + //SOUser.InteractionStatus = EMassSmartObjectInteractionStatus::Unset; + const FTransform Transform = SmartObjectSubsystem.GetSlotTransform(SOUser.InteractionHandle).Get(FTransform::Identity); + //@todo fix this + //SOUser.TargetLocation = Transform.GetLocation(); + //SOUser.TargetDirection = Transform.GetRotation().Vector(); + + //ClaimResult = EMassSmartObjectClaimResult::Succeeded; return EStateTreeRunStatus::Succeeded; } diff --git a/Source/MassAITesting/StateTree/Tasks/MassStateTreeClaimSmartObjectTaskPlus.h b/Source/MassAITesting/StateTree/Tasks/MassStateTreeClaimSmartObjectTaskPlus.h index 00e946a0..5bfd7ab3 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassStateTreeClaimSmartObjectTaskPlus.h +++ b/Source/MassAITesting/StateTree/Tasks/MassStateTreeClaimSmartObjectTaskPlus.h @@ -20,9 +20,12 @@ struct MASSAITESTING_API FMassStateTreeClaimSmartObjectTaskInstanceData UPROPERTY(VisibleAnywhere, Category = Input) FSmartObjectHandle SOHandle; - /** Result of the claim on potential candidates from the search results (Output) */ UPROPERTY(VisibleAnywhere, Category = Output) - EMassSmartObjectClaimResult ClaimResult = EMassSmartObjectClaimResult::Unset; + FSmartObjectClaimHandle ClaimHandle; + + /** Result of the claim on potential candidates from the search results (Output) */ + //UPROPERTY(VisibleAnywhere, Category = Output) + //EMassSmartObjectClaimResult ClaimResult = EMassSmartObjectClaimResult::Unset; }; /** @@ -33,12 +36,11 @@ struct MASSAITESTING_API FMassStateTreeClaimSmartObjectTaskPlus : public FMassSt { GENERATED_BODY() + using FInstanceDataType = FMassStateTreeClaimSmartObjectTaskInstanceData; + virtual bool Link(FStateTreeLinker& Linker) override; virtual const UStruct* GetInstanceDataType() const override { return FMassStateTreeClaimSmartObjectTaskInstanceData::StaticStruct(); } - virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const override; - - TStateTreeInstanceDataPropertyHandle SmartObjectHandle; - TStateTreeInstanceDataPropertyHandle ClaimResultHandle; + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; TStateTreeExternalDataHandle SmartObjectUserHandle; TStateTreeExternalDataHandle SmartObjectSubsystemHandle; diff --git a/Source/MassAITesting/StateTree/Tasks/MassStateTreeGotoRandomLocationTask.cpp b/Source/MassAITesting/StateTree/Tasks/MassStateTreeGotoRandomLocationTask.cpp index 186380b2..a4504053 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassStateTreeGotoRandomLocationTask.cpp +++ b/Source/MassAITesting/StateTree/Tasks/MassStateTreeGotoRandomLocationTask.cpp @@ -5,23 +5,25 @@ #include "MassCommonFragments.h" #include "MassSetSmartObjectMoveTargetTask.h" +#include "StateTreeLinker.h" #include "MassAITesting/Mass/RTSItemTrait.h" bool FMassStateTreeGotoRandomLocationTask::Link(FStateTreeLinker& Linker) { - Linker.LinkInstanceDataProperty(RadiusHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeGotoRandomLocationTaskInstanceData, Radius)); + //Linker.LinkInstanceDataProperty(RadiusHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeGotoRandomLocationTaskInstanceData, Radius)); Linker.LinkExternalData(TransformHandle); Linker.LinkExternalData(MoveTargetHandle); return true; } -EStateTreeRunStatus FMassStateTreeGotoRandomLocationTask::EnterState(FStateTreeExecutionContext& Context, - const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const +EStateTreeRunStatus FMassStateTreeGotoRandomLocationTask::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const { FMassMoveTargetFragment& MoveTargetFragment = Context.GetExternalData(MoveTargetHandle); const FTransform& Transform = Context.GetExternalData(TransformHandle).GetTransform(); - const float& Radius = Context.GetInstanceData(RadiusHandle); + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + const float& Radius = InstanceData.Radius; FVector RandomLocation = FVector(FMath::RandRange(-Radius, Radius), FMath::RandRange(-Radius, Radius), 0.f); RandomLocation += Transform.GetLocation(); diff --git a/Source/MassAITesting/StateTree/Tasks/MassStateTreeGotoRandomLocationTask.h b/Source/MassAITesting/StateTree/Tasks/MassStateTreeGotoRandomLocationTask.h index f8a44703..ade8133d 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassStateTreeGotoRandomLocationTask.h +++ b/Source/MassAITesting/StateTree/Tasks/MassStateTreeGotoRandomLocationTask.h @@ -28,13 +28,15 @@ USTRUCT() struct MASSAITESTING_API FMassStateTreeGotoRandomLocationTask : public FMassStateTreeTaskBase { GENERATED_BODY() + + using FInstanceDataType = FMassStateTreeGotoRandomLocationTaskInstanceData; virtual bool Link(FStateTreeLinker& Linker) override; virtual const UStruct* GetInstanceDataType() const override { return FMassStateTreeGotoRandomLocationTaskInstanceData::StaticStruct(); } - virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const override; + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; virtual EStateTreeRunStatus Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const override; - TStateTreeInstanceDataPropertyHandle RadiusHandle; + //TStateTreeInstanceDataPropertyHandle RadiusHandle; TStateTreeExternalDataHandle MoveTargetHandle; TStateTreeExternalDataHandle TransformHandle; diff --git a/Source/MassAITesting/StateTree/Tasks/MassStateTreeMoveToEntityHandle.cpp b/Source/MassAITesting/StateTree/Tasks/MassStateTreeMoveToEntityHandle.cpp index 1c58821e..c46da4ae 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassStateTreeMoveToEntityHandle.cpp +++ b/Source/MassAITesting/StateTree/Tasks/MassStateTreeMoveToEntityHandle.cpp @@ -4,18 +4,20 @@ #include "MassStateTreeMoveToEntityHandle.h" #include "MassCommandBuffer.h" +#include "MassEntitySubsystem.h" #include "MassMovementFragments.h" #include "MassSignalSubsystem.h" #include "MassSmartObjectFragments.h" #include "MassStateTreeExecutionContext.h" #include "MassNavigationTypes.h" #include "MassSetSmartObjectMoveTargetTask.h" +#include "StateTreeLinker.h" #include "MassAITesting/RTSBuildingSubsystem.h" #include "MassAITesting/Mass/RTSItemTrait.h" bool FMassStateTreeMoveToEntityHandle::Link(FStateTreeLinker& Linker) { - Linker.LinkInstanceDataProperty(EntityHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeMoveToEntityHandleInstanceData, ItemHandle)); + //Linker.LinkInstanceDataProperty(EntityHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeMoveToEntityHandleInstanceData, ItemHandle)); Linker.LinkExternalData(MoveTargetHandle); Linker.LinkExternalData(TransformHandle); @@ -27,18 +29,18 @@ bool FMassStateTreeMoveToEntityHandle::Link(FStateTreeLinker& Linker) return true; } -EStateTreeRunStatus FMassStateTreeMoveToEntityHandle::EnterState(FStateTreeExecutionContext& Context, - const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const +EStateTreeRunStatus FMassStateTreeMoveToEntityHandle::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const { FMassMoveTargetFragment& MoveTarget = Context.GetExternalData(MoveTargetHandle); const FMassMovementParameters& MoveParameters = Context.GetExternalData(MoveParametersHandle); - const FMassEntityHandle& ItemHandle = Context.GetInstanceData(EntityHandle); + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + const FMassEntityHandle& ItemHandle = InstanceData.ItemHandle; UMassEntitySubsystem& EntitySubsystem = Context.GetExternalData(EntitySubsystemHandle); - if (!EntitySubsystem.IsEntityValid(ItemHandle)) + if (!EntitySubsystem.GetEntityManager().IsEntityValid(ItemHandle)) return EStateTreeRunStatus::Failed; - const FVector& Location = EntitySubsystem.GetFragmentDataChecked(ItemHandle).GetTransform().GetLocation(); + const FVector& Location = EntitySubsystem.GetEntityManager().GetFragmentDataChecked(ItemHandle).GetTransform().GetLocation(); MoveTarget.Center = Location; MoveTarget.SlackRadius = 100.f; diff --git a/Source/MassAITesting/StateTree/Tasks/MassStateTreeMoveToEntityHandle.h b/Source/MassAITesting/StateTree/Tasks/MassStateTreeMoveToEntityHandle.h index 882a6580..a5ae17d4 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassStateTreeMoveToEntityHandle.h +++ b/Source/MassAITesting/StateTree/Tasks/MassStateTreeMoveToEntityHandle.h @@ -9,6 +9,7 @@ #include "SmartObjectSubsystem.h" #include "MassStateTreeMoveToEntityHandle.generated.h" +class UMassEntitySubsystem; class URTSBuildingSubsystem; struct FMassMoveTargetFragment; struct FTransformFragment; @@ -33,13 +34,15 @@ struct MASSAITESTING_API FMassStateTreeMoveToEntityHandle : public FMassStateTre { GENERATED_BODY() + using FInstanceDataType = FMassStateTreeMoveToEntityHandleInstanceData; + virtual bool Link(FStateTreeLinker& Linker) override; virtual const UStruct* GetInstanceDataType() const override { return FMassStateTreeMoveToEntityHandleInstanceData::StaticStruct(); } - virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const override; + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; virtual EStateTreeRunStatus Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const override; - TStateTreeInstanceDataPropertyHandle EntityHandle; - TStateTreeInstanceDataPropertyHandle ClaimResultHandle; + //TStateTreeInstanceDataPropertyHandle EntityHandle; + //TStateTreeInstanceDataPropertyHandle ClaimResultHandle; TStateTreeExternalDataHandle SmartObjectSubsystemHandle; TStateTreeExternalDataHandle MoveTargetHandle; diff --git a/Source/MassAITesting/StateTree/Tasks/MassStateTreeTakeItemTask.cpp b/Source/MassAITesting/StateTree/Tasks/MassStateTreeTakeItemTask.cpp index 3ac04605..3ffc784e 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassStateTreeTakeItemTask.cpp +++ b/Source/MassAITesting/StateTree/Tasks/MassStateTreeTakeItemTask.cpp @@ -3,30 +3,30 @@ #include "MassStateTreeTakeItemTask.h" +#include "MassEntitySubsystem.h" +#include "StateTreeLinker.h" #include "MassAITesting/RTSBuildingSubsystem.h" #include "MassAITesting/Mass/RTSItemTrait.h" bool FMassStateTreeTakeItemTask::Link(FStateTreeLinker& Linker) { - Linker.LinkInstanceDataProperty(EntityHandle, STATETREE_INSTANCEDATA_PROPERTY(FMassStateTreeTakeItemTaskInstanceData, ItemHandle)); - Linker.LinkExternalData(EntitySubsystemHandle); Linker.LinkExternalData(BuildingSubsystemHandle); return true; } -EStateTreeRunStatus FMassStateTreeTakeItemTask::EnterState(FStateTreeExecutionContext& Context, - const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const +EStateTreeRunStatus FMassStateTreeTakeItemTask::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const { - const FMassEntityHandle& ItemHandle = Context.GetInstanceData(EntityHandle); + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + FMassEntityHandle& ItemHandle = InstanceData.ItemHandle; UMassEntitySubsystem& EntitySubsystem = Context.GetExternalData(EntitySubsystemHandle); URTSBuildingSubsystem& BuildingSubsystem = Context.GetExternalData(BuildingSubsystemHandle); - if (EntitySubsystem.IsEntityValid(ItemHandle)) + if (EntitySubsystem.GetEntityManager().IsEntityValid(ItemHandle)) { - const FItemFragment* Item = EntitySubsystem.GetFragmentDataPtr(ItemHandle); + const FItemFragment* Item = EntitySubsystem.GetEntityManager().GetFragmentDataPtr(ItemHandle); BuildingSubsystem.ItemHashGrid.Remove(ItemHandle, Item->CellLoc); - EntitySubsystem.Defer().DestroyEntity(ItemHandle); + EntitySubsystem.GetEntityManager().Defer().DestroyEntity(ItemHandle); return EStateTreeRunStatus::Succeeded; } return EStateTreeRunStatus::Failed; diff --git a/Source/MassAITesting/StateTree/Tasks/MassStateTreeTakeItemTask.h b/Source/MassAITesting/StateTree/Tasks/MassStateTreeTakeItemTask.h index 577004a2..5da3b01c 100644 --- a/Source/MassAITesting/StateTree/Tasks/MassStateTreeTakeItemTask.h +++ b/Source/MassAITesting/StateTree/Tasks/MassStateTreeTakeItemTask.h @@ -8,6 +8,7 @@ #include "MassEntityTypes.h" #include "MassStateTreeTakeItemTask.generated.h" +class UMassEntitySubsystem; class URTSBuildingSubsystem; USTRUCT() struct FMassStateTreeTakeItemTaskInstanceData @@ -25,12 +26,14 @@ USTRUCT() struct MASSAITESTING_API FMassStateTreeTakeItemTask : public FMassStateTreeTaskBase { GENERATED_BODY() + + using FInstanceDataType = FMassStateTreeTakeItemTaskInstanceData; virtual bool Link(FStateTreeLinker& Linker) override; virtual const UStruct* GetInstanceDataType() const override { return FMassStateTreeTakeItemTaskInstanceData::StaticStruct(); } - virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const override; + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; - TStateTreeInstanceDataPropertyHandle EntityHandle; + //TStateTreeInstanceDataPropertyHandle EntityHandle; TStateTreeExternalDataHandle EntitySubsystemHandle; TStateTreeExternalDataHandle BuildingSubsystemHandle; diff --git a/Source/MassAITesting/StateTree/Tasks/MassWaitTask.cpp b/Source/MassAITesting/StateTree/Tasks/MassWaitTask.cpp new file mode 100644 index 00000000..93cc26d0 --- /dev/null +++ b/Source/MassAITesting/StateTree/Tasks/MassWaitTask.cpp @@ -0,0 +1,52 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "MassWaitTask.h" + +#include "MassSignalSubsystem.h" +#include "MassStateTreeExecutionContext.h" +#include "StateTreeLinker.h" + +bool FMassWaitTask::Link(FStateTreeLinker& Linker) +{ + Linker.LinkExternalData(MassSignalSubsystemHandle); + return true; +} + +EStateTreeRunStatus FMassWaitTask::EnterState(FStateTreeExecutionContext& Context, + const FStateTreeTransitionResult& Transition) const +{ + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + const FMassStateTreeExecutionContext& MassContext = static_cast(Context); + auto& MassSignalSubsystem = Context.GetExternalData(MassSignalSubsystemHandle); + MassSignalSubsystem.DelaySignalEntity(UE::Mass::Signals::StateTreeActivate, MassContext.GetEntity(), InstanceData.Duration); + + return EStateTreeRunStatus::Running; +} + +EStateTreeRunStatus FMassWaitTask::Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const +{ + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + InstanceData.TimePassed += DeltaTime; + + if (InstanceData.TimePassed >= InstanceData.Duration) + { + return EStateTreeRunStatus::Succeeded; + } + else + { + const FMassStateTreeExecutionContext& MassContext = static_cast(Context); + auto& MassSignalSubsystem = Context.GetExternalData(MassSignalSubsystemHandle); + MassSignalSubsystem.DelaySignalEntity(UE::Mass::Signals::StateTreeActivate, MassContext.GetEntity(), InstanceData.Duration - InstanceData.TimePassed); + } + + return EStateTreeRunStatus::Running; +} + +void FMassWaitTask::ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const +{ + FMassStateTreeTaskBase::ExitState(Context, Transition); + + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + InstanceData.TimePassed = 0.f; +} diff --git a/Source/MassAITesting/StateTree/Tasks/MassWaitTask.h b/Source/MassAITesting/StateTree/Tasks/MassWaitTask.h new file mode 100644 index 00000000..7674e08f --- /dev/null +++ b/Source/MassAITesting/StateTree/Tasks/MassWaitTask.h @@ -0,0 +1,43 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "MassStateTreeClaimSmartObjectTaskPlus.h" +#include "MassWaitTask.generated.h" + +/** + * Task to assign a LookAt target for mass processing + */ +USTRUCT() +struct MASSAITESTING_API FMassWaitTaskInstanceData +{ + GENERATED_BODY() + + /** Delay before the task ends. Default (0 or any negative) will run indefinitely so it requires a transition in the state tree to stop it. */ + UPROPERTY(EditAnywhere, Category = Parameter) + float Duration = 0.f; + + float TimePassed = 0.f; +}; + +/** + * + */ +USTRUCT(meta = (DisplayName = "Mass Wait Task")) +struct MASSAITESTING_API FMassWaitTask : public FMassStateTreeTaskBase +{ + GENERATED_BODY() + + using FInstanceDataType = FMassWaitTaskInstanceData; + + virtual bool Link(FStateTreeLinker& Linker) override; + virtual const UStruct* GetInstanceDataType() const override { return FMassWaitTaskInstanceData::StaticStruct(); } + + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + virtual EStateTreeRunStatus Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const override; + virtual void ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + +protected: + TStateTreeExternalDataHandle MassSignalSubsystemHandle; +};