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);
}
}