Pick and place logic

This commit is contained in:
Behron 2025-04-09 17:57:41 -06:00
parent 099a3433ee
commit b20342b808
92 changed files with 762 additions and 3664 deletions

View File

@ -14,16 +14,110 @@
</component>
<component name="ChangeListManager">
<list default="true" id="862165ab-fe98-4004-90e3-0742ed8cf5de" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/Content/Blueprint/Core/BP_PickAndPlaceManager.uasset" afterDir="false" />
<change afterPath="$PROJECT_DIR$/Content/Blueprint/Core/BP_PickAndPlaceTarget.uasset" afterDir="false" />
<change afterPath="$PROJECT_DIR$/Content/Levels/Office/AIUE5_vol11_04/materials/MI_AI_vol11_04_dial_02.uasset" afterDir="false" />
<change afterPath="$PROJECT_DIR$/Content/Levels/Office/AIUE5_vol11_04/mesh/NewinteractiblesOffice/Int_SM_AI_vol11_04_copier_1_1_new/LegoTest.uasset" afterDir="false" />
<change afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/AI/PickAndPlaceManager.cpp" afterDir="false" />
<change afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/AI/PickAndPlaceUser.cpp" afterDir="false" />
<change afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/Lib/LuckyWorldFunctions.cpp" afterDir="false" />
<change afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Public/AI/PickAndPlaceManager.h" afterDir="false" />
<change afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Public/AI/PickAndPlaceUser.h" afterDir="false" />
<change afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Public/Lib/LuckyWorldFunctions.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.idea.Luckyrobots/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.Luckyrobots/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Binaries/Mac/Luckyrobots-Mac-Shipping.target" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Binaries/Win64/UnrealEditor-Luckyrobots.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Binaries/Win64/UnrealEditor-Luckyrobots.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Binaries/Win64/UnrealEditor-Luckyrobots.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Binaries/Win64/UnrealEditor-Luckyrobots.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Blueprint/Core/BP_3DtextHelp.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Blueprint/Core/BP_3DtextHelp.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Blueprint/Core/BP_RobotArmPlacementVolume.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Blueprint/Core/BP_RobotArmPlacementVolume.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Blueprint/Core/BP_RobotArmRandomItemsVolume.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Blueprint/Core/BP_RobotArmRandomItemsVolume.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Blueprint/Game/BP_LuckyGameinstanceMode.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Blueprint/Game/BP_LuckyGameinstanceMode.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Blueprint/RobotPawnActors/BP_mujoco_SOArm100.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Blueprint/RobotPawnActors/BP_mujoco_SOArm100.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Blueprint/RobotPawnActors/BP_mujokoStretch.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Blueprint/RobotPawnActors/BP_mujokoStretch.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Blueprint/State/ST_LuckyWorld.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Blueprint/State/ST_LuckyWorld.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Blueprint/robotAccessoriesSensors/BP_CameraSensor.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Blueprint/robotAccessoriesSensors/BP_CameraSensor.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Developers/Bhrama/DT_LuckyStateTreeTags.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Developers/Bhrama/DT_LuckyStateTreeTags.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Developers/Wdev/Robots/BP_SoArm100robot.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Developers/Wdev/Robots/BP_SoArm100robot.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Map/Test_Level.umap" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Map/Test_Level.umap" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/luckyBot/Luckywidget/ChildItems/WB_CameraSetting.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/luckyBot/Luckywidget/ChildItems/WB_CameraSetting.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/luckyBot/Luckywidget/WB_GameWidget.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/luckyBot/Luckywidget/WB_GameWidget.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/luckyBot/Luckywidget/menu/WB_CameraList.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/luckyBot/Luckywidget/menu/WB_CameraList.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/luckyBot/Luckywidget/menu/WB_CaptureSettings.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/luckyBot/Luckywidget/menu/WB_CaptureSettings.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/luckyBot/Luckywidget/menu/WB_SelectGoalMenu_Camera.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/luckyBot/Luckywidget/menu/WB_SelectGoalMenu_Camera.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Luckyrobots.sln.DotSettings.user" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/AsyncLoac1ceae7b44acV11/Binaries/Win64/UnrealEditor-AsyncLoadingScreen.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/AsyncLoac1ceae7b44acV11/Binaries/Win64/UnrealEditor-AsyncLoadingScreen.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/AsyncLoac1ceae7b44acV11/Binaries/Win64/UnrealEditor-AsyncLoadingScreen.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/AsyncLoac1ceae7b44acV11/Binaries/Win64/UnrealEditor-AsyncLoadingScreen.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/BlueprintJson/Binaries/Win64/UnrealEditor-BlueprintJson.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/BlueprintJson/Binaries/Win64/UnrealEditor-BlueprintJson.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/BlueprintJson/Binaries/Win64/UnrealEditor-BlueprintJson.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/BlueprintJson/Binaries/Win64/UnrealEditor-BlueprintJson.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Binaries/Win64/UnrealEditor-CPathfinding.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Binaries/Win64/UnrealEditor-CPathfinding.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Binaries/Win64/UnrealEditor-CPathfinding.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Binaries/Win64/UnrealEditor-CPathfinding.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/UnrealEditor/Inc/CPathfinding/UHT/Timestamp" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/UnrealEditor/Inc/CPathfinding/UHT/Timestamp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathAsyncVolumeGeneration.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathAsyncVolumeGeneration.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathDefines.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathDefines.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathDefines.gen.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathDefines.gen.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathDynamicObstacle.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathDynamicObstacle.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathDynamicObstacle.gen.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathDynamicObstacle.gen.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathFindPath.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathFindPath.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathFindPath.gen.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathFindPath.gen.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathNode.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathNode.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathNode.gen.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathNode.gen.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathOctree.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathOctree.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathVolume.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathVolume.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathVolume.gen.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathVolume.gen.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathVolumeGroundPrio.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathVolumeGroundPrio.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathVolumeGroundPrio.gen.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathVolumeGroundPrio.gen.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathfinding.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathfinding.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathfinding.init.gen.cpp.sarif" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/CPathfinding.init.gen.cpp.sarif" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/UnrealEditor-CPathfinding.exp" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/UnrealEditor-CPathfinding.exp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/UnrealEditor-CPathfinding.lib" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/CPathfinding/Intermediate/Build/Win64/x64/UnrealEditor/Development/CPathfinding/UnrealEditor-CPathfinding.lib" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/FileHelperPlugin/Binaries/Win64/UnrealEditor-FileHelper.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/FileHelperPlugin/Binaries/Win64/UnrealEditor-FileHelper.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/FileHelperPlugin/Binaries/Win64/UnrealEditor-FileHelper.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/FileHelperPlugin/Binaries/Win64/UnrealEditor-FileHelper.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.exp" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.exp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.patch_0.exe" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.patch_0.exe" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.patch_0.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.patch_0.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.patch_1.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.patch_1.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujoco.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujocoEditor.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujocoEditor.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujocoEditor.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/LuckyMujoco/Binaries/Win64/UnrealEditor-LuckyMujocoEditor.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/LuckyTextWrite/Binaries/Win64/UnrealEditor-LuckyTextWrite.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/LuckyTextWrite/Binaries/Win64/UnrealEditor-LuckyTextWrite.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/LuckyTextWrite/Binaries/Win64/UnrealEditor-LuckyTextWrite.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/LuckyTextWrite/Binaries/Win64/UnrealEditor-LuckyTextWrite.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXD3D12.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXD3D12.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXD3D12.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXD3D12.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXD3D12Backend.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXD3D12Backend.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXD3D12Backend.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXD3D12Backend.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3Api.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3Api.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3Api.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3Api.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3Settings.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3Settings.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3Settings.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3Settings.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3TemporalUpscaling.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3TemporalUpscaling.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3TemporalUpscaling.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFSR3TemporalUpscaling.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFrameInterpolation.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFrameInterpolation.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFrameInterpolation.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFrameInterpolation.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFrameInterpolationApi.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFrameInterpolationApi.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFrameInterpolationApi.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXFrameInterpolationApi.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXOpticalFlowApi.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXOpticalFlowApi.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXOpticalFlowApi.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXOpticalFlowApi.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXRHIBackend.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXRHIBackend.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXRHIBackend.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXRHIBackend.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXShared.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXShared.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXShared.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3/Binaries/Win64/UnrealEditor-FFXShared.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Binaries/Win64/UnrealEditor-FSR3MovieRenderPipeline.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Binaries/Win64/UnrealEditor-FSR3MovieRenderPipeline.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Binaries/Win64/UnrealEditor-FSR3MovieRenderPipeline.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Binaries/Win64/UnrealEditor-FSR3MovieRenderPipeline.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-CoreUtility.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-CoreUtility.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-CoreUtility.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-CoreUtility.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SIOJEditorPlugin.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SIOJEditorPlugin.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SIOJEditorPlugin.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SIOJEditorPlugin.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SIOJson.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SIOJson.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SIOJson.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SIOJson.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SocketIOClient.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SocketIOClient.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SocketIOClient.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SocketIOClient.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SocketIOLib.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SocketIOLib.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SocketIOLib.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/SocketIOClient/Binaries/Win64/UnrealEditor-SocketIOLib.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/VaRestPlugin/Binaries/Win64/UnrealEditor-VaRest.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/VaRestPlugin/Binaries/Win64/UnrealEditor-VaRest.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/VaRestPlugin/Binaries/Win64/UnrealEditor-VaRest.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/VaRestPlugin/Binaries/Win64/UnrealEditor-VaRest.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/VaRestPlugin/Binaries/Win64/UnrealEditor-VaRestEditor.dll" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/VaRestPlugin/Binaries/Win64/UnrealEditor-VaRestEditor.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Plugins/VaRestPlugin/Binaries/Win64/UnrealEditor-VaRestEditor.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/Plugins/VaRestPlugin/Binaries/Win64/UnrealEditor-VaRestEditor.pdb" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -37,9 +131,29 @@
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="HighlightingSettingsPerFile">
<setting file="cidr-memory-view://2" root0="FORCE_HIGHLIGHTING" />
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
<setting file="cidr-memory-view://12" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/AI/PickAndPlaceUser.cpp" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/AI/Tasks/STT_PickAndPlace.cpp" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/Actors/MujocoVolumeActor.cpp" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/Components/MujocoBodyComponent.cpp" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/Lib/LuckyWorldFunctions.cpp" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Public/Actors/MujocoVolumeActor.h" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Public/Components/MujocoBodyComponent.h" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Plugins/LuckyMujoco/Source/LuckyMujoco/Public/Misc/MujocoOptions.h" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Plugins/LuckyMujoco/Source/ThirdParty/Mujoco/include/mujoco/mjdata.h" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Plugins/LuckyMujoco/Source/ThirdParty/Mujoco/include/mujoco/mjtnum.h" root0="SKIP_HIGHLIGHTING" />
<setting file="file://E:/EpicGames/UE5_5/Engine/Source/Runtime/CoreUObject/Private/UObject/ScriptCore.cpp" root0="FORCE_HIGHLIGHTING" />
<setting file="file://E:/EpicGames/UE5_5/Engine/Source/Runtime/D3D12RHI/Private/D3D12StateCache.cpp" root0="FORCE_HIGHLIGHTING" />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 4
@ -191,7 +305,8 @@
<workItem from="1743998849387" duration="7343000" />
<workItem from="1744126161743" duration="605000" />
<workItem from="1744127162882" duration="5232000" />
<workItem from="1744156005223" duration="4174000" />
<workItem from="1744156005223" duration="4822000" />
<workItem from="1744222869352" duration="15217000" />
</task>
<servers />
</component>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Content/Blueprint/Core/BP_PickAndPlaceManager.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Blueprint/Core/BP_PickAndPlaceTarget.uasset (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Content/Map/Test_Level.umap (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,2 +0,0 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHoxuhub_002Easm_002Fl_003AC_0021_003FUsers_003FBhrama_003FAppData_003FLocal_003FTemp_003FSandboxFiles_003FHynojar_003FHoxuhub_002Easm/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,6 @@
D:\Projects\luckyworld\luckyworld\Plugins\CPathfinding\Source\CPathfinding\Public\CPathDynamicObstacle.h
D:\Projects\luckyworld\luckyworld\Plugins\CPathfinding\Source\CPathfinding\Public\CPathVolume.h
D:\Projects\luckyworld\luckyworld\Plugins\CPathfinding\Source\CPathfinding\Public\CPathVolumeGroundPrio.h
D:\Projects\luckyworld\luckyworld\Plugins\CPathfinding\Source\CPathfinding\Public\CPathDefines.h
D:\Projects\luckyworld\luckyworld\Plugins\CPathfinding\Source\CPathfinding\Public\CPathFindPath.h
D:\Projects\luckyworld\luckyworld\Plugins\CPathfinding\Source\CPathfinding\Public\CPathNode.h
D:\Projects\luckyworld\luckyworld\Plugins\CPathfinding\Source\CPathfinding\Public\CPathFindPath.h
D:\Projects\luckyworld\luckyworld\Plugins\CPathfinding\Source\CPathfinding\Public\CPathVolume.h
D:\Projects\luckyworld\luckyworld\Plugins\CPathfinding\Source\CPathfinding\Public\CPathDynamicObstacle.h
D:\Projects\luckyworld\luckyworld\Plugins\CPathfinding\Source\CPathfinding\Public\CPathVolumeGroundPrio.h

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,7 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "AI/CameraSensorHandler.h"
// Add default functionality here for any ICameraSensorHandler functions that are not pure virtual.

View File

@ -0,0 +1,84 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "AI/PickAndPlaceManager.h"
#include "Components/StateTreeComponent.h"
// Sets default values
APickAndPlaceManager::APickAndPlaceManager()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = false;
}
// Called when the game starts or when spawned
void APickAndPlaceManager::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void APickAndPlaceManager::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
bool APickAndPlaceManager::SetNewTarget_Implementation(AActor* StateTreeOwner, AActor* TargetActor, AActor* PlaceArea)
{
if (IsValid(TargetActor) && IsValid(PlaceArea) && IsValid(StateTreeOwner))
{
if (UStateTreeComponent* STC = StateTreeOwner->FindComponentByClass<UStateTreeComponent>())
{
FStateTreeEvent Event;
Event.Origin = "PickAndPlaceStart";
Event.Tag = PickAndPlaceStartTag;
STC->SendStateTreeEvent(Event);
}
CurrentTargetActor = TargetActor;
CurrentPlaceArea = PlaceArea;
if (!CurrentTargetActor->Tags.Contains(PickAndPlaceTag))
{
CurrentTargetActor->Tags.Add(PickAndPlaceTag);
}
if (OnPickAndPlaceTargetsUpdated.IsBound())
{
OnPickAndPlaceTargetsUpdated.Broadcast(this);
}
return true;
}
return false;
}
bool APickAndPlaceManager::PickAndPlaceSuccess_Implementation(AActor* StateTreeOwner)
{
if (IsValid(StateTreeOwner))
{
if (UStateTreeComponent* STC = StateTreeOwner->FindComponentByClass<UStateTreeComponent>())
{
FStateTreeEvent Event;
Event.Origin = "PickAndPlaceSuccess";
Event.Tag = PickAndPlaceSuccessTag;
STC->SendStateTreeEvent(Event);
}
}
if (OnPickAndPlaceSuccess.IsBound())
{
OnPickAndPlaceSuccess.Broadcast(this);
}
return true;
}
AActor* APickAndPlaceManager::GetCurrentTargetActor() const
{
return CurrentTargetActor;
}
AActor* APickAndPlaceManager::GetCurrentPlaceArea() const
{
return CurrentPlaceArea;
}

View File

@ -0,0 +1,7 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "AI/PickAndPlaceUser.h"
// Add default functionality here for any IPickAndPlaceUser functions that are not pure virtual.

View File

@ -0,0 +1,23 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "AI/Tasks/STT_PickAndPlace.h"
#include "StateTreeExecutionContext.h"
#include "AI/PickAndPlaceUser.h"
#include "Lib/LuckyWorldFunctions.h"
EStateTreeRunStatus FSTT_PickAndPlace::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const
{
if (UObject* Ref = Context.GetOwner())
{
if (Ref->GetClass()->ImplementsInterface(UPickAndPlaceUser::StaticClass()))
{
if (APickAndPlaceManager* Manager = ULuckyWorldFunctions::GetPickAndPlaceManager(Ref))
{
IPickAndPlaceUser::Execute_SetPickAndPlaceTargets(Ref,Manager->GetCurrentTargetActor(),Manager->GetCurrentPlaceArea());
return EStateTreeRunStatus::Running;
}
}
}
return EStateTreeRunStatus::Failed;
}

View File

@ -0,0 +1,116 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "Lib/LuckyWorldFunctions.h"
#include "EngineUtils.h"
#include "IImageWrapperModule.h"
#include "IImageWrapper.h"
#include "Modules/ModuleManager.h"
#include "Engine/TextureRenderTarget2D.h"
#include "Modules/ModuleManager.h"
#include "Misc/FileHelper.h"
#include "Engine/Texture2D.h"
#include "RenderUtils.h"
APickAndPlaceManager* ULuckyWorldFunctions::GetPickAndPlaceManager(UObject* WorldContextObject)
{
if (IsValid(WorldContextObject))
{
for (TActorIterator<APickAndPlaceManager> Itr(WorldContextObject->GetWorld()); Itr; ++Itr)
{
return *Itr;
}
}
return nullptr;
}
bool ULuckyWorldFunctions::SaveRenderTargetToDisk(UTextureRenderTarget2D* RenderTarget, const FString& Filename, bool bAsPNG, bool bFlipVertically)
{
if (!IsValid(RenderTarget)) return false;
FRenderTarget* RenderTargetResource = RenderTarget->GameThread_GetRenderTargetResource();
TArray<FColor> Bitmap;
RenderTargetResource->ReadPixels(Bitmap);
if (Bitmap.Num() <= 0) return false;
if (bFlipVertically)
{
for (int32 Row = 0; Row < RenderTarget->SizeY / 2; Row++)
{
int32 IndexA = Row * RenderTarget->SizeX;
int32 IndexB = (RenderTarget->SizeY - Row - 1) * RenderTarget->SizeX;
for (int32 Col = 0; Col < RenderTarget->SizeX; Col++)
{
Bitmap.SwapMemory(IndexA + Col, IndexB + Col);
}
}
}
FString FullPath = FPaths::ProjectSavedDir() / TEXT("CapturedImages") / Filename;
FPaths::NormalizeFilename(FullPath);
IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));
EImageFormat Format = bAsPNG ? EImageFormat::PNG : EImageFormat::JPEG;
TSharedPtr<IImageWrapper> ImageWrapper = ImageWrapperModule.CreateImageWrapper(Format);
ImageWrapper->SetRaw(Bitmap.GetData(), Bitmap.GetAllocatedSize(), RenderTarget->SizeX, RenderTarget->SizeY, ERGBFormat::BGRA, 8);
const TArray64<uint8>& ImageData = bAsPNG
? ImageWrapper->GetCompressed(100)
: ImageWrapper->GetCompressed(75);
return FFileHelper::SaveArrayToFile(ImageData, *FullPath);
}
bool ULuckyWorldFunctions::SaveTextureToDisk(UTexture2D* Texture, const FString& Filename, bool bAsPNG, bool bFlipVertically)
{
if (IsValid(Texture) || !Texture->GetPlatformData() || Texture->GetPlatformData()->Mips.Num() == 0)
{
return false;
}
FTexture2DMipMap& Mip = Texture->GetPlatformData()->Mips[0];
const void* Data = Mip.BulkData.LockReadOnly();
int32 Width = Mip.SizeX;
int32 Height = Mip.SizeY;
TArray<FColor> Pixels;
Pixels.AddUninitialized(Width * Height);
if (Texture->GetPlatformData()->PixelFormat == PF_B8G8R8A8)
{
FMemory::Memcpy(Pixels.GetData(), Data, Width * Height * sizeof(FColor));
}
else
{
Mip.BulkData.Unlock();
return false;
}
Mip.BulkData.Unlock();
if (bFlipVertically)
{
for (int32 Row = 0; Row < Height / 2; Row++)
{
int32 IndexA = Row * Width;
int32 IndexB = (Height - Row - 1) * Width;
for (int32 Col = 0; Col < Width; Col++)
{
Pixels.SwapMemory(IndexA + Col, IndexB + Col);
}
}
}
IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));
EImageFormat Format = bAsPNG ? EImageFormat::PNG : EImageFormat::JPEG;
TSharedPtr<IImageWrapper> ImageWrapper = ImageWrapperModule.CreateImageWrapper(Format);
ImageWrapper->SetRaw(Pixels.GetData(), Pixels.GetAllocatedSize(), Width, Height, ERGBFormat::BGRA, 8);
const TArray64<uint8>& ImageData = bAsPNG
? ImageWrapper->GetCompressed(100)
: ImageWrapper->GetCompressed(75);
FString FullPath = FPaths::ProjectSavedDir() / TEXT("CapturedImages") / Filename;
FPaths::NormalizeFilename(FullPath);
return FFileHelper::SaveArrayToFile(ImageData, *FullPath);
}

