Fission FSN
Loading...
Searching...
No Matches
gfILensComponent.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: gfILensComponent.h
4*
5* Purpose: Interface class for all screen type interactions
6* Used as cover over normal game objects to control
7* user input and pass it on down the line to a target
8* entity - normally the current active sub scene, but
9* over ridable if need be
10*
11*********************************************************************/
12
13#ifndef gfILensComponenthdr
14#define gfILensComponenthdr
15
17
18struct fsPoint;
19
21{
22public:
23
24 void updatePos(fsPoint const& pPos, fsF32 pCurrentZoom, fsF32 pMinZoom);
25
26 void init(const fsPoint& pDimensions, const fsPoint& pScrollWindow, const fsPoint& pDragEnable,
27 const fsPoint& pLookAt);
28
29 fsPoint const& focusPointGet() const { return mFocusPoint; }
30 fsBool focusPointSet(fsPoint const& pPos);
31 fsBool focusPointUpdate(fsS32 pDeltaMS, fsF32 pCurrentZoom, fsS32 pMinZoom);
32 void focusPointCalculate(fsPoint const& pTapPos, fsF32 pCurrentZoom);
33
34 fsPoint scrollRangeCalculate(fsF32 pCurrentZoom, fsF32 pMinZoom);
35
36 void enabledAxisSet(const fsPoint& pPoint) { mEnabledAxis = pPoint; }
37
38 void startSet(fsPoint pStartPos);
39 void endSet(fsPoint pEndPos);
40 void clear();
41
42 fsCDrag();
43
44protected:
45
46private:
47
48 void moveSet(fsPoint pPos);
49 fsBool draggingInertiaGet() const { return mDragVelocity.x != 0.0f || mDragVelocity.y != 0.0f; }
50
51 fsPoint overScrollCalculate(fsF32 pCurrentZoom, fsF32 pMinZoom);
52 void dragValuesDampen(fsS32 pOverX, fsS32 pOverY);
53 void scrollSnapBack(fsPoint const& pOverScroll);
54 void overDragDampen(fsPoint const& pOverScroll);
55 void deltaClear();
56 void dragDampen(fsPoint const& pOverScroll);
57
58 fsPoint mFocusPoint;
59 fsVec2d mFocusPointVelocity;
60
61 fsPoint mEnabledAxis;
62 fsBool mDragging;
63
64 fsPoint mPrevPos;
65 fsPoint mStartPos;
66 fsPoint mTouchDelta;
67
68 fsVec2d mDragVelocity;
69
70 fsPoint mDisplayDimensions;
71 fsPoint mDimensions;
72 fsPoint mScrollWindow;
73};
74
75
77{
78public:
79
80 void zoomSet(fsF32 pMin, fsF32 pMax, fsF32 pCurr);
81
83
84 fsF32 minZoomGet() const { return mMinScale; }
85 fsBool maxScale() const { return mMaxScale == mCurrScale; }
86 fsBool scaleUpdate(fsS32 pDeltaTime);
87 fsBool reset();
88 void toggle();
89
90 fsF32 currentScaleGet() const { return mCurrScale; }
91
92 void pinchZoomClear() { mPinchZoom = 0.0f; }
93
94 fsBool zoomingGet() const { return mZooming; }
95 void start(const fsPoint& pStartPosPointA, const fsPoint& pStartPosPointB);
96 void update(const fsPoint& pCurrPos, const fsPoint& pDelta, fsS32 pPointID);
97 void end(const fsPoint& pCurrPos, const fsPoint& pDelta, fsS32 pPointID);
98
99 fsCZoom();
100
101protected:
102private:
103
104 void pinchZoomCalculate();
105
106 fsBool mZooming;
107
108 fsPoint mPinchPrevPosA;
109 fsPoint mPinchPrevPosB;
110 fsF32 mPinchZoom;
111
112 fsF32 mMaxScale;
113 fsF32 mMinScale;
114 fsF32 mCurrScale;
115};
116
117
119{
120public:
121
123
128
129 void zoomSet(fsF32 pMin, fsF32 pMax, fsF32 pCurr);
130 void zoomClear();
131
132 virtual ~gfILensComponent();
133
134protected:
135
136 fsCEntity* const targetGet();
137 virtual fsCEntity* const targetGetDo();
138
139 void zoomAndScrollReset();
140
141 void updateDo(fsS32 pDeltaMs) override;
142
143 virtual void doOnTap(const fsPoint& pTapPos);
144
145 virtual void doOnDragStart(const fsPoint& pStartPos);
146 virtual void doOnDragMove(const fsPoint& pCurrPos);
147 virtual void doOnDragEnd(const fsPoint& pEndPos);
148
149 virtual void doOnPinchStart(const fsPoint& pStartPosPointA, const fsPoint& pStartPosPointB);
150 virtual void doOnPinchMove(const fsPoint& pCurrPos, const fsPoint& pDelta, fsS32 pPointID);
151 virtual void doOnPinchEnd(const fsPoint& pCurrPos, const fsPoint& pDelta, fsS32 pPointID);
152
153 gfILensComponent(fsCEntity* pParent, fsBool pHandleTaps, fsBool pHandleDragEvent, fsBool pHandlePinchEvents);
154
157
158 std::unique_ptr<fsCDrag> mDrag;
159 std::unique_ptr<fsCZoom> mZoom;
160
162
163 // The active subscene's authored position is its home; the drag focus point is a
164 // scroll offset applied on top of it, so an off-centre subscene keeps its placement
165 // instead of being slammed to (0,0) when the lens first takes it as a target.
167 fsVec2d mHomePos{0.0f, 0.0f};
168
169private:
170
171 void dragMessageBroadcast(const fsPoint& pCurrentPot);
172
173 void activeSubSceneUpdate();
174 fsS32 mySubsceneGroupID() const;
175
176 void onTap(const fsPoint& pTapPos) override;
177
178 void onDragStart(const fsPoint& pStartPos) override;
179 void onDragMove(const fsPoint& pCurrPos) override;
180 void onDragEnd(const fsPoint& pEndPos) override;
181
182 void onPinchStart(const fsPoint& pStartPosPointA, const fsPoint& pStartPosPointB) override;
183 void onPinchMove(const fsPoint& pCurrPos, const fsPoint& pDelta, fsS32 pPointID) override;
184 void onPinchEnd(const fsPoint& pCurrPos, const fsPoint& pDelta, fsS32 pPointID) override;
185
186 fsS32 mDoubleTapTime;
187};
188
189#endif
fsBool focusPointUpdate(fsS32 pDeltaMS, fsF32 pCurrentZoom, fsS32 pMinZoom)
Definition gfILensComponent.cpp:369
void init(const fsPoint &pDimensions, const fsPoint &pScrollWindow, const fsPoint &pDragEnable, const fsPoint &pLookAt)
Definition gfILensComponent.cpp:576
void enabledAxisSet(const fsPoint &pPoint)
Definition gfILensComponent.h:36
void clear()
Definition gfILensComponent.cpp:543
void updatePos(fsPoint const &pPos, fsF32 pCurrentZoom, fsF32 pMinZoom)
Definition gfILensComponent.cpp:322
fsBool focusPointSet(fsPoint const &pPos)
Definition gfILensComponent.cpp:569
void focusPointCalculate(fsPoint const &pTapPos, fsF32 pCurrentZoom)
Definition gfILensComponent.cpp:550
void startSet(fsPoint pStartPos)
Definition gfILensComponent.cpp:528
fsCDrag()
Definition gfILensComponent.cpp:585
fsPoint scrollRangeCalculate(fsF32 pCurrentZoom, fsF32 pMinZoom)
Definition gfILensComponent.cpp:447
void endSet(fsPoint pEndPos)
Definition gfILensComponent.cpp:512
fsPoint const & focusPointGet() const
Definition gfILensComponent.h:29
Definition fsCEntity.h:39
Definition fsCUniqueId.h:21
fsBool maxScale() const
Definition gfILensComponent.h:85
void pinchZoomClear()
Definition gfILensComponent.h:92
fsF32 currentScaleGet() const
Definition gfILensComponent.h:90
fsCZoom()
Definition gfILensComponent.cpp:690
fsBool reset()
Definition gfILensComponent.cpp:623
fsBool zoomingGet() const
Definition gfILensComponent.h:94
void toggle()
Definition gfILensComponent.cpp:630
void end(const fsPoint &pCurrPos, const fsPoint &pDelta, fsS32 pPointID)
Definition gfILensComponent.cpp:677
fsPoint pinchZoomCentrePointGet()
Definition gfILensComponent.cpp:649
fsF32 minZoomGet() const
Definition gfILensComponent.h:84
void update(const fsPoint &pCurrPos, const fsPoint &pDelta, fsS32 pPointID)
Definition gfILensComponent.cpp:664
fsBool scaleUpdate(fsS32 pDeltaTime)
Definition gfILensComponent.cpp:610
void zoomSet(fsF32 pMin, fsF32 pMax, fsF32 pCurr)
Definition gfILensComponent.cpp:603
void start(const fsPoint &pStartPosPointA, const fsPoint &pStartPosPointB)
Definition gfILensComponent.cpp:655
fsIGestureHandlingComponent(fsCEntity *pParent, fsBool pHandleTaps, fsBool pHandleDragEvent, fsBool pHandlePinchEvents)
Definition fsIGestureHandlingComponent.cpp:448
fsPoint mDragPos
Definition gfILensComponent.h:155
virtual fsCEntity *const targetGetDo()
Definition gfILensComponent.cpp:106
fsS32 mRunningTime
Definition gfILensComponent.h:156
void updateDo(fsS32 pDeltaMs) override
Definition gfILensComponent.cpp:62
fsVec2d mHomePos
Definition gfILensComponent.h:167
fsCEntity *const targetGet()
Definition gfILensComponent.cpp:101
virtual void doOnDragEnd(const fsPoint &pEndPos)
Definition gfILensComponent.cpp:265
std::unique_ptr< fsCDrag > mDrag
Definition gfILensComponent.h:158
virtual void doOnTap(const fsPoint &pTapPos)
Definition gfILensComponent.cpp:172
std::unique_ptr< fsCZoom > mZoom
Definition gfILensComponent.h:159
virtual ~gfILensComponent()
Definition gfILensComponent.cpp:318
virtual void doOnPinchStart(const fsPoint &pStartPosPointA, const fsPoint &pStartPosPointB)
Definition gfILensComponent.cpp:204
fsCEntity * mHomeTarget
Definition gfILensComponent.h:166
void zoomClear()
Definition gfILensComponent.cpp:53
virtual void doOnDragStart(const fsPoint &pStartPos)
Definition gfILensComponent.cpp:232
virtual void doOnPinchEnd(const fsPoint &pCurrPos, const fsPoint &pDelta, fsS32 pPointID)
Definition gfILensComponent.cpp:224
void zoomSet(fsF32 pMin, fsF32 pMax, fsF32 pCurr)
Definition gfILensComponent.cpp:48
virtual void doOnPinchMove(const fsPoint &pCurrPos, const fsPoint &pDelta, fsS32 pPointID)
Definition gfILensComponent.cpp:216
virtual void doOnDragMove(const fsPoint &pCurrPos)
Definition gfILensComponent.cpp:256
static const fsCUniqueId mDragMessage
Definition gfILensComponent.h:122
void zoomAndScrollReset()
Definition gfILensComponent.cpp:126
gfILensComponent(fsCEntity *pParent, fsBool pHandleTaps, fsBool pHandleDragEvent, fsBool pHandlePinchEvents)
Definition gfILensComponent.cpp:308
fsCEntity * mInitialisedTarget
Definition gfILensComponent.h:161
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
float fsF32
Definition fsBaseTypes.h:28
Definition fsIMessageDispatcher.h:32
Definition fsPoint.h:17
Definition fsVec2d.h:16
fsF32 y
Definition fsVec2d.h:34
fsF32 x
Definition fsVec2d.h:33
Definition gfILensComponent.h:125
fsPoint mDragDelta
Definition gfILensComponent.h:126