Important
Gameplay Interaction System
Full Net Prediction
Pairs with the Vigil Focusing System
Pairs with Doors - Coming Soon
And its FREE!
Warning
Optionally download the pre-compiled binaries here
Install this as a project plugin, not an engine plugin
Tip
Suitable for both singleplayer and multiplayer games
Supports UE5.4+
Caution
Grasp is currently in beta
There are many non-standard setups that have not been fully tested
Grasp has not been tested at scale in production
Feedback is wanted on Grasp's workflow
Grasp is fully net predicted via Gameplay Abilities.
Grasp is very robust, using a data-based workflow.
Grasp uses components for interaction instead of actors, so you can have multiple ways to interact with the same actor.
These components don't generate overlap events and can be used to produce the physical representation, greatly reducing common performance pitfalls with interaction systems.
Grasp has some serious visualization tools and logging, so you never have to guess what your parameters are really doing, or what is going on under the hood.
Highly optimized asynchronous scanning for components we can interact with. Intelligent granting and removal of abilities. Abilities are granted once per CD0 only. You can pre-grant common abilities.
Built with Focus Targeting and UI in mind.
Build your interaction abilities rapidly with useful functions to save you time.
- Add UI helper function
UGraspStatics::GetNormalizedDistanceBetweenInteractAndHighlight()
- Fixed graspable static and skeletal meshes defaulting to hidden in game
- Add optional InputTag to pass along with ability spec on activation
- Resolves Lyra tag-based input systems and "wait for input" tasks
- Change Failsafe Timer to Weak Lambda because OnDestroy not being called at correct point in lifecycle after UEngine::Browse (
open map)
- Fix
UGraspScanTask::GetOwnerNetMode()checks
- Replace native ptr with TObjectPtr
- Due to Engine bug where Targeting Subsystem loses all requests when another client joins, a failsafe has been added
- Debug logging now identifies which client is logging
- Fix struct not initializing properties in ctor
- Added delegates for ability pre/post clear/grant and other events that were previously available only as virtual functions
- Added ability locking system - locked abilities do not get automatically cleared until unlocked, see
UGraspStatics::AddGraspAbilityLock()andRemoveGraspAbilityLock() - Can manually clear abilities, see
ClearGrantedGameplayAbility(),ClearGrantedGameplayAbilityForComponent() - AbilitySpec is now cached to
FGraspAbilityData - Improved user setup error reporting if you forgot to call
InitializeGrasp()
Do not remain on 1.0.2 -- UHT causing issues with graspable components, the changes were band-aiding this unnecessarily and a lot have been rolled back
- Fix uht weirdness causing ctor to overwrite post-ctor changes
- Removed notifications, somewhat redundant now that ctor is acting appropriately, and triggering notifications from ctor does not behave as intended
- Improve
CanGraspActivateAbilityandTryActivateGraspAbility- Should not fail silently in cases of user error
- Add parameter tooltips to make input requirements clear
- Fixed bug with
UGraspFilter_Graspable::ShouldFilterTargetusingCastCheckedinstead ofCastcausing crash with null interface (this was a copy/paste accident) - Fixed bug with ctor overwriting settings for graspable components
- Related to using
UGraspStatics::SetupGraspableComponentCollision, has now been dumped in each header - When changing collision profile settings post-component creation, it will no longer get overwritten
- Related to using
- Added
UGraspEditorSettings(UDeveloperSettings) for per-user config- Added
bNotifyOnCollisionChangedthat spawns notification window when auto changing collision properties- Silently changing settings was not ideal
- This is enabled by default, but you can now disable the notification
- Added
- Stopped passing in source object -- breaking prediction
- Use EventData if you require the component we're interacting with (vs getting it from focus targeting)
- In the future the ability to grant multiple unique abilities with source objects may be added
- Initial Release