CVR Spawnable
The primary component for a spawnable (prop). Required for setup and uploading. Adds a CVRSharedPhysicsController at runtime and registers the prop with the SpawnableManager.
Properties
Section titled “Properties”Spawn Height
Section titled “Spawn Height”float. Vertical offset used when the prop is first placed. Gizmo drawn as a downward line and a ring on the floor.
Use Additional Values
Section titled “Use Additional Values”bool. Enables the extended sync-value path (used by the CCK inspector to gate advanced sync options).
Prop Privacy
Section titled “Prop Privacy”PropPrivacy enum:
everyone(default) — any player can interact.owner— only the spawning owner.
Spawnable Type
Section titled “Spawnable Type”SpawnableType enum:
StandaloneSpawnable(default) — a regular prop spawn.WorldSpawnable— prop pre-baked into a world scene.
Pre-Generated Instance Id
Section titled “Pre-Generated Instance Id”string. Stable instance id for WorldSpawnable entries. Empty for regular props.
Custom Data
Section titled “Custom Data”string. Arbitrary serialized payload that travels with the prop over the network.
Sync Values
Section titled “Sync Values”Sync Values
Section titled “Sync Values”List<CVRSpawnableValue>. Up to 40 floats per prop. Each entry has:
name— label shown in the inspector.startValue— initial float at spawn.currentValue— runtime float.updatedBy—UpdatedByenum selecting a value source:NoneSystemTime,WorldTimeSpawnerPositionX/Y/Z,SpawnerDistanceSpawnerLookDirectionX/Y/ZSpawnerLeftHandDirectionX/Y/Z,SpawnerRightHandDirectionX/Y/ZSpawnerLeftGrip,SpawnerRightGrip,SpawnerLeftTrigger,SpawnerRightTriggerOwnerLeftGrip,OwnerRightGrip,OwnerLeftTrigger,OwnerRightTriggerOwnerCurrentGrip,OwnerCurrentTrigger,OwnerOppositeGrip,OwnerOppositeTrigger
updateMethod—UpdateMethodenum:Override(default) — replace with source value.AddToDefault,AddToCurrentSubtractFromDefault,SubtractFromCurrentMultiplyWithDefaultDefaultDividedByCurrent
animator— optionalAnimatorto write into.animatorParameterName— parameter name (-none-or empty disables the write).animatorParameterType— resolved atStarttoFloat,Int,Bool, orTriggerbased on the animator parameter kind.
Spawner* sources only tick when SpawnedByMe is true. Owner* sources require a CVRPickupObject grabbed by you. Values are sent at the tick rate set by SetSyncTickRate (default: MetaPort.SystemTickRate).
Sub Sync Transforms
Section titled “Sub Sync Transforms”Sub Syncs
Section titled “Sub Syncs”List<CVRSpawnableSubSync>. Each entry syncs a child transform. Fields:
transform— target child.syncedValues—SyncFlagsflag enum:TransformX,TransformY,TransformZ,RotationX,RotationY,RotationZ.precision—SyncPrecisionenum:Full(4 bytes),Half(2 bytes),Quarter(1 byte).syncBoundary—float, default0.5. Half/Quarter positions are clamped to[-syncBoundary, syncBoundary]and quantised over the byte range. Rotations are encoded as fraction of 360 degrees.
usedParametersForSubSync reflects the 4-byte chunks consumed by all sub-syncs, counted against the prop’s parameter budget.
Networking
Section titled “Networking”Runtime-only fields:
guid,instanceId,ownerId— populated fromCVRSyncHelper.PropData.SpawnedByMe,SpawnedByFriend— ownership flags set inApplyPropValuesSpawn.SyncType— int used by the sync helper (0: idle/physics,1: grabbed,2: attached,3: telepathic grab).isPhysicsSynced— true while the prop is being simulated/sent.PropData— reference to the matchingPropDataentry.DataStore— optionalCVRDataStoreon the same GameObject.ContentType— alwaysCVRContentType.Spawnable.
SetValue(int index, float value)— write a sync value and flag dirty.GetValue(int index)— read current float.ForceUpdate()/ForceUpdate(int syncType)— force a sync send.SetSyncTickRate(float tickRate)— change the scheduled send rate.ResetInterpolationTime()— clear interpolation buffer.UpdateValueIfNecessary(string name, float value)— set a sync value by its animator parameter name (owner only).Delete()— request destruction viaCVRSyncHelper.IsMine(),IsSyncedByMe()— ownership queries.AnimEventDestroyProp,AnimEventDestroyThis— animation-event entry points that callDelete().Drop()— used by grip-sync values on pickup release to zero them.
Related
Section titled “Related”Source
Section titled “Source”CVR-GameFiles/ABI.CCK.Components/CVRSpawnable.cs, CVR-GameFiles/ABI.CCK.Components/CVRSpawnableValue.cs, CVR-GameFiles/ABI.CCK.Components/CVRSpawnableSubSync.cs