# Adding grabable objects to a location

You can add objects to your scene that users on VR devices can pick up and interact with. For example, you could add coffee cup props to a café scene, or throwable balls for a carnival game. We refer to these as network objects, because the object's position and rotation is synchronized across the network. This ensures that when one user in a Session grabs the object, all other users see it's updated position and rotation.

<figure><img src="https://2640392766-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5yxYHsXtlAaoMUrDWhLm%2Fuploads%2Fgit-blob-ad3b947142b54987925bf2f4accdc4491385331f%2Fgrabbable_static.png?alt=media" alt=""><figcaption><p>Example grabbable objects for a carnival game</p></figcaption></figure>

For each individual network object, use the hierarchy shown in the following diagram.

* In the parent game object (*NetworkObject\_1* in this example), add an `Engage_Create Network Object From Scene Object` script component. You must use a scale of (1, 1, 1) for the parent game object.
* Add the 3D model that you want to use for the network object as a child (*NetworkObject\_1\_geometry* in this example).

<figure><img src="https://2640392766-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5yxYHsXtlAaoMUrDWhLm%2Fuploads%2Fgit-blob-617af20b67c86590271625918df16981c12e2c5c%2Fgrabbable_object_hier.png?alt=media" alt=""><figcaption><p>Example hierarchy for a network object</p></figcaption></figure>

{% hint style="warning" %}
Ensure that the child object has a Collider component.
{% endhint %}

{% hint style="info" %}
You may want to include a method to reset the location of your network objects. For more information see [resetting-network-objects-with-a-button](https://docs.engagevr.io/developer/creating-locations/adding-grabable-objects-to-a-location/resetting-network-objects-with-a-button "mention") and [resetting-network-objects-when-out-of-bounds](https://docs.engagevr.io/developer/creating-locations/adding-grabable-objects-to-a-location/resetting-network-objects-when-out-of-bounds "mention").
{% endhint %}

## Network object from scene object: parameters

The parameters that you can set in the `Engage_Create Network Object From Scene Object` script are described in the following table.

<table><thead><tr><th width="245">Parameter</th><th>Description</th></tr></thead><tbody><tr><td>Very Unique Object Name</td><td><strong>Required</strong><br><br>Enter a name that is unique in the scene.</td></tr><tr><td>Gravity Enabled</td><td>If selected, the network object responds to gravity and falls to the first collidable surface when not held.</td></tr><tr><td>Always Kinematic</td><td>If selected, the network object is not affected by physics. When not held, the object will remain floating at the position where it was left. For more information, refer to <a href="https://docs.unity3d.com/2021.3/Documentation/Manual/RigidbodiesOverview.html">Introduction to rigid body physics</a> in the Unity documentation.</td></tr><tr><td>Optional String for Games</td><td>String that can be applied and used for interactive games</td></tr><tr><td>Dont Change Tag</td><td>When the network object is created, a <code>Bones</code> tag is applied to help the application manage the object. If this option is selected, that tag is not applied.</td></tr><tr><td>Allow Self Collision</td><td>If selected, the object will collide with other network objects.</td></tr><tr><td>Allow Recording</td><td>If selected, when a user creates a recording in the ENGAGE application, the motion of the network object will be included in that recording.</td></tr><tr><td>Dont Change Layer</td><td><strong>Caution. Advanced usage only.</strong><br><br>When the network object is created, it is assigned to a layer that helps the application manage the object. If this option is selected, the object is not moved to that layer.</td></tr><tr><td>Single User No Sync</td><td><strong>Caution. Advanced usage only.</strong><br><br>If selected, the object's position is not synchronized between users in a Session. Each user will see their own, independent object.</td></tr><tr><td>On Owner Changed is Owner</td><td><strong>Caution. Advanced usage only.</strong><br><br>You can define methods to call when the object's owner changes. Network objects are owned by the user that grabs them. A Boolean parameter is passed to the methods, which is <code>true</code> if the local user is the owner.</td></tr></tbody></table>
