namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity { /// /// Interface for external control over the . /// This interface should be implemented from a and be parented or attached to a . /// public interface IGravityController { /// /// Whether the gravity can be processed. /// Gravity controllers that can process receive queries to , controllers that cannot process do not. /// /// /// It's recommended to return when implementing this interface /// in a . /// bool canProcess { get; } /// /// Whether gravity is paused. /// /// bool gravityPaused { get; } /// /// Attempts to lock gravity. /// /// The to apply. /// Whether the gravity was successfully locked. bool TryLockGravity(GravityOverride gravityOverride); /// /// Removes this provider from the list's of locked providers. /// void RemoveGravityLock(); /// /// Called from when gravity lock is changed. /// /// The to apply. /// void OnGravityLockChanged(GravityOverride gravityOverride); /// /// Called from when the grounded state changes. /// /// Whether the player is on the ground. /// void OnGroundedChanged(bool isGrounded); } }