View File

@ -0,0 +1,61 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "CameraSensorHandler.generated.h"
// This class does not need to be modified.
UINTERFACE(MinimalAPI)
class UCameraSensorHandler : public UInterface
{
GENERATED_BODY()
};
/**
*
*/
class LUCKYMUJOCO_API ICameraSensorHandler
{
GENERATED_BODY()
// Add interface functions to this class. This is the class that will be inherited to implement this interface.
public:
/**
* @return - The array of camera sensors.
*/
UFUNCTION(BlueprintCallable,BlueprintNativeEvent,Category = "Cameras")
TArray<UChildActorComponent*> GetCameraSensors();
/**
* Spawn a camera sensor child actor component.
* NOTE::You will need to make sure you set the class in the AddChildActorComponent function or this will return a nullptr.
* @param Transform - The new transform to spawn the camera at.
* @param Value - The return index for the new camera in the array.
* @return - The spawned camera component.
*/
UFUNCTION(BlueprintCallable,BlueprintNativeEvent,Category = "Cameras")
UChildActorComponent* AddCameraSensor(const FTransform& Transform, int32& Value);
/**
* Move a camera to a new world transform at the given index.
* @param Transform - The new camera transform.
* @param Index - The index for the camera in the array.
* @return - True if valid index.
*/
UFUNCTION(BlueprintCallable,BlueprintNativeEvent,Category = "Cameras")
bool UpdateCameraSensorTransform(const FTransform& Transform, int32 Index);
/**
* Reset the camera to its original position.
* NOTE::The camera indexes need to be cached in the actor or it will fail.
* @param Index - The camera index.
* @return - True if valid index.
*/
UFUNCTION(BlueprintCallable,BlueprintNativeEvent,Category = "Cameras")
bool ResetCameraSensorTransform(int32 Index);
};

