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.

Unity Version License


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

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

๐Ÿ“˜ Component Manuals

๐Ÿ› ๏ธ Advanced Topics

๐Ÿ’ป For Developers


๐ŸŽฏ Core Components

Interactables

Make objects interactive in your VR scene:

ComponentDescriptionUse Case
GrabablePick up and throw objectsTools, weapons, props
SwitchToggle between statesLight switches, levers
VRButtonPressable buttonControl panels, keypads
JoystickVirtual joystick controlVehicle controls
LeverPull/push interactionGear shifts, throttles
WheelRotatable wheelValves, steering wheels
DrawerSliding compartmentDesks, toolboxes
SliderLinear stepped controlVolume rails, detented faders

Interactors

Detect and manage interactions:

ComponentDescriptionUse Case
HandFull VR hand with posesMain player hand
TriggerInteractorProximity detectionClose-range grabbing
RaycastInteractorRay-based selectionDistant object selection

Systems

Additional functionality:

SystemDescription
Feedback SystemHaptic, audio, and visual feedback
SocketsObject 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:

  1. Documentation - Improve guides and add screenshots
  2. Bug Reports - Open an issue
  3. Feature Requests - Share your ideas
  4. 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 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