Photon Fusion 1.1.2

Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Properties | List of all members
NetworkBehaviour Class Reference

Base class for Fusion network components, which are associated with a NetworkObject. More...

Inherits SimulationBehaviour, ISpawned, and IDespawned.

Inherited by HitboxRoot, NetworkAreaOfInterestBehaviour, and NetworkMecanimAnimator.

Classes

struct  Interpolator
 Interpolator provides a set of methods to get the "from" and "to" ticks of the associated [Networked] property, as well as the current interpolation value for the two, but it also provides a Value property as a shortcut to get the actual interpolated value for those parameters.

See also
RawInterpolator
More...
 
struct  RawInterpolator
 RawInterpolator provides a set of methods to get the "from" and "to" ticks of the associated [Networked] property, as well as the current interpolation value for the two. All methods return raw memory pointers and expects the caller to be able to convert the data to the proper types.

See also
Interpolator<T>
More...
 

Public Types

enum class  InterpolationDataSources
 Options for which time frame this object will render in. More...
 

Public Member Functions

delegate int[] InterestGroupsCallback (Type type, NetworkBehaviour behaviour)
 
int GetLocalAuthorityMask ()
 Gets a bitmask of AuthorityMasks flags, representing the current local authority over this NetworkObject. More...
 
void CopyStateFrom (NetworkBehaviour source)
 Copies entire state of passed in source NetworkBehaviour More...
 
override void FixedUpdateNetwork ()
 Fusion FixedUpdate timing callback. More...
 
virtual void CopyBackingFieldsToState (bool firstTime)
 
virtual void CopyStateToBackingFields ()
 
virtual void Spawned ()
 Post spawn callback. More...
 
virtual void Despawned (NetworkRunner runner, bool hasState)
 Called before the network object is despawned More...
 
bool GetInterpolationData (out InterpolationData data, bool? predicted=null)
 Get 'To' and 'From' states, and the Alpha (t) values needed for lerping. More...
 
bool GetInterpolationData (out InterpolationData data, out bool predicted)
 Get 'To' and 'From' states, and the Alpha (t) values needed for interpolation. More...
 
virtual bool IsInterpolationDataPredicted ()
 If the behaviour data should be interpolated between latest predicted states or between snapshots. More...
 
void OnChangeClearAll ()
 Clear all dynamic OnChange callbacks from this behaviour More...
 
bool OnChangeRemove (NetworkBehaviourCallbackReference reference)
 Removes a specific OnChange callback from this behaviour More...
 
NetworkBehaviourCallbackReference OnChangeAdd< T > (int wordOffset, int wordCount, ChangedDelegate< T > callback, OnChangedTargets targets=OnChangedTargets.All)
 Adds a OnChange callback to this behaviour which is bound to a specific word offset and word count More...
 
NetworkBehaviourCallbackReference OnChangeAdd< T > (string propertyName, ChangedDelegate< T > callback, OnChangedTargets targetses=OnChangedTargets.All)
 Adds a OnChange callback to this behaviour which is bound to a specific weaved property More...
 
T? GetInput< T > ()
 
bool GetInput< T > (out T input)
 Returns true if it a valid INetworkInput can be found for the current simulation tick (Typically this is used in FixedUpdateNetwork). More...
 
RawInterpolator GetInterpolator (string propertyName)
 Get a raw interpolator for a networked property. The returned RawInterpolator provides a way to calculate the "between-ticks" value of the named [Networked] property. More...
 
Interpolator< T > GetInterpolator< T > (string propertyName)
 Get an interpolator for a networked property. The returned Interpolator provides a way to calculate the "between-ticks" value of the named [Networked] property with the specified type T. The value is a linear interpolation between the "from" and the "to" ticks and is available via the Value property on the Interpolator. More...
 
- Public Member Functions inherited from SimulationBehaviour
virtual void Render ()
 Post simulation frame rendering callback. Runs after all simulations have finished. Use in place of Unity's Update when Fusion is handling Physics. More...
 
- Public Member Functions inherited from Behaviour
AddBehaviour< T > ()
 Wrapper for Unity's GameObject.AddComponent() More...
 
bool TryGetBehaviour< T > (out T behaviour)
 Wrapper for Unity's GameObject.TryGetComponent() More...
 
GetBehaviour< T > ()
 Wrapper for Unity's GameObject.GetComponentInChildren() More...
 

Static Public Member Functions

static int NetworkSerialize (NetworkRunner runner, NetworkBehaviour obj, byte *data)
 
static int NetworkDeserialize (NetworkRunner runner, byte *data, ref NetworkBehaviour result)
 
static NetworkBehaviourId NetworkWrap (NetworkRunner runner, NetworkBehaviour obj)
 
static NetworkBehaviour NetworkUnwrap (NetworkRunner runner, NetworkBehaviourId wrapper)
 
static ref T MakeRef< T > ()
 
static ref T MakeRef< T > (T defaultValue)
 
static T * MakePtr< T > ()
 
static T * MakePtr< T > (T defaultValue)
 
