com.amanotes.gdk 0.2.66 → 0.2.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/Editor/Extra/GDKAutoUpdateAdapter.cs +67 -0
  3. package/Editor/Extra/GDKAutoUpdateAdapter.cs.meta +11 -0
  4. package/Extra/AmaGDKInstaller.unitypackage +0 -0
  5. package/Extra/CheckDiskSpace.unitypackage +0 -0
  6. package/Extra/ForceUpdate.unitypackage +0 -0
  7. package/Extra/GoogleCMP.unitypackage +0 -0
  8. package/Extra/LegacyGDKUpdateHelper.unitypackage +0 -0
  9. package/Extra/LegacyGDKUpdateHelper.unitypackage.meta +7 -0
  10. package/Extra/PostProcessor.unitypackage +0 -0
  11. package/Packages/AmaGDKConfig.unitypackage +0 -0
  12. package/Packages/AmaGDKExample.unitypackage +0 -0
  13. package/Packages/AmaGDKTest.unitypackage +0 -0
  14. package/Packages/AppsFlyerAdapter.PurchaseConnector.unitypackage +0 -0
  15. package/Packages/AppsFlyerAdapter.unitypackage +0 -0
  16. package/Packages/FirebaseAnalyticsAdapter.unitypackage +0 -0
  17. package/Packages/FirebaseRemoteConfigAdapter.unitypackage +0 -0
  18. package/Packages/IronSourceAdapter.unitypackage +0 -0
  19. package/Packages/RevenueCatAdapter.unitypackage +0 -0
  20. package/Packages/SqliteAnalyticsAdapter.unitypackage +0 -0
  21. package/Runtime/Ad/AdExtension.cs +111 -0
  22. package/Runtime/Ad/AdExtension.cs.meta +3 -0
  23. package/Runtime/Ad/AdLogic.cs +530 -0
  24. package/Runtime/Ad/AdLogic.cs.meta +3 -0
  25. package/Runtime/Ad/AdModuleConfig.cs +39 -0
  26. package/Runtime/Ad/AdModuleConfig.cs.meta +3 -0
  27. package/Runtime/Ad/AdShowContext.cs +43 -0
  28. package/Runtime/Ad/AdShowContext.cs.meta +3 -0
  29. package/Runtime/Ad/AmaGDK.Ads.cs +383 -0
  30. package/Runtime/Ad.meta +8 -0
  31. package/Runtime/AmaGDK.Analytics.cs +20 -1
  32. package/Runtime/AmaGDK.Device.cs +105 -0
  33. package/Runtime/AmaGDK.Device.cs.meta +3 -0
  34. package/Runtime/AmaGDK.Mono.cs +0 -1
  35. package/Runtime/AmaGDK.cs +1 -1
  36. package/Runtime/Fps/AmaFPS.Utils.cs +44 -0
  37. package/Runtime/Fps/AmaFPS.Utils.cs.meta +3 -0
  38. package/Runtime/Fps/AmaFPS.cs +197 -0
  39. package/Runtime/Fps/AmaFPS.cs.meta +11 -0
  40. package/Runtime/Fps/AmaFPSVisualizer.cs +246 -0
  41. package/Runtime/Fps/AmaFPSVisualizer.cs.meta +11 -0
  42. package/Runtime/Fps/BollingerBands.cs +99 -0
  43. package/Runtime/Fps/BollingerBands.cs.meta +11 -0
  44. package/Runtime/Fps/FPSVisualizer.prefab +406 -0
  45. package/Runtime/Fps/FPSVisualizer.prefab.meta +7 -0
  46. package/Runtime/Fps/FrameRecorder.cs +172 -0
  47. package/Runtime/Fps/FrameRecorder.cs.meta +3 -0
  48. package/Runtime/Fps.meta +8 -0
  49. package/package.json +1 -1
  50. package/Runtime/AmaGDK.Ads.cs +0 -1077
  51. /package/Runtime/{AmaGDK.Ads.cs.meta → Ad/AmaGDK.Ads.cs.meta} +0 -0
