Quantum 3
3.1.0
The Quantum entity view component is the representation of the entity inside Unity. Instances will be created by the EntityViewUpdater. Quantum entity with the View component will references a Quantum EntityView asset which will in turn be instantiated as EntityView.Prefab and the resulting game object includes this script. More...
Classes | |
| class | EntityUnityEvent |
| Wrapping UnityEvent(QuantumGame) into a class. Is used by the QuantumEntityView to make create and destroy publish Unity events. More... | |
| struct | UpdatePositionParameter |
| The struct is used to gather all transform and interpolation data to apply new transform data to the entity view. ApplyTransform(ref UpdatePositionParameter). More... | |
| struct | UpdateViewParameter |
| Parameter for UpdateFromTransform3D(ref UpdateViewParameter) and UpdateFromTransform2D(ref UpdateViewParameter). More... | |
Public Member Functions | |
| bool | HasViewFlag (QuantumEntityViewFlags flag) |
| Test if a view flag is set. More... | |
| virtual void | OnActivate (Frame frame) |
| A callback to override to add custom logic the activation of this entity view. More... | |
| virtual void | OnDeactivate () |
| A callback to override to add custom logic to the deactivation of this entity view. More... | |
| virtual void | OnGameChanged () |
| A callback to override to add custom logic when the associate game has changed on the connected QuantumEntityViewUpdater. More... | |
| virtual void | OnInitialize () |
| A callback to override to add custom logic to the initialization of this entity view. More... | |
| virtual void | OnLateUpdateView () |
| A callback to override to add custom logic to the late update method. More... | |
| virtual void | OnUpdateView () |
| A callback to override to add custom logic to the update method. More... | |
| void | SetViewFlag (QuantumEntityViewFlags flag, bool isEnabled) |
| Set the QuantumEntityViewFlags to further configure the entity view. More... | |
| bool | TryGetTransform2DData (QuantumEntityViewTimeReference timeRef, ref UpdatePositionParameter param, out int frameNumber, out Transform2D transform, out Transform2DVertical transformVertical, out bool hasVertical, bool isSpawning) |
| There are two sources how to get the transform 3D data from an entity. Using the Quantum predicted frames or a snapshot interpolation. Toggle the setting on InterpolationMode. More... | |
| bool | TryGetTransform3DData (QuantumEntityViewTimeReference timeRef, ref UpdatePositionParameter param, out int frameNumber, out Transform3D transform, bool isSpawning) |
| There are two sources how to get the transform 3D data from an entity. Using the Quantum predicted frames or a snapshot interpolation. Toggle the setting on InterpolationMode. More... | |
| void | UpdateFromTransform2D (ref UpdateViewParameter parameter) |
| Apply new transform 2D data and interpolation. More... | |
| void | UpdateFromTransform3D (ref UpdateViewParameter parameter) |
| Apply new transform 3D data and interpolation. More... | |
Public Attributes | |
| AssetGuid | AssetGuid |
| Will set to the AssetObject.Guid that the underlying EntityView asset has. Or receives a new Guid when binding this view script to a scene entity. More... | |
| QuantumEntityViewBindBehaviour | BindBehaviour |
| Set the entity view bind behaviour. If set to QuantumEntityViewBindBehaviour.NonVerified then the view is created during a predicted frame. Entity views created at that time can be subject to changes and even be destroyed because of misprediction. Entity views created during QuantumEntityViewBindBehaviour.Verified will be more stable but are always created at a later time, when the input has been confirmed by the server. More... | |
| EntityRef | EntityRef |
| References the Quantum entity that this view script is liked to. More... | |
| Single | ErrorCorrectionRateMax = 10f |
| Single | ErrorCorrectionRateMin = 3.3f |
| Single | ErrorPositionBlendEnd = 1f |
| Single | ErrorPositionBlendStart = 0.25f |
| Single | ErrorPositionMinCorrection = 0.025f |
| Single | ErrorPositionTeleportDistance = 2f |
| Single | ErrorRotationBlendEnd = 0.5f |
| Single | ErrorRotationBlendStart = 0.1f |
| Single | ErrorRotationTeleportDistance = 0.5f |
| float | ExponentialAlpha |
| The exponential decay interpolation alpha value for this entity view, read-only. More... | |
| QuantumEntityViewInterpolationMode | InterpolationMode = QuantumEntityViewInterpolationMode.ExponentialDecay |
| Set the QuantumEntityViewInterpolationMode. Snapshot-interpolation or AUTO mode require the QuantumEntityViewFlags.SnapshotInterpolationEnabled flag to be set. Default is ExponentialDecay. More... | |
| bool | ManualDiposal => ManualDisposal |
| Obsolete property, use ManualDisposal More... | |
| bool | ManualDisposal |
| If enabled the QuantumEntityViewUpdater will not destroy (or disable, in case of map entities) this instance. The responsibility to destroy the game object is on the user. The OnEntityDestroyed callback will still be called. More... | |
| EntityUnityEvent | OnEntityDestroyed |
| Is called before the entity view is destroyed. More... | |
| EntityUnityEvent | OnEntityInstantiated |
| Is called after the entity view has been instantiated. More... | |
| bool | OverrideSmoothTime |
| Overwrite the smooth time constant for the exponential decay interpolation. By default uses the simulation delta time. This represents the time to correct ~63% of the error, so smaller values will correct faster but might cause more jitter, while bigger values will be smoother but might cause more error. More... | |
| float | SmoothTime = 0.016f |
| The smooth time constant for the exponential decay interpolation. More... | |
| bool | TeleportWhenScreenChanged = false |
| Entities parented to a RectTransform require this to be enabled. More... | |
| IQuantumViewComponent[] | ViewComponents => _viewComponents |
| Access the entity view components registered to this entity view. All view components found on this game object during creation are used. More... | |
| QuantumEntityViewFlags | ViewFlags |
| Set the QuantumEntityViewFlags to further configure the entity view. More... | |
Protected Member Functions | |
| virtual void | ApplyTransform (ref UpdatePositionParameter param) |
| The method to override to apply the final position and rotation interpolation to the view transform. More... | |
Properties | |
| QuantumEntityViewUpdater | EntityViewUpdater [get] |
| A reference to the entity view updater that controls this entity view. More... | |
| QuantumGame | Game [get] |
| A reference to the current game that this entity view belongs to QuantumEntityViewUpdater.ObservedGame. Gets nullified during OnDeactivate. More... | |
| bool | GameObjectNameIsEntityRef [get, set] |
| If set to true, the game object will be renamed to the EntityRef number. More... | |
| IQuantumSnapshotInterpolationTimer | SnapshotInterpolationTimer [get] |
| Snapshot interpolation information, usually stored on QuantumEntityViewUpdater.SnapshotInterpolation. More... | |
| Transform | Transform [get] |
| Access the transform of the entity view. In play mode the transform object will be cached to improve the performance. More... | |
| QuantumEntityViewTransformHistory | TransformHistory [get] |
| The per-tick transform history this view records into and interpolates from, owned by the QuantumEntityViewUpdater. Set on activation. More... | |
| Dictionary< Type, IQuantumViewContext > | ViewContexts [get] |
| All contexts found on the QuantumEntityViewUpdater game object accessible by their type. More... | |
The Quantum entity view component is the representation of the entity inside Unity. Instances will be created by the EntityViewUpdater. Quantum entity with the View component will references a Quantum EntityView asset which will in turn be instantiated as EntityView.Prefab and the resulting game object includes this script.
|
inline |
Set the QuantumEntityViewFlags to further configure the entity view.
| flag | The flag enum value |
| isEnabled | Set or unset the flag. |
| bool Quantum.QuantumEntityView.HasViewFlag | ( | QuantumEntityViewFlags | flag | ) |
Test if a view flag is set.
| flag |
|
inlinevirtual |
A callback to override to add custom logic to the initialization of this entity view.
|
inlinevirtual |
A callback to override to add custom logic the activation of this entity view.
| frame | Frame |
|
inlinevirtual |
A callback to override to add custom logic to the deactivation of this entity view.
|
inlinevirtual |
A callback to override to add custom logic to the update method.
|
inlinevirtual |
A callback to override to add custom logic to the late update method.
|
inlinevirtual |
A callback to override to add custom logic when the associate game has changed on the connected QuantumEntityViewUpdater.
|
inline |
There are two sources how to get the transform 3D data from an entity. Using the Quantum predicted frames or a snapshot interpolation. Toggle the setting on InterpolationMode.
| timeRef | Time reference context |
| param | Transform parameter to be filled out |
| frameNumber | Resulting frame number |
| transform | Resulting transform |
| isSpawning | Is the entity spawning |
|
inline |
Apply new transform 3D data and interpolation.
| parameter | Parameter |
|
inline |
There are two sources how to get the transform 3D data from an entity. Using the Quantum predicted frames or a snapshot interpolation. Toggle the setting on InterpolationMode.
| timeRef | Time reference context |
| param | Transform parameter to be filled out |
| frameNumber | Resulting frame number |
| transform | Resulting transform |
| transformVertical | Transform vertical component |
| hasVertical | Has a transform vertical 2D component |
| isSpawning | Is the entity spawning |
True if data could be retrieved
|
inline |
Apply new transform 2D data and interpolation.
| parameter | Parameter |
|
inlineprotectedvirtual |
The method to override to apply the final position and rotation interpolation to the view transform.
| param |
Reimplemented in Quantum.QuantumRagdollLimbView.
| AssetGuid Quantum.QuantumEntityView.AssetGuid |
Will set to the AssetObject.Guid that the underlying EntityView asset has. Or receives a new Guid when binding this view script to a scene entity.
| EntityRef Quantum.QuantumEntityView.EntityRef |
References the Quantum entity that this view script is liked to.
| QuantumEntityViewBindBehaviour Quantum.QuantumEntityView.BindBehaviour |
Set the entity view bind behaviour. If set to QuantumEntityViewBindBehaviour.NonVerified then the view is created during a predicted frame. Entity views created at that time can be subject to changes and even be destroyed because of misprediction. Entity views created during QuantumEntityViewBindBehaviour.Verified will be more stable but are always created at a later time, when the input has been confirmed by the server.
| bool Quantum.QuantumEntityView.ManualDisposal |
If enabled the QuantumEntityViewUpdater will not destroy (or disable, in case of map entities) this instance. The responsibility to destroy the game object is on the user. The OnEntityDestroyed callback will still be called.
| bool Quantum.QuantumEntityView.ManualDiposal => ManualDisposal |
Obsolete property, use ManualDisposal
| QuantumEntityViewFlags Quantum.QuantumEntityView.ViewFlags |
Set the QuantumEntityViewFlags to further configure the entity view.
| QuantumEntityViewInterpolationMode Quantum.QuantumEntityView.InterpolationMode = QuantumEntityViewInterpolationMode.ExponentialDecay |
Set the QuantumEntityViewInterpolationMode. Snapshot-interpolation or AUTO mode require the QuantumEntityViewFlags.SnapshotInterpolationEnabled flag to be set. Default is ExponentialDecay.
| Single Quantum.QuantumEntityView.ErrorCorrectionRateMin = 3.3f |
A factor with dimension of 1/s (Hz) that works as a lower limit for how much of the accumulated prediction error is corrected every frame. This factor affects both the position and the rotation correction. Suggested values are greater than zero and smaller than ErrorCorrectionRateMax.
E.g.: ErrorCorrectionRateMin = 3, rendering delta time = (1/60)s: at least 5% (3 * 1/60) of the accumulated error will be corrected on this rendered frame.
This threshold might not be respected if the resultant correction magnitude is below the ErrorPositionMinCorrection or above the ErrorPositionTeleportDistance, for the position error, or above the ErrorRotationTeleportDistance, for the rotation error.
| Single Quantum.QuantumEntityView.ErrorCorrectionRateMax = 10f |
A factor with dimension of 1/s (Hz) that works as a upper limit for how much of the accumulated prediction error is corrected every frame. This factor affects both the position and the rotation correction. Suggested values are greater than ErrorCorrectionRateMin and smaller than half of a target rendering rate.
E.g.: ErrorCorrectionRateMax = 15, rendering delta time = (1/60)s: at maximum 25% (15 * 1/60) of the accumulated error will be corrected on this rendered frame.
This threshold might not be respected if the resultant correction magnitude is below the ErrorPositionMinCorrection or above the ErrorPositionTeleportDistance, for the position error, or above the ErrorRotationTeleportDistance, for the rotation error.
| Single Quantum.QuantumEntityView.ErrorPositionBlendStart = 0.25f |
The reference for the magnitude of the accumulated position error, in meters, at which the position error will be corrected at the ErrorCorrectionRateMin. Suggested values are greater than ErrorPositionMinCorrection and smaller than ErrorPositionBlendEnd.
In other words, if the magnitude of the accumulated error is equal to or smaller than this threshold, it will be corrected at the ErrorCorrectionRateMin. If, instead, the magnitude is between this threshold and ErrorPositionBlendEnd, the error is corrected at a rate between ErrorCorrectionRateMin and ErrorCorrectionRateMax, proportionally. If it is equal to or greater than ErrorPositionBlendEnd, it will be corrected at the ErrorCorrectionRateMax.
Note: as the factor is expressed in distance units (meters), it might need to be scaled proportionally to the overall scale of objects in the scene and speeds at which they move, which are factors that affect the expected magnitude of prediction errors.
| Single Quantum.QuantumEntityView.ErrorPositionBlendEnd = 1f |
The reference for the magnitude of the accumulated position error, in meters, at which the position error will be corrected at the ErrorCorrectionRateMax. Suggested values are greater than ErrorPositionBlendStart and smaller than ErrorPositionTeleportDistance.
In other words, if the magnitude of the accumulated error is equal to or greater than this threshold, it will be corrected at the ErrorCorrectionRateMax. If, instead, the magnitude is between ErrorPositionBlendStart and this threshold, the error is corrected at a rate between ErrorCorrectionRateMin and ErrorCorrectionRateMax, proportionally. If it is equal to or smaller than ErrorPositionBlendStart, it will be corrected at the ErrorCorrectionRateMin.
Note: as the factor is expressed in distance units (meters), it might need to be scaled proportionally to the overall scale of objects in the scene and speeds at which they move, which are factors that affect the expected magnitude of prediction errors.
| Single Quantum.QuantumEntityView.ErrorRotationBlendStart = 0.1f |
The reference for the magnitude of the accumulated rotation error, in radians, at which the rotation error will be corrected at the ErrorCorrectionRateMin. Suggested values are smaller than ErrorRotationBlendEnd.
In other words, if the magnitude of the accumulated error is equal to or smaller than this threshold, it will be corrected at the ErrorCorrectionRateMin. If, instead, the magnitude is between this threshold and ErrorRotationBlendEnd, the error is corrected at a rate between ErrorCorrectionRateMin and ErrorCorrectionRateMax, proportionally. If it is equal to or greater than ErrorRotationBlendEnd, it will be corrected at the ErrorCorrectionRateMax.
| Single Quantum.QuantumEntityView.ErrorRotationBlendEnd = 0.5f |
The reference for the magnitude of the accumulated rotation error, in radians, at which the rotation error will be corrected at the ErrorCorrectionRateMax. Suggested values are greater than ErrorRotationBlendStart and smaller than ErrorRotationTeleportDistance.
In other words, if the magnitude of the accumulated error is equal to or greater than this threshold, it will be corrected at the ErrorCorrectionRateMax. If, instead, the magnitude is between ErrorRotationBlendStart and this threshold, the error is corrected at a rate between ErrorCorrectionRateMin and ErrorCorrectionRateMax, proportionally. If it is equal to or smaller than ErrorRotationBlendStart, it will be corrected at the ErrorCorrectionRateMin.
| Single Quantum.QuantumEntityView.ErrorPositionMinCorrection = 0.025f |
The value, in meters, that represents the minimum magnitude of the accumulated position error that will be corrected in a single frame, until it is fully corrected.
This setting has priority over the resultant correction rate, i.e. the restriction will be respected even if it makes the effective correction rate be different than the one computed according to the min/max rates and start/end blend values. Suggested values are greater than zero and smaller than ErrorPositionBlendStart.
Note: as the factor is expressed in distance units (meters), it might need to be scaled proportionally to the overall scale of objects in the scene and speeds at which they move, which are factors that affect the expected magnitude of prediction errors.
| Single Quantum.QuantumEntityView.ErrorPositionTeleportDistance = 2f |
The value, in meters, that represents the magnitude of the accumulated position error above which the error will be instantaneously corrected, effectively teleporting the rendered object to its correct position. Suggested values are greater than ErrorPositionBlendEnd.
This setting has priority over the resultant correction rate, i.e. the restriction will be respected even if it makes the effective correction rate be different than the one computed according to the min/max rates and start/end blend values.
Note: as the factor is expressed in distance units (meters), it might need to be scaled proportionally to the overall scale of objects in the scene and speeds at which they move, which are factors that affect the expected magnitude of prediction errors.
| Single Quantum.QuantumEntityView.ErrorRotationTeleportDistance = 0.5f |
The value, in radians, that represents the magnitude of the accumulated rotation error above which the error will be instantaneously corrected, effectively teleporting the rendered object to its correct orientation. Suggested values are greater than ErrorRotationBlendEnd.
This setting has priority over the resultant correction rate, i.e. the restriction will be respected even if it makes the effective correction rate be different than the one computed according to the min/max rates and start/end blend values.
| bool Quantum.QuantumEntityView.TeleportWhenScreenChanged = false |
Entities parented to a RectTransform require this to be enabled.
| bool Quantum.QuantumEntityView.OverrideSmoothTime |
Overwrite the smooth time constant for the exponential decay interpolation. By default uses the simulation delta time. This represents the time to correct ~63% of the error, so smaller values will correct faster but might cause more jitter, while bigger values will be smoother but might cause more error.
| float Quantum.QuantumEntityView.SmoothTime = 0.016f |
The smooth time constant for the exponential decay interpolation.
| float Quantum.QuantumEntityView.ExponentialAlpha |
The exponential decay interpolation alpha value for this entity view, read-only.
| EntityUnityEvent Quantum.QuantumEntityView.OnEntityInstantiated |
Is called after the entity view has been instantiated.
| EntityUnityEvent Quantum.QuantumEntityView.OnEntityDestroyed |
Is called before the entity view is destroyed.
| IQuantumViewComponent [] Quantum.QuantumEntityView.ViewComponents => _viewComponents |
Access the entity view components registered to this entity view. All view components found on this game object during creation are used.
|
getset |
If set to true, the game object will be renamed to the EntityRef number.
|
get |
A reference to the entity view updater that controls this entity view.
|
get |
The per-tick transform history this view records into and interpolates from, owned by the QuantumEntityViewUpdater. Set on activation.
|
get |
Snapshot interpolation information, usually stored on QuantumEntityViewUpdater.SnapshotInterpolation.
|
get |
A reference to the current game that this entity view belongs to QuantumEntityViewUpdater.ObservedGame. Gets nullified during OnDeactivate.
|
get |
All contexts found on the QuantumEntityViewUpdater game object accessible by their type.
|
get |
Access the transform of the entity view. In play mode the transform object will be cached to improve the performance.