static NetworkBehaviourUtils.ArrayInitializer< T > MakeInitializer< T > (T[] array)
 This is a special method that is meant to be used only for [Networked] properties inline initialization. More...
 
static NetworkBehaviourUtils.DictionaryInitializer< K, V > MakeInitializer< K, V > (Dictionary< K, V > dictionary)
 This is a special method that is meant to be used only for [Networked] properties inline initialization. More...
 
static implicit operator NetworkBehaviourId (NetworkBehaviour behaviour)
 Converts NetworkBehaviour to NetworkBehaviourId More...
 
- Static Public Member Functions inherited from Behaviour
static void DestroyBehaviour (Behaviour behaviour)
 Wrapper for Unity's GameObject.Destroy() More...
 

Public Attributes

int * Ptr
 Pointer to the allocated memory associated with this Object. More...
 
int ObjectIndex
 The index of this NetworkBehaviour, in the NetworkObject.NetworkedBehaviours array. More...
 
bool InvokeRpc
 
int offset
 Gives access to the offset (in 32 bit words) and count (in 32 bit words) of this behaviour backing data More...
 
- Public Attributes inherited from SimulationBehaviour
NetworkRunner Runner
 The NetworkRunner this component is associated with. More...
 
NetworkObject Object
 The NetworkObject this component is associated with. May be null if this GameObject does not have a NetworkObject. More...
 

Properties

InterpolationDataSources InterpolationDataSource [get, set]
 Get/Set the time frame this object is rendered in. More...
 
NetworkBehaviourId Id [get]
 The unique identifier for this network behaviour. More...
 
virtual ? int DynamicWordCount [get]
 Override this value for custom memory allocations. This is for advanced use cases only, and cannot be used if NetworkedAttribute is used in the derived class.
More...
 
virtual bool InvokeOnChangedForInitialNonZeroValues [get]
 Override this property to change whether initial non-zero values assigned to [Networked] properties invoke OnChanged callbacks. For clients the initial value comes from the simulation snapshot, not from what has been set locally in the inspector. More...
 
- Properties inherited from SimulationBehaviour
bool CanReceiveCallback [get]
 
virtual bool? HasInputAuthority [get]
 Returns true if the Simulation.LocalPlayer of the associated NetworkRunner is the designated as Input Authority for this network entity. More...
 
virtual bool? HasStateAuthority [get]
 Returns true if the associated NetworkRunner is the State Authority for this network entity. More...
 
virtual bool? IsProxy [get]
 Returns true if the associated NetworkRunner is neither the Input nor State Authority for this network entity. It is recommended to use !HasStateAuthority or !HasInputAuthority when possible instead, as this check requires evaluating both authorities - and is therefore less performant than the individual checks. More...
 

Detailed Description

Base class for Fusion network components, which are associated with a NetworkObject.

Derived from SimulationBehaviour, components derived from this class are associated with a NetworkRunner and Simulation. Components derived from this class are associated with a parent NetworkObject. and can use the NetworkedAttribute on properties to automate state synchronization, and can use the RpcAttribute on methods, to automate messaging.

Member Enumeration Documentation

◆ InterpolationDataSources

Options for which time frame this object will render in.

Enumerator
Auto 

Selects the most likely suitable time frame.

Snapshots 

Renders the object in the remote time frame, using the most recently consumed remote state tick.

Predicted 

Render the object in the local players time frame, interpolating between the most recent tick simulation result and the previous.

NoInterpolation 

Interpolation will not be calculated nor applied.

Member Function Documentation

◆ CopyStateFrom()

void CopyStateFrom ( NetworkBehaviour  source)

Copies entire state of passed in source NetworkBehaviour

Parameters
sourceSource NetworkBehaviour to copy data from

◆ Despawned()

virtual void Despawned ( NetworkRunner  runner,
bool  hasState 
)
virtual

Called before the network object is despawned

Parameters
hasStateIf the state of the behaviour is still accessible

Reimplemented in HitboxRoot.

◆ FixedUpdateNetwork()

override void FixedUpdateNetwork ( )
virtual

Fusion FixedUpdate timing callback.

Reimplemented from SimulationBehaviour.

Reimplemented in NetworkMecanimAnimator.

◆ GetInput< T >() [1/2]

T? GetInput< T > ( )

Template Parameters
T
Type Constraints
T :unmanaged 
T :INetworkInput 

◆ GetInput< T >() [2/2]

bool GetInput< T > ( out T  input)

Returns true if it a valid INetworkInput can be found for the current simulation tick (Typically this is used in FixedUpdateNetwork).

The returned input struct originates from the NetworkObject.InputAuthority, and if valid contains the inputs supplied by that PlayerRef for the current simulation tick.

Type Constraints
T :unmanaged 
T :INetworkInput 

◆ GetInterpolationData() [1/2]

bool GetInterpolationData ( out InterpolationData  data,
bool?  predicted = null 
)

Get 'To' and 'From' states, and the Alpha (t) values needed for lerping.

Parameters
dataThe returned values.
predictedForce interpolation to the current Simulations time frame
Returns
True valid state data was returned.

◆ GetInterpolationData() [2/2]

