/* * Copyright (c) Contributors to the Open 3D Engine Project * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #pragma once #include #include #include #include #include #include #include #include #include #include #include "CameraComponent.h" #include "CameraComponentController.h" #include #include #include namespace Camera { ////////////////////////////////////////////////////////////////////////// /// The CameraComponent holds all of the data necessary for a camera. /// Get and set data through the CameraRequestBus or TransformBus ////////////////////////////////////////////////////////////////////////// using EditorCameraComponentBase = AzToolsFramework::Components::EditorComponentAdapter; class EditorCameraComponent : public EditorCameraComponentBase , public EditorCameraViewRequestBus::Handler , private AzFramework::EntityDebugDisplayEventBus::Handler , private EditorCameraNotificationBus::Handler { public: AZ_EDITOR_COMPONENT(EditorCameraComponent, EditorCameraComponentTypeId, AzToolsFramework::Components::EditorComponentBase); virtual ~EditorCameraComponent() = default; static void Reflect(AZ::ReflectContext* reflection); // AZ::Component interface void Activate() override; void Deactivate() override; AZ::u32 OnConfigurationChanged() override; // AzFramework::DebugDisplayRequestBus::Handler interface void DisplayEntityViewport( const AzFramework::ViewportInfo& viewportInfo, AzFramework::DebugDisplayRequests& debugDisplay) override; /// EditorCameraNotificationBus::Handler interface void OnViewportViewEntityChanged(const AZ::EntityId& newViewId) override; void ToggleCameraAsActiveView() override { OnPossessCameraButtonClicked(); } protected: void EditorDisplay(AzFramework::DebugDisplayRequests& displayInterface, const AZ::Transform& world); AZ::Crc32 OnPossessCameraButtonClicked(); AZStd::string GetCameraViewButtonText() const; bool m_isActiveEditorCamera = false; float m_frustumViewPercentLength = 1.f; AZ::Color m_frustumDrawColor = AzFramework::ViewportColors::HoverColor; }; } // Camera