Component:Grabbable: Difference between revisions

From Resonite Wiki
m I promise I'll do more than just fix spelling errors this one is just driving me mad
Added note about driving scale of grabbable objects
Line 6: Line 6:
== Introduction ==
== Introduction ==
{{Quotation|Grabbable is a complicated thing|AlexFromAlaska}}
{{Quotation|Grabbable is a complicated thing|AlexFromAlaska}}
The '''Grabbable''' component allows you to grab any slot it is attached to, provided it has some type of [[Collider]]
The '''Grabbable''' component allows you to grab any slot it is attached to, provided it has some type of [[Collider]].


== Usage ==
== Usage ==
Line 37: Line 37:
#If an [[:Category:GrabbableExtensions|Grabbable Extension]] exists above this component in the hierarchy, and it is within the <code>MaxDepth</code> specified in the block, the slot will be parented to [[Local User Space]]
#If an [[:Category:GrabbableExtensions|Grabbable Extension]] exists above this component in the hierarchy, and it is within the <code>MaxDepth</code> specified in the block, the slot will be parented to [[Local User Space]]
#Otherwise, the slot is parented to root.
#Otherwise, the slot is parented to root.
----You can drive the scale of a Grabbable object if the <code>Scalable</code> boolean is false.


== Examples ==
== Examples ==

Revision as of 20:43, 12 January 2024

This article or section is a Stub. You can help the Resonite Wiki by expanding it.


Component image 
Grabbable component as seen in the Scene Inspector

Introduction

Grabbable is a complicated thing

— AlexFromAlaska

The Grabbable component allows you to grab any slot it is attached to, provided it has some type of Collider.

Usage

Fields
Name Type Description
persistent Bool Determines whether or not this item will be saved to the server.
UpdateOrder Int Controls the order in which this component is updated.
Enabled Bool Controls whether or not this component is enabled.
ReparentOnRelease Bool The slot is reparented to the value of _lastParent, instead of root when dropped *
PreserveUserSpace Bool The slot is reparented to Local User Space *
DestroyOnRelease Bool The slot this component is attached to is destroyed upon release
GrabPriority Int When attempting to grab multiple objects at once, only those with the highest grab priority are grabbed.
GrabPriorityWhenGrabbed Int
CustomCanGrabCheck GrabCheck Not Usable inside Resonite
EditModeOnly Bool Determines if this grabbable is effective only in Edit Mode
AllowSteal Bool Other users can grab the slot this component is attached to.
DropOnDisable Bool The parent slot will be dropped when this component is disabled.
ActiveUserFilter ActiveUserHandling
OnlyUsers UserRef A list of users that are allowed to grab this slot.
Scalable Bool The parent slot can be scaled
Receivable Bool The parent slot can be dropped onto a GrabbableReceiverSurface
AllowOnlyPhysicalGrab Bool Only allow grab an object with a physical interaction - remote grabs are not allowed
_grabber Grabber Automatically Assigned
_lastParent Slot Automatically Assigned
_lastParentIsUserSpace Bool Automatically Assigned
__legacyActiveUserRootOnly Bool Automatically Assigned

Behavior

The interaction between ReparentOnRelease, PreserveUserSpace and any Grabbable Extensions, such as GrabbableReparentBlock, is somewhat complex.

When released, the following will be evaluated, in order:

  1. If ReparentOnRelease is true, the slot will be parented to the value in _lastParent
  2. If PreserveUserSpace and _lastParentIsUserSpace is true, the slot will be parented to Local User Space
  3. If an Grabbable Extension exists above this component in the hierarchy, and it is within the MaxDepth specified in the block, the slot will be parented to Local User Space
  4. Otherwise, the slot is parented to root.

You can drive the scale of a Grabbable object if the Scalable boolean is false.

Examples

This article or section is a Stub. You can help the Resonite Wiki by expanding it.