View File

@ -0,0 +1,98 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameplayTagContainer.h"
#include "GameFramework/Actor.h"
#include "PickAndPlaceManager.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnPickAndPlaceTargetsUpdated, APickAndPlaceManager*, Manager);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnPickAndPlaceSuccess, APickAndPlaceManager*, Manager);
UCLASS()
class LUCKYMUJOCO_API APickAndPlaceManager : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
APickAndPlaceManager();
/**
* Notify pick and place has started.
*/
UPROPERTY(BlueprintAssignable,Category = "PickAndPlace")
FOnPickAndPlaceTargetsUpdated OnPickAndPlaceTargetsUpdated;
/**
* Notify pick and place has succeeded.
*/
UPROPERTY(BlueprintAssignable,Category = "PickAndPlace")
FOnPickAndPlaceSuccess OnPickAndPlaceSuccess;
/**
* The gameplay tag to send to the state tree to start pick and place.
*/
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "PickAndPlace")
FGameplayTag PickAndPlaceStartTag;
/**
* The gameplay tag to send to the state tree to stop pick and place.
*/
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "PickAndPlace")
FGameplayTag PickAndPlaceSuccessTag;
/**
* The actor tag that is required to consider an object entering the "box" to be a valid pick and place object.
*/
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "PickAndPlace")
FName PickAndPlaceTag;
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
/**
* Initialize the pick and place logic.
* @param StateTreeOwner - The owner of the state tree so we can send an event to the state tree to continue.
* @param TargetActor - The target to pick and place.
* @param PlaceArea - The area to place the target actor.
* @return - True if both target actor and place area are valid.
*/
UFUNCTION(BlueprintCallable,BlueprintNativeEvent,Category = "PickAndPlace")
bool SetNewTarget(AActor* StateTreeOwner, AActor* TargetActor, AActor* PlaceArea);
/**
* For now, this just broadcasts the event and sends a gameplay tag to the owner of the state tree, but more can be done here if needed.
* @param StateTreeOwner - The owner of the state tree so we can send an event to the state tree to continue.
* @return - Dummy value.
*/
UFUNCTION(BlueprintCallable,BlueprintNativeEvent,Category = "PickAndPlace")
bool PickAndPlaceSuccess(AActor* StateTreeOwner);
/**
* @return - CurrentTargetActor.
*/
UFUNCTION(BlueprintPure,Category = "PickAndPlace")
AActor* GetCurrentTargetActor() const;
/**
* @return - CurrentPlaceArea.
*/
UFUNCTION(BlueprintPure,Category = "PickAndPlace")
AActor* GetCurrentPlaceArea() const;
private:
UPROPERTY()
AActor* CurrentTargetActor;
UPROPERTY()
AActor* CurrentPlaceArea;
};

