SDK
The C# types of the NodeWorld SDK packages (com.nodeworld.sdk.base, com.nodeworld.sdk.worlds, com.nodeworld.sdk.avatars): the components you put on worlds and avatars, the publishing tools of the Unity Editor and what the game uses to run them.
Generated from the /// comments of the code, SDK 0.2.0.
global
| Type | Kind | Summary |
|---|---|---|
| HandGripTracker | class | The OpenXR grip pose of the controller in one hand (devicePosition / deviceRotation of the XR controller of that hand). |
| NWAvatar | class | Avatar descriptor for NodeWorld. |
| NWAvatarController | class | Orchestrates the active local NWAvatar and its runtime runtime full-body IK rig. |
| NWAvatarEditor | class | Custom inspector for NWAvatar. |
| NWAvatarMeasurements | struct | Body measurements computed from bone positions at detection time. |
| NWFullBodyAvatarRig | class | Runtime full-body IK rig for the local NodeWorld avatar. |
| NWVisemeMap | class | Result of scanning an avatar for viseme blendshapes. |
NodeWorld.Avatar
| Type | Kind | Summary |
|---|---|---|
| IAvatarViewpointProvider | interface | Gives the world position of an avatar's viewpoint (its eyes). |
| RemoteAvatar | class | Another player's avatar in the world: it follows the poses received from the network and carries their voice and nametag. |
| RemoteNameplate | class | Floats above a remote avatar's head and turns to face the viewer. |
| SyncedBoneLayout | static class | The humanoid bones of a player's pose on the network, in the order of the bone arrays of the protocol (SyncedBones of NodeWorld.Protocol: Hips = 0 ... |
NodeWorld.Avatar.IK
| Type | Kind | Summary |
|---|---|---|
| ArmSettings | class | Settings of one arm: how the hand reaches its target and how the shoulder and elbow follow. |
| BodyPart | class | A part of the body the solver moves: the spine or one limb. |
| BodyPositionOffset | enum | Body parts whose solved position can be offset at runtime (FullBodyVrOffsetModifier, FullBodyVrPoseImpulse). |
| BodyRotationOffset | enum | Body parts whose solved rotation can be offset at runtime. |
| FullBodyVrCalibration | static class | Places the IK targets of the head, hands and feet on the player's trackers and scales the avatar to the player. |
| FullBodyVrCalibrationData | class | The result of a calibration, to apply it again later without the player standing in pose. |
| FullBodyVrCalibrationSettings | class | Settings of a full-body calibration: tracker axes and offsets. |
| FullBodyVrIkComponent | class | Runs the full-body IK solver on an avatar every frame. |
| FullBodyVrMath | static class | Math helpers of the full-body IK. |
| FullBodyVrMovingPlatform | class | Keeps the planted feet of the IK on a moving platform the player stands on (a vehicle, a lift). |
| FullBodyVrOffsetModifier | class | Base of the components that add offsets to the IK's body parts each frame, before it solves. |
| FullBodyVrPoseImpulse | class | Pushes the body of the avatar for a moment, as a hit would, then lets it come back. |
| FullBodyVrRootController | class | Keeps the avatar root under the pelvis target and facing it, once a pelvis tracker is calibrated. |
| FullBodyVrSolver | class | Full-body IK for VR: places the avatar's head, hands, pelvis and feet on the player's headset, controllers and trackers, and steps the feet when no foot is tracked. |
| HumanoidReferences | class | The bones of a humanoid avatar the full-body IK drives, read from its Animator. |
| InterpolationMode | enum | Easing curves of the procedural steps (LocomotionSettings.stepInterpolation). |
| LegSettings | class | Settings of one leg: how the foot reaches its target and how the knee follows. |
| LimbPart | class | An arm or a leg of the solver: three bones (four with a shoulder or toes) reaching for a target. |
| LocomotionSettings | class | Settings of the procedural steps: when the feet step and how, when no foot is tracked. |
| PoseSample | struct | A position and a rotation in world space: a tracked device or a bone. |
| ShoulderRotationMode | enum | How the shoulders follow the hands. |
| SkeletonPart | class | The spine of the solver: pelvis, spine, chest, neck and head, driven by the head and pelvis targets. |
| SpineSettings | class | Settings of the spine: how the head target moves the pelvis, the chest and the neck. |
| VirtualBone | class | A bone of the solver: where it was read from the avatar and where the solver puts it. |
NodeWorld.Avatar.Locomotion
| Type | Kind | Summary |
|---|---|---|
| LocomotionAnimator | class | Plays the locomotion clips on the local humanoid avatar from the velocity of its body: idle when still, walk or run blended by direction and speed, backward being the forward walk in reverse. |
| LocomotionClipSet | class | The humanoid clips the local avatar plays when the player moves, as the locomotion layer of VRChat. |
NodeWorld.Core
| Type | Kind | Summary |
|---|---|---|
| BoneSnapshot | struct | Snapshot of all synced bone world-space transforms. |
| IAvatarService | interface | Loads and shows the avatars: the local player's and those of the other players. |
| INWLogger | interface | The log of the SDK and the game, with a context in front of each line. |
| IStorageService | interface | Saves small data on the device, by key. |
| ITelemetryService | interface | Sends the game's log lines to NodeWorld's API, when telemetry is on. |
| ITokenProvider | interface | Provides access to the current authentication token. |
| IUpdatable | interface | A service ticked by the game's update loop. |
| IWorldService | interface | Loads and unloads the world the player enters. |
| NWLogger | class | Default INWLogger implementation backed by UnityEngine.Debug. |
| Services | static class | The game's service locator: one instance per type. |
| SpawnPointInfo | struct | A spawn point of a world. |
| UpdateTiming | enum | When an IUpdatable ticks. |
| WorldInfo | struct | Describes a world that is currently loaded or being loaded. |
| WorldRefusal | enum | Why the game refused a world's package before using any of its files (nothing of the world was loaded). |
NodeWorld.ECS
| Type | Kind | Summary |
|---|---|---|
| AvatarInterpolationJob | struct | Moves one avatar's root and bones toward their targets. |
| AvatarInterpolationSystem | struct | Moves the other players' avatars toward their last received pose each frame. |
| AvatarPlayerId | struct | The player whose avatar this entity is. |
| AvatarRootCurrent | struct | The interpolated pose of the avatar's root this frame. |
| AvatarRootTarget | struct | The last received pose of the avatar's root. |
| BoneCurrentElement | struct | The interpolated pose of one synced bone this frame. |
| BoneTargetElement | struct | The last received pose of one synced bone. |
| ECSWorldBridge | class | The bridge to the ECS world that interpolates the other players' avatars and lip sync. |
| InterpolationSpeed | struct | How fast the avatar's pose catches up with the received one. |
| RemoteAvatarTag | struct | Marks the entity of another player's avatar. |
| VisemeActiveTag | struct | Marks an avatar's lip sync entity that is active. |
| VisemeConfig | struct | The lip sync settings of an avatar. |
| VisemeLerpJob | struct | Moves one avatar's viseme weights toward their targets. |
| VisemeLerpSystem | struct | Moves the lip sync weights toward their targets each frame. |
| VisemeWeightCurrent | struct | The current weight of one viseme blendshape. |
| VisemeWeightTarget | struct | The weight one viseme blendshape moves toward. |
NodeWorld.SDK.Client.Flux
| Type | Kind | Summary |
|---|---|---|
| FluxObjectState | struct | The transform of a synchronized object, sent by its owner. |
| FluxOwnershipChange | struct | A synchronized object changed owner (0: nobody), with its state at that moment. |
| FluxPlayerData | class | The values a world keeps for the local player between visits (FL# PlayerData), on this client: one small JSON file per world and per NodeWorld account, under the client's persistent data folder. |
| FluxRoomPlayer | struct | Another player of the room, as the scripts see it. |
| FluxScriptEvent | struct | A network event of a FL# script, from a player. |
| FluxScriptState | struct | The synced state of one FL# script (slot: its index among the FL# scripts of the object), from the owner. |
| FluxSpawnRefusals | static class | Why the server refused a spawn of the local player (IFluxRoom.ObjectSpawnRefused). |
| FluxSpawnedObject | struct | A copy of a network template that lives in the room (FL# Networking.Instantiate), as the server told it. |
| FluxWorldRuntime | class | Objects spawned for the room (Networking.Instantiate): copies of the network templates of the world. |
| IFluxLocalPlayer | interface | The local player, as the FL# scripts of the world see it. |
| IFluxRoom | interface | The room of the local player, as the FL# scripts of the world see it: the other players, the master, the server clock, the owners of the synchronized objects, the synced states and network events of the scripts. |
| IFluxVideo | interface | The video players of the client, for the FL# scripts of a world (VideoPlayer). |
| IFluxVideoPlayer | interface | One video player. |
| IFluxVoice | interface | How the local player hears the voices of the others (the client's voice playback). |
| IFluxWorldRuntime | interface | The FL# scripts of the loaded world, run in the client or in Play mode of a world project. |
| PublicSuffixList | class | The Public Suffix List (publicsuffix.org, Mozilla Public License 2.0; the file and its notice are in Resources/NodeWorld/): where the domain of a name starts. |
| WorldNetworkChoice | enum | What the player chose in the window (Ruby: « Au choix dans la fenêtre »). |
| WorldNetworkGate | class | The one door between a world and the Internet on the client: web (HttpClient), WebSocket, images and video of the FL# scripts go through it, never the client's own requests (API, avatars). |
| WorldNetworkRequest | class | A world asks to contact a hostname the player has not answered yet: one request per hostname (every request of the world to it waits for the same answer). |
NodeWorld.SDK.Client.Interaction
| Type | Kind | Summary |
|---|---|---|
| InteractableHighlight | static class | The blue outline of VRChat around what the player can use: an interactable or a pickup of the world, while a ray or a hand of the player hovers it and does not hold it. |
NodeWorld.SDK.Client.PlayMode
| Type | Kind | Summary |
|---|---|---|
| LocalFluxRoom | class | The room of Play mode: the local player alone, without a server. |
| PlayModeBootstrap | class | Play mode of a world project: the player rig at the spawn point and the FL# scripts of the world, compiled by the SDK when Play started. |
| PlayModeRemoteAvatarDriver | class | Shows the simulated players of Play mode with the default avatar. |
| PlayModeRigManager | class | The player of a world's Play mode: the rig of the client (SDKConfig.XRRigPrefab) with the default avatar, driven by the headset, or without one (or with NWWorldRef.ForceDesktopInPlayMode) by the desktop controls of th… |
| WorldPlaySession | class | A Play session of a world scene in the SDK editor. |
NodeWorld.SDK.Client.Video
| Type | Kind | Summary |
|---|---|---|
| VlcVideo | class | The video players of the FL# scripts (VideoPlayer), in the NodeWorld client and in the Play mode of a world project: libVLC 3 (LGPL), loaded on the first player; a page of a video site is resolved to its media by yt-dlp. |
NodeWorld.SDK.Client.XR
| Type | Kind | Summary |
|---|---|---|
| ClientKeys | static class | The keys the application keeps for itself: the worlds never see them (plan Flux B3, « Le bouton du menu n'est jamais transmis aux scripts »). |
| ClientUi | static class | Where the client's interface is drawn, above the world (plan Flux B3, « L'UI du client s'affiche au-dessus du monde »): in VR its canvases are on a layer of their own, drawn by the player's camera after the world and… |
| DesktopControls | class | Keyboard and mouse controls without a headset (no-VR mode of the client, and the Play mode of a world), with the keys of VRChat desktop (docs.vrchat.com/docs/keyboard-and-mouse). |
| DesktopPointerKey | class | Tab on desktop frees the mouse to point and click at things (client and Play mode): a short press toggles it, holding the key keeps it free while held. |
| DesktopShortcuts | static class | The desktop keys that ask something of the application around the player (IDesktopControlsHost): V mutes the mic or makes it speak again, Shift+R asks to respawn, P takes the camera out or puts it away. |
| IDesktopControlsHost | interface | What the desktop controls ask of the application around the player: the client, or the Play mode of a world. |
| NWFarInteractionCaster | class | The far ray of the player's Near-Far interactors, as the interaction ray of VRChat: it reaches an object of the world through its trigger colliders too (the zones of the crêpe stand, the seats), and a trigger that bel… |
| NWPlayerControls | class | What the world may do to the local player's locomotion (FL# scripts: Player.walkSpeed, gravityStrength, velocity, immobilized...), on the player rig (VRPlayerController). |
| TypingGate | static class | The one gate of the physical keyboard (client and Play mode). |
| VRPlayerController | class | The local player's rig: the XR origin, its character controller and gravity, its avatar, seated mode, freezing, teleports and respawn. |
| WorldScreenGuard | static class | What a world may not do to the player's view (plan Flux B3, « L'UI du client s'affiche au-dessus du monde »), held at every frame after everything the world runs (its FL# scripts, animators, UI events) and before the… |
NodeWorld.SDK.ContentAllowlist
| Type | Kind | Summary |
|---|---|---|
| ContentCheckResult | class | The result of checking a world bundle: what is not allowed, and the time it took. |
| ContentFinding | class | One thing of a world bundle that is not allowed, and so is removed from the bundle the players load (« Charger sans ce composant »). |
| ContentFindingKind | enum | What a finding of the content check removes from a world bundle. |
| WorldContentAllowlist | static class | What a world bundle may hold: the Unity classes and scripts allowed on its objects, each with its reason, and the methods its UnityEvents may call. |
| WorldContentCheck | static class | Reads a world bundle with AssetsTools.NET and checks it against WorldContentAllowlist: the types of each serialized file (Unity class ids; scripts by the assembly, namespace and class of their MonoScript), the calls w… |
NodeWorld.SDK.Editor
| Type | Kind | Summary |
|---|---|---|
| AvatarBuildPipeline | class | Validates an avatar and builds its asset bundles for each platform, with the manifest and the zip uploaded on the website. |
| AvatarPublisherSettings | class | The settings of the Avatar Publisher, an asset of the project. |
| AvatarPublisherWindow | class | The Avatar Publisher window (NodeWorld, Avatar Publisher): validates an avatar and builds it for each platform. |
| BuildPipelineBase | class | Shared build pipeline infrastructure for avatar and world publishers. |
| CreatorKeyStore | class | Where the creator's key lives on this computer: one plain PEM file in the user's profile, outside every project, so that it never goes into a git repository. |
| MipmapStreamingValidator | static class | Checks that the textures of a world or an avatar have mipmaps and mipmap streaming, as the game needs on every platform, and fixes them. |
| PlayModeWorldMenu | static class | Editor helpers for quickly adding a NodeWorld play-mode root to the active scene. |
| PublisherWindowBase | class | Base of the World and Avatar Publisher windows: tabs, a settings asset saved when it changes, output folder and platform fields, messages. |
| SignedPackage | static class | The signed part of a world's package: the file list of manifest.json, and manifest.sig next to it. |
| WorldBuildPipeline | class | Build pipeline for packaging a scene as a NodeWorld world bundle. |
| WorldContentReport | static class | The content check of a world at publication: the bundle each platform has just built goes through the players' own check (WorldContentCheck, same code, same verdict), and the creator sees what the players' games will… |
| WorldPublisherWindow | class | Editor window for building the current scene as a NodeWorld world bundle. |
NodeWorld.SDK.PlatformSwitch
| Type | Kind | Summary |
|---|---|---|
| AnimatorOverride | class | Animator: enabled, controller and culling mode per platform. |
| AudioSourceOverride | class | Audio Source: enabled, clip, volume and spatial blend per platform. |
| BehaviourOverride | class | Any other component (Behaviour): enabled per platform. |
| CameraOverride | class | Camera: enabled, field of view, clip planes and background colour per platform. |
| ColliderOverride | class | Collider (any kind): enabled and trigger per platform. |
| GameObjectOverride | class | GameObject: active, tag and layer per platform. |
| LODGroupOverride | class | LOD Group: enabled and size per platform. |
| LightOverride | class | Light: enabled, type, colour, intensity, shadows and render mode per platform. |
| MaterialOverride | class | Material: shader, main colour and GPU instancing per platform. |
| MeshColliderOverride | class | Mesh Collider: enabled, convex and mesh per platform. |
| MeshFilterOverride | class | Mesh Filter: the mesh per platform. |
| NWPlatform | enum | Simple enum so the runtime types never reference UnityEditor.BuildTarget. |
| NWPlatformSwitch | class | NodeWorld Platform Switch — one per scene. |
| PlatformAnimatorCullingMode | class | A AnimatorCullingMode per platform (serializable). |
| PlatformAudioClip | class | A AudioClip per platform (serializable). |
| PlatformBool | class | A bool per platform (serializable). |
| PlatformColor | class | A Color per platform (serializable). |
| PlatformField<T> | class | A value for desktop PC (Windows, Linux) and a value for Android (Quest). |
| PlatformFloat | class | A float per platform (serializable). |
| PlatformInt | class | A int per platform (serializable). |
| PlatformLightProbeUsage | class | A LightProbeUsage per platform (serializable). |
| PlatformLightRenderMode | class | A LightRenderMode per platform (serializable). |
| PlatformLightShadows | class | A LightShadows per platform (serializable). |
| PlatformLightType | class | A LightType per platform (serializable). |
| PlatformMaterial | class | A Material per platform (serializable). |
| PlatformMesh | class | A Mesh per platform (serializable). |
| PlatformOverrideBase | class | An override of the Platform Switch: the values of one object, component or asset for desktop PC and for Android (Quest), applied when the build target changes. |
| PlatformOverrideRegistry | static class | Finds the override type that fits an object, component or asset (exact types first, then Renderer, Collider and Behaviour for their subclasses). |
| PlatformQuaternion | class | A Quaternion per platform (serializable). |
| PlatformReflectionProbeUsage | class | A ReflectionProbeUsage per platform (serializable). |
| PlatformRenderTexture | class | A RenderTexture per platform (serializable). |
| PlatformRuntimeAnimatorController | class | A RuntimeAnimatorController per platform (serializable). |
| PlatformShader | class | A Shader per platform (serializable). |
| PlatformShadowCastingMode | class | A ShadowCastingMode per platform (serializable). |
| PlatformSprite | class | A Sprite per platform (serializable). |
| PlatformString | class | A string per platform (serializable). |
| PlatformTexture | class | A Texture per platform (serializable). |
| PlatformTransform | class | A Transform per platform (serializable). |
| PlatformVector3 | class | A Vector3 per platform (serializable). |
| ReflectionProbeOverride | class | Reflection Probe: enabled, resolution and intensity per platform. |
| RendererOverride | class | Renderer: enabled, shadows, probes and materials per platform. |
| SkinnedMeshRendererOverride | class | Skinned Mesh Renderer: enabled, mesh, shadows, probes and materials per platform. |
| TransformOverride | class | Transform: local position, rotation and scale per platform. |
NodeWorld.SDK.PlatformSwitch.Editor
| Type | Kind | Summary |
|---|---|---|
| NWPlatformSwitchEditor | class | The inspector of the Platform Switch component: the same table as the Platform Switch window. |
| NWPlatformSwitchListener | class | Auto-applies overrides when the build target changes or a scene is opened. |
| NWPlatformSwitchWindow | class | Editor window for the scene's single NWPlatformSwitch. |
| PlatformHelper | static class | Converts between UnityEditor.BuildTarget and NWPlatform. |
| PlatformSwitchGUI | static class | Shared drawing routines used by both the inspector and the window. |
NodeWorld.SDK.Shared
| Type | Kind | Summary |
|---|---|---|
| CatalogImageMetadata | class | A picture of the server catalog: its file, its hash and its type. |
| CatalogImageProcessor | static class | Reads the pictures the server shows in the catalog and computes their hash. |
| CreatorFingerprint | static class | The fingerprint of a creator's public key: how players tell two creators apart (they see no name). |
| CreatorKey | class | A creator's key: the RSA key (3072 bits, RSA-SHA256 PKCS#1) the SDK makes at the creator's first build and signs each world's manifest with. |
| FluxBehaviour | class | A FL# script of the world on this GameObject: the class (Namespace.Name of a FluxScript of the world), the values of its public fields, and the network id of the object when its scripts synchronize it (Networking.Sync… |
| FluxFieldKind | enum | The kind of value of a field of a FL# script. |
| FluxFieldValue | class | The value of one public field of a FL# script, as the scene sets it before Awake. |
| FluxSharpPackageValidator | static class | Checks the FL# part of a world package before the game or the server runs it: manifest fields and native module header. |
| IPlayerController | interface | The local player's body as the rest of the game sees it: where it is, how it moves, teleports and freezing. |
| IPlayerInfo | interface | A player of the room, as the world sees it. |
| IServerAdmin | interface | What a server's administration can do to its players. |
| NWBakedLighting | class | The baked lightmaps of a world scene, applied by the scene itself when it loads (client, Play mode): its textures join LightmapSettings.lightmaps (an entry already there with the same textures is shared, a freed entry… |
| NWWorldConfig | class | The settings of a world, an asset next to its scene: identity, FL# scripts, Play mode player and platforms. |
| NWWorldRef | class | The NW World component: makes a scene a world, with its config, spawn point and respawn height. |
| NetIdRegistry | class | Gives the synchronized objects of a world short network IDs in place of their object IDs. |
| NetworkTemplate | class | Marks an object of the world as a network template: FL# scripts spawn copies of it for the whole room with Networking.Instantiate. |
| PlayerLayers | static class | The layers of the players' avatars, the same in the client and in every world project (TagManager): the avatar of the local player is on LocalPlayer, the others' on RemotePlayer. |
| SDKConfig | class | The SDK's own settings: the prefabs Play mode uses. |
| WorldManifest | class | The manifest.json of a published world: its format version, identity, creator's public key, FL# module and every file of the package with its size and SHA-256. |
| WorldManifestFile | class | One file of a world's package, as the creator signed it. |
| WorldManifestIntermediateArtifacts | class | The WebAssembly module of a world's scripts, before it is compiled for each platform. |
| WorldManifestMedia | class | Media of a published world (pictures are given on the website). |
| WorldManifestPlatform | class | The files of a world for one platform (their sizes and SHA-256 are in WorldManifest.files). |
| WorldManifestSourceArtifacts | class | The FL# source files of a world. |
| WorldPackageCheck | static class | The checks the game makes on a world's package before using any of its files, in this order: the format version (ReadManifest), the creator's signature of the manifest (VerifySignature), then the size and SHA-256 of e… |
| WorldPackageRejectedException | class | A world's package refused by WorldPackageCheck: the reason the player is told, and the detail for the logs. |
| WorldPackageSignature | static class | The signature of a world's package: manifest.sig holds the creator's RSA-SHA256 (PKCS#1) signature of the exact bytes of manifest.json, which lists every file of the package with its size and SHA-256. |
NodeWorld.SDK.Shared.PlayMode
| Type | Kind | Summary |
|---|---|---|
| IPlayModeRemoteAvatarDriver | interface | Shows the simulated players of Play mode. |
| SimulatedPlayer | class | A player of Play mode: the local one, or a simulated other player. |
| SimulatedPlayerManager | class | The players of a world in Play mode: the local player and simulated other players, to test a world alone. |
