▼NKanda | |
▼NPlayers | |
▼NAvatar | |
►NAuthoring | |
CAvatarPartSpawnerAuthoring | |
COpenXrControllerAuthoring | High level authoring script to setup OpenXr button transforms and setup press positions and rotations |
►NComponents | |
CAvatarPartSpawner | Spawner component for Avatar Part, keeping the prefab in PrefabEntity so that it can be spawned in AvatarSpawnClientSystem |
COpenXrButtonPositions | Cache Primary and Secondary buttons default positions and press positions to be used to visualize button pressed |
COpenXrControllerEntities | Collects OpenXr Controller button entities for visualizing button pressed state |
COpenXrCursorAnimator | OpenXr Cursor Animation configurations |
COpenXrGripTransforms | Cache Grip's default position and rotation and press position and rotation to be used to visualize button pressed |
COpenXrTriggerTransforms | Cache Trigger's default position and rotation and press position and rotation to be used to visualize button pressed |
►NHands | |
►NAuthoring | |
CHandVisualAuthoring | Authoring component to set up ghostly visual hands for the player controllers |
►NComponents | |
CHandAnimatorRef | A managed component that holds a reference to the animator of a hand prefab |
CHandVisualPrefab | A component that holds a reference to a hand prefab and its offset from the controller it should follow |
►NSystems | |
CLocalHandAnimateClientSystem | Drives the animations and tracking of the blue hand prefabs for the player controllers |
CLocalHandSpawnClientSystem | Spawns the hand blue animated hand prefabs for the player controllers |
►NSystems | |
CAvatarSpawnClientSystem | Finds all AvatarPartSpawner in the world, ensure that they have entity Prefab reference, then spawn the entity Prefab and add AvatarPartSync to the spawned entity so that the avatar entity can be synced with the player part in AvatarPartSyncClientSystem |
COpenXrControllerVisualClientSystem | Update the buttons and thumbstick transforms in the OpenXr controller based on the value from OpenXrHandInputData |
►NTorso | |
►NAuthoring | |
COpenXrTorsoSpawnerAuthoring | |
►NComponents | |
COpenXrTorsoSpawner | |
►NSystems | |
COpenXrTorsoSpawnClientSystem | |
▼NCommon | |
►NAuthoring | |
CControlMainCameraAuthoring | |
CLocalPlayerHeadAuthoring | Place on the entity representing the local player head |
CLocalPlayerOriginAuthoring | Place on the entity representing the local player origin |
CRemotePlayerHeadAuthoring | Place on entity representing a remote player head |
CRemotePlayerOriginAuthoring | Place on entity representing a remote player origin |
►NComponents | |
CControlMainCamera | A tag component which signals that the transform of the main camera should be synchronized to this entity |
CLocalPlayerPart | Signals that an entity is part of the local player |
CLocalPlayerPartRef | Keeps a reference to a local player part. This is used on remote player parts to replicate data from the local player |
CMainCameraRef | Keeps a reference to the main camera in the scene. This is needed because the main camera cannot belong in an entity sub-scene |
CPlayerHand | Tag the Hand entity and also for differentiating between Left and Right hand |
CPlayerHandType | Shared component to hold the type of the hand, this is useful for queries |
CPlayerHead | Signals that a player part represents the player head |
CPlayerHeadRef | Keeps the PlayerHead entity, this is used usually for player hand so that it has a reference of its Player Head entity |
CPlayerInfo | Contains essential information about a local or remote player |
CPlayerOrigin | Signals that a player part represents the player origin |
CPlayerOriginRef | |
CRemotePlayerPart | Signals that an entity is part of a remote player |
►NSystems | |
CControlMainCameraClientSystem | This system finds the first entity with ControlMainCamera component and adds a MainCameraRef if the main camera is ready. Then, it applies the position/rotation of this entity to the main camera. This manual synchronization is required because the main camera cannot reside in an entity sub-scene. We assume that the player parts that may control the main camera are root-level entities, so the position/rotation is replicated directly from their LocalTransform |
▼NDependencyInversion | |
CICursor | |
CIScreen | Wraps Screen, allowing it to be mocked under test |
CIUnityXrManager | Wraps XRGeneralSettings, allowing it to be mocked under test |
CUnityCursorWrapper | |
CUnityScreenWrapper | |
CUnityXrGeneralSettingsWrapper | |
▼NEditor | |
►NBuild | |
CDedicatedServerBuildProcessor | Disabling OpenXR during building the Dedicated Server and re-set it based on the previous state |
►NSettings | |
CPlayerSettingsBuildProcessor | This class runs the Pre- and Post-Build process to disable XR input for builds and reenable it |
CPlayerSettingsProvider | Adds PlayerBehaviourSettings to Kanda SDK project settings |
▼NHighLevel | |
►NAuthoring | |
CLocalOpenXrPlayerHandAuthoring | |
CLocalOpenXrPlayerHeadAuthoring | |
CLocalPcPlayerHeadAuthoring | |
CRemoteOpenXrPlayerHandAuthoring | |
CRemoteOpenXrPlayerHeadAuthoring | |
CRemotePcPlayerHeadAuthoring | |
▼NInput | |
►NAuthoring | |
CCursorStateAuthoring | |
CKeyboardInputAuthoring | |
CMouseInputAuthoring | |
COpenXrHandInputAuthoring | |
COpenXrHmdInputAuthoring | |
►NCollectors | |
CIInputCollector | Basic contract for input collectors that can be enabled, allowing for deferred input initialization |
CIKeyboardInputCollector | Collects player-related inputs from a keyboard |
CIMouseInputCollector | Collects player-related inputs from a mouse |
CIOpenXrInputCollector | Collects player-related inputs from OpenXR |
CKeyboardInputCollector | |
CMouseInputCollector | |
COpenXrInputCollector | |
CVirtualOpenXrInputCollector | Allows for imitating VR players in the editor by using Keyboard and Mouse input to set the state of "virtual" XR devices |
►NComponents | |
CCursorState | Provides a way to set the initial state of the mouse cursor and interface with it from entity queries |
CKeyboardInputCollectorRef | A managed component which can be used to reference a keyboard input collector |
CKeyboardInputData | Stores input data from the keyboard |
CMouseInputCollectorRef | A managed component which can be used to reference a mouse input collector |
CMouseInputData | Stores input from the mouse |
COpenXrHandInputData | Stores input data from OpenXR hand controller |
COpenXrHmdInputData | Stores input data from OpenXR Head Mounted Display |
COpenXrInputCollectorRef | A managed component which can be used to reference an OpenXR input collector |
►NSystems | |
CCursorStateInitializationClientSystem | Initializes the cursor state for client apps by reading from the CursorState component and then disabling the system once defaults have been set |
CInputUpdateSystem | Updates inputs using Unity Input System. Make sure events are set to process manually in Input System settings, otherwise this can result in some derived values like mouse delta being dropped |
CKeyboardInputSystem | Populates all instances of KeyboardInputData using InputCollectors |
CMouseInputSystem | Populates all instances of MouseInputData using InputCollectors |
COpenXrInputSystem | Populates all instances of OpenXrHmdInputData or OpenXrHandInputData using InputCollectors. If IPlayerBehaviourSettings.MockXr is true, input will be mocked using Keyboard and Mouse input instead. This allows for imitating VR players in the editor |
▼NInteraction | |
►NAuthoring | |
CMouseRayInteractorAuthoring | Makes the entity a Ray Interactor which is activated using mouse clicks |
COpenXrInteractorAuthoring | Makes the entity a Point Interactor which is activated using OpenXR hand input |
►NComponents | |
CPlayerInteractorSpawner | |
►NJobs | |
CInterpolateInteractablesOutOfRangeJob | For any currently predicted interactable ghosts, if they are out of range of player head, convert them to interpolated ghosts |
CPredictInteractablesInRangeJob | For any currently interpolated interactable ghosts, if they are in range of player head, convert them to predicted ghosts |
►NSystems | |
CInteractablePredictionSwitchingClientSystem | This system queries for interactables and makes them predicted or interpolated based on their distance from the player |
COpenXrInteractorInputClientSystem | Updates InteractorInput using adjacent OpenXrHandInputData |
CPCRayInteractorInputClientSystem | Updates InteractorInput using adjacent MouseInputData and KeyboardInputData |
CPlayerInteractorSpawnerServerSystem | Spawns an interactor prefab, attaching it to the spawner entity, matching the spawner ghost owner and linking it to the spawner entity so it's destroyed when a player leaves |
▼NLocomotion | |
►NAuthoring | |
COpenXrHeadMovementAuthoring | |
CPcHeadKeyboardMovementAuthoring | |
CPcHeadMouseRotationAuthoring | |
CTeleportFloorAuthoring | Authoring script for TeleportFloor, requiring a StaticPhysicsObjectAuthoring to mark the collider as a surface that can be a teleport target |
►NComponents | |
CLocalTeleportEventData | An app event created on the client to teleport locally |
COpenXrHeadMovement | Signals that an entity should be moved with OpenXr HMD |
COpenXrTeleportArc | Component to hold the Source and Target Entity to be used in the teleport arc ray calculation |
COpenXrTeleportArcPoint | Dynamic buffer that keeps the OpenXr's teleportation arc points to be used for visualization |
COpenXrTeleportArcVisual | Managed component that keeps the reference to common GameObject for line manipulation purpose |
CPcHeadHitCollider | If enabled, indicates that Player Head is colliding with other colliders |
CPcHeadKeyboardMovement | Signals that an entity should be moved with PC keyboard controls |
CPcHeadMouseRotation | Signals that an entity should be rotated to "look" with PC mouse control |
CPcTeleportVisual | Keeps the GameObject used to show the Pc teleport visual |
CRequestTeleportResolution | Trigger of Teleport that is used also to indicate if the teleport attempt successful or not |
CTeleportCommand | An RPC command sent by server to request a player be teleported |
CTeleportFloor | Marks an entity whose collider should be interpreted as a teleport floor |
►NManaged | |
COpenXrHmdCameraUpdater | Subscribes to the Application.onBeforeRender callback and updates main camera transform with the latest HMD input from the IOpenXrInputCollector in order to minimize tracking latency for the HMD |
COpenXrTeleportArcRenderer | Add points from OpenXrTeleportArcPoint buffer to the LineRenderer so that the arc line is drawn to the screen |
►NSystems | |
COpenXrHandMovementClientSystem | Moves each local PlayerHand based on the current Hand transform relative to the local PlayerOrigin |
COpenXrHeadMovementClientSystem | Moves each local PlayerHead with OpenXrHeadMovement based on the current HMD transform relative to the local PlayerOrigin |
COpenXrTeleportClientSystem | This system handles from processing input, resolving ray cast, and sending LocalTeleportEventData for all entities that have RequestTeleportResolution as well as populating OpenXrTeleportArcPoint buffer to be used when visualizing the teleportation arc for OpenXR |
COpenXrTeleportVisualClientSystem | This system instantiates a GameObject from OpenXrTeleportArcVisual based on the enable state of RequestTeleportResolution and updates it each frame. This system also updates the Teleport UI's color based on the teleport states |
CPcHeadLookClientSystem | Rotates each local PlayerHead with PcHeadMouseRotation in an FPS "mouse look" style using the mouse delta position. Input is constrained to prevent fully rotating around its vertical axis |
CPcHeadMovementBlockerClientSystem | Do a collider cast to check if the Player Head collides with movement blocking collider(s). On collider, PcHeadHitCollider is set to enable and then will be used in PcHeadMovementClientSystem |
CPcHeadMovementClientSystem | Moves each local PlayerHead with PcHeadKeyboardMovement in an FPS "fly-through" style using keyboard movement and panning |
CPcTeleportClientSystem | This system enable RequestTeleportResolution when the teleport button is pressed, and when the ray falls to the floor and the left mouse button is clicked, the teleport event is triggered |
CPcTeleportVisualClientSystem | This system is showing the reticle object based on the ray hit point in the floor to indicate to where the teleport should occur |
CSynchronizePlayerPartClientSystem | Finds the remote player part owned by client, ensures that it has a reference to the local player part, then writes the Movable of the local player part to the MovableInput component of the remote player part, allowing it to be synchronized later by the PredictedMovableSystem |
▼NPhysics | |
►NUtils | |
CPlayerPhysicsUtils | |
▼NSettings | |
►NComponents | |
CPcPlayerSettings | Configuration settings for a PC player (e.g., mouse sensitivity, movement speed) |
►NSystems | |
CPlayerSettingsSystem | Manages the PC player settings by synchronizing user preferences and default project settings. This system updates when user settings are modified, applying changes to the PC player settings component |
CIPlayerBehaviourSettings | Stores app settings about how to players should behave |
CPlayerBehaviourSettings | |
▼NSpawning | |
►NAuthoring | |
CDeviceSpecificPlayerPrefabsAuthoring | A struct that holds the player part prefabs for a specific device which can be serialized and used in authoring |
CPlayerPartPrefabsAuthoring | |
CPlayerSpawnerAuthoring | |
CRequestSpawnPointAuthoring | |
CSpawnPointAuthoring | |
►NComponents | |
CDeviceSpecificPlayerPrefabs | Buffer data that references player part prefabs to spawn a player for a given device |
CPlayerPartPrefabs | A collection of player part prefabs to spawn |
CPlayerSpawner | A tag-component that marks an entity as a player spawner |
CRemotePresenceRequested | A tag component to indicate that remote presence has already been requested for a local player |
CRequestRemotePresenceCommand | An RPC command sent to server to request remote presence for the current player |
CRequestSpawnPoint | A tag component added to a remote player origin to signal that a spawn point transform should be applied to it |
CRespawnPoint | A Dynamic Buffer to keep the respawn location for a given player. This is populated in CacheRespawnPointServerSystem and used in SpawnPointServerSystem |
CSpawnPoint | When placed on an entity, this position and rotation becomes a potential spawn point for players |
►NSystems | |
CCacheRespawnPointServerSystem | Cache a target respawn transform for PlayerOrigin continiously and keep it even though the player disconnects. This data is used primarily to let the player be spawned in the latest known location while the server is still running |
CLocalPlayerSpawnClientSystem | Implements spawning of local players which can happen before connecting to the server. If there is no local PlayerOrigin component in the scene, this system will find the first PlayerSpawner, spawn the prefabs matching the player device and update its PlayerInfo data |
CRemotePlayerSpawnClientSystem | Once a player is in game, if the local PlayerOrigin does not yet have RemotePresenceRequested, this system will send a RequestRemotePresenceCommand RCP to the server to request that a remote player ghost is spawned for this player |
CRemotePlayerSpawnServerSystem | This system listens for RequestRemotePresenceCommand RPCs, finds the first RemotePlayerSpawner, spawn the prefabs matching the player device, set the player who requested it as its owner and link it to the player connection |
CSpawnPointServerSystem | If a player has RequestSpawnPoint enabled, this system teleports the player to its last known location or a randomized spawn point |
CTeleportPlayerClientSystem | After TeleportCommand or LocalTeleportEventData is received, the local player origin's Movable will be updated to match the teleport target |
►NUtils | |
CPlayerPartInstantiationUtils | |
CRpcCommandSendUtils | |
▼NTransitions | |
►NManaged | |
CContentLoadingTransitionLogic | Manages transitions between content loading states, coordinating fade effects and world state changes across both client and server worlds (for offline/client-hosted scenarios) |
CContentLoadingTransitionManager | MonoBehaviour that initializes and drives the content loading transition process |
CContentLoadingTransitionTimingParams | |
CContentLoadingWorldAccess | Implementation of world access that handles both client and server worlds. Used for offline play and client-hosted sessions where server content must also be managed |
CIContentLoadingWorldAccess | Interface for checking and modifying content loading state across relevant worlds. Abstracts the complexity of handling both client and server worlds when necessary |
►NSystems | |
CPlayerFadeInClientSystem | Starts fade in once the local player head is spawned. This helps hide tracking artifacts while waiting for the player to be initialized |
▼NUI | |
►NAuthoring | |
CInSessionMenuAuthoring | |
CInSessionMenuSpawnerAuthoring | |
►NComponents | |
CInSessionMenu | Tag an object as In-Session Menu |
CInSessionMenuSpawner | Holds prefab and offsets for spawning In-Session Menu |
CPlayerUiSpawner | Spawner component for player UI |
CToggleInSessionMenuCommand | RPC command to be sent for spawning/destroying In-Session Menu |
CUiPointerActivationType | Holds the ActivationTypes needed for UiPointer to derive the input from |
►NManaged | |
CIInSessionMenuCloseButtonLogic | Contains the logic to close the In-Session Menu from the UI |
CInSessionMenuCloseButton | Register the button event to close the In session menu |
CInSessionMenuCloseButtonLogic | |
CIReturnToStartButtonLogic | Make the player teleports to the initial spawn point when it is triggered |
►COpenXrControllerUiMap | Map the OpenXr controller button types with the Button or Toggle Ui elements so that we can trigger the Button and Toggle based on the button type |
CMapItem | |
CReturnToStartButton | Register the Return to Start logic to the button |
CReturnToStartButtonLogic | |
►NSystems | |
CConnectionLossAppEventUiSystem | Handles app events related to connection loss by displaying a notification dialog to the player |
CInSessionMenuToggleClientSystem | Listens to Menu button press for PC and secondary button press for VR and send Rpc command request ToggleInSessionMenuCommand to the server. In this system, the Menu Canvas is also instantiated for the local player only (skipping the other player's menu) |
CInSessionMenuToggleServerSystem | Handles the received Rpc command with ToggleInSessionMenuCommand from the clients and spawn the In-session menu based on InSessionMenuSpawner |
CPlayerNameTagSystem | System updates NameTag data from PlayerInfo component |
CPlayerUiSpawnerClientSystem | System spawns player UI for local and remote players |
CUiPointerInputClientSystem | Populated the input states of WorldUiPointer based on UiPointerActivationType for both MouseInputData and OpenXrHandInputData |
▼NVoice | |
►NComponents | |
CUpdatePlayerVoiceStatusCommand | RPC command for updating player voice status in server |
CVoiceServiceRef | A managed component which can be used to reference a voice service |
►NSystems | |
CLocalPlayerVoicePositionSystem | Applies world position of the local PlayerHead to IVoiceService 3D audio position in voice channel |
CPlayerVoiceStatusClientSystem | Client system responsible for updating player info voice status on local player and locally owned remote player |
CPlayerVoiceStatusServerSystem | Server system responsible for updating voice status on remote player info |
▼NVr | |
►NAuthoring | |
CRequestVrRuntimeStartedAuthoring | |
►NComponents | |
CRequestVrRuntimeStarted | An tag component which indicates that we wish for the VR runtime to be started |
►NSystems | |
CVrRuntimeClientSystem | If there are any RequestVrRuntimeStarted components in the world and VR is supported by the current platform, this system will use the IUnityXrManager to try and start the VR runtime |
CStartup | A main class with work intended to run on application start to configure features in this package |