View File

@ -0,0 +1,43 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "PickAndPlaceUser.generated.h"
// This class does not need to be modified.
UINTERFACE(MinimalAPI)
class UPickAndPlaceUser : public UInterface
{
GENERATED_BODY()
};
/**
*
*/
class LUCKYMUJOCO_API IPickAndPlaceUser
{
GENERATED_BODY()
// Add interface functions to this class. This is the class that will be inherited to implement this interface.
public:
/**
* Set pick and place targets.
* @param PickAndPlaceTarget - The target to pick up.
* @param PickAndPlaceArea - The area to drop the location at.
* @return - True if both targets are valid.
*/
UFUNCTION(BlueprintCallable,BlueprintNativeEvent,Category="PickAndPlaceUser")
bool SetPickAndPlaceTargets(AActor* PickAndPlaceTarget, AActor* PickAndPlaceArea);
/**
* Tell the robot to place the target at the desired location.
* @return - True if both targets are valid.
*/
UFUNCTION(BlueprintCallable,BlueprintNativeEvent,Category="PickAndPlaceUser")
bool PlaceTarget();
};

View File

@ -0,0 +1,36 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "StateTreeTaskBase.h"
#include "StateTreeExecutionContext.h"
#include "Components/LuckyCustomMovementComponent.h"
#include "STT_PickAndPlace.generated.h"
USTRUCT(BlueprintType)
struct FSTT_PickAndPlaceInstanceData
{
GENERATED_BODY()
UPROPERTY()
bool Dummy = false;
};
/**
* Basic pick and place.
*/
USTRUCT(BlueprintType, meta = (DisplayName = "Lucky Pick And Place"))
struct LUCKYMUJOCO_API FSTT_PickAndPlace : public FStateTreeTaskCommonBase
{
GENERATED_BODY()
public:
using FInstanceData = FSTT_PickAndPlaceInstanceData;
virtual const UStruct* GetInstanceDataType() const override {return FInstanceData::StaticStruct();}
virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override;
};

