/// <summary> /// Tries to start or stop the camera zoom. The camera may not be able to start if an ability doesn't allow it. /// </summary> /// <param name="zoom">Should the camera zoom?</param> public void TryZoom(bool zoom) { if (m_Character == null || !m_Character.activeInHierarchy) { return; } // The zoom state may not be able to start. Remember the input so when the game state changes (different ability, item, etc) zoom can try to activate again. m_ZoomInput = zoom; if (m_ZoomInput) { // The camera may not allow zooming. if (!m_CanZoom) { SetZoom(false); return; } // The ViewType may not allow zoomig. if (!m_ViewType.CanZoom()) { SetZoom(false); return; } // The item may not allow zooming. if (m_CharacterInventory != null) { for (int i = 0; i < m_CharacterInventory.SlotCount; ++i) { var item = m_CharacterInventory.GetActiveItem(i); if (item != null && !item.CanCameraZoom()) { SetZoom(false); return; } } } // The character abilities disallow zoom. if (m_CharacterLocomotion.ActiveAbilityCount > 0) { for (int i = 0; i < m_CharacterLocomotion.ActiveAbilityCount; ++i) { if (!m_CharacterLocomotion.ActiveAbilities[i].CanCameraZoom()) { SetZoom(false); return; } } } if (m_CharacterLocomotion.ActiveItemAbilityCount > 0) { for (int i = 0; i < m_CharacterLocomotion.ActiveItemAbilityCount; ++i) { if (!m_CharacterLocomotion.ActiveItemAbilities[i].CanCameraZoom()) { SetZoom(false); return; } } } } // The camera can zoom or unzoom. SetZoom(zoom); }