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
add template
 
(6 intermediate revisions by 4 users not shown)
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 13: Line 13:
|PreserveUserSpace|Bool| The slot is reparented to [[Local User Space]] <b>{{asterisk}}</b>
|PreserveUserSpace|Bool| The slot is reparented to [[Local User Space]] <b>{{asterisk}}</b>
|DestroyOnRelease|Bool| The slot this component is attached to is destroyed upon release
|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.
|GrabPriority|Int| {{Template:Grab Priority}}
|GrabPriorityWhenGrabbed|Int|  
|GrabPriorityWhenGrabbed|'''[[Type:Nullable`1|Nullable`1]]&lt;[[Type:Int|Int]]&gt;'''|TypeAdv4=true|
|CustomCanGrabCheck|GrabCheck| ''Not Usable inside Resonite''
|CustomCanGrabCheck|{{RootFieldType|SyncDelegate`1|[[Type:GrabCheck|GrabCheck]]}}|TypeAdv5=true| ''Not Usable inside Resonite'' Requires a mod for interacting with [[Sync Delegates]]
|EditModeOnly|Bool| Determines if this grabbable is effective only in [[Edit Mode]]
|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.
|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.
|DropOnDisable|Bool| The parent slot will be dropped when this component is disabled.
|ActiveUserFilter|ActiveUserHandling|  
|ActiveUserFilter|ActiveUserHandling|
|OnlyUsers|UserRef| A list of users that are allowed to grab this slot.
|OnlyUsers|{{RootFieldType|SyncList`1|[[Type:UserRef|UserRef]]}}|TypeAdv10=true| A list of users that are allowed to grab this slot.
|Scalable|Bool| The parent slot can be scaled
|Scalable|Bool| {{Template:Scalable Grabber Description}}
|Receivable|Bool| The parent slot can be dropped onto a [[GrabbableReceiverSurface (Component)|GrabbableReceiverSurface]]
|Receivable|Bool| {{Template:Receivable Grabber Description}}
|AllowOnlyPhysicalGrab|Bool| Only allow grab an object with a physical interaction - remote grabs are not allowed
|AllowOnlyPhysicalGrab|Bool| Only allow grab an object with a physical interaction - remote grabs are not allowed
|_grabber|Grabber| ''Automatically Assigned''
|_grabber|'''[[Component:Grabber|Grabber]]'''|TypeAdv14=true| ''Automatically Assigned''
|_lastParent|Slot| ''Automatically Assigned''
|_lastParent|Slot| ''Automatically Assigned''
|_lastParentIsUserSpace|Bool| ''Automatically Assigned''
|_lastParentIsUserSpace|Bool| ''Automatically Assigned''
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 ==
{{stub}}
{{stub}}


[[Category:Components|Grabbable (Component)]]
[[Category:Components:Transform:Interaction{{#translation:}}|Grabbable]]
[[Category:Components:Transform:Interaction|Grabbable (Component)]]
[[Category:Components{{#translation:}}|Grabbable]]

Latest revision as of 22:16, 3 March 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 Determines what gets grabbed if several grabbable objects are touching someone's grab sphere. The IGrabbable with the highest priority will be grabbed first. If the highest priority ties with another IGrabbable, it will grab both of those and ignore any lower priority IGrabbables.
GrabPriorityWhenGrabbed Nullable`1<Int>
CustomCanGrabCheck GrabCheck Not Usable inside Resonite Requires a mod for interacting with Sync Delegates
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 list of UserRef A list of users that are allowed to grab this slot.
Scalable Bool Scalable determines if the grabbable's slot can be scaled.
Receivable Bool Receivable determines if a grabbable can be dropped onto a GrabbableReceiverSurface when let go of. The receivable has to be close enough for the receiver to receive it.
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.