/* * 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 LmbrCentral { /// The specific ComponentMode responsible for handling Spline Component editing. class EditorSplineComponentMode : public AzToolsFramework::ComponentModeFramework::EditorBaseComponentMode , private SplineComponentNotificationBus::Handler , private AZ::TransformNotificationBus::Handler , private EditorSplineComponentNotificationBus::Handler { public: AZ_CLASS_ALLOCATOR_DECL EditorSplineComponentMode( const AZ::EntityComponentIdPair& entityComponentIdPair, AZ::Uuid componentType); ~EditorSplineComponentMode(); private: // EditorBaseComponentMode void Refresh() override; AZStd::vector PopulateActionsImpl() override; bool HandleMouseInteraction( const AzToolsFramework::ViewportInteraction::MouseInteractionEvent& mouseInteraction) override; AZStd::string GetComponentModeName() const override; // Manipulator handling void CreateManipulators(); void ContainerChanged(); // SplineComponentNotificationBus void OnSplineChanged() override; void OnVertexAdded(size_t index) override; void OnVertexRemoved(size_t index) override; void OnVertexUpdated(size_t index) override; void OnVerticesSet(const AZStd::vector& vertices) override; void OnVerticesCleared() override; // EditorSplineComponentNotificationBus void OnSplineTypeChanged() override; // TransformNotificationBus void OnTransformChanged(const AZ::Transform& local, const AZ::Transform& world) override; AzToolsFramework::EditorVertexSelectionVariable m_vertexSelection; ///< Handles all manipulator interactions with vertices (inserting and translating). }; } // namespace LmbrCentral