Skip to content

Parameter Streams

TL;DR: A CVRParameterStream component reads from one of the named sources below and writes the result into an animator parameter, a CVRVariableBuffer, a custom spawnable float, or an avatar animator parameter. The full CVRParameterStreamEntry.Type enum — with stable numeric IDs — is reproduced here. Numeric IDs are stable across CCK versions because they’re persisted in serialized assets; gaps preserve backwards compatibility as the enum was extended.

Each entry has:

  • type — which data source to read (the table below)
  • targetTypeAnimator, VariableBuffer, AvatarAnimator, or CustomFloat
  • applicationTypeOverride, AddToCurrent, MultiplyWithStatic, Clamp, Remap, CompareEquals, etc.
  • staticValue (and up to staticValue4) — operands for additive/multiplicative/comparison/clamp/remap modes
  • parameterName, target — the destination

CVRParameterStreamEntry.CheckUpdate(stream, slowUpdate) runs every Unity update (or slow-update for VariableBuffer targets), reads the source value into a local value (or intValue for seed sources), applies the chosen application, and writes the result.

The AvatarAnimator target routes through PlayerSetup.ChangeAnimatorParam, so all the read-only/AAS guards from Animator Parameters still apply.

IDSourceDescription
0TimeSecondsLocal time of day, seconds.
10TimeSecondsUtcUTC time of day, seconds.
11DateTimeSecondsUtcUTC seconds since 1970-01-01 (unix-style).
IDSourceDescription
20DeviceMode1 if VR, 0 if desktop.
30HeadsetOnHead1 while the proximity sensor is engaged.
31GameFocused1 while the game window is focused.
40ZoomFactorCurrent scope/zoom factor.
50ZoomFactorCurveCurve-shaped variant of ZoomFactor.
130TimeSinceHeadsetRemovedTime.time - HeadsetLastOnHead, seconds.
131TimeSinceGameUnfocusedTime.time - LastFocusChangeTime, seconds.
132TimeSinceAFKTime.time - TimeAFKStarted while AFK, else 0.
IDSourceDescription
60 / 70EyeMovementLeftX / EyeMovementLeftYEyeAngleInOut / EyeAngleDownUp for the left eye.
80 / 90EyeMovementRightX / EyeMovementRightYSame for the right eye.
100 / 110EyeBlinkingLeft / EyeBlinkingRightblinkProgressLeft / blinkProgressRight.
120VisemeLevelLipSyncManager._visemeLoudness.
IDSourceDescription
400AvatarHeightAuto-calibrated avatar height.
401AvatarUprightDot product of avatar up vector with world up.
140TimeSinceLocalAvatarLoadedTime.time - timeAvatarLoaded.
IDSourceDescription
150LocalWorldDownloadPercentageDownload progress fraction (0..1) when loading.
160LocalFPS1f / Time.deltaTime.
170LocalPingNetworkManager.GameNetworkPing.
180LocalPlayerCountNetworkPlayers.Count + 1 (includes self).
190 / 200LocalTimeSinceFirstWorldJoin / LocalTimeSinceWorldJoinSession/world join elapsed seconds.
210LocalPlayerMutedMic muted state (accounts for TTS playing).
220LocalPlayerHudEnabledSetting GeneralShowHud.
230LocalPlayerNameplatesEnabledShouldDisplayRemoteNameplate().
240LocalPlayerHeightplayerHeight.
250 / 251LocalPlayerLeftControllerType / LocalPlayerRightControllerTypeeXRControllerType enum value.
260LocalPlayerFullBodyEnabledBodySystem.FullBodyActive.
IDSourceDescription
270 / 280TriggerLeftValue / TriggerRightValueinteractLeftValue / interactRightValue (left value VR-only).
290 / 300GripLeftValue / GripRightValuegripLeftValue / gripRightValue (left value VR-only).
310 / 320GrippedObjectLeft / GrippedObjectRight1 if a grabbed object is held.

target is the GameObject whose transform to read.

IDSourceDescription
500 / 501 / 502TransformGlobalPositionX/Y/ZWorld position.
510 / 511 / 512TransformGlobalRotationX/Y/ZWorld Euler angles.
520 / 521 / 522TransformLocalPositionX/Y/ZLocal position.
530 / 531 / 532TransformLocalRotationX/Y/ZLocal Euler angles.

For Avatar references, reads BetterBetterCharacterController. For Spawnable references, reads the bound FluidInfluencer.

