#include #include "UIEditorVectorFieldInteractionShared.h" namespace XCEngine::UI::Editor { namespace { struct Vector3FieldInteractionTraits { using Spec = Widgets::UIEditorVector3FieldSpec; using Metrics = Widgets::UIEditorVector3FieldMetrics; using Layout = Widgets::UIEditorVector3FieldLayout; using HitTarget = Widgets::UIEditorVector3FieldHitTarget; using HitTargetKind = Widgets::UIEditorVector3FieldHitTargetKind; using InteractionState = UIEditorVector3FieldInteractionState; using InteractionResult = UIEditorVector3FieldInteractionResult; using InteractionFrame = UIEditorVector3FieldInteractionFrame; static constexpr std::size_t kComponentCount = 3u; static constexpr std::size_t kInvalidComponentIndex = Widgets::UIEditorVector3FieldInvalidComponentIndex; static constexpr HitTargetKind kNoneHitTargetKind = Widgets::UIEditorVector3FieldHitTargetKind::None; static constexpr HitTargetKind kRowHitTargetKind = Widgets::UIEditorVector3FieldHitTargetKind::Row; static constexpr HitTargetKind kComponentHitTargetKind = Widgets::UIEditorVector3FieldHitTargetKind::Component; static auto& FieldState(InteractionState& state) { return state.vector3FieldState; } static const auto& FieldState(const InteractionState& state) { return state.vector3FieldState; } }; } // namespace UIEditorVector3FieldInteractionFrame UpdateUIEditorVector3FieldInteraction( UIEditorVector3FieldInteractionState& state, Widgets::UIEditorVector3FieldSpec& spec, const ::XCEngine::UI::UIRect& bounds, const std::vector<::XCEngine::UI::UIInputEvent>& inputEvents, const Widgets::UIEditorVector3FieldMetrics& metrics) { return Internal::VectorFieldInteractionShared::UpdateInteraction< Vector3FieldInteractionTraits>( state, spec, bounds, inputEvents, metrics); } } // namespace XCEngine::UI::Editor