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
163private:
164
165 void dragMessageBroadcast(const fsPoint& pCurrentPot);
166
167 void activeSubSceneUpdate();
168 fsS32 mySubsceneGroupID() const;
169
170 void onTap(const fsPoint& pTapPos) override;
171
172 void onDragStart(const fsPoint& pStartPos) override;
173 void onDragMove(const fsPoint& pCurrPos) override;
174 void onDragEnd(const fsPoint& pEndPos) override;
175
176 void onPinchStart(const fsPoint& pStartPosPointA, const fsPoint& pStartPosPointB) override;
177 void onPinchMove(const fsPoint& pCurrPos, const fsPoint& pDelta, fsS32 pPointID) override;
178 void onPinchEnd(const fsPoint& pCurrPos, const fsPoint& pDelta, fsS32 pPointID) override;
179
180 fsS32 mDoubleTapTime;
181};
182
183#endif
fsBool focusPointUpdate(fsS32 pDeltaMS, fsF32 pCurrentZoom, fsS32 pMinZoom)
Definition gfILensComponent.cpp:361
void init(const fsPoint &pDimensions, const fsPoint &pScrollWindow, const fsPoint &pDragEnable, const fsPoint &pLookAt)
Definition gfILensComponent.cpp:568
void enabledAxisSet(const fsPoint &pPoint)
Definition gfILensComponent.h:36
void clear()
Definition gfILensComponent.cpp:535
void updatePos(fsPoint const &pPos, fsF32 pCurrentZoom, fsF32 pMinZoom)
Definition gfILensComponent.cpp:314
fsBool focusPointSet(fsPoint const &pPos)
Definition gfILensComponent.cpp:561
void focusPointCalculate(fsPoint const &pTapPos, fsF32 pCurrentZoom)
Definition gfILensComponent.cpp:542
void startSet(fsPoint pStartPos)
Definition gfILensComponent.cpp:520
fsCDrag()
Definition gfILensComponent.cpp:577
fsPoint scrollRangeCalculate(fsF32 pCurrentZoom, fsF32 pMinZoom)
Definition gfILensComponent.cpp:439
void endSet(fsPoint pEndPos)
Definition gfILensComponent.cpp:504
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:682
fsBool reset()
Definition gfILensComponent.cpp:615
fsBool zoomingGet() const
Definition gfILensComponent.h:94
void toggle()
Definition gfILensComponent.cpp:622
void end(const fsPoint &pCurrPos, const fsPoint &pDelta, fsS32 pPointID)
Definition gfILensComponent.cpp:669
fsPoint pinchZoomCentrePointGet()
Definition gfILensComponent.cpp:641
fsF32 minZoomGet() const
Definition gfILensComponent.h:84
void update(const fsPoint &pCurrPos, const fsPoint &pDelta, fsS32 pPointID)
Definition gfILensComponent.cpp:656
fsBool scaleUpdate(fsS32 pDeltaTime)
Definition gfILensComponent.cpp:602
void zoomSet(fsF32 pMin, fsF32 pMax, fsF32 pCurr)
Definition gfILensComponent.cpp:595
void start(const fsPoint &pStartPosPointA, const fsPoint &pStartPosPointB)
Definition gfILensComponent.cpp:647
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
fsCEntity *const targetGet()
Definition gfILensComponent.cpp:101
virtual void doOnDragEnd(const fsPoint &pEndPos)
Definition gfILensComponent.cpp:257
std::unique_ptr< fsCDrag > mDrag
Definition gfILensComponent.h:158
virtual void doOnTap(const fsPoint &pTapPos)
Definition gfILensComponent.cpp:164
std::unique_ptr< fsCZoom > mZoom
Definition gfILensComponent.h:159
virtual ~gfILensComponent()
Definition gfILensComponent.cpp:310
virtual void doOnPinchStart(const fsPoint &pStartPosPointA, const fsPoint &pStartPosPointB)
Definition gfILensComponent.cpp:196
void zoomClear()
Definition gfILensComponent.cpp:53
virtual void doOnDragStart(const fsPoint &pStartPos)
Definition gfILensComponent.cpp:224
virtual void doOnPinchEnd(const fsPoint &pCurrPos, const fsPoint &pDelta, fsS32 pPointID)
Definition gfILensComponent.cpp:216
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:208
virtual void doOnDragMove(const fsPoint &pCurrPos)
Definition gfILensComponent.cpp:248
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:300
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
fsF32 y
Definition fsVec2d.h:34
fsF32 x
Definition fsVec2d.h:33
Definition gfILensComponent.h:125
fsPoint mDragDelta
Definition gfILensComponent.h:126