Scripts
In-alpha
Scripting Interface
To open the in world scripting window, right click on a model to inspect it and click script. Save your scripts with cmd + s
or ctrl + s
depending on your OS.
World Hierarchy
Worlds are made up of the following hierarchy:
Worlds contain: ββ Entities which include: ββ Players which contain: | ββ Nodes (e.g. avatar, joint) ββ Apps which contain: ββ Nodes (e.g. mesh, collider, rigidbody)
Certain entity
and node
attributes within a world can be accesed from the global world API:
Global Entities
Apps run inside their own secure environment, which allow apps built by many different authors to co-exist in a real-time digital world.
Just as websites run inside a DOM-based environment that provides browser APIs via globals, apps are provided with specific APIs for the global app and player entities:
Nodes
Apps are made up of a hierarchy of nodes that you can view and modify within the app runtime using scripts.
Nodes contain certain default attributes that are inherited by all other nodes such as node.position
or node.scale
. Information on the standard node attributes can be found in Node
Other node attributes are based on common standards in Three.js with more information found externally below:
Entity Nodes
When a model is added to a scene, a group node is created containing a collection of nodes which mirrors your gltf model hierarchy. It is important to be mindful of these naming conventions when working on a model in software like Blender so you can access these mesh nodes like:
app.get(<mesh-node-name>)
If you are importing a model from someplace like Sketchfab and you donβt know the root model name, you can return it with const id = app.id
. You can then find the idβs of sub meshes by traversing the node hierarchy.
Creating Nodes
Some nodes can/need to be created using app.create('<node-name>')
. Information on using each node type and thier attributes can be found below:
Model
Interaction
UI
Environment
Generic
Player Entity
Some nodes are specific to the player
entity:
Lifecycle
TODO: explain the app lifecycle across client and server