You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Gems/PhysX/Code/Editor/Source/ComponentModes/PhysXSubComponentModeBase.h

49 lines
1.7 KiB
C++

/*
* 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
namespace AZ
{
class EntityComponentIdPair;
} // namespace AZ
namespace AzToolsFramework::ViewportInteraction
{
struct MouseInteractionEvent;
} // namespace AzToolsFramework::ViewportInteraction
namespace PhysX
{
class PhysXSubComponentModeBase
{
public:
virtual ~PhysXSubComponentModeBase() = default;
//! Called when the mode is entered to initialize the mode.
//! @param idPair The entity/component id pair.
virtual void Setup(const AZ::EntityComponentIdPair& idPair) = 0;
//! Called when the mode needs to refresh it's values.
//! @param idPair The entity/component id pair.
virtual void Refresh(const AZ::EntityComponentIdPair& idPair) = 0;
//! Called when the mode exits to perform cleanup.
//! @param idPair The entity/component id pair.
virtual void Teardown(const AZ::EntityComponentIdPair& idPair) = 0;
//! Called when reset hot key is pressed.
//! Should reset values in the sub component mode to sensible defaults.
//! @param idPair The entity/component id pair.
virtual void ResetValues(const AZ::EntityComponentIdPair& idPair) = 0;
//! Additional mouse handling by sub-component mode. Does not absorb mouse event.
virtual void HandleMouseInteraction(
[[maybe_unused]] const AzToolsFramework::ViewportInteraction::MouseInteractionEvent& mouseInteraction) {};
};
} // namespace PhysX