/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #pragma once #include #include #include #include #include namespace SandboxEditor { //! Type responsible for building the editor's modular viewport camera controller. class EditorModularViewportCameraComposer : private EditorModularViewportCameraComposerNotificationBus::Handler , private Camera::EditorCameraNotificationBus::Handler { public: SANDBOX_API explicit EditorModularViewportCameraComposer(AzFramework::ViewportId viewportId); SANDBOX_API ~EditorModularViewportCameraComposer(); //! Build a ModularViewportCameraController from the associated camera inputs. SANDBOX_API AZStd::shared_ptr CreateModularViewportCameraController(); private: //! Setup all internal camera inputs. void SetupCameras(); // EditorModularViewportCameraComposerNotificationBus overrides ... void OnEditorModularViewportCameraComposerSettingsChanged() override; // EditorCameraNotificationBus overrides ... void OnViewportViewEntityChanged(const AZ::EntityId& viewEntityId) override; AZStd::shared_ptr m_firstPersonRotateCamera; AZStd::shared_ptr m_firstPersonPanCamera; AZStd::shared_ptr m_firstPersonTranslateCamera; AZStd::shared_ptr m_firstPersonScrollCamera; AZStd::shared_ptr m_firstPersonFocusCamera; AZStd::shared_ptr m_orbitCamera; AZStd::shared_ptr m_orbitRotateCamera; AZStd::shared_ptr m_orbitTranslateCamera; AZStd::shared_ptr m_orbitDollyScrollCamera; AZStd::shared_ptr m_orbitDollyMoveCamera; AZStd::shared_ptr m_orbitPanCamera; AZStd::shared_ptr m_orbitFocusCamera; AzFramework::ViewportId m_viewportId; }; } // namespace SandboxEditor