56 lines
2.0 KiB
C++
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
|