@@ -0,0 +1,406 @@
1
+ %YAML 1.1
2
+ %TAG !u! tag:unity3d.com,2011:
3
+ --- !u!1 &4226435148648165799
4
+ GameObject:
5
+ m_ObjectHideFlags: 0
6
+ m_CorrespondingSourceObject: {fileID: 0}
7
+ m_PrefabInstance: {fileID: 0}
8
+ m_PrefabAsset: {fileID: 0}
9
+ serializedVersion: 6
10
+ m_Component:
11
+ - component: {fileID: 4226435148648165792}
12
+ m_Layer: 5
13
+ m_Name: TextUpdate
14
+ m_TagString: Untagged
15
+ m_Icon: {fileID: 0}
16
+ m_NavMeshLayer: 0
17
+ m_StaticEditorFlags: 0
18
+ m_IsActive: 1
19
+ --- !u!224 &4226435148648165792
20
+ RectTransform:
21
+ m_ObjectHideFlags: 0
22
+ m_CorrespondingSourceObject: {fileID: 0}
23
+ m_PrefabInstance: {fileID: 0}
24
+ m_PrefabAsset: {fileID: 0}
25
+ m_GameObject: {fileID: 4226435148648165799}
26
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
27
+ m_LocalPosition: {x: 0, y: 0, z: 0}
28
+ m_LocalScale: {x: 1, y: 1, z: 1}
29
+ m_Children:
30
+ - {fileID: 701706860902632829}
31
+ - {fileID: 4226435150346781229}
32
+ - {fileID: 7437855748381891667}
33
+ m_Father: {fileID: 4226435149416022112}
34
+ m_RootOrder: 1
35
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36
+ m_AnchorMin: {x: 0, y: 1}
37
+ m_AnchorMax: {x: 0, y: 1}
38
+ m_AnchoredPosition: {x: 10, y: -10}
39
+ m_SizeDelta: {x: 100, y: 50}
40
+ m_Pivot: {x: 0, y: 1}
41
+ --- !u!1 &4226435149416022119
42
+ GameObject:
43
+ m_ObjectHideFlags: 0
44
+ m_CorrespondingSourceObject: {fileID: 0}
45
+ m_PrefabInstance: {fileID: 0}
46
+ m_PrefabAsset: {fileID: 0}
47
+ serializedVersion: 6
48
+ m_Component:
49
+ - component: {fileID: 4226435149416022112}
50
+ - component: {fileID: 1588689272426944743}
51
+ - component: {fileID: 7223066536257261605}
52
+ m_Layer: 5
53
+ m_Name: FPSVisualizer
54
+ m_TagString: Untagged
55
+ m_Icon: {fileID: 0}
56
+ m_NavMeshLayer: 0
57
+ m_StaticEditorFlags: 0
58
+ m_IsActive: 1
59
+ --- !u!224 &4226435149416022112
60
+ RectTransform:
61
+ m_ObjectHideFlags: 0
62
+ m_CorrespondingSourceObject: {fileID: 0}
63
+ m_PrefabInstance: {fileID: 0}
64
+ m_PrefabAsset: {fileID: 0}
65
+ m_GameObject: {fileID: 4226435149416022119}
66
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
67
+ m_LocalPosition: {x: 0, y: 0, z: 0}
68
+ m_LocalScale: {x: 1, y: 1, z: 1}
69
+ m_Children:
70
+ - {fileID: 4226435149527766207}
71
+ - {fileID: 4226435148648165792}
72
+ m_Father: {fileID: 0}
73
+ m_RootOrder: 0
74
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
75
+ m_AnchorMin: {x: 0, y: 0}
76
+ m_AnchorMax: {x: 1, y: 1}
77
+ m_AnchoredPosition: {x: 0, y: 0}
78
+ m_SizeDelta: {x: 0, y: 0}
79
+ m_Pivot: {x: 0.5, y: 0.5}
80
+ --- !u!222 &1588689272426944743
81
+ CanvasRenderer:
82
+ m_ObjectHideFlags: 0
83
+ m_CorrespondingSourceObject: {fileID: 0}
84
+ m_PrefabInstance: {fileID: 0}
85
+ m_PrefabAsset: {fileID: 0}
86
+ m_GameObject: {fileID: 4226435149416022119}
87
+ m_CullTransparentMesh: 1
88
+ --- !u!114 &7223066536257261605
89
+ MonoBehaviour:
90
+ m_ObjectHideFlags: 0
91
+ m_CorrespondingSourceObject: {fileID: 0}
92
+ m_PrefabInstance: {fileID: 0}
93
+ m_PrefabAsset: {fileID: 0}
94
+ m_GameObject: {fileID: 4226435149416022119}
95
+ m_Enabled: 1
96
+ m_EditorHideFlags: 0
97
+ m_Script: {fileID: 11500000, guid: 397288ec883c349c3a58f123972df467, type: 3}
98
+ m_Name:
99
+ m_EditorClassIdentifier:
100
+ m_Material: {fileID: 0}
101
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
102
+ m_RaycastTarget: 0
103
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
104
+ flashOnDropFrame:
105
+ enabled: 1
106
+ flashColor: {r: 1, g: 0, b: 0, a: 0.5}
107
+ flashingSpeed: 5
108
+ flashImage: {fileID: 4226435149527766200}
109
+ textUpdate:
110
+ enabled: 1
111
+ parent: {fileID: 4226435148648165799}
112
+ currentFPS: {fileID: 4226435150346781230}
113
+ graph:
114
+ lastFPS: 0
115
+ enabled: 1
116
+ graphic: {fileID: 7223066536257261605}
117
+ minFPS: 0
118
+ maxFPS: 70
119
+ goodFPS: 55
120
+ acceptableFPS: 45
121
+ badFPS: 30
122
+ colors:
123
+ - {r: 1, g: 0, b: 0, a: 1}
124
+ - {r: 1, g: 0.65, b: 0, a: 1}
125
+ - {r: 1, g: 0.92156863, b: 0.015686275, a: 1}
126
+ - {r: 0, g: 1, b: 0, a: 1}
127
+ --- !u!1 &4226435149527766206
128
+ GameObject:
129
+ m_ObjectHideFlags: 0
130
+ m_CorrespondingSourceObject: {fileID: 0}
131
+ m_PrefabInstance: {fileID: 0}
132
+ m_PrefabAsset: {fileID: 0}
133
+ serializedVersion: 6
134
+ m_Component:
135
+ - component: {fileID: 4226435149527766207}
136
+ - component: {fileID: 4226435149527766201}
137
+ - component: {fileID: 4226435149527766200}
138
+ m_Layer: 5
139
+ m_Name: FlashImage
140
+ m_TagString: Untagged
141
+ m_Icon: {fileID: 0}
142
+ m_NavMeshLayer: 0
143
+ m_StaticEditorFlags: 0
144
+ m_IsActive: 0
145
+ --- !u!224 &4226435149527766207
146
+ RectTransform:
147
+ m_ObjectHideFlags: 0
148
+ m_CorrespondingSourceObject: {fileID: 0}
149
+ m_PrefabInstance: {fileID: 0}
150
+ m_PrefabAsset: {fileID: 0}
151
+ m_GameObject: {fileID: 4226435149527766206}
152
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
153
+ m_LocalPosition: {x: 0, y: 0, z: 0}
154
+ m_LocalScale: {x: 2, y: 2, z: 2}
155
+ m_Children: []
156
+ m_Father: {fileID: 4226435149416022112}
157
+ m_RootOrder: 0
158
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
159
+ m_AnchorMin: {x: 0, y: 0}
160
+ m_AnchorMax: {x: 1, y: 1}
161
+ m_AnchoredPosition: {x: 0, y: 0}
162
+ m_SizeDelta: {x: 0, y: 0}
163
+ m_Pivot: {x: 0.5, y: 0.5}
164
+ --- !u!222 &4226435149527766201
165
+ CanvasRenderer:
166
+ m_ObjectHideFlags: 0
167
+ m_CorrespondingSourceObject: {fileID: 0}
168
+ m_PrefabInstance: {fileID: 0}
169
+ m_PrefabAsset: {fileID: 0}
170
+ m_GameObject: {fileID: 4226435149527766206}
171
+ m_CullTransparentMesh: 1
172
+ --- !u!114 &4226435149527766200
173
+ MonoBehaviour:
174
+ m_ObjectHideFlags: 0
175
+ m_CorrespondingSourceObject: {fileID: 0}
176
+ m_PrefabInstance: {fileID: 0}
177
+ m_PrefabAsset: {fileID: 0}
178
+ m_GameObject: {fileID: 4226435149527766206}
179
+ m_Enabled: 1
180
+ m_EditorHideFlags: 0
181
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
182
+ m_Name:
183
+ m_EditorClassIdentifier:
184
+ m_Material: {fileID: 0}
185
+ m_Color: {r: 1, g: 0, b: 0, a: 0}
186
+ m_RaycastTarget: 0
187
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
188
+ m_Maskable: 0
189
+ m_OnCullStateChanged:
190
+ m_PersistentCalls:
191
+ m_Calls: []
192
+ m_Sprite: {fileID: 0}
193
+ m_Type: 0
194
+ m_PreserveAspect: 0
195
+ m_FillCenter: 1
196
+ m_FillMethod: 4
197
+ m_FillAmount: 1
198
+ m_FillClockwise: 1
199
+ m_FillOrigin: 0
200
+ m_UseSpriteMesh: 0
201
+ m_PixelsPerUnitMultiplier: 1
202
+ --- !u!1 &4226435150346781228
203
+ GameObject:
204
+ m_ObjectHideFlags: 0
205
+ m_CorrespondingSourceObject: {fileID: 0}
206
+ m_PrefabInstance: {fileID: 0}
207
+ m_PrefabAsset: {fileID: 0}
208
+ serializedVersion: 6
209
+ m_Component:
210
+ - component: {fileID: 4226435150346781229}
211
+ - component: {fileID: 4226435150346781231}
212
+ - component: {fileID: 4226435150346781230}
213
+ - component: {fileID: 4226435150346781224}
214
+ m_Layer: 5
215
+ m_Name: FPS
216
+ m_TagString: Untagged
217
+ m_Icon: {fileID: 0}
218
+ m_NavMeshLayer: 0
219
+ m_StaticEditorFlags: 0
220
+ m_IsActive: 1
221
+ --- !u!224 &4226435150346781229
222
+ RectTransform:
223
+ m_ObjectHideFlags: 0
224
+ m_CorrespondingSourceObject: {fileID: 0}
225
+ m_PrefabInstance: {fileID: 0}
226
+ m_PrefabAsset: {fileID: 0}
227
+ m_GameObject: {fileID: 4226435150346781228}
228
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
229
+ m_LocalPosition: {x: 0, y: 0, z: 0}
230
+ m_LocalScale: {x: 1, y: 1, z: 1}
231
+ m_Children: []
232
+ m_Father: {fileID: 4226435148648165792}
233
+ m_RootOrder: 1
234
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
235
+ m_AnchorMin: {x: 1, y: 0}
236
+ m_AnchorMax: {x: 1, y: 0}
237
+ m_AnchoredPosition: {x: 0, y: 0}
238
+ m_SizeDelta: {x: 100, y: 50}
239
+ m_Pivot: {x: 1, y: 0}
240
+ --- !u!222 &4226435150346781231
241
+ CanvasRenderer:
242
+ m_ObjectHideFlags: 0
243
+ m_CorrespondingSourceObject: {fileID: 0}
244
+ m_PrefabInstance: {fileID: 0}
245
+ m_PrefabAsset: {fileID: 0}
246
+ m_GameObject: {fileID: 4226435150346781228}
247
+ m_CullTransparentMesh: 1
248
+ --- !u!114 &4226435150346781230
249
+ MonoBehaviour:
250
+ m_ObjectHideFlags: 0
251
+ m_CorrespondingSourceObject: {fileID: 0}
252
+ m_PrefabInstance: {fileID: 0}
253
+ m_PrefabAsset: {fileID: 0}
254
+ m_GameObject: {fileID: 4226435150346781228}
255
+ m_Enabled: 1
256
+ m_EditorHideFlags: 0
257
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
258
+ m_Name:
259
+ m_EditorClassIdentifier:
260
+ m_Material: {fileID: 0}
261
+ m_Color: {r: 0.1656568, g: 1, b: 0, a: 1}
262
+ m_RaycastTarget: 0
263
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
264
+ m_Maskable: 0
265
+ m_OnCullStateChanged:
266
+ m_PersistentCalls:
267
+ m_Calls: []
268
+ m_FontData:
269
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
270
+ m_FontSize: 32
271
+ m_FontStyle: 1
272
+ m_BestFit: 0
273
+ m_MinSize: 2
274
+ m_MaxSize: 40
275
+ m_Alignment: 4
276
+ m_AlignByGeometry: 1
277
+ m_RichText: 0
278
+ m_HorizontalOverflow: 1
279
+ m_VerticalOverflow: 0
280
+ m_LineSpacing: 1
281
+ m_Text: 222.9
282
+ --- !u!114 &4226435150346781224
283
+ MonoBehaviour:
284
+ m_ObjectHideFlags: 0
285
+ m_CorrespondingSourceObject: {fileID: 0}
286
+ m_PrefabInstance: {fileID: 0}
287
+ m_PrefabAsset: {fileID: 0}
288
+ m_GameObject: {fileID: 4226435150346781228}
289
+ m_Enabled: 1
290
+ m_EditorHideFlags: 0
291
+ m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3}
292
+ m_Name:
293
+ m_EditorClassIdentifier:
294
+ m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
295
+ m_EffectDistance: {x: 1, y: -1}
296
+ m_UseGraphicAlpha: 1
297
+ --- !u!1 &4794884327203509889
298
+ GameObject:
299
+ m_ObjectHideFlags: 0
300
+ m_CorrespondingSourceObject: {fileID: 0}
301
+ m_PrefabInstance: {fileID: 0}
302
+ m_PrefabAsset: {fileID: 0}
303
+ serializedVersion: 6
304
+ m_Component:
305
+ - component: {fileID: 7437855748381891667}
306
+ m_Layer: 5
307
+ m_Name: Graph
308
+ m_TagString: Untagged
309
+ m_Icon: {fileID: 0}
310
+ m_NavMeshLayer: 0
311
+ m_StaticEditorFlags: 0
312
+ m_IsActive: 1
313
+ --- !u!224 &7437855748381891667
314
+ RectTransform:
315
+ m_ObjectHideFlags: 0
316
+ m_CorrespondingSourceObject: {fileID: 0}
317
+ m_PrefabInstance: {fileID: 0}
318
+ m_PrefabAsset: {fileID: 0}
319
+ m_GameObject: {fileID: 4794884327203509889}
320
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
321
+ m_LocalPosition: {x: 0, y: 0, z: 0}
322
+ m_LocalScale: {x: 1, y: 1, z: 1}
323
+ m_Children: []
324
+ m_Father: {fileID: 4226435148648165792}
325
+ m_RootOrder: 2
326
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
327
+ m_AnchorMin: {x: 0.5, y: 0.5}
328
+ m_AnchorMax: {x: 0.5, y: 0.5}
329
+ m_AnchoredPosition: {x: 289.816, y: -171.94812}
330
+ m_SizeDelta: {x: 679.631, y: 443.896}
331
+ m_Pivot: {x: 0.5, y: 0.5}
332
+ --- !u!1 &6296157254497204342
333
+ GameObject:
334
+ m_ObjectHideFlags: 0
335
+ m_CorrespondingSourceObject: {fileID: 0}
336
+ m_PrefabInstance: {fileID: 0}
337
+ m_PrefabAsset: {fileID: 0}
338
+ serializedVersion: 6
339
+ m_Component:
340
+ - component: {fileID: 701706860902632829}
341
+ - component: {fileID: 4663340420578303311}
342
+ - component: {fileID: 6714255839352229729}
343
+ m_Layer: 5
344
+ m_Name: BG
345
+ m_TagString: Untagged
346
+ m_Icon: {fileID: 0}
347
+ m_NavMeshLayer: 0
348
+ m_StaticEditorFlags: 0
349
+ m_IsActive: 1
350
+ --- !u!224 &701706860902632829
351
+ RectTransform:
352
+ m_ObjectHideFlags: 0
353
+ m_CorrespondingSourceObject: {fileID: 0}
354
+ m_PrefabInstance: {fileID: 0}
355
+ m_PrefabAsset: {fileID: 0}
356
+ m_GameObject: {fileID: 6296157254497204342}
357
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
358
+ m_LocalPosition: {x: 0, y: 0, z: 0}
359
+ m_LocalScale: {x: 1, y: 1, z: 1}
360
+ m_Children: []
361
+ m_Father: {fileID: 4226435148648165792}
362
+ m_RootOrder: 0
363
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
364
+ m_AnchorMin: {x: 0, y: 0}
365
+ m_AnchorMax: {x: 1, y: 1}
366
+ m_AnchoredPosition: {x: -100, y: 100}
367
+ m_SizeDelta: {x: 200, y: 200}
368
+ m_Pivot: {x: 0.5, y: 0.5}
369
+ --- !u!222 &4663340420578303311
370
+ CanvasRenderer:
371
+ m_ObjectHideFlags: 0
372
+ m_CorrespondingSourceObject: {fileID: 0}
373
+ m_PrefabInstance: {fileID: 0}
374
+ m_PrefabAsset: {fileID: 0}
375
+ m_GameObject: {fileID: 6296157254497204342}
376
+ m_CullTransparentMesh: 1
377
+ --- !u!114 &6714255839352229729
378
+ MonoBehaviour:
379
+ m_ObjectHideFlags: 0
380
+ m_CorrespondingSourceObject: {fileID: 0}
381
+ m_PrefabInstance: {fileID: 0}
382
+ m_PrefabAsset: {fileID: 0}
383
+ m_GameObject: {fileID: 6296157254497204342}
384
+ m_Enabled: 1
385
+ m_EditorHideFlags: 0
386
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
387
+ m_Name:
388
+ m_EditorClassIdentifier:
389
+ m_Material: {fileID: 0}
390
+ m_Color: {r: 0, g: 0, b: 0, a: 0.5019608}
391
+ m_RaycastTarget: 0
392
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
393
+ m_Maskable: 0
394
+ m_OnCullStateChanged:
395
+ m_PersistentCalls:
396
+ m_Calls: []
397
+ m_Sprite: {fileID: 0}
398
+ m_Type: 0
399
+ m_PreserveAspect: 0
400
+ m_FillCenter: 1
401
+ m_FillMethod: 4
402
+ m_FillAmount: 1
403
+ m_FillClockwise: 1
404
+ m_FillOrigin: 0
405
+ m_UseSpriteMesh: 0
406
+ m_PixelsPerUnitMultiplier: 1
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: f6d9ec9ace1744b6483fd9f3996ea6f0
3
+ PrefabImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
@@ -0,0 +1,172 @@
1
+ // #define FPS_DROP_DEBUG
2
+ using System;
3
+ using System.Collections.Generic;
4
+ using UnityEngine;
5
+ using static Amanotes.Core.Internal.Logging;
6
+
7
+ namespace Amanotes.Core
8
+ {
9
+ internal partial class FrameRecorder
10
+ {
11
+ public float minFPS = -1f;
12
+ public float maxFPS;
13
+ public float avgFPS;
14
+ public int framesCount;
15
+ public float duration;
16
+
17
+ public float lastFPS;
18
+ private float gFrameTime;
19
+ private int gFrameCount;
20
+ private readonly FPSConfig config;
21
+ private readonly List<float> fpsHistory = new List<float>();
22
+
23
+ #if FPS_DROP_DEBUG
24
+ internal readonly StringBuilder sb = new StringBuilder();
25
+ #endif
26
+
27
+ internal readonly BollingerBands bands;
28
+
29
+ public FrameRecorder(FPSConfig config)
30
+ {
31
+ this.config = config;
32
+ bands = new BollingerBands(config.windowSize, config.deviation);
33
+ }
34
+
35
+ private void Reset()
36
+ {
37
+ minFPS = -1;
38
+ maxFPS = -1;
39
+ avgFPS = -1;
40
+
41
+ framesCount = 0;
42
+ duration = 0;
43
+
44
+ lastFPS = 0;
45
+ gFrameTime = 0;
46
+ gFrameCount = 0;
47
+ }
48
+
49
+ internal void UpdateFrame(float frameTime)
50
+ {
51
+ framesCount++;
52
+ duration += frameTime;
53
+
54
+ gFrameTime += frameTime;
55
+ gFrameCount++;
56
+
57
+ #if FPS_DROP_DEBUG
58
+ sb.AppendLine(gFrameCount + " | " + frameTime + " --> " + (1f / frameTime) + " | " + (gFrameCount / gFrameTime));
59
+ #endif
60
+
61
+ if (gFrameCount < config.frameGroup) return;
62
+ lastFPS = gFrameCount / gFrameTime;
63
+
64
+ fpsHistory.Add(lastFPS);
65
+ UpdateGroupFrame();
66
+ gFrameCount = 0;
67
+ gFrameTime = 0;
68
+ }
69
+
70
+ protected virtual void UpdateGroupFrame()
71
+ {
72
+ if (minFPS < 0) // first time
73
+ {
74
+ minFPS = lastFPS;
75
+ maxFPS = lastFPS;
76
+ avgFPS = lastFPS;
77
+ bands.Reset(lastFPS);
78
+ return;
79
+ }
80
+
81
+ if (lastFPS < minFPS) minFPS = lastFPS;
82
+ if (lastFPS > maxFPS) maxFPS = lastFPS;
83
+ avgFPS = framesCount / duration;
84
+
85
+ if (bands.Add(lastFPS)) // Start Drop
86
+ {
87
+ #if FPS_DROP_DEBUG
88
+ LogWarning("Frame Start Drop:\n" + sb.ToString());
89
+ sb.Clear();
90
+ #endif
91
+ }
92
+ }
93
+ }
94
+
95
+ internal partial class FrameRecorder
96
+ {
97
+ private string context;
98
+ private Dictionary<string, object> userData;
99
+ internal bool isRecording;
100
+
101
+ public void Start(string context, Dictionary<string, object> userData = null)
102
+ {
103
+ this.context = context;
104
+ this.userData = userData;
105
+
106
+ isRecording = true;
107
+ Reset();
108
+ }
109
+ public Dictionary<string, object> Stop()
110
+ {
111
+ isRecording = false;
112
+ return GetRecordedData();
113
+ }
114
+ private Dictionary<string, object> GetRecordedData()
115
+ {
116
+ var percentile = new Percentile(fpsHistory);
117
+ var dict = new Dictionary<string, object>()
118
+ {
119
+ {"game_context", context},
120
+ {"duration", duration},
121
+
122
+ // fps
123
+ {"avg_fps", avgFPS},
124
+ {"highest_fps", maxFPS},
125
+ {"lowest_fps", minFPS},
126
+ {"fps_drop_count", bands.isoDrop},
127
+
128
+ // new
129
+ {"fps_total_drop_count", bands.totalDrop},
130
+
131
+ // percentile
132
+ {"fps_p95", percentile.P95},
133
+ {"fps_p90", percentile.P90},
134
+ {"fps_p85", percentile.P85},
135
+ {"fps_p75", percentile.P75},
136
+
137
+ // deprecated
138
+ {"device_name", SystemInfo.deviceModel},
139
+ {"device_os_version", SystemInfo.operatingSystem}
140
+ };
141
+
142
+ AmaFPS.Utils.InjectUserData(dict, userData);
143
+ AmaFPS.Utils.InjectDeviceInfo(dict);
144
+ AmaFPS.Utils.InjectDeviceStatus(dict);
145
+ return dict;
146
+ }
147
+
148
+ internal class Percentile
149
+ {
150
+ internal float P95 => GetFpsPercentile(0.95f);
151
+ internal float P90 => GetFpsPercentile(0.9f);
152
+ internal float P85 => GetFpsPercentile(0.85f);
153
+ internal float P75 => GetFpsPercentile(0.75f);
154
+
155
+ internal Percentile(List<float> fpsHistory)
156
+ {
157
+ this.fpsHistory = fpsHistory;
158
+ this.fpsHistory.Sort((a, b) => b.CompareTo(a));
159
+ }
160
+ private Percentile() {}
161
+
162
+ private readonly List<float> fpsHistory;
163
+
164
+ private float GetFpsPercentile(float percentile)
165
+ {
166
+ if (fpsHistory.Count == 0) return 0.0f;
167
+ int index = Mathf.Clamp((int)Math.Round(percentile * fpsHistory.Count) - 1, 0, fpsHistory.Count - 1);
168
+ return fpsHistory[index];
169
+ }
170
+ }
171
+ }
172
+ }
@@ -0,0 +1,3 @@
1
+ fileFormatVersion: 2
2
+ guid: bab49a0f97874bdc80be683915a15f4e
3
+ timeCreated: 1716886520
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: 024c6149826014f49affeb32f017fc40
3
+ folderAsset: yes
4
+ DefaultImporter:
5
+ externalObjects: {}
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "com.amanotes.gdk",
3
- "version": "0.2.66",
3
+ "version": "0.2.67",
4
4
  "displayName": "AmaGDK",
5
5
  "description": "Amanotes Game Development Kit",
6
6
  "unity": "2019.4",