// -------------------------------------------------------------------------------------------------------------------- // // Copyright (c) VRMADA, All rights reserved. // // -------------------------------------------------------------------------------------------------------------------- using UltimateXR.Manipulation; using UnityEngine; namespace UltimateXR.Avatar.Controllers { /// /// Internal interface for avatar controllers to make updating publicly available only from within the framework. /// Child classes from will implement these through the protected methods. /// internal interface IUxrAvatarControllerUpdater { #region Public Methods /// /// Updates the avatar for the given frame. This is normally in charge of updating input devices, tracking devices and /// locomotion. /// Animation is left for a later stage (), to make sure it is performed in the /// right order right after Unity has updated the built-in animation components such as . /// void UpdateAvatar(); /// /// Updates the avatar using the current tracking data. /// void UpdateAvatarUsingTrackingDevices(); /// /// Updates the avatar manipulation actions based on user input. /// void UpdateAvatarManipulation(); /// /// Updates the animation and rig transforms for the given frame. It is performed in a later stage than /// to make sure the transforms override the transforms that Unity may have updated using /// built-in components such as . /// void UpdateAvatarAnimation(); /// /// Updates the avatar for a given frame, at the end of all stages and UltimateXR manager updates such as the /// . It can be used to perform operations that require to be executed at the end of all /// stages, such as Inverse Kinematics. /// void UpdateAvatarPostProcess(); #endregion } }