diff --git a/content/docs/world/scripting.mdx b/content/docs/world/scripting.mdx
index 185e44a..37f2573 100644
--- a/content/docs/world/scripting.mdx
+++ b/content/docs/world/scripting.mdx
@@ -8,6 +8,13 @@ For reasons, custom code must either be generated by rebuilding the client (i.e.
## How to Add Scripts Via Unity Client Build
+
+
+If you are building a game or application with the framework, and supporting user-generated content (such as scenes, avatars, or props) is not a priority, you may prefer to build your MonoBehaviour scripts natively rather than leveraging Cilbox.
+
+This is because Cilbox is a CIL interpreter, which will incur a significant speed penalty and may support a subset of available language features.
+
+
- Create a canvas object with a button inside it.
- Add a script to the button object. As a simple example, we'll create a script that updates a TMP text object called TestButton.
@@ -158,7 +165,13 @@ You should disable or remove the canvas object from the scene. This is because k
## How to Add Network Syncing Scripts Via Cilbox
-The Cilbox CIL can be used to create scripts that work in runtime. Currently, Cilbox is still quite experimental. The following example shows how to create a script to make a cube rotate using Cilbox.
+Cilbox is a scripting system to act as glue to help provide some minimal game logic, enabling portability of basic behaviours in user-generated content such as props, avatars, and scenes. It can be used to create scripts that work at runtime.
+
+Currently, Cilbox is still very experimental. The following example shows how to create a script to make a cube rotate using Cilbox.
+
+
+Note: Cilbox is especially useful if you are making an application or game that loads user-generated content, and want to support scripting on that user content. It allows shipping scripts as something like DLC alongside your other content, while also providing a more secure sandbox for code to be executed within, preventing scripts with harmful or undesirable behaviours from executing.
+
- Create a cube object and an ObjectRotator component to attach to it. Make sure to add [Cilboxable] above your class.
@@ -208,7 +221,7 @@ Note: If your editor can't detect the Cilbox namespace, you can either create yo

-Here is an additional example using shaders which you can try.
+Below are some additional example scripts you can try out.
``` cs title="NM_Wind "
using UnityEngine;
@@ -235,4 +248,51 @@ public class NM_Wind : MonoBehaviour
Shader.SetGlobalFloat("WIND_SETTINGS_GustWorldScale", 0.0016666667f);
}
}
-```
\ No newline at end of file
+```
+
+```cs title="Gun"
+using UnityEngine;
+using Basis.Scripts.BasisSdk.Interactions;
+using Basis.Scripts.Device_Management.Devices;
+
+[Cilboxable]
+public class Gun : MonoBehaviour
+{
+ private BasisPickupInteractable pickup;
+
+ void Start()
+ {
+ this.pickup = GetComponent();
+ this.pickup.OnInteractStartEvent.AddListener(OnPickup);
+ this.pickup.OnInteractEndEvent.AddListener(OnDrop);
+ this.pickup.OnPickupUse.AddListener(OnUse);
+ }
+
+ private void OnPickup(BasisInput input)
+ {
+ Debug.Log("HoloGun: Picked up!");
+ }
+
+ private void OnDrop(BasisInput input)
+ {
+ Debug.Log("HoloGun: Dropped!");
+ }
+
+ void OnUse(BasisPickUpUseMode mode)
+ {
+ switch (mode)
+ {
+ case BasisPickUpUseMode.OnPickUpUseDown:
+ Debug.Log("HoloGun: Pew Pew!");
+ break;
+ case BasisPickUpUseMode.OnPickUpUseUp:
+ Debug.Log("HoloGun: Pew Pew! (released)");
+ break;
+ }
+ }
+}
+```
+
+
+Instead of BasisNetworkBehaviour, BasisNetworkShim can be inherited from to create networked scripts.
+
\ No newline at end of file