Files
XCEngine/editor/src/Fields/UIEditorVector3FieldInteraction.cpp
2026-04-25 16:46:01 +08:00

56 lines
2.0 KiB
C++

#include <XCEditor/Fields/UIEditorVector3FieldInteraction.h>
#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