Shababeek Interaction System
May 1, 2026 ยท View on GitHub
A comprehensive Unity package for building advanced VR/AR and 3D interactions with a focus on hand presence, pose constraints, and reactive programming.
Why Choose Shababeek Interactions?
Hand-First Design
- Built around natural hand presence and interactions
- Advanced pose constraint system with smooth transitions
- Support for different kinds of interaction scenarios
- Interaction can be configured on a per-hand basis
Developer Friendly
- ScriptableObject-driven architecture
- Comprehensive editor tools with real-time preview
- UniRx integration for reactive programming
- Clear separation of concerns
- Hand Poses are totally independent of VR SDKs allowing for on non-XR games
Designer Friendly
- Visual editor tools with interactive scene view
- Drag-and-drop sequence creation
- Real-time feedback system configuration
- No coding required for basic experience design
โจ Features
- ๐ฏ Complete Interaction System - Grab, throw, press, switch, rotate, and more
- โ Hand Presence - Realistic hand models with dynamic pose blending
- ๐ฎ Multiple Interactor Types - Trigger-based, raycast, and direct hand interaction
- ๐ฆ Pre-built Components - Buttons, switches, levers, joysticks, drawers, and more
- ๐จ Feedback System - Haptic, audio, and visual feedback out of the box
- ๐ง Designer-Friendly - Inspector-focused workflow with tooltips and validation
- ๐ Socket System - Object placement and snapping
- ๐ Reactive Architecture - Powered by the ReactiveVars companion package
๐ Quick Start
Installation
Via Package Manager (Recommended)
1. Open Package Manager (Window > Package Manager)
2. Click + > Add package from git URL
3. Enter: https://github.com/Shababeek/Interactions.git
Manual Installation
1. Download the latest release
2. Extract to your project's Assets folder
3. Install dependencies (Unity Input System)
Your First interactable Object
1. Create a GameObject (e.g., Cube)
2. Right click in the hierarchy -> Shababeek-> Convert To Grabbable
3. Ensure it has a Collider
4. Press Play and grab it with your VR controllers!
๐ Full guide: 10-Minute Quick Start
๐ Documentation
๐ Getting Started
- Quick Start Guide - 10-minute guide from install to first interaction
- Component Overview - Catalog of all components
- Core Concepts - System architecture and design principles
๐ Component Manuals
- Grabable - Pick up and throw objects
- Switch - Toggle switches and buttons
- Hand System - Hand models and pose configuration
- Feedback System - Haptics, audio, and visuals
- More components...
๐ ๏ธ Advanced Topics
- Custom Interactables - Create your own components
- Hand Poses - Import and configure hands
- Interaction Drivers - Connect interactions to reactive variables
- Interaction Sequences - Tutorials using interaction-specific actions
- Architecture Map - Runtime flow and extension points
๐ป For Developers
- Scripting Reference - Complete API documentation
- Component Reference - All components indexed
๐ฏ Core Components
Interactables
Make objects interactive in your VR scene:
| Component | Description | Use Case |
|---|---|---|
| Grabable | Pick up and throw objects | Tools, weapons, props |
| Switch | Toggle between states | Light switches, levers |
| VRButton | Pressable button | Control panels, keypads |
| Joystick | Virtual joystick control | Vehicle controls |
| Lever | Pull/push interaction | Gear shifts, throttles |
| Wheel | Rotatable wheel | Valves, steering wheels |
| Drawer | Sliding compartment | Desks, toolboxes |
| Slider | Linear stepped control | Volume rails, detented faders |
Interactors
Detect and manage interactions:
| Component | Description | Use Case |
|---|---|---|
| Hand | Full VR hand with poses | Main player hand |
| TriggerInteractor | Proximity detection | Close-range grabbing |
| RaycastInteractor | Ray-based selection | Distant object selection |
Systems
Additional functionality:
| System | Description |
|---|---|
| Feedback System | Haptic, audio, and visual feedback |
| Sockets | Object placement and snapping |
๐ก Examples
Basic Grabbable Object
// 1. Create a Cube
// 2. Add Grabable component
// 3. It automatically adds:
// - PoseConstrainer (hand positioning)
// - Detects Rigidbody (for physics)
// 4. Done! Grab it in VR
Button with Sound
// 1. Add VRButton component
// 2. Add AudioSource component
// 3. Wire OnButtonDown event to AudioSource.Play()
// 4. Press button in VR to hear sound
Flashlight Tool
// 1. Create flashlight model with Light component
// 2. Add Grabable component
// 3. Wire OnUseStarted event to Light.enabled toggle
// 4. Grab flashlight and press Trigger to turn on/off
๐ More examples: Component Manuals
๐จ Features Showcase
Hand Presence
- Multiple hand models (available in asset store only)
- Dynamic pose blending based on object type
- Custom pose creation system
- Finger-level control
Physics Integration
- Realistic grabbing with Rigidbody
- Throw mechanics with velocity calculation
- Collision-based interaction detection
- Socket snapping with constraints
Event System
- UnityEvent integration for designer workflows
- UniRx observables for reactive programming
- Scriptable events for decoupled architecture
- Built-in lifecycle events (hover, select, activate)
๐ง System Requirements
- Unity Version: 6.0 or newer (2021.3 LTS+ supported)
- Dependencies:
- Unity Input System (1.0.0+)
- UniRx (included)
- com.shababeek.reactivevars (required for data flow, events, and sequencing)
- Platforms: PC VR, Quest, PSVR, and all Unity-supported VR platforms
- XR Plugin: OpenXR recommended, Oculus works but not fully tested
๐ฆ Package Structure
Shababeek Interactions/
โโโ Scripts/
โ โโโ InteractionSystem/ # Core interaction runtime/editor
โ โโโ SequencingSystem/ # Interaction-specific sequence actions
โโโ ~Documentation/ # Complete documentation
โ โโโ Analysis/ # Architecture overviews
โ โโโ Core/ # Config and core setup docs
โ โโโ GettingStarted/ # Quick start guides
โ โโโ Interactables/ # Component documentation
โ โโโ Interactors/ # Interactor documentation
โ โโโ PoseSystem/ # Pose constrainer docs
โ โโโ ScriptableSystem/ # Interaction drivers docs
โ โโโ SocketSystem/ # Socket system docs
โ โโโ Systems/ # System documentation
โ โโโ Images/ # Documentation images
โโโ EditorResources/ # Editor icons and assets
โโโ Resources/ # Runtime resources
โโโ Plugins/ # Third-party plugins
โโโ Data/ # Configuration data
Note: This package depends on com.shababeek.reactivevars for the Data Flow System (Scriptable Variables, Game Events, and Sequencing System core features). See the ReactiveVars package for complete documentation on those systems.
๐ค Contributing
We welcome contributions! Here's how you can help:
- Documentation - Improve guides and add screenshots
- Bug Reports - Open an issue
- Feature Requests - Share your ideas
- Pull Requests - Submit improvements
For contribution guidelines, please reach out to the team at Ahmadabobakr@gmail.com
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Support
- Documentation: Full Documentation
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: Ahmadabobakr@gmail.com
- Website: ahmadabobakr.github.io
๐งช Documentation Validation
Run link validation from the package root:
npm run docs:check
This checks all markdown files under ~Documentation/ for broken relative links.
๐ Acknowledgments
Created by Ahmad Abo Bakr at Shababeek
Special thanks to all contributors and the Unity VR community.
๐บ๏ธ Roadmap
Interaction System
- Two-handed grab support
- Grab transition smoothing (lerp from world to grab position)
- Distance grab / force pull (gravity gloves style)
- SliderInteractable (linear stepped slider)
- HingeInteractable (physics-driven doors/lids)
- VRButton/Switch unification under InteractableBase lifecycle( will require big change to archticture) so it's low prioirty for now
Hand Presence
- Hand gesture recognition (fist, point, open), while some version of this already exsisit it's really outdated and does not tie to the new binding/sequence system
Editor Tooling
- Visual sequence editor (node-graph or timeline view)
- Feedback preview without Play mode
- Driver setup wizard ( creating a group of variables and wiring them in one go)
- Variable connection visualizer
Architecture
- UniRx to R3 migration (adapter layer for gradual transition is being implemented)
- Extract common driver base class
- Assembly definition restructuring ( move the utilites to a new package)
- Unit test suite
Platform & Distribution
- Unity Asset Store publishing
- Video tutorial series
- More example scenes
- Multiplayer / variable networking support
Ready to get started? โ Quick Start Guide
Need help? โ Documentation
Want to contribute? โ Contact the Team
Made with โค๏ธ by the Shababeek team
โญ Star us on GitHub | ๐ Read the Docs | ๐ฌ Join Discussion