/// <summary> /// Sets ONLY the gravity of a game object to true or false and changes /// its state. /// </summary> /// <param name="_hasGravity"></param> public void SetGravity(bool _hasGravity) { if (IsGravityLocked()) { WarnUnauthorizedGravityChange(); return; } Rigidbody rb = GetRigitBodyOrError(); if (rb == null) { return; } rb.useGravity = _hasGravity; if (rb.isKinematic) { actualGravityState = _hasGravity ? Gaze_GravityState.ACTIVE_KINEMATIC : Gaze_GravityState.UNACTIVE_KINEMATIC; } else { actualGravityState = _hasGravity ? Gaze_GravityState.ACTIVE_NOT_KINEMATIC : Gaze_GravityState.UNACTIVE_NOT_KINEMATIC; } }
/// <summary> /// Make the IO listen for gravity requests. /// </summary> public void UnlockGravity() { Rigidbody rigidBody = GetRigitBodyOrError(); if (rigidBody == null) { return; } if (rigidBody.isKinematic) { actualGravityState = rigidBody.useGravity ? Gaze_GravityState.ACTIVE_KINEMATIC : Gaze_GravityState.UNACTIVE_KINEMATIC; } else { actualGravityState = rigidBody.useGravity ? Gaze_GravityState.ACTIVE_NOT_KINEMATIC : Gaze_GravityState.UNACTIVE_NOT_KINEMATIC; } }
/// <summary> /// Checks the actual gravity state and store it as default /// </summary> public void SetActualGravityStateAsDefault() { Rigidbody rigidBody = GetRigitBodyOrError(); if (rigidBody == null) { return; } if (rigidBody.isKinematic) { initialGravityState = rigidBody.useGravity ? Gaze_GravityState.ACTIVE_KINEMATIC : Gaze_GravityState.UNACTIVE_KINEMATIC; } else { initialGravityState = rigidBody.useGravity ? Gaze_GravityState.ACTIVE_NOT_KINEMATIC : Gaze_GravityState.UNACTIVE_NOT_KINEMATIC; } actualGravityState = initialGravityState; }
// Make the IO not listen gravity requests public void LockGravity() { actualGravityState = Gaze_GravityState.LOCKED; }