View File

@ -0,0 +1,50 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "AI/PickAndPlaceManager.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "LuckyWorldFunctions.generated.h"
/**
*
*/
UCLASS()
class LUCKYMUJOCO_API ULuckyWorldFunctions : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
/**
* Get the pick and place manager.
* @param WorldContextObject - The world context owner.
* @return - The first pick and place manager.
*/
UFUNCTION(BlueprintCallable,Category = "LuckyWorld|PickAndPlace", meta = (WorldContext = "WorldContextObject"))
static APickAndPlaceManager* GetPickAndPlaceManager(UObject* WorldContextObject);
/**
* Save a render target (texture target from scene capture component 2D) to disk.
* @param RenderTarget - The render target to save to disk.
* @param Filename - The path for the file.
* @param bAsPNG - If true, we write as a png.
* @param bFlipVertically - If true, we will flip the pixels.
* @return - True if saved.
*/
UFUNCTION(BlueprintCallable,Category = "LuckyWorld|Utils|Images")
static bool SaveRenderTargetToDisk(UTextureRenderTarget2D* RenderTarget, const FString& Filename, bool bAsPNG = true, bool bFlipVertically = false);
/**
* Save a texture to disk.
* @param Texture - The texure to save to disk.
* @param Filename - The path for the file.
* @param bAsPNG - If true, we write as a png.
* @param bFlipVertically - If true, we will flip the pixels.
* @return - True if saved.
*/
UFUNCTION(BlueprintCallable,Category = "LuckyWorld|Utils|Images")
static bool SaveTextureToDisk(UTexture2D* Texture, const FString& Filename, bool bAsPNG = true, bool bFlipVertically = true);
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.