Consejos para trabajar con Modo de componente - LumberyardGuía de usuario de

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Consejos para trabajar con Modo de componente

Consulte los siguientes consejos para añadir un Modo de componente a su componente.

Gestión de entrada adicional

Si desea gestionar eventos de ratón de manera específica (por ejemplo, sin utilizar manipuladores), puede anular HandleMouseInteraction, que forma parte de la clase EditorBaseComponentMode que se define en el ComponentModeRequestBus.

Esta función HandleMouseInteraction se llama cada vez que se produce un evento de ratón. El MouseInteractionEvent, que se transfiere como argumento para la función, contiene información como el rayo de selección del ratón, la posición en el espacio de la pantalla, teclas de modificador y botones que se pulsan.

// EditorBaseComponentMode void Refresh() override; bool HandleMouseInteraction( const AzToolsFramework::ViewportInteraction::MouseInteractionEvent& mouseInteraction) override;

Dibujo adicional

Si desea añadir dibujo de depuración adicional en Modo de componente, puede implementar AzFramework::EntityDebugDisplayEventBus y, a continuación, anular DisplayEntityViewport. Recuerde conectar el EntityDebugDisplayEventBus en el constructor de Modo de componente y desconectarlo en el destructor.

Esto puede resultar útil para dibujo adicional para una entidad y sus componentes.

nota

El EntityDebugDisplayEventBus solo lo dirige EntityId. Es posible que surjan problemas a la hora de trabajar con varios componentes del mismo tipo en una entidad determinada.

Consulte el siguiente ejemplo para el archivo .h.

// EditorPointLightComponentMode.h // AzFramework::EntityDebugDisplayEventBus void DisplayEntityViewport( const AzFramework::ViewportInfo& viewportInfo, AzFramework::DebugDisplayRequests& debugDisplay) override;

Consulte el siguiente ejemplo para el archivo de implementación .cpp.

// EditorPointLightComponentMode.cpp EditorPointLightComponentMode::EditorPointLightComponentMode( const AZ::EntityComponentIdPair& entityComponentIdPair, AZ::Uuid componentType) : EditorBaseComponentMode(entityComponentIdPair, componentType) { ... AzFramework::EntityDebugDisplayEventBus::Handler::BusConnect(GetEntityId()); } EditorPointLightComponentMode::~EditorPointLightComponentMode() { AzFramework::EntityDebugDisplayEventBus::Handler::BusDisconnect(); ... } void EditorPointLightComponentMode::DisplayEntityViewport( const AzFramework::ViewportInfo& /*viewportInfo*/, AzFramework::DebugDisplayRequests& debugDisplay) { ... }