Vixen
02b45cc4
csharp
public sealed class ReplicationRegistry

Every component type that may arrive over the wire, and nothing else.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

A closed set, and that is the security property. Nothing is ever deserialized into a type named by a packet: a packet names a number, the number is looked up here, and a number that is not here is a packet that is refused. Deserializing into a type the wire chose is the classic remote-code-execution vector in game netcode, and it is excluded by construction rather than by validation.

Populated by generated registration code at start-up. Two types whose hashes collide is a build-time accident that would silently misroute state, so it is refused loudly here instead.

Fields and properties (3)

  • public IReadOnlyList<IComponentReplicator> Replicators

    Everything registered, ordered by wire id rather than by when it was registered.

  • public int Count

    How many types are replicated.

  • public uint ManifestHash

    A hash over every registered type's wire id, in order: one number that says whether two peers have the same set of replicated types.

Methods (5)

  • public void Register(IComponentReplicator replicator)

    Adds a replicator.

  • public int IndexOf(uint typeId)

    The number this type has on the wire.

  • public bool TryGetByIndex(uint index, out IComponentReplicator? replicator)

    Finds the replicator a wire index names.

  • public bool TryGet(uint typeId, out IComponentReplicator? replicator)

    Finds the replicator a wire id names.

  • public static uint HashTypeName(string fullName)

    The id a type name has on the wire: 32-bit FNV-1a over the full name.

Used by (38)

  • GameClientMultiplayer
  • GameServerMultiplayer
  • ReplicatedComponentsMultiplayer
  • SoakNetworkSoak
  • BitExactnessTestsVixen.Net.Tests
  • BroadcastRouterVixen.Net
  • ClientPredictionVixen.Net
  • ClientPredictionTestsVixen.Net.Tests
  • DeltaTestsVixen.Net.Tests
  • DiagnosticsTestsVixen.Net.Tests
  • HandWrittenTransformReplicatorVixen.Net.Generators.Tests
  • HealthReplicatorVixen.Net.Tests
  • NetworkAnimatorParametersReplicatorVixen.Net.Animation
  • NetworkAnimatorReplicatorVixen.Net.Animation
  • NetworkAudioSourceReplicatorVixen.Net.Audio
  • NetworkBonesReplicatorVixen.Net.Animation
  • NetworkPrefabIdVixen.Net
  • NetworkRigidBodyReplicatorVixen.Net.Physics
  • NetworkSceneIdVixen.Net.Engine
  • NetworkSpawnReplicatorVixen.Net
  • NetworkSpawnTestsVixen.Net.Engine.Tests
  • NetworkTransformReplicatorVixen.Net
  • PositionReplicatorVixen.Net.Tests
  • PredictedPlayerMovementTestsVixen.Net.Physics.Tests
  • PredictionHistoryVixen.Net
  • ReplicationClientVixen.Net
  • ReplicationGeneratorTestsVixen.Net.Generators.Tests
  • ReplicationServerVixen.Net
  • ReplicationTestsVixen.Net.Tests
  • RpcTestsVixen.Net.Tests
  • SnapshotInspectorVixen.Net
  • SnapshotInspectorTargetVixen.Net.Fuzz
  • SnapshotSeedsVixen.Net.Fuzz
  • SnapshotTargetVixen.Net.Fuzz
  • SyncListReplicationTestsVixen.Net.Engine.Tests
  • SyncListReplicatorVixen.Net.Engine
  • SyncStateReplicatorVixen.Net.Engine
  • SyncStateTestsVixen.Net.Engine.Tests