Class: GrabSystem 
Defined in: packages/core/src/grab/grab-system.ts:51
Manages interactive object grabbing and manipulation for VR/AR experiences.
Remarks 
- Uses the 
@pmndrs/handlelibrary for precise multitouch manipulation. - Automatically creates handle instances for entities with grabbable components.
 - Supports three types of grab interactions: one‑hand, two‑hand, and distance grabbing.
 - Automatically cleans up handle instances when grabbable components are removed.
 
Examples 
// Add to your world to enable grab interactions
world.addSystem(GrabSystem)
// Create a grabbable box
const box = world.createEntity()
box.addComponent(OneHandGrabbable, {})// Create an object that can be scaled with two hands
const sculpture = world.createEntity()
sculpture.addComponent(TwoHandsGrabbable, {
  scaleMin: [0.5, 0.5, 0.5],
  scaleMax: [3, 3, 3]
})See 
Extends 
System<SystemSchema, {distanceGrabbables: {required:Component<{movementMode: {default:string;enum: {MoveAtSource:string;MoveFromTarget:string;MoveTowardsTarget:string;RotateAtSource:string; };type:Enum; };moveSpeed: {default:number;type:Float32; };returnToOrigin: {default:false;type:Boolean; };rotate: {default:true;type:Boolean; };rotateMax: {default: [number,number,number];type:Vec3; };rotateMin: {default: [number,number,number];type:Vec3; };scale: {default:true;type:Boolean; };scaleMax: {default: [number,number,number];type:Vec3; };scaleMin: {default: [number,number,number];type:Vec3; };translate: {default:true;type:Boolean; };translateMax: {default: [number,number,number];type:Vec3; };translateMin: {default: [number,number,number];type:Vec3; }; }>[]; };handles: {required:Component<{instance: {default:any;type:Object; }; }>[]; };oneHandGrabbables: {required:Component<{rotate: {default:true;type:Boolean; };rotateMax: {default: [number,number,number];type:Vec3; };rotateMin: {default: [number,number,number];type:Vec3; };translate: {default:true;type:Boolean; };translateMax: {default: [number,number,number];type:Vec3; };translateMin: {default: [number,number,number];type:Vec3; }; }>[]; };twoHandsGrabbables: {required:Component<{rotate: {default:true;type:Boolean; };rotateMax: {default: [number,number,number];type:Vec3; };rotateMin: {default: [number,number,number];type:Vec3; };scale: {default:true;type:Boolean; };scaleMax: {default: [number,number,number];type:Vec3; };scaleMin: {default: [number,number,number];type:Vec3; };translate: {default:true;type:Boolean; };translateMax: {default: [number,number,number];type:Vec3; };translateMin: {default: [number,number,number];type:Vec3; }; }>[]; }; },this>
Constructors 
Constructor 
new GrabSystem(
_w,_qm,_p):GrabSystem
Defined in: node_modules/.pnpm/elics@3.3.0/node_modules/elics/lib/system.d.ts:73
Parameters 
_w 
_qm 
QueryManager
_p 
number
Returns 
GrabSystem
Inherited from 
createSystem({ oneHandGrabbables: { required: [OneHandGrabbable], }, twoHandsGrabbables: { required: [TwoHandsGrabbable], }, distanceGrabbables: { required: [DistanceGrabbable], }, handles: { required: [Handle], }, }).constructor
Properties 
camera 
readonlycamera:PerspectiveCamera
Defined in: packages/core/src/ecs/system.ts:60
Inherited from 
cleanupFuncs 
readonlycleanupFuncs: () =>void[]
Defined in: packages/core/src/ecs/system.ts:63
Returns 
void
Inherited from 
config 
config:
SystemConfigSignals<S>
Defined in: packages/core/src/ecs/system.ts:48
Inherited from 
createEntity() 
createEntity: () =>
Entity
Defined in: packages/core/src/ecs/system.ts:69
Returns 
Entity
Inherited from 
globals 
globals:
Record<string,any>
Defined in: packages/core/src/ecs/system.ts:53
Inherited from 
input 
readonlyinput:XRInputManager
Defined in: packages/core/src/ecs/system.ts:58
Inherited from 
isPaused 
isPaused:
boolean
Defined in: packages/core/src/ecs/system.ts:47
Inherited from 
player 
readonlyplayer:XROrigin
Defined in: packages/core/src/ecs/system.ts:57
Inherited from 
priority 
priority:
number
Defined in: packages/core/src/ecs/system.ts:52
Inherited from 
queries 
queries:
Record<keyofQ,Query>
Defined in: packages/core/src/ecs/system.ts:49
Inherited from 
queryManager 
queryManager:
QueryManager
Defined in: packages/core/src/ecs/system.ts:51
Inherited from 
renderer 
readonlyrenderer:WebGLRenderer
Defined in: packages/core/src/ecs/system.ts:61
Inherited from 
scene 
readonlyscene:Scene
Defined in: packages/core/src/ecs/system.ts:59
Inherited from 
visibilityState 
readonlyvisibilityState:Signal<VisibilityState>
Defined in: packages/core/src/ecs/system.ts:62
Inherited from 
world 
world:
World
Defined in: packages/core/src/ecs/system.ts:50
Inherited from 
xrFrame 
xrFrame:
XRFrame
Defined in: packages/core/src/ecs/system.ts:55
Inherited from 
xrManager 
xrManager:
WebXRManager
Defined in: packages/core/src/ecs/system.ts:54
Inherited from 
Methods 
init() 
init():
void
Defined in: packages/core/src/grab/grab-system.ts:65
Returns 
void
Overrides 
play() 
play():
void
Defined in: packages/core/src/ecs/system.ts:67
Returns 
void
Inherited from 
stop() 
stop():
void
Defined in: packages/core/src/ecs/system.ts:68
Returns 
void
Inherited from 
update() 
update(
delta):void
Defined in: packages/core/src/grab/grab-system.ts:113
Parameters 
delta 
number
Returns 
void