Class NetworkTransform
A component for syncing transforms. NetworkTransform will read the underlying transform and replicate it to clients. The replicated value will be automatically be interpolated (if active) and applied to the underlying GameObject's transform.
Inherited Members
Namespace: Unity.Netcode.Components
Assembly: solution.dll
Syntax
[DisallowMultipleComponent]
[AddComponentMenu("Netcode/Network Transform")]
[DefaultExecutionOrder(100000)]
public class NetworkTransform : NetworkBehaviour
Fields
Name | Description |
---|---|
InLocalSpace | Sets whether the transform should be treated as local (true) or world (false) space. |
Interpolate | When enabled (default) interpolation is applied. When disabled interpolation is disabled. |
OnClientRequestChange | The handler that gets invoked when server receives a change from a client. This handler would be useful for server to modify pos/rot/scale before applying client's request. |
PositionThreshold | The position threshold value that triggers a delta state update by the authoritative instance. |
PositionThresholdDefault | The default position change threshold value. Any changes above this threshold will be replicated. |
RotAngleThreshold | The rotation threshold value that triggers a delta state update by the authoritative instance. |
RotAngleThresholdDefault | The default rotation angle change threshold value. Any changes above this threshold will be replicated. |
ScaleThreshold | The scale threshold value that triggers a delta state update by the authoritative instance. |
ScaleThresholdDefault | The default scale change threshold value. Any changes above this threshold will be replicated. |
SlerpPosition | When true and interpolation is enabled, this will Slerp to the target position. |
SyncPositionX | When enabled (default), the x component of position will be synchronized by authority. |
SyncPositionY | When enabled (default), the y component of position will be synchronized by authority. |
SyncPositionZ | When enabled (default), the z component of position will be synchronized by authority. |
SyncRotAngleX | When enabled (default), the x component of rotation will be synchronized by authority. |
SyncRotAngleY | When enabled (default), the y component of rotation will be synchronized by authority. |
SyncRotAngleZ | When enabled (default), the z component of rotation will be synchronized by authority. |
SyncScaleX | When enabled (default), the x component of scale will be synchronized by authority. |
SyncScaleY | When enabled (default), the y component of scale will be synchronized by authority. |
SyncScaleZ | When enabled (default), the z component of scale will be synchronized by authority. |
UseHalfFloatPrecision | Enable this to use half float precision for position, rotation, and scale. When enabled, delta position synchronization is used. |
UseQuaternionCompression | Enabled this on the authority side for quaternion compression |
UseQuaternionSynchronization | Enable this on the authority side for quaternion synchronization |
m_CachedIsServer | Internally used by NetworkTransform to keep track of whether this NetworkBehaviour derived class instance was instantiated on the server side or not. |
m_CachedNetworkManager | Internally used by NetworkTransform to keep track of the NetworkManager instance assigned to this this NetworkBehaviour derived class instance. |
Properties
Name | Description |
---|---|
CanCommitToTransform | Used to determine who can write to this transform. Server only for this transform. Changing this value alone in a child implementation will not allow you to create a NetworkTransform which can be written to by clients. See the ClientNetworkTransform Sample in the package samples for how to implement a NetworkTransform with client write support. If using different values, please use RPCs to write to the server. Netcode doesn't support client side network variable writing |
Methods
Name | Description |
---|---|
Awake() | Create interpolators when first instantiated to avoid memory allocations if the associated NetworkObject persists (i.e. despawned but not destroyed or pools) |
GetScale(bool) | Helper method that returns the scale of the transform. |
GetSpaceRelativePosition(bool) | Helper method that returns the space relative position of the transform. |
GetSpaceRelativeRotation(bool) | Helper method that returns the space relative rotation of the transform. |
Initialize() | Initializes NetworkTransform when spawned and ownership changes. |
IsServerAuthoritative() | Method to determine if this NetworkTransform instance is owner or server authoritative. |
OnAuthorityPushTransformState(ref NetworkTransformState) | Invoked just prior to being pushed to non-authority instances. |
OnDestroy() | Invoked when the GameObject the NetworkBehaviour is attached to. NOTE: If you override this, you will want to always invoke this base class version of this OnDestroy() method!! |
OnGainedOwnership() | Gets called when the local client gains ownership of this object |
OnInitialize(ref NetworkTransformState) | Invoked when first spawned and when ownership changes. |
OnInitialize(ref NetworkVariable<NetworkTransformState>) | This method is only invoked by the owner Use: OnInitialize(ref NetworkTransformState replicatedState) to be notified on all instances |
OnIsServerAuthoritative() | Override this method and return false to switch to owner authoritative mode |
OnLostOwnership() | Gets called when we loose ownership of this object |
OnNetworkDespawn() | Gets called when the NetworkObject gets despawned. Is called both on the server and clients. |
OnNetworkObjectParentChanged(NetworkObject) | Gets called when the parent NetworkObject of this NetworkBehaviour's NetworkObject has changed |
OnNetworkSpawn() | Gets called when the NetworkObject gets spawned, message handlers are ready to be registered and the network is setup. |
OnNetworkTransformStateUpdated(ref NetworkTransformState, ref NetworkTransformState) | Invoked on the non-authoritative side when the NetworkTransformState has been updated |
OnOwnershipChanged(ulong, ulong) | Invoked on all clients, override this method to be notified of any ownership changes (even if the instance was niether the previous or newly assigned current owner). |
OnSynchronize<T>(ref BufferSerializer<T>) | This is invoked when a new client joins (server and client sides) Server Side: Serializes as if we were teleporting (everything is sent via NetworkTransformState) Client Side: Adds the interpolated state which applies the NetworkTransformState as well |
SetMaxInterpolationBound(float) | Will set the maximum interpolation boundary for the interpolators of this NetworkTransform instance. This value roughly translates to the maximum value of 't' in Lerp(Vector3, Vector3, float) and Lerp(Quaternion, Quaternion, float) for all transform elements being monitored by NetworkTransform (i.e. Position, Scale, and Rotation) |
SetState(Vector3?, Quaternion?, Vector3?, bool) | Directly sets a state on the authoritative transform. Owner clients can directly set the state on a server authoritative transform This will override any changes made previously to the transform This isn't resistant to network jitter. Server side changes due to this method won't be interpolated. The parameters are broken up into pos / rot / scale on purpose so that the caller can perturb just the desired one(s) |
Teleport(Vector3, Quaternion, Vector3) | Teleport the transform to the given values without interpolating |
TryCommitTransformToServer(Transform, double) | This will try to send/commit the current transform delta states (if any) |
Update() |