bool GetInterpolationData ( out InterpolationData  data,
out bool  predicted 
)

Get 'To' and 'From' states, and the Alpha (t) values needed for interpolation.

Parameters
dataThe returned values.
predictedIf the interpolation data is in the predicted time frame (true) or between snapshots (false), according to the InterpolationDataSource.
Returns
True valid state data was returned.

◆ GetInterpolator()

RawInterpolator GetInterpolator ( string  propertyName)

Get a raw interpolator for a networked property. The returned RawInterpolator provides a way to calculate the "between-ticks" value of the named [Networked] property.

Parameters
propertyNameName of the [Networked] property
Returns
RawInterpolator for the networked property

◆ GetInterpolator< T >()

Interpolator<T> GetInterpolator< T > ( string  propertyName)

Get an interpolator for a networked property. The returned Interpolator provides a way to calculate the "between-ticks" value of the named [Networked] property with the specified type T. The value is a linear interpolation between the "from" and the "to" ticks and is available via the Value property on the Interpolator.

Parameters
propertyNameName of the [Networked] property
Template Parameters
TType of the [Networked] property
Returns
Interpolator for the networked property
Type Constraints
T :struct 

◆ GetLocalAuthorityMask()

int GetLocalAuthorityMask ( )

Gets a bitmask of AuthorityMasks flags, representing the current local authority over this NetworkObject.

◆ IsInterpolationDataPredicted()

virtual bool IsInterpolationDataPredicted ( )
virtual

If the behaviour data should be interpolated between latest predicted states or between snapshots.

Returns

Reimplemented in NetworkRigidbodyBase.

◆ MakeInitializer< K, V >()

static NetworkBehaviourUtils.DictionaryInitializer<K, V> MakeInitializer< K, V > ( Dictionary< K, V >  dictionary)
static

This is a special method that is meant to be used only for [Networked] properties inline initialization.

◆ MakeInitializer< T >()

static NetworkBehaviourUtils.ArrayInitializer<T> MakeInitializer< T > ( T[]  array)
static

This is a special method that is meant to be used only for [Networked] properties inline initialization.

◆ OnChangeAdd< T >() [1/2]

NetworkBehaviourCallbackReference OnChangeAdd< T > ( int  wordOffset,
int  wordCount,
ChangedDelegate< T >  callback,
OnChangedTargets  targets = OnChangedTargets.All 
)

Adds a OnChange callback to this behaviour which is bound to a specific word offset and word count

Parameters
wordOffsetWord offset to monitor for changes
wordCountHow many words to monitor for changes, from offset and up
callbackCallback to invoke
Template Parameters
TType of the behaviour
Returns
Reference struct that can be used to remove this callback later
Type Constraints
T :NetworkBehaviour 

◆ OnChangeAdd< T >() [2/2]

NetworkBehaviourCallbackReference OnChangeAdd< T > ( string  propertyName,
ChangedDelegate< T >  callback,
OnChangedTargets  targetses = OnChangedTargets.All 
)

Adds a OnChange callback to this behaviour which is bound to a specific weaved property

Parameters
propertyNameName of the property to monitor for changes
callbackCallback to invoke
Template Parameters
TType of the behaviour
Returns
Reference struct that can be used to remove this callback later
Type Constraints
T :NetworkBehaviour 

◆ OnChangeClearAll()

void OnChangeClearAll ( )

Clear all dynamic OnChange callbacks from this behaviour

◆ OnChangeRemove()

bool OnChangeRemove ( NetworkBehaviourCallbackReference  reference)

Removes a specific OnChange callback from this behaviour

Parameters
referenceThe reference returned by OnChangeAdd
Returns
Removal succeeded

◆ operator NetworkBehaviourId()

static implicit operator NetworkBehaviourId ( NetworkBehaviour  behaviour)
static

Converts NetworkBehaviour to NetworkBehaviourId

Parameters
behaviour
Returns

◆ Spawned()

virtual void Spawned ( )
virtual

Member Data Documentation

◆ ObjectIndex

int ObjectIndex

The index of this NetworkBehaviour, in the NetworkObject.NetworkedBehaviours array.

◆ offset

int offset

Gives access to the offset (in 32 bit words) and count (in 32 bit words) of this behaviour backing data

◆ Ptr

int* Ptr

Pointer to the allocated memory associated with this Object.

Property Documentation

◆ DynamicWordCount

virtual ? int DynamicWordCount
get

Override this value for custom memory allocations. This is for advanced use cases only, and cannot be used if NetworkedAttribute is used in the derived class.

◆ Id

NetworkBehaviourId Id
get

The unique identifier for this network behaviour.

◆ InterpolationDataSource

InterpolationDataSources InterpolationDataSource
getset

Get/Set the time frame this object is rendered in.

◆ InvokeOnChangedForInitialNonZeroValues

virtual bool InvokeOnChangedForInitialNonZeroValues
get

Override this property to change whether initial non-zero values assigned to [Networked] properties invoke OnChanged callbacks. For clients the initial value comes from the simulation snapshot, not from what has been set locally in the inspector.

Returns "true" by default.