-
-
Notifications
You must be signed in to change notification settings - Fork 223
/
Copy pathSpritePolygonTest.h
264 lines (225 loc) · 7.05 KB
/
SpritePolygonTest.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
/****************************************************************************
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
https://axmol.dev/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#ifndef __cocos2d_tests__SpritePolygonTest__
# include "../BaseTest.h"
# include "ui/CocosGUI.h"
DEFINE_TEST_SUITE(SpritePolygonTest);
class SpritePolygonTestCase : public TestCase
{
protected:
std::string _title;
std::string _subtitle;
bool _isDebugDraw;
bool _isNeedDebugMenu;
ax::Vector<ax::DrawNode*> _drawNodes;
virtual std::string title() const override { return _title; };
virtual std::string subtitle() const override { return _subtitle; };
virtual bool init() override;
virtual void onEnter() override;
virtual void onExit() override;
SpritePolygonTestCase();
~SpritePolygonTestCase();
void updateDrawNode();
};
class SpritePolygonTestDemo : public SpritePolygonTestCase
{
protected:
ax::Sprite* _polygonSprite;
ax::Sprite* _polygonSprite_fix;
ax::Sprite* _normalSprite;
virtual bool init() override;
virtual void initSprites(){};
void initTouches();
};
class SpritePolygonTest1 : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTest1);
SpritePolygonTest1();
void initSprites() override;
};
class SpritePolygonTest2 : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTest2);
SpritePolygonTest2();
virtual void initSprites() override;
};
class SpritePolygonTestSlider : public SpritePolygonTestCase
{
protected:
ax::Label* _epsilonLabel;
int _tagIndex;
ax::Sprite* makeSprite(std::string_view filename, const ax::Vec2& pos);
virtual bool init() override;
void initSliders();
virtual void initSprites(){};
void makeSprites(const std::string* list, const int count, const float y);
void changeEpsilon(Object* pSender, ax::ui::Slider::EventType type);
void updateLabel(const ax::Sprite* sp, const ax::PolygonInfo& pinfo);
};
class SpritePolygonTest3 : public SpritePolygonTestSlider
{
public:
CREATE_FUNC(SpritePolygonTest3);
SpritePolygonTest3();
void initSprites() override;
};
class SpritePolygonTest4 : public SpritePolygonTestSlider
{
public:
CREATE_FUNC(SpritePolygonTest4);
SpritePolygonTest4();
void initSprites() override;
};
class SpritePolygonTest5 : public SpritePolygonTestCase
{
public:
CREATE_FUNC(SpritePolygonTest5);
SpritePolygonTest5();
protected:
virtual bool init() override;
void initTouch();
void loadDefaultSprites();
void addSpritePolygon(const ax::Vec2& pos);
void update(float dt) override;
private:
ax::PolygonInfo _polygonInfo;
int _tagIndex;
};
class SpritePolygonPerformance : public SpritePolygonTestCase
{
public:
CREATE_FUNC(SpritePolygonPerformance);
SpritePolygonPerformance();
protected:
int _spriteCount;
int _vertCount;
int _triCount;
int _pixelCount;
float _elapsedTime;
ax::Label* _perfLabel;
int _continuousLowDt;
float _continuousHighDtTime;
float _waitingTime;
int _posX;
int _posY;
int _leftX;
int _rightX;
bool goRight;
bool ended;
float prevDt;
unsigned int _incVert;
unsigned int _incTri;
unsigned int _incPix;
void updateLabel();
virtual void update(float dt) override;
virtual bool init() override;
virtual Node* makeSprite();
void incrementStats();
virtual void initIncrementStats(){};
};
class SpritePolygonPerformanceTestDynamic : public SpritePolygonPerformance
{
public:
CREATE_FUNC(SpritePolygonPerformanceTestDynamic);
SpritePolygonPerformanceTestDynamic();
protected:
ax::Sprite* makeSprite() override;
ax::PolygonInfo _pinfo;
virtual void initIncrementStats() override;
};
class SpritePerformanceTestDynamic : public SpritePolygonPerformance
{
public:
CREATE_FUNC(SpritePerformanceTestDynamic);
SpritePerformanceTestDynamic();
protected:
virtual ax::Sprite* makeSprite() override;
virtual void initIncrementStats() override;
};
class SpritePolygonTestNoCrash : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTestNoCrash);
SpritePolygonTestNoCrash();
virtual void initSprites() override;
};
class SpritePolygonTestTPIsland : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTestTPIsland);
SpritePolygonTestTPIsland();
virtual void initSprites() override;
};
class SpritePolygonTestAutoPolyIsland : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTestAutoPolyIsland);
SpritePolygonTestAutoPolyIsland();
virtual void initSprites() override;
};
class SpritePolygonTestFrameAnim : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTestFrameAnim);
SpritePolygonTestFrameAnim();
virtual void initSprites() override;
};
class Issue14017Test : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(Issue14017Test);
Issue14017Test();
virtual void initSprites() override;
};
class SpritePolygonTestPerformance : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTestPerformance);
virtual std::string title() const override;
virtual std::string subtitle() const override;
virtual void update(float dt) override;
protected:
SpritePolygonTestPerformance();
void createSprite();
virtual ~SpritePolygonTestPerformance();
class Ticker
{
public:
Ticker(int m) : _max(m) {}
void hit() { _cnt += 1; }
void cancel() { _cnt = 0; }
bool ok() { return _cnt >= _max; }
private:
int _cnt = 0;
int _max = 0;
};
Node* _spritesAnchor = nullptr;
int _spriteIndex = 0;
float _maDt = 1.0f / 60.0f;
float _rmaDt = 1.0f / 60.0f;
const float DEST_DT_30FPS = 1.0f / 30.0f;
ax::Label* _totalSprites = nullptr;
Ticker _contSlow = Ticker(20);
Ticker _contFast = Ticker(2);
Ticker _around30fps = Ticker(60 * 3);
};
#endif /* defined(__cocos2d_tests__SpritePolygonTest__) */