IDSourceDescription
600FluidVolumeSubmerged1 if shoulder-submerged (avatar) or in-fluid (influencer).
601FluidVolumeDepthGetImmersionDepth() / GetDepth().
602FluidVolumeTimeSinceEnteredSeconds since enter event.
603FluidVolumeTimeSinceExitSeconds since exit event.
IDSourceDescription
1000 / 1001 / 1002 / 1003 / 1004InputCarSteering / Accelerate / Brake / Handbrake / BoostVehicle inputs.
1100 / 1101InputMovementX / InputMovementYRaw movementVector.x / .z.
1110 / 1111InputLookX / InputLookYRaw look axis.
1120InputJump1 while held.
IDSourceDescription
1400CurrentInstanceTypeInstancePrivacyType enum value.
1401IsPrivateInstance1 if private.
1402IsPublicInstance1 if not private.
1403IsGroupInstance1 if a group instance.

stream.rigidBody is the bound rigidbody.

IDSourceDescription
1600RigidBodySpeedvelocity.magnitude.
1601 / 1602 / 1603RigidBodyVelocityX/Y/ZWorld velocity components.
1604 / 1605 / 1606RigidBodyLocalVelocityX/Y/ZLocal-space velocity (InverseTransformDirection).
1610RigidBodyAccelerationdeltaVelocity.magnitude.
1611 / 1612 / 1613RigidBodyAccelerationX/Y/ZWorld acceleration components.
1614 / 1615 / 1616RigidBodyLocalAccelerationX/Y/ZLocal-space acceleration.
IDSourceDescription
1700WheelHubControllerForwardSpeedGetForwardSpeed().
1701WheelHubControllerSpeedFactorGetSpeedFactor().
1710WheelHubControllerGrounded1 if any wheel is grounded.
1720WheelControllerGroundedPer-wheel grounded.
1721WheelControllerRPMPer-wheel RPM.
IDSourceDescription
1800CurrentHealthCombatSystem.currentHealth (avatar) or objectHealth.currentHealth (spawnable).
1801CurrentArmorSame shape, armor.
1802CurrentShieldSame shape, shield.
IDSourceDescription
1900NavMeshAgentSpeedvelocity.magnitude.
1901NavMeshAgentRemainingDistanceremainingDistance.
1902NavMeshAgentHasPath1 if hasPath.
1903NavMeshAgentOnOffMeshLink1 if on an off-mesh link.
1904NavMeshAgentOffMeshLinkTypeActive link type (when valid).
IDSourceDescription
2000LegIsOnGroundPer-foot ground state via CVRLeg.IsFootOnGround().
3000IsAnyMenuOpenViewManager.IsAnyMenuOpen.
3001IsMainMenuOpenViewManager.IsViewShown.
3002IsQuickMenuOpenCVR_MenuManager.IsViewShown.
10000ChatBoxIsTypingLocalPlayerBubble.IsTypingIndicatorActive.
IDSourceDescription
90000SeedOwnerCRC32 of the owner’s user ID (avatar’s PlayerDescriptor.ownerId when remote, else local ownerId; spawnable’s ownerId). Stored as intValue so the Mod application is integer-aware.
90001SeedInstanceCRC32 of the spawnable’s instanceId. Spawnable-only.
90010IsOwner1 if the viewer is the owner of the avatar/spawnable.
IDModeEffect
0Overrideoutput = value
10AddToCurrentoutput = currentTargetValue + value
21AddToStaticoutput = staticValue + value
30SubtractFromCurrentoutput = currentTargetValue - value
41SubtractFromStaticoutput = staticValue - value
50SubtractWithCurrentoutput = value - currentTargetValue
61SubtractWithStaticoutput = value - staticValue
70MultiplyWithCurrentoutput = value * currentTargetValue
81MultiplyWithStaticoutput = value * staticValue
91 / 101 / 111 / 121 / 131CompareLessThen / CompareLessThenEquals / CompareEquals / CompareMoreThenEquals / CompareMoreThenoutput = (value <op> staticValue) ? 1 : 0
141Modoutput = value % max(abs(staticValue), 0.0001) (integer-aware for seeds)
151Powoutput = pow(value, staticValue)
200Clampoutput = clamp(value, staticValue, staticValue2)
201Remapoutput = remap(value, 0, 1, staticValue, staticValue2)
202ClampRemapclamp then remap with all four staticValue* operands