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 bool shouldHover(
const PickResultPointer& pickResult)
override;
45 bool shouldTrigger(
const PickResultPointer& pickResult)
override;
46 virtual PickResultPointer getPickResultCopy(
const PickResultPointer& pickResult)
const override;
48 PointerEvent buildPointerEvent(
const PickedObject& target,
const PickResultPointer& pickResult,
const std::string& button =
"",
bool hover =
true)
override;
51 void show(
const StylusTip& tip);
55 PickedObject triggeredObject;
56 glm::vec3 intersection { NAN };
57 glm::vec2 triggerPos2D { NAN };
58 glm::vec3 surfaceNormal { NAN };
59 quint64 triggerStartTime { 0 };
60 bool deadspotExpired {
true };
61 bool triggering {
false };
62 bool wasTriggering {
false };
64 bool hovering {
false };
75 RenderState _renderState { EVENTS_ON };
79 static bool isWithinBounds(
float distance,
float min,
float max,
float hysteresis);
80 static glm::vec3 findIntersection(
const PickedObject& pickedObject,
const glm::vec3& origin,
const glm::vec3& direction);
81 static glm::vec2 findPos2D(
const PickedObject& pickedObject,
const glm::vec3& origin);
83 bool _showing {
true };
85 glm::vec3 _modelPositionOffset;
86 glm::vec3 _modelDimensions;
87 glm::quat _modelRotationOffset;
Represents a 2D or 3D pointer to the scripting engine. Exposed as PointerEvent
Definition: PointerEvent.h:30