Class GhostAnimationController
A ghost animation controller is a special animation graph which supports ghosting through netcode for entities. It needs to be added to a GameObject which is referenced by an entity through a GhostPresentationGameObjectPrefabReference. The controller has a single graph asset, but that asset can be recursive and contain a full graph.
Implements
Inherited Members
Namespace: Unity.NetCode .Hybrid
Assembly: Unity.NetCode.Hybrid.dll
Syntax
[RequireComponent(typeof(Animator), typeof(GhostPresentationGameObjectEntityOwner))]
[DisallowMultipleComponent]
[HelpURL("https://docs.unity3d.com/Packages/com.unity.netcode@latest/index.html?subfolder=/api/Unity.NetCode.Hybrid.GhostAnimationController.html")]
public class GhostAnimationController : MonoBehaviour, IRegisterPlayableData
Fields
AnimationGraphAsset
The graph asset used by this controller.
Declaration
public GhostAnimationGraphAsset AnimationGraphAsset
Field Value
Type | Description |
---|---|
Ghost |
EvaluateGraphInPrediction
Setting this to true will cause the animation graph to be evaluated as part of the prediction update. Doing that will give you immediate updated to the skeleton, if it is set to false the pose will only be update once per frame after all systems have run, so it has a one frame latency. Setting it to false will also prevet root motion from working.
Declaration
public bool EvaluateGraphInPrediction
Field Value
Type | Description |
---|---|
bool |
IgnoreEvents
Setting this to true will prevent the animation system from firing events even if they are specified in the animation nodes. This is mostly useful if you are re-using an asset with events but are not handling the events in the entities version.
Declaration
public bool IgnoreEvents
Field Value
Type | Description |
---|---|
bool |
Properties
ApplyRootMotion
Returns true if root motion is being used by this controller. It is only true if the animator supports it, the graph is evaluated in prediction and the ghost is predicted (when using owner prediction the local players character is predicted). Can be accessed from graph assets to modify behaviour when root motion is enabled.
Declaration
public bool ApplyRootMotion { get; }
Property Value
Type | Description |
---|---|
bool |
Methods
GetEntityBuffer<T>()
Get a DynamicBuffer for a component on the entity associated with the controller. This can only be called from PreparePredictedData.
Declaration
public DynamicBuffer<T> GetEntityBuffer<T>() where T : unmanaged, IBufferElementData
Returns
Type | Description |
---|---|
Dynamic |
Dynamic |
Type Parameters
Name | Description |
---|---|
T | Unmanaged type of IBuffer |
GetEntityComponentData<T>()
Get a copy of data for a component on the entity associated with the controller. This can only be called from PreparePredictedData.
Declaration
public T GetEntityComponentData<T>() where T : unmanaged, IComponentData
Returns
Type | Description |
---|---|
T | Copy of component data of type |
Type Parameters
Name | Description |
---|---|
T | Unmanaged type of IComponent |
GetPlayableDataRef<T>()
Get a reference to playable data registered by the graph asset. This can only be called from PreparePredictedData.
Declaration
public ref T GetPlayableDataRef<T>() where T : unmanaged, IComponentData
Returns
Type | Description |
---|---|
T | Reference to playable data of type |
Type Parameters
Name | Description |
---|---|
T | Unmanaged type of IComponent |
GetPlayableData<T>()
Get a copy of playable data registered by the graph asset. This can be called at any time.
Declaration
public T GetPlayableData<T>() where T : unmanaged, IComponentData
Returns
Type | Description |
---|---|
T | Copy of playable data of type |
Type Parameters
Name | Description |
---|---|
T | Unmanaged type of IComponent |
RegisterPlayableData<T>()
Implementation of IRegisterPlayableData, should not be called directly.
Declaration
public void RegisterPlayableData<T>() where T : unmanaged, IComponentData
Type Parameters
Name | Description |
---|---|
T | Unmanaged type of IComponent |
SetEntityComponentData<T>(T)
Modify the data for a component on the entity associated with the controller. This can only be called from PreparePredictedData.
Declaration
public void SetEntityComponentData<T>(T data) where T : unmanaged, IComponentData
Parameters
Type | Name | Description |
---|---|---|
T | data | Data to assign to the entity. |
Type Parameters
Name | Description |
---|---|
T | Unmanaged type of IComponent |