8 #ifndef hifi_StylusPointer_h
9 #define hifi_StylusPointer_h
12 #include <shared/Bilateral.h>
13 #include <RegisteredMetaTypes.h>
15 #include "StylusPick.h"
17 class StylusPointer :
public Pointer {
18 using Parent = Pointer;
19 using Ptr = std::shared_ptr<StylusPointer>;
22 StylusPointer(
const QVariant& props,
const QUuid& stylus,
bool hover,
bool enabled,
23 const glm::vec3& modelPositionOffset,
const glm::quat& modelRotationOffset,
const glm::vec3& modelDimensions);
26 PickQuery::PickType getType()
const override;
28 void updateVisuals(
const PickResultPointer& pickResult)
override;
34 void setRenderState(
const std::string& state)
override;
35 void editRenderState(
const std::string& state,
const QVariant& startProps,
const QVariant& pathProps,
const QVariant& endProps)
override {}
37 QVariantMap toVariantMap()
const override;
39 static QUuid buildStylus(
const QVariantMap& properties);
42 PickedObject getHoveredObject(
const PickResultPointer& pickResult)
override;
43 Buttons getPressedButtons(
const PickResultPointer& pickResult)
override;
44 glm::vec2 getScroll(
const PickResultPointer& pickResult)
override;
46 bool shouldHover(
const PickResultPointer& pickResult)
override;
47 bool shouldTrigger(
const PickResultPointer& pickResult)
override;
48 virtual PickResultPointer getPickResultCopy(
const PickResultPointer& pickResult)
const override;
50 PointerEvent buildPointerEvent(
const PickedObject& target,
const PickResultPointer& pickResult,
const std::string& button =
"",
bool hover =
true)
override;
53 void show(
const StylusTip& tip);
57 PickedObject triggeredObject;
58 glm::vec3 intersection { NAN };
59 glm::vec2 triggerPos2D { NAN };
60 glm::vec3 surfaceNormal { NAN };
61 quint64 triggerStartTime { 0 };
62 bool deadspotExpired {
true };
63 bool triggering {
false };
64 bool wasTriggering {
false };
66 bool hovering {
false };
77 RenderState _renderState { EVENTS_ON };
81 static bool isWithinBounds(
float distance,
float min,
float max,
float hysteresis);
82 static glm::vec3 findIntersection(
const PickedObject& pickedObject,
const glm::vec3& origin,
const glm::vec3& direction);
83 static glm::vec2 findPos2D(
const PickedObject& pickedObject,
const glm::vec3& origin);
85 bool _showing {
true };
87 glm::vec3 _modelPositionOffset;
88 glm::vec3 _modelDimensions;
89 glm::quat _modelRotationOffset;
Represents a 2D or 3D pointer to the scripting engine. Exposed as PointerEvent
Definition: PointerEvent.h:32