rngine 0.7.2 → 0.8.1

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 (588) hide show
  1. package/README.md +51 -26
  2. package/android/CMakeLists.txt +45 -2
  3. package/android/build.gradle +1 -3
  4. package/android/kls_database.db +0 -0
  5. package/android/src/main/cpp/game-view.cpp +29 -0
  6. package/android/src/main/java/com/margelo/nitro/rngine/GameEngine.kt +1 -28
  7. package/android/src/main/java/com/margelo/nitro/rngine/GameView.kt +22 -166
  8. package/android/src/main/java/com/margelo/nitro/rngine/SvgLoaderHelper.kt +24 -0
  9. package/lib/module/GameMethods.js +46 -2
  10. package/lib/module/GameMethods.js.map +1 -1
  11. package/lib/module/GameMethods.nitro.js.map +1 -1
  12. package/lib/module/index.js +0 -1
  13. package/lib/module/index.js.map +1 -1
  14. package/lib/typescript/src/GameMethods.d.ts +2 -1
  15. package/lib/typescript/src/GameMethods.d.ts.map +1 -1
  16. package/lib/typescript/src/GameMethods.nitro.d.ts +5 -2
  17. package/lib/typescript/src/GameMethods.nitro.d.ts.map +1 -1
  18. package/lib/typescript/src/index.d.ts +1 -2
  19. package/lib/typescript/src/index.d.ts.map +1 -1
  20. package/lib/typescript/src/nativeTypes.d.ts +12 -0
  21. package/lib/typescript/src/nativeTypes.d.ts.map +1 -1
  22. package/lib/typescript/src/types.d.ts +7 -10
  23. package/lib/typescript/src/types.d.ts.map +1 -1
  24. package/nitro.json +0 -10
  25. package/nitrogen/generated/android/rngine+autolinking.cmake +0 -2
  26. package/nitrogen/generated/android/rngineOnLoad.cpp +0 -16
  27. package/nitrogen/generated/ios/Rngine-Swift-Cxx-Bridge.cpp +0 -33
  28. package/nitrogen/generated/ios/Rngine-Swift-Cxx-Bridge.hpp +0 -96
  29. package/nitrogen/generated/ios/Rngine-Swift-Cxx-Umbrella.hpp +0 -9
  30. package/nitrogen/generated/ios/RngineAutolinking.mm +0 -8
  31. package/nitrogen/generated/ios/RngineAutolinking.swift +0 -12
  32. package/nitrogen/generated/shared/c++/Entity.hpp +10 -2
  33. package/nitrogen/generated/shared/c++/EntityUpdate.hpp +10 -2
  34. package/nitrogen/generated/shared/c++/HybridGameMethodsSpec.cpp +4 -1
  35. package/nitrogen/generated/shared/c++/HybridGameMethodsSpec.hpp +8 -1
  36. package/nitrogen/generated/shared/c++/World.hpp +91 -0
  37. package/package.json +4 -1
  38. package/shared/CollisionUtils.hpp +1 -6
  39. package/{android/src/main/cpp/ColorUtils.hpp → shared/ColorUtils.cpp} +8 -12
  40. package/shared/ColorUtils.hpp +7 -0
  41. package/shared/GameLoop.cpp +142 -51
  42. package/shared/GameLoop.hpp +10 -14
  43. package/shared/GameMethods.cpp +101 -10
  44. package/shared/GameMethods.hpp +19 -1
  45. package/shared/GameRenderer.cpp +420 -0
  46. package/shared/GameRenderer.hpp +65 -0
  47. package/shared/GameStats.hpp +3 -3
  48. package/shared/Overlap.hpp +9 -0
  49. package/shared/skia/include/android/AHardwareBufferUtils.h +26 -0
  50. package/shared/skia/include/android/GrAHardwareBufferUtils.h +97 -0
  51. package/shared/skia/include/android/SkAndroidFrameworkUtils.h +83 -0
  52. package/shared/skia/include/android/SkAnimatedImage.h +193 -0
  53. package/shared/skia/include/android/SkCanvasAndroid.h +20 -0
  54. package/shared/skia/include/android/SkImageAndroid.h +100 -0
  55. package/shared/skia/include/android/SkSurfaceAndroid.h +50 -0
  56. package/shared/skia/include/android/graphite/SurfaceAndroid.h +59 -0
  57. package/shared/skia/include/android/vk/AndroidVulkanMemoryAllocator.h +31 -0
  58. package/shared/skia/include/codec/SkAndroidCodec.h +302 -0
  59. package/shared/skia/include/codec/SkAvifDecoder.h +80 -0
  60. package/shared/skia/include/codec/SkBmpDecoder.h +44 -0
  61. package/shared/skia/include/codec/SkBmpRustDecoder.h +42 -0
  62. package/shared/skia/include/codec/SkCodec.h +1178 -0
  63. package/shared/skia/include/codec/SkCodecAnimation.h +61 -0
  64. package/shared/skia/include/codec/SkEncodedImageFormat.h +33 -0
  65. package/shared/skia/include/codec/SkEncodedOrigin.h +71 -0
  66. package/shared/skia/include/codec/SkGifDecoder.h +44 -0
  67. package/shared/skia/include/codec/SkIcoDecoder.h +44 -0
  68. package/shared/skia/include/codec/SkJpegDecoder.h +51 -0
  69. package/shared/skia/include/codec/SkJpegxlDecoder.h +44 -0
  70. package/shared/skia/include/codec/SkPixmapUtils.h +31 -0
  71. package/shared/skia/include/codec/SkPngChunkReader.h +45 -0
  72. package/shared/skia/include/codec/SkPngDecoder.h +51 -0
  73. package/shared/skia/include/codec/SkPngRustDecoder.h +30 -0
  74. package/shared/skia/include/codec/SkRawDecoder.h +50 -0
  75. package/shared/skia/include/codec/SkWbmpDecoder.h +44 -0
  76. package/shared/skia/include/codec/SkWebpDecoder.h +51 -0
  77. package/shared/skia/include/config/SkUserConfig.h +141 -0
  78. package/shared/skia/include/core/SkAlphaType.h +45 -0
  79. package/shared/skia/include/core/SkAnnotation.h +52 -0
  80. package/shared/skia/include/core/SkArc.h +69 -0
  81. package/shared/skia/include/core/SkBBHFactory.h +67 -0
  82. package/shared/skia/include/core/SkBitmap.h +1264 -0
  83. package/shared/skia/include/core/SkBlendMode.h +112 -0
  84. package/shared/skia/include/core/SkBlender.h +30 -0
  85. package/shared/skia/include/core/SkBlurTypes.h +20 -0
  86. package/shared/skia/include/core/SkCPUContext.h +31 -0
  87. package/shared/skia/include/core/SkCPURecorder.h +76 -0
  88. package/shared/skia/include/core/SkCanvas.h +2770 -0
  89. package/shared/skia/include/core/SkCanvasVirtualEnforcer.h +61 -0
  90. package/shared/skia/include/core/SkCapabilities.h +35 -0
  91. package/shared/skia/include/core/SkClipOp.h +19 -0
  92. package/shared/skia/include/core/SkColor.h +469 -0
  93. package/shared/skia/include/core/SkColorFilter.h +150 -0
  94. package/shared/skia/include/core/SkColorSpace.h +432 -0
  95. package/shared/skia/include/core/SkColorTable.h +62 -0
  96. package/shared/skia/include/core/SkColorType.h +159 -0
  97. package/shared/skia/include/core/SkContourMeasure.h +215 -0
  98. package/shared/skia/include/core/SkCoverageMode.h +28 -0
  99. package/shared/skia/include/core/SkCubicMap.h +47 -0
  100. package/shared/skia/include/core/SkData.h +225 -0
  101. package/shared/skia/include/core/SkDataTable.h +122 -0
  102. package/shared/skia/include/core/SkDocument.h +93 -0
  103. package/shared/skia/include/core/SkDrawable.h +178 -0
  104. package/shared/skia/include/core/SkExecutor.h +59 -0
  105. package/shared/skia/include/core/SkFlattenable.h +115 -0
  106. package/shared/skia/include/core/SkFont.h +536 -0
  107. package/shared/skia/include/core/SkFontArguments.h +116 -0
  108. package/shared/skia/include/core/SkFontMetrics.h +139 -0
  109. package/shared/skia/include/core/SkFontMgr.h +178 -0
  110. package/shared/skia/include/core/SkFontParameters.h +43 -0
  111. package/shared/skia/include/core/SkFontScanner.h +45 -0
  112. package/shared/skia/include/core/SkFontStyle.h +84 -0
  113. package/shared/skia/include/core/SkFontTypes.h +25 -0
  114. package/shared/skia/include/core/SkFourByteTag.h +19 -0
  115. package/shared/skia/include/core/SkGraphics.h +169 -0
  116. package/shared/skia/include/core/SkImage.h +918 -0
  117. package/shared/skia/include/core/SkImageFilter.h +119 -0
  118. package/shared/skia/include/core/SkImageGenerator.h +140 -0
  119. package/shared/skia/include/core/SkImageInfo.h +634 -0
  120. package/shared/skia/include/core/SkM44.h +442 -0
  121. package/shared/skia/include/core/SkMallocPixelRef.h +45 -0
  122. package/shared/skia/include/core/SkMaskFilter.h +45 -0
  123. package/shared/skia/include/core/SkMatrix.h +1887 -0
  124. package/shared/skia/include/core/SkMesh.h +429 -0
  125. package/shared/skia/include/core/SkMilestone.h +9 -0
  126. package/shared/skia/include/core/SkOpenTypeSVGDecoder.h +30 -0
  127. package/shared/skia/include/core/SkOverdrawCanvas.h +94 -0
  128. package/shared/skia/include/core/SkPaint.h +698 -0
  129. package/shared/skia/include/core/SkPath.h +1145 -0
  130. package/shared/skia/include/core/SkPathBuilder.h +1052 -0
  131. package/shared/skia/include/core/SkPathEffect.h +88 -0
  132. package/shared/skia/include/core/SkPathIter.h +90 -0
  133. package/shared/skia/include/core/SkPathMeasure.h +96 -0
  134. package/shared/skia/include/core/SkPathTypes.h +71 -0
  135. package/shared/skia/include/core/SkPathUtils.h +39 -0
  136. package/shared/skia/include/core/SkPicture.h +291 -0
  137. package/shared/skia/include/core/SkPictureRecorder.h +115 -0
  138. package/shared/skia/include/core/SkPixelRef.h +120 -0
  139. package/shared/skia/include/core/SkPixmap.h +736 -0
  140. package/shared/skia/include/core/SkPoint.h +560 -0
  141. package/shared/skia/include/core/SkPoint3.h +149 -0
  142. package/shared/skia/include/core/SkRRect.h +548 -0
  143. package/shared/skia/include/core/SkRSXform.h +71 -0
  144. package/shared/skia/include/core/SkRasterHandleAllocator.h +94 -0
  145. package/shared/skia/include/core/SkRecorder.h +49 -0
  146. package/shared/skia/include/core/SkRect.h +1419 -0
  147. package/shared/skia/include/core/SkRefCnt.h +391 -0
  148. package/shared/skia/include/core/SkRegion.h +701 -0
  149. package/shared/skia/include/core/SkSamplingOptions.h +107 -0
  150. package/shared/skia/include/core/SkScalar.h +148 -0
  151. package/shared/skia/include/core/SkSerialProcs.h +127 -0
  152. package/shared/skia/include/core/SkShader.h +123 -0
  153. package/shared/skia/include/core/SkSize.h +93 -0
  154. package/shared/skia/include/core/SkSpan.h +174 -0
  155. package/shared/skia/include/core/SkStream.h +524 -0
  156. package/shared/skia/include/core/SkStrikeRef.h +96 -0
  157. package/shared/skia/include/core/SkString.h +297 -0
  158. package/shared/skia/include/core/SkStrokeRec.h +160 -0
  159. package/shared/skia/include/core/SkSurface.h +689 -0
  160. package/shared/skia/include/core/SkSurfaceProps.h +122 -0
  161. package/shared/skia/include/core/SkSwizzle.h +21 -0
  162. package/shared/skia/include/core/SkTextBlob.h +541 -0
  163. package/shared/skia/include/core/SkTextureCompressionType.h +30 -0
  164. package/shared/skia/include/core/SkTileMode.h +41 -0
  165. package/shared/skia/include/core/SkTiledImageUtils.h +125 -0
  166. package/shared/skia/include/core/SkTraceMemoryDump.h +121 -0
  167. package/shared/skia/include/core/SkTypeface.h +468 -0
  168. package/shared/skia/include/core/SkTypes.h +193 -0
  169. package/shared/skia/include/core/SkUnPreMultiply.h +55 -0
  170. package/shared/skia/include/core/SkVertices.h +136 -0
  171. package/shared/skia/include/core/SkYUVAInfo.h +311 -0
  172. package/shared/skia/include/core/SkYUVAPixmaps.h +335 -0
  173. package/shared/skia/include/docs/SkMultiPictureDocument.h +53 -0
  174. package/shared/skia/include/docs/SkPDFDocument.h +277 -0
  175. package/shared/skia/include/docs/SkPDFJpegHelpers.h +41 -0
  176. package/shared/skia/include/docs/SkXPSDocument.h +43 -0
  177. package/shared/skia/include/effects/Sk1DPathEffect.h +40 -0
  178. package/shared/skia/include/effects/Sk2DPathEffect.h +33 -0
  179. package/shared/skia/include/effects/SkBlenders.h +27 -0
  180. package/shared/skia/include/effects/SkBlurMaskFilter.h +35 -0
  181. package/shared/skia/include/effects/SkColorMatrix.h +57 -0
  182. package/shared/skia/include/effects/SkColorMatrixFilter.h +22 -0
  183. package/shared/skia/include/effects/SkCornerPathEffect.h +32 -0
  184. package/shared/skia/include/effects/SkDashPathEffect.h +43 -0
  185. package/shared/skia/include/effects/SkDiscretePathEffect.h +37 -0
  186. package/shared/skia/include/effects/SkGradient.h +206 -0
  187. package/shared/skia/include/effects/SkHighContrastFilter.h +84 -0
  188. package/shared/skia/include/effects/SkImageFilters.h +641 -0
  189. package/shared/skia/include/effects/SkLumaColorFilter.h +37 -0
  190. package/shared/skia/include/effects/SkOverdrawColorFilter.h +33 -0
  191. package/shared/skia/include/effects/SkPerlinNoiseShader.h +53 -0
  192. package/shared/skia/include/effects/SkRuntimeEffect.h +503 -0
  193. package/shared/skia/include/effects/SkShaderMaskFilter.h +28 -0
  194. package/shared/skia/include/effects/SkTableMaskFilter.h +47 -0
  195. package/shared/skia/include/effects/SkTrimPathEffect.h +45 -0
  196. package/shared/skia/include/encode/SkEncoder.h +63 -0
  197. package/shared/skia/include/encode/SkICC.h +36 -0
  198. package/shared/skia/include/encode/SkJpegEncoder.h +127 -0
  199. package/shared/skia/include/encode/SkPngEncoder.h +132 -0
  200. package/shared/skia/include/encode/SkPngRustEncoder.h +121 -0
  201. package/shared/skia/include/encode/SkWebpEncoder.h +87 -0
  202. package/shared/skia/include/gpu/GpuTypes.h +98 -0
  203. package/shared/skia/include/gpu/MutableTextureState.h +68 -0
  204. package/shared/skia/include/gpu/ShaderErrorHandler.h +46 -0
  205. package/shared/skia/include/gpu/ganesh/GrBackendSemaphore.h +50 -0
  206. package/shared/skia/include/gpu/ganesh/GrBackendSurface.h +257 -0
  207. package/shared/skia/include/gpu/ganesh/GrContextOptions.h +384 -0
  208. package/shared/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h +175 -0
  209. package/shared/skia/include/gpu/ganesh/GrDirectContext.h +1027 -0
  210. package/shared/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h +53 -0
  211. package/shared/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +49 -0
  212. package/shared/skia/include/gpu/ganesh/GrExternalTextureGenerator.h +54 -0
  213. package/shared/skia/include/gpu/ganesh/GrRecordingContext.h +300 -0
  214. package/shared/skia/include/gpu/ganesh/GrTypes.h +193 -0
  215. package/shared/skia/include/gpu/ganesh/GrYUVABackendTextures.h +130 -0
  216. package/shared/skia/include/gpu/ganesh/SkImageGanesh.h +361 -0
  217. package/shared/skia/include/gpu/ganesh/SkMeshGanesh.h +57 -0
  218. package/shared/skia/include/gpu/ganesh/SkSurfaceGanesh.h +218 -0
  219. package/shared/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h +35 -0
  220. package/shared/skia/include/gpu/ganesh/d3d/GrD3DBackendSemaphore.h +20 -0
  221. package/shared/skia/include/gpu/ganesh/d3d/GrD3DBackendSurface.h +59 -0
  222. package/shared/skia/include/gpu/ganesh/d3d/GrD3DDirectContext.h +28 -0
  223. package/shared/skia/include/gpu/ganesh/d3d/GrD3DTypes.h +248 -0
  224. package/shared/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h +17 -0
  225. package/shared/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h +45 -0
  226. package/shared/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h +64 -0
  227. package/shared/skia/include/gpu/ganesh/gl/GrGLConfig.h +69 -0
  228. package/shared/skia/include/gpu/ganesh/gl/GrGLDirectContext.h +30 -0
  229. package/shared/skia/include/gpu/ganesh/gl/GrGLExtensions.h +79 -0
  230. package/shared/skia/include/gpu/ganesh/gl/GrGLFunctions.h +313 -0
  231. package/shared/skia/include/gpu/ganesh/gl/GrGLInterface.h +337 -0
  232. package/shared/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h +19 -0
  233. package/shared/skia/include/gpu/ganesh/gl/GrGLTypes.h +219 -0
  234. package/shared/skia/include/gpu/ganesh/gl/egl/GrGLMakeEGLInterface.h +23 -0
  235. package/shared/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h +20 -0
  236. package/shared/skia/include/gpu/ganesh/gl/glx/GrGLMakeGLXInterface.h +23 -0
  237. package/shared/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h +20 -0
  238. package/shared/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h +20 -0
  239. package/shared/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h +20 -0
  240. package/shared/skia/include/gpu/ganesh/mock/GrMockBackendSurface.h +59 -0
  241. package/shared/skia/include/gpu/ganesh/mock/GrMockTypes.h +166 -0
  242. package/shared/skia/include/gpu/ganesh/mtl/GrMtlBackendContext.h +21 -0
  243. package/shared/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h +23 -0
  244. package/shared/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h +44 -0
  245. package/shared/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h +30 -0
  246. package/shared/skia/include/gpu/ganesh/mtl/GrMtlTypes.h +61 -0
  247. package/shared/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h +73 -0
  248. package/shared/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h +44 -0
  249. package/shared/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +20 -0
  250. package/shared/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h +71 -0
  251. package/shared/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +33 -0
  252. package/shared/skia/include/gpu/ganesh/vk/GrVkTypes.h +101 -0
  253. package/shared/skia/include/gpu/graphite/BackendSemaphore.h +60 -0
  254. package/shared/skia/include/gpu/graphite/BackendTexture.h +65 -0
  255. package/shared/skia/include/gpu/graphite/Context.h +440 -0
  256. package/shared/skia/include/gpu/graphite/ContextOptions.h +239 -0
  257. package/shared/skia/include/gpu/graphite/GraphiteTypes.h +315 -0
  258. package/shared/skia/include/gpu/graphite/Image.h +428 -0
  259. package/shared/skia/include/gpu/graphite/ImageProvider.h +68 -0
  260. package/shared/skia/include/gpu/graphite/PersistentPipelineStorage.h +45 -0
  261. package/shared/skia/include/gpu/graphite/PrecompileContext.h +109 -0
  262. package/shared/skia/include/gpu/graphite/Recorder.h +355 -0
  263. package/shared/skia/include/gpu/graphite/Recording.h +100 -0
  264. package/shared/skia/include/gpu/graphite/Surface.h +121 -0
  265. package/shared/skia/include/gpu/graphite/TextureInfo.h +133 -0
  266. package/shared/skia/include/gpu/graphite/YUVABackendTextures.h +148 -0
  267. package/shared/skia/include/gpu/graphite/dawn/DawnBackendContext.h +77 -0
  268. package/shared/skia/include/gpu/graphite/dawn/DawnGraphiteTypes.h +163 -0
  269. package/shared/skia/include/gpu/graphite/dawn/DawnTypes.h +9 -0
  270. package/shared/skia/include/gpu/graphite/dawn/DawnUtils.h +9 -0
  271. package/shared/skia/include/gpu/graphite/mtl/MtlBackendContext.h +34 -0
  272. package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +73 -0
  273. package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteTypesUtils.h +10 -0
  274. package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteTypes_cpp.h +50 -0
  275. package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteUtils.h +9 -0
  276. package/shared/skia/include/gpu/graphite/precompile/PaintOptions.h +211 -0
  277. package/shared/skia/include/gpu/graphite/precompile/Precompile.h +59 -0
  278. package/shared/skia/include/gpu/graphite/precompile/PrecompileBase.h +76 -0
  279. package/shared/skia/include/gpu/graphite/precompile/PrecompileBlender.h +56 -0
  280. package/shared/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h +95 -0
  281. package/shared/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h +116 -0
  282. package/shared/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h +49 -0
  283. package/shared/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h +47 -0
  284. package/shared/skia/include/gpu/graphite/precompile/PrecompileShader.h +268 -0
  285. package/shared/skia/include/gpu/graphite/vk/VulkanGraphiteContext.h +31 -0
  286. package/shared/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +104 -0
  287. package/shared/skia/include/gpu/graphite/vk/precompile/VulkanPrecompileShader.h +39 -0
  288. package/shared/skia/include/gpu/mtl/MtlMemoryAllocator.h +41 -0
  289. package/shared/skia/include/gpu/vk/VulkanBackendContext.h +57 -0
  290. package/shared/skia/include/gpu/vk/VulkanExtensions.h +73 -0
  291. package/shared/skia/include/gpu/vk/VulkanMemoryAllocator.h +117 -0
  292. package/shared/skia/include/gpu/vk/VulkanMutableTextureState.h +26 -0
  293. package/shared/skia/include/gpu/vk/VulkanPreferredFeatures.h +225 -0
  294. package/shared/skia/include/gpu/vk/VulkanTypes.h +245 -0
  295. package/shared/skia/include/pathops/SkPathOps.h +150 -0
  296. package/shared/skia/include/ports/SkCFObject.h +180 -0
  297. package/shared/skia/include/ports/SkFontConfigInterface.h +112 -0
  298. package/shared/skia/include/ports/SkFontMgr_FontConfigInterface.h +24 -0
  299. package/shared/skia/include/ports/SkFontMgr_Fontations.h +20 -0
  300. package/shared/skia/include/ports/SkFontMgr_android.h +48 -0
  301. package/shared/skia/include/ports/SkFontMgr_android_ndk.h +27 -0
  302. package/shared/skia/include/ports/SkFontMgr_data.h +22 -0
  303. package/shared/skia/include/ports/SkFontMgr_directory.h +21 -0
  304. package/shared/skia/include/ports/SkFontMgr_empty.h +21 -0
  305. package/shared/skia/include/ports/SkFontMgr_fontconfig.h +24 -0
  306. package/shared/skia/include/ports/SkFontMgr_fuchsia.h +21 -0
  307. package/shared/skia/include/ports/SkFontMgr_mac_ct.h +27 -0
  308. package/shared/skia/include/ports/SkFontScanner_Fontations.h +15 -0
  309. package/shared/skia/include/ports/SkFontScanner_FreeType.h +15 -0
  310. package/shared/skia/include/ports/SkImageGeneratorCG.h +28 -0
  311. package/shared/skia/include/ports/SkImageGeneratorNDK.h +40 -0
  312. package/shared/skia/include/ports/SkImageGeneratorWIC.h +41 -0
  313. package/shared/skia/include/ports/SkTypeface_fontations.h +24 -0
  314. package/shared/skia/include/ports/SkTypeface_mac.h +44 -0
  315. package/shared/skia/include/ports/SkTypeface_win.h +63 -0
  316. package/shared/skia/include/private/SingleOwner.h +75 -0
  317. package/shared/skia/include/private/SkAPI.h +52 -0
  318. package/shared/skia/include/private/SkASAN.h +56 -0
  319. package/shared/skia/include/private/SkAlign.h +51 -0
  320. package/shared/skia/include/private/SkAlignedStorage.h +32 -0
  321. package/shared/skia/include/private/SkAnySubclass.h +79 -0
  322. package/shared/skia/include/private/SkAssert.h +203 -0
  323. package/shared/skia/include/private/SkAttributes.h +96 -0
  324. package/shared/skia/include/private/SkCPUTypes.h +25 -0
  325. package/shared/skia/include/private/SkContainers.h +54 -0
  326. package/shared/skia/include/private/SkDebug.h +27 -0
  327. package/shared/skia/include/private/SkDeque.h +138 -0
  328. package/shared/skia/include/private/SkEncodedInfo.h +249 -0
  329. package/shared/skia/include/private/SkEnumBitMask.h +92 -0
  330. package/shared/skia/include/private/SkExif.h +69 -0
  331. package/shared/skia/include/private/SkFeatures.h +173 -0
  332. package/shared/skia/include/private/SkFixed.h +143 -0
  333. package/shared/skia/include/private/SkFloatingPoint.h +183 -0
  334. package/shared/skia/include/private/SkGainmapInfo.h +140 -0
  335. package/shared/skia/include/private/SkGainmapShader.h +60 -0
  336. package/shared/skia/include/private/SkHdrMetadata.h +357 -0
  337. package/shared/skia/include/private/SkIDChangeListener.h +76 -0
  338. package/shared/skia/include/private/SkJpegGainmapEncoder.h +48 -0
  339. package/shared/skia/include/private/SkJpegMetadataDecoder.h +103 -0
  340. package/shared/skia/include/private/SkLoadUserConfig.h +64 -0
  341. package/shared/skia/include/private/SkLog.h +62 -0
  342. package/shared/skia/include/private/SkLogPriority.h +34 -0
  343. package/shared/skia/include/private/SkMacros.h +170 -0
  344. package/shared/skia/include/private/SkMalloc.h +152 -0
  345. package/shared/skia/include/private/SkMath.h +77 -0
  346. package/shared/skia/include/private/SkMutex.h +72 -0
  347. package/shared/skia/include/private/SkNoncopyable.h +30 -0
  348. package/shared/skia/include/private/SkOnce.h +55 -0
  349. package/shared/skia/include/private/SkPathRef.h +90 -0
  350. package/shared/skia/include/private/SkPixelStorage.h +52 -0
  351. package/shared/skia/include/private/SkSLSampleUsage.h +85 -0
  352. package/shared/skia/include/private/SkSafe32.h +49 -0
  353. package/shared/skia/include/private/SkSemaphore.h +84 -0
  354. package/shared/skia/include/private/SkTArray.h +823 -0
  355. package/shared/skia/include/private/SkTDArray.h +247 -0
  356. package/shared/skia/include/private/SkTFitsIn.h +92 -0
  357. package/shared/skia/include/private/SkTLogic.h +56 -0
  358. package/shared/skia/include/private/SkTPin.h +23 -0
  359. package/shared/skia/include/private/SkTemplates.h +500 -0
  360. package/shared/skia/include/private/SkThreadAnnotations.h +104 -0
  361. package/shared/skia/include/private/SkThreadID.h +23 -0
  362. package/shared/skia/include/private/SkTo.h +39 -0
  363. package/shared/skia/include/private/SkTypeTraits.h +53 -0
  364. package/shared/skia/include/private/SkWeakRefCnt.h +173 -0
  365. package/shared/skia/include/private/SkXmp.h +62 -0
  366. package/shared/skia/include/private/chromium/GrDeferredDisplayList.h +120 -0
  367. package/shared/skia/include/private/chromium/GrDeferredDisplayListRecorder.h +62 -0
  368. package/shared/skia/include/private/chromium/GrPromiseImageTexture.h +43 -0
  369. package/shared/skia/include/private/chromium/GrSurfaceCharacterization.h +211 -0
  370. package/shared/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +131 -0
  371. package/shared/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +150 -0
  372. package/shared/skia/include/private/chromium/SkCodecsICCProfileChromium.h +52 -0
  373. package/shared/skia/include/private/chromium/SkDiscardableMemory.h +70 -0
  374. package/shared/skia/include/private/chromium/SkExifChromium.h +26 -0
  375. package/shared/skia/include/private/chromium/SkImageChromium.h +117 -0
  376. package/shared/skia/include/private/chromium/SkPMColor.h +38 -0
  377. package/shared/skia/include/private/chromium/Slug.h +72 -0
  378. package/shared/skia/include/private/gpu/ganesh/GrContext_Base.h +104 -0
  379. package/shared/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +60 -0
  380. package/shared/skia/include/private/gpu/ganesh/GrImageContext.h +56 -0
  381. package/shared/skia/include/private/gpu/ganesh/GrTextureGenerator.h +66 -0
  382. package/shared/skia/include/private/gpu/ganesh/GrTypesPriv.h +959 -0
  383. package/shared/skia/include/private/gpu/vk/SkiaVulkan.h +36 -0
  384. package/shared/skia/include/sksl/SkSLDebugTrace.h +25 -0
  385. package/shared/skia/include/sksl/SkSLVersion.h +27 -0
  386. package/shared/skia/include/svg/SkSVGCanvas.h +62 -0
  387. package/shared/skia/include/third_party/vulkan/vulkan/vk_icd.h +245 -0
  388. package/shared/skia/include/third_party/vulkan/vulkan/vk_layer.h +192 -0
  389. package/shared/skia/include/third_party/vulkan/vulkan/vk_platform.h +84 -0
  390. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std.h +394 -0
  391. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_decode.h +109 -0
  392. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_encode.h +143 -0
  393. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h +312 -0
  394. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h +77 -0
  395. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_encode.h +147 -0
  396. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h +446 -0
  397. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h +67 -0
  398. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_encode.h +157 -0
  399. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std.h +151 -0
  400. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std_decode.h +68 -0
  401. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h +36 -0
  402. package/shared/skia/include/third_party/vulkan/vulkan/vulkan.h +103 -0
  403. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_android.h +159 -0
  404. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_beta.h +375 -0
  405. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_core.h +25896 -0
  406. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_directfb.h +59 -0
  407. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_fuchsia.h +282 -0
  408. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_ggp.h +62 -0
  409. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_ios.h +50 -0
  410. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_macos.h +50 -0
  411. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_metal.h +244 -0
  412. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_ohos.h +120 -0
  413. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_screen.h +114 -0
  414. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_vi.h +50 -0
  415. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_wayland.h +59 -0
  416. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_win32.h +372 -0
  417. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h +60 -0
  418. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_xlib.h +60 -0
  419. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_xlib_xrandr.h +50 -0
  420. package/shared/skia/include/utils/SkCamera.h +109 -0
  421. package/shared/skia/include/utils/SkCanvasStateUtils.h +81 -0
  422. package/shared/skia/include/utils/SkCustomTypeface.h +70 -0
  423. package/shared/skia/include/utils/SkEventTracer.h +93 -0
  424. package/shared/skia/include/utils/SkNWayCanvas.h +123 -0
  425. package/shared/skia/include/utils/SkNoDrawCanvas.h +78 -0
  426. package/shared/skia/include/utils/SkNullCanvas.h +22 -0
  427. package/shared/skia/include/utils/SkOrderedFontMgr.h +66 -0
  428. package/shared/skia/include/utils/SkPaintFilterCanvas.h +140 -0
  429. package/shared/skia/include/utils/SkParse.h +36 -0
  430. package/shared/skia/include/utils/SkParsePath.h +33 -0
  431. package/shared/skia/include/utils/SkShadowUtils.h +102 -0
  432. package/shared/skia/include/utils/SkTextUtils.h +43 -0
  433. package/shared/skia/include/utils/SkTraceEventPhase.h +19 -0
  434. package/shared/skia/include/utils/mac/SkCGUtils.h +90 -0
  435. package/shared/skia/modules/jsonreader/SkJSONReader.cpp +996 -0
  436. package/shared/skia/modules/jsonreader/SkJSONReader.h +389 -0
  437. package/shared/skia/modules/skcms/skcms.h +10 -0
  438. package/shared/skia/modules/skcms/src/Transform_inl.h +1600 -0
  439. package/shared/skia/modules/skcms/src/skcms_Transform.h +167 -0
  440. package/shared/skia/modules/skcms/src/skcms_internals.h +157 -0
  441. package/shared/skia/modules/skcms/src/skcms_public.h +496 -0
  442. package/shared/skia/modules/skottie/include/ExternalLayer.h +56 -0
  443. package/shared/skia/modules/skottie/include/Skottie.h +324 -0
  444. package/shared/skia/modules/skottie/include/SkottieProperty.h +190 -0
  445. package/shared/skia/modules/skottie/include/SlotManager.h +113 -0
  446. package/shared/skia/modules/skottie/include/TextShaper.h +197 -0
  447. package/shared/skia/modules/skottie/src/SkottieValue.h +56 -0
  448. package/shared/skia/modules/skottie/src/animator/Animator.h +89 -0
  449. package/shared/skia/modules/skottie/src/text/Font.h +82 -0
  450. package/shared/skia/modules/skottie/src/text/TextAdapter.h +155 -0
  451. package/shared/skia/modules/skottie/src/text/TextAnimator.h +122 -0
  452. package/shared/skia/modules/skottie/src/text/TextValue.h +28 -0
  453. package/shared/skia/modules/skparagraph/include/DartTypes.h +153 -0
  454. package/shared/skia/modules/skparagraph/include/FontArguments.h +46 -0
  455. package/shared/skia/modules/skparagraph/include/FontCollection.h +76 -0
  456. package/shared/skia/modules/skparagraph/include/Metrics.h +98 -0
  457. package/shared/skia/modules/skparagraph/include/Paragraph.h +289 -0
  458. package/shared/skia/modules/skparagraph/include/ParagraphBuilder.h +94 -0
  459. package/shared/skia/modules/skparagraph/include/ParagraphCache.h +52 -0
  460. package/shared/skia/modules/skparagraph/include/ParagraphPainter.h +63 -0
  461. package/shared/skia/modules/skparagraph/include/ParagraphStyle.h +160 -0
  462. package/shared/skia/modules/skparagraph/include/TextShadow.h +30 -0
  463. package/shared/skia/modules/skparagraph/include/TextStyle.h +392 -0
  464. package/shared/skia/modules/skparagraph/include/TypefaceFontProvider.h +78 -0
  465. package/shared/skia/modules/skresources/include/SkResources.h +291 -0
  466. package/shared/skia/modules/sksg/include/SkSGClipEffect.h +61 -0
  467. package/shared/skia/modules/sksg/include/SkSGColorFilter.h +135 -0
  468. package/shared/skia/modules/sksg/include/SkSGDraw.h +57 -0
  469. package/shared/skia/modules/sksg/include/SkSGEffectNode.h +50 -0
  470. package/shared/skia/modules/sksg/include/SkSGGeometryEffect.h +207 -0
  471. package/shared/skia/modules/sksg/include/SkSGGeometryNode.h +54 -0
  472. package/shared/skia/modules/sksg/include/SkSGGradient.h +108 -0
  473. package/shared/skia/modules/sksg/include/SkSGGroup.h +65 -0
  474. package/shared/skia/modules/sksg/include/SkSGImage.h +59 -0
  475. package/shared/skia/modules/sksg/include/SkSGInvalidationController.h +46 -0
  476. package/shared/skia/modules/sksg/include/SkSGMaskEffect.h +65 -0
  477. package/shared/skia/modules/sksg/include/SkSGMerge.h +74 -0
  478. package/shared/skia/modules/sksg/include/SkSGNode.h +128 -0
  479. package/shared/skia/modules/sksg/include/SkSGOpacityEffect.h +54 -0
  480. package/shared/skia/modules/sksg/include/SkSGPaint.h +112 -0
  481. package/shared/skia/modules/sksg/include/SkSGPath.h +68 -0
  482. package/shared/skia/modules/sksg/include/SkSGPlane.h +47 -0
  483. package/shared/skia/modules/sksg/include/SkSGRect.h +122 -0
  484. package/shared/skia/modules/sksg/include/SkSGRenderEffect.h +283 -0
  485. package/shared/skia/modules/sksg/include/SkSGRenderNode.h +157 -0
  486. package/shared/skia/modules/sksg/include/SkSGScene.h +47 -0
  487. package/shared/skia/modules/sksg/include/SkSGText.h +82 -0
  488. package/shared/skia/modules/sksg/include/SkSGTransform.h +127 -0
  489. package/shared/skia/modules/skshaper/include/SkShaper.h +318 -0
  490. package/shared/skia/modules/skshaper/include/SkShaper_coretext.h +26 -0
  491. package/shared/skia/modules/skshaper/include/SkShaper_factory.h +41 -0
  492. package/shared/skia/modules/skshaper/include/SkShaper_harfbuzz.h +39 -0
  493. package/shared/skia/modules/skshaper/include/SkShaper_skunicode.h +28 -0
  494. package/shared/skia/modules/skunicode/include/SkUnicode.h +321 -0
  495. package/shared/skia/modules/skunicode/include/SkUnicode_icu.h +18 -0
  496. package/shared/skia/modules/skunicode/include/SkUnicode_libgrapheme.h +19 -0
  497. package/shared/skia/modules/svg/include/SkSVGAttribute.h +110 -0
  498. package/shared/skia/modules/svg/include/SkSVGAttributeParser.h +170 -0
  499. package/shared/skia/modules/svg/include/SkSVGCircle.h +56 -0
  500. package/shared/skia/modules/svg/include/SkSVGClipPath.h +41 -0
  501. package/shared/skia/modules/svg/include/SkSVGContainer.h +52 -0
  502. package/shared/skia/modules/svg/include/SkSVGDOM.h +111 -0
  503. package/shared/skia/modules/svg/include/SkSVGDefs.h +23 -0
  504. package/shared/skia/modules/svg/include/SkSVGEllipse.h +51 -0
  505. package/shared/skia/modules/svg/include/SkSVGFe.h +93 -0
  506. package/shared/skia/modules/svg/include/SkSVGFeBlend.h +54 -0
  507. package/shared/skia/modules/svg/include/SkSVGFeColorMatrix.h +55 -0
  508. package/shared/skia/modules/svg/include/SkSVGFeComponentTransfer.h +82 -0
  509. package/shared/skia/modules/svg/include/SkSVGFeComposite.h +55 -0
  510. package/shared/skia/modules/svg/include/SkSVGFeDisplacementMap.h +56 -0
  511. package/shared/skia/modules/svg/include/SkSVGFeFlood.h +42 -0
  512. package/shared/skia/modules/svg/include/SkSVGFeGaussianBlur.h +50 -0
  513. package/shared/skia/modules/svg/include/SkSVGFeImage.h +44 -0
  514. package/shared/skia/modules/svg/include/SkSVGFeLightSource.h +93 -0
  515. package/shared/skia/modules/svg/include/SkSVGFeLighting.h +131 -0
  516. package/shared/skia/modules/svg/include/SkSVGFeMerge.h +63 -0
  517. package/shared/skia/modules/svg/include/SkSVGFeMorphology.h +55 -0
  518. package/shared/skia/modules/svg/include/SkSVGFeOffset.h +44 -0
  519. package/shared/skia/modules/svg/include/SkSVGFeTurbulence.h +49 -0
  520. package/shared/skia/modules/svg/include/SkSVGFilter.h +48 -0
  521. package/shared/skia/modules/svg/include/SkSVGFilterContext.h +69 -0
  522. package/shared/skia/modules/svg/include/SkSVGG.h +23 -0
  523. package/shared/skia/modules/svg/include/SkSVGGradient.h +56 -0
  524. package/shared/skia/modules/svg/include/SkSVGHiddenContainer.h +23 -0
  525. package/shared/skia/modules/svg/include/SkSVGIDMapper.h +19 -0
  526. package/shared/skia/modules/svg/include/SkSVGImage.h +67 -0
  527. package/shared/skia/modules/svg/include/SkSVGLine.h +53 -0
  528. package/shared/skia/modules/svg/include/SkSVGLinearGradient.h +47 -0
  529. package/shared/skia/modules/svg/include/SkSVGMask.h +49 -0
  530. package/shared/skia/modules/svg/include/SkSVGNode.h +235 -0
  531. package/shared/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +37 -0
  532. package/shared/skia/modules/svg/include/SkSVGPath.h +46 -0
  533. package/shared/skia/modules/svg/include/SkSVGPattern.h +61 -0
  534. package/shared/skia/modules/svg/include/SkSVGPoly.h +56 -0
  535. package/shared/skia/modules/svg/include/SkSVGRadialGradient.h +48 -0
  536. package/shared/skia/modules/svg/include/SkSVGRect.h +56 -0
  537. package/shared/skia/modules/svg/include/SkSVGRenderContext.h +229 -0
  538. package/shared/skia/modules/svg/include/SkSVGSVG.h +60 -0
  539. package/shared/skia/modules/svg/include/SkSVGShape.h +40 -0
  540. package/shared/skia/modules/svg/include/SkSVGStop.h +36 -0
  541. package/shared/skia/modules/svg/include/SkSVGText.h +128 -0
  542. package/shared/skia/modules/svg/include/SkSVGTransformableNode.h +48 -0
  543. package/shared/skia/modules/svg/include/SkSVGTypes.h +740 -0
  544. package/shared/skia/modules/svg/include/SkSVGUse.h +49 -0
  545. package/shared/skia/modules/svg/include/SkSVGValue.h +85 -0
  546. package/shared/skia/src/core/SkArenaAlloc.h +371 -0
  547. package/shared/skia/src/core/SkAutoLocaleSetter.h +94 -0
  548. package/shared/skia/src/core/SkChecksum.h +118 -0
  549. package/shared/skia/src/core/SkLRUCache.h +143 -0
  550. package/shared/skia/src/core/SkMathPriv.h +225 -0
  551. package/shared/skia/src/core/SkTHash.h +714 -0
  552. package/shared/skia/src/core/SkTInternalLList.h +304 -0
  553. package/shared/skia/src/core/SkTLazy.h +216 -0
  554. package/shared/skia/src/core/SkUTF.h +102 -0
  555. package/shared/skia/src/gpu/ganesh/gl/GrGLDefines.h +1162 -0
  556. package/src/GameMethods.nitro.ts +12 -2
  557. package/src/GameMethods.ts +57 -2
  558. package/src/index.tsx +1 -1
  559. package/src/nativeTypes.ts +13 -0
  560. package/src/types.ts +7 -9
  561. package/android/src/main/cpp/GameLoopJNI.cpp +0 -132
  562. package/android/src/main/java/com/margelo/nitro/rngine/Asset.kt +0 -9
  563. package/android/src/main/java/com/margelo/nitro/rngine/GameAssets.kt +0 -61
  564. package/android/src/main/java/com/margelo/nitro/rngine/Screen.kt +0 -9
  565. package/android/src/main/java/com/margelo/nitro/rngine/Shape.kt +0 -26
  566. package/android/src/main/java/com/margelo/nitro/rngine/Snapshot.kt +0 -3
  567. package/android/src/main/java/com/margelo/nitro/rngine/SnapshotSerializer.kt +0 -53
  568. package/lib/module/GameAssets.js +0 -41
  569. package/lib/module/GameAssets.js.map +0 -1
  570. package/lib/module/GameAssets.nitro.js +0 -5
  571. package/lib/module/GameAssets.nitro.js.map +0 -1
  572. package/lib/typescript/src/GameAssets.d.ts +0 -2
  573. package/lib/typescript/src/GameAssets.d.ts.map +0 -1
  574. package/lib/typescript/src/GameAssets.nitro.d.ts +0 -12
  575. package/lib/typescript/src/GameAssets.nitro.d.ts.map +0 -1
  576. package/nitrogen/generated/android/c++/JHybridGameAssetsSpec.cpp +0 -86
  577. package/nitrogen/generated/android/c++/JHybridGameAssetsSpec.hpp +0 -65
  578. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngine/HybridGameAssetsSpec.kt +0 -63
  579. package/nitrogen/generated/ios/c++/HybridGameAssetsSpecSwift.cpp +0 -11
  580. package/nitrogen/generated/ios/c++/HybridGameAssetsSpecSwift.hpp +0 -99
  581. package/nitrogen/generated/ios/swift/Func_void.swift +0 -46
  582. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +0 -46
  583. package/nitrogen/generated/ios/swift/HybridGameAssetsSpec.swift +0 -57
  584. package/nitrogen/generated/ios/swift/HybridGameAssetsSpec_cxx.swift +0 -176
  585. package/nitrogen/generated/shared/c++/HybridGameAssetsSpec.cpp +0 -23
  586. package/nitrogen/generated/shared/c++/HybridGameAssetsSpec.hpp +0 -65
  587. package/src/GameAssets.nitro.ts +0 -14
  588. package/src/GameAssets.ts +0 -47
@@ -0,0 +1,91 @@
1
+ ///
2
+ /// World.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/JSIConverter.hpp>)
11
+ #include <NitroModules/JSIConverter.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+ #if __has_include(<NitroModules/NitroDefines.hpp>)
16
+ #include <NitroModules/NitroDefines.hpp>
17
+ #else
18
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
19
+ #endif
20
+ #if __has_include(<NitroModules/JSIHelpers.hpp>)
21
+ #include <NitroModules/JSIHelpers.hpp>
22
+ #else
23
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
+ #endif
25
+ #if __has_include(<NitroModules/PropNameIDCache.hpp>)
26
+ #include <NitroModules/PropNameIDCache.hpp>
27
+ #else
28
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
29
+ #endif
30
+
31
+
32
+
33
+ #include <optional>
34
+
35
+ namespace margelo::nitro::rngine {
36
+
37
+ /**
38
+ * A struct which can be represented as a JavaScript object (World).
39
+ */
40
+ struct World final {
41
+ public:
42
+ double tickRate SWIFT_PRIVATE;
43
+ std::optional<double> gx SWIFT_PRIVATE;
44
+ std::optional<double> gy SWIFT_PRIVATE;
45
+
46
+ public:
47
+ World() = default;
48
+ explicit World(double tickRate, std::optional<double> gx, std::optional<double> gy): tickRate(tickRate), gx(gx), gy(gy) {}
49
+
50
+ public:
51
+ friend bool operator==(const World& lhs, const World& rhs) = default;
52
+ };
53
+
54
+ } // namespace margelo::nitro::rngine
55
+
56
+ namespace margelo::nitro {
57
+
58
+ // C++ World <> JS World (object)
59
+ template <>
60
+ struct JSIConverter<margelo::nitro::rngine::World> final {
61
+ static inline margelo::nitro::rngine::World fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
62
+ jsi::Object obj = arg.asObject(runtime);
63
+ return margelo::nitro::rngine::World(
64
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "tickRate"))),
65
+ JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "gx"))),
66
+ JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "gy")))
67
+ );
68
+ }
69
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::rngine::World& arg) {
70
+ jsi::Object obj(runtime);
71
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "tickRate"), JSIConverter<double>::toJSI(runtime, arg.tickRate));
72
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "gx"), JSIConverter<std::optional<double>>::toJSI(runtime, arg.gx));
73
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "gy"), JSIConverter<std::optional<double>>::toJSI(runtime, arg.gy));
74
+ return obj;
75
+ }
76
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
77
+ if (!value.isObject()) {
78
+ return false;
79
+ }
80
+ jsi::Object obj = value.getObject(runtime);
81
+ if (!nitro::isPlainObject(runtime, obj)) {
82
+ return false;
83
+ }
84
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "tickRate")))) return false;
85
+ if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "gx")))) return false;
86
+ if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "gy")))) return false;
87
+ return true;
88
+ }
89
+ };
90
+
91
+ } // namespace margelo::nitro
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rngine",
3
- "version": "0.7.2",
3
+ "version": "0.8.1",
4
4
  "description": "React Native 2D game engine powered by Nitro Modules",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -176,5 +176,8 @@
176
176
  "vite"
177
177
  ],
178
178
  "version": "0.61.0"
179
+ },
180
+ "dependencies": {
181
+ "react-native-skia-android": "^152.0.0"
179
182
  }
180
183
  }
@@ -3,16 +3,11 @@
3
3
  #include "Circle.hpp"
4
4
  #include "Collision.hpp"
5
5
  #include "Entity.hpp"
6
+ #include "Overlap.hpp"
6
7
  #include "Rect.hpp"
7
8
  #include <optional>
8
9
 
9
10
  namespace margelo::nitro::rngine::CollisionUtils {
10
- struct Overlap {
11
- double depth;
12
- double nx;
13
- double ny;
14
- };
15
-
16
11
  std::optional<Overlap> overlap(const Rect &a, double ax, double ay,
17
12
  const Rect &b, double bx, double by);
18
13
  std::optional<Overlap> overlap(const Circle &a, double ax, double ay,
@@ -1,21 +1,17 @@
1
- #pragma once
2
- #include <string>
1
+ #include "ColorUtils.hpp"
3
2
 
4
- namespace margelo::nitro::rngine {
5
-
6
- inline uint32_t parseHexColor(const std::optional<std::string> &color) {
7
- if (!color.has_value())
8
- return 0x00000000;
9
- const std::string &c = color.value();
3
+ namespace margelo::nitro::rngine::ColorUtils {
4
+ uint32_t parseHexColor(const std::string &color) {
5
+ const std::string &c = color;
10
6
  if (!c.empty() && c[0] == '#') {
11
7
  std::string hex = c.substr(1);
12
8
 
13
9
  if (hex.size() == 3 || hex.size() == 4) {
14
10
  std::string expanded;
15
11
  expanded.reserve(hex.size() * 2);
16
- for (char c : hex) {
17
- expanded += c;
18
- expanded += c;
12
+ for (char ch : hex) {
13
+ expanded += ch;
14
+ expanded += ch;
19
15
  }
20
16
  hex = std::move(expanded);
21
17
  }
@@ -34,4 +30,4 @@ inline uint32_t parseHexColor(const std::optional<std::string> &color) {
34
30
 
35
31
  return 0x00000000;
36
32
  }
37
- } // namespace margelo::nitro::rngine
33
+ } // namespace margelo::nitro::rngine::ColorUtils
@@ -0,0 +1,7 @@
1
+ #pragma once
2
+ #include <cstdint>
3
+ #include <string>
4
+
5
+ namespace margelo::nitro::rngine::ColorUtils {
6
+ uint32_t parseHexColor(const std::string &color);
7
+ } // namespace margelo::nitro::rngine::ColorUtils
@@ -2,10 +2,11 @@
2
2
  #include "Collision.hpp"
3
3
  #include "CollisionUtils.hpp"
4
4
  #include "Entity.hpp"
5
+ #include "GameRenderer.hpp"
5
6
  #include <android/log.h>
6
7
  #include <chrono>
7
8
  #include <cinttypes>
8
- #include <set>
9
+ #include <mutex>
9
10
 
10
11
  namespace margelo::nitro::rngine {
11
12
 
@@ -32,6 +33,11 @@ GameLoop::~GameLoop() {
32
33
  __android_log_print(ANDROID_LOG_INFO, "GameLoop", "Destructor - Complete");
33
34
  }
34
35
 
36
+ bool GameLoop::entityIdMatches(const std::string &entityId,
37
+ const std::string &prefix) {
38
+ return entityId == prefix || entityId.starts_with(prefix + "_");
39
+ }
40
+
35
41
  std::vector<Entity *>
36
42
  GameLoop::resolveEntitiesInternal(const std::string &prefix) {
37
43
  std::vector<Entity *> results;
@@ -52,14 +58,6 @@ GameLoop::resolveEntitiesInternal(const std::string &prefix) {
52
58
  return results;
53
59
  }
54
60
 
55
- void GameLoop::registerLottieDuration(double id, double duration) {
56
- std::lock_guard<std::mutex> lock(_mutex);
57
- _lottieDurations[id] = duration;
58
- __android_log_print(ANDROID_LOG_DEBUG, "GameLoop",
59
- "Registered lottie duration: id: %.0f, duration: %.4f",
60
- id, duration);
61
- }
62
-
63
61
  void GameLoop::runGameLoop() {
64
62
  using namespace std::chrono;
65
63
 
@@ -68,8 +66,14 @@ void GameLoop::runGameLoop() {
68
66
  auto previousTime = steady_clock::now();
69
67
  double accumulator = 0.0;
70
68
 
69
+ auto &gameRenderer = GameRenderer::getInstance();
70
+
71
71
  while (_isRunning) {
72
- double targetDeltaTime = 1.0 / _tickRate.load();
72
+ double targetDeltaTime;
73
+ {
74
+ std::lock_guard<std::mutex> lock(_worldMutex);
75
+ targetDeltaTime = 1.0 / _world.tickRate;
76
+ }
73
77
  auto currentTime = steady_clock::now();
74
78
  double frameTime = duration<double>(currentTime - previousTime).count();
75
79
  previousTime = currentTime;
@@ -87,6 +91,11 @@ void GameLoop::runGameLoop() {
87
91
  }
88
92
  }
89
93
 
94
+ {
95
+ std::lock_guard<std::mutex> lock(_mutex);
96
+ gameRenderer.render(_screen, _entities);
97
+ }
98
+
90
99
  std::this_thread::sleep_for(milliseconds(1));
91
100
  }
92
101
 
@@ -108,28 +117,14 @@ void GameLoop::runSystems() {
108
117
  }
109
118
 
110
119
  if (system.collisions.has_value()) {
111
- std::set<std::pair<std::string, std::string>> uniqueEntityIdPairs;
112
-
113
- for (const auto &[a, b] : system.collisions.value()) {
114
- auto resolvedEntitiesInternalA = resolveEntitiesInternal(a);
115
- auto resolvedEntitiesInternalB = resolveEntitiesInternal(b);
116
-
117
- for (const auto &entityA : resolvedEntitiesInternalA) {
118
- for (const auto &entityB : resolvedEntitiesInternalB) {
119
- if (entityA == entityB)
120
- continue;
121
-
122
- auto uniqueEntityIdPairKey = std::minmax(entityA->id, entityB->id);
123
-
124
- if (uniqueEntityIdPairs.count(uniqueEntityIdPairKey))
125
- continue;
126
-
127
- uniqueEntityIdPairs.insert(uniqueEntityIdPairKey);
128
-
129
- if (auto collision =
130
- CollisionUtils::shapeOverlap(*entityA, *entityB)) {
131
- collisions.push_back(collision.value());
132
- }
120
+ for (const auto &pair : system.collisions.value()) {
121
+ for (const auto &c : _collisions) {
122
+ bool matchesForward =
123
+ entityIdMatches(c.a, pair.a) && entityIdMatches(c.b, pair.b);
124
+ bool matchesReverse =
125
+ entityIdMatches(c.a, pair.b) && entityIdMatches(c.b, pair.a);
126
+ if (matchesForward || matchesReverse) {
127
+ collisions.push_back(c);
133
128
  }
134
129
  }
135
130
  }
@@ -151,18 +146,12 @@ void GameLoop::runSystems() {
151
146
  }
152
147
  }
153
148
 
154
- void GameLoop::captureSnapshot() {
155
- std::lock_guard<std::mutex> snapshotLock(_snapshotMutex);
156
- std::lock_guard<std::mutex> lock(_mutex);
157
- _entitiesSnapshot = _entities;
158
- _screenSnapshot = _screen;
159
- }
160
-
161
149
  void GameLoop::update(double deltaTime) {
162
150
  updateStats(deltaTime);
163
151
  updateEntities(deltaTime);
152
+ computeCollisions();
153
+ resolveCollisions();
164
154
  runSystems();
165
- captureSnapshot();
166
155
  }
167
156
 
168
157
  void GameLoop::updateStats(double deltaTime) {
@@ -173,26 +162,51 @@ void GameLoop::updateStats(double deltaTime) {
173
162
  frameCount++;
174
163
 
175
164
  if (timeAccumulator >= 1.0) {
176
- _gameStats.tickRate = static_cast<double>(frameCount);
177
- _gameStats.deltaTime = deltaTime;
165
+ _gameStats.tickRate = static_cast<double>(frameCount) / timeAccumulator;
166
+ _gameStats.deltaTime = timeAccumulator / static_cast<double>(frameCount);
178
167
 
179
- __android_log_print(ANDROID_LOG_DEBUG, "GameLoop",
180
- "TickRate: %.2f, Delta: %.4f, Total Ticks: %" PRIu64,
181
- _gameStats.tickRate, _gameStats.deltaTime,
182
- _gameStats.totalTicks);
168
+ __android_log_print(
169
+ ANDROID_LOG_DEBUG, "GameLoop",
170
+ "updateStats: TickRate: %.2f, Delta: %.4f, Total Ticks: %" PRIu64,
171
+ _gameStats.tickRate, _gameStats.deltaTime, _gameStats.totalTicks);
183
172
 
184
- timeAccumulator = 0.0;
173
+ timeAccumulator -= 1.0;
185
174
  frameCount = 0;
186
175
  }
187
176
 
188
177
  _gameStats.totalTicks++;
189
178
  }
190
179
 
180
+ void GameLoop::updateScreen(double deltaTime) {
181
+ std::lock_guard<std::mutex> lock(_mutex);
182
+ if (_screen.asset.has_value() && _screen.asset.value() < 0) {
183
+ auto &lottieCache = GameRenderer::getInstance().getLottieCacheInternal();
184
+ auto it = lottieCache.find(_screen.asset.value());
185
+ if (it != lottieCache.end() && it->second) {
186
+ _screen.progress = fmod(_screen.progress.value_or(0.0) +
187
+ deltaTime / it->second->duration(),
188
+ 1.0);
189
+ }
190
+ } else if (_screen.progress.has_value()) {
191
+ _screen.progress.reset();
192
+ }
193
+ }
194
+
191
195
  void GameLoop::updateEntities(double deltaTime) {
196
+ std::lock_guard<std::mutex> worldLock(_worldMutex);
192
197
  std::lock_guard<std::mutex> lock(_mutex);
193
198
 
194
199
  for (auto &[id, entity] : _entities) {
195
200
 
201
+ if (entity.mass.has_value() && entity.mass.value() > 0.0) {
202
+ if (_world.gx.has_value()) {
203
+ entity.vx = entity.vx.value_or(0.0) + _world.gx.value() * deltaTime;
204
+ }
205
+ if (_world.gy.has_value()) {
206
+ entity.vy = entity.vy.value_or(0.0) + _world.gy.value() * deltaTime;
207
+ }
208
+ }
209
+
196
210
  if (entity.ax.has_value()) {
197
211
  entity.vx = entity.vx.value_or(0.0) + entity.ax.value() * deltaTime;
198
212
  }
@@ -208,12 +222,89 @@ void GameLoop::updateEntities(double deltaTime) {
208
222
  }
209
223
 
210
224
  if (entity.asset.has_value() && entity.asset.value() < 0) {
211
- auto it = _lottieDurations.find(entity.asset.value());
212
- if (it != _lottieDurations.end() && it->second > 0.0) {
213
- entity.progress =
214
- fmod(entity.progress.value_or(0.0) + deltaTime / it->second, 1.0);
225
+ auto &lottieCache = GameRenderer::getInstance().getLottieCacheInternal();
226
+ auto it = lottieCache.find(entity.asset.value());
227
+ if (it != lottieCache.end() && it->second) {
228
+ entity.progress = fmod(entity.progress.value_or(0.0) +
229
+ deltaTime / it->second->duration(),
230
+ 1.0);
231
+ }
232
+ } else if (entity.progress.has_value()) {
233
+ entity.progress.reset();
234
+ }
235
+ }
236
+ }
237
+
238
+ void GameLoop::computeCollisions() {
239
+ std::lock_guard<std::mutex> lock(_mutex);
240
+ _collisions.clear();
241
+
242
+ std::vector<Entity *> entities;
243
+ entities.reserve(_entities.size());
244
+ for (auto &[id, entity] : _entities) {
245
+ entities.push_back(&entity);
246
+ }
247
+
248
+ for (size_t i = 0; i < entities.size(); ++i) {
249
+ for (size_t j = i + 1; j < entities.size(); ++j) {
250
+ auto result = CollisionUtils::shapeOverlap(*entities[i], *entities[j]);
251
+ if (result.has_value()) {
252
+ _collisions.push_back(result.value());
215
253
  }
216
254
  }
217
255
  }
218
256
  }
257
+
258
+ void GameLoop::resolveCollisions() {
259
+ std::lock_guard<std::mutex> lock(_mutex);
260
+
261
+ const double percent = 0.8;
262
+ const double slop = 0.01;
263
+
264
+ for (const auto &c : _collisions) {
265
+ auto itA = _entities.find(c.a);
266
+ auto itB = _entities.find(c.b);
267
+ if (itA == _entities.end() || itB == _entities.end())
268
+ continue;
269
+
270
+ Entity &a = itA->second;
271
+ Entity &b = itB->second;
272
+
273
+ if (a.isSensor.value_or(false) || b.isSensor.value_or(false))
274
+ continue;
275
+
276
+ double inverseMassA = (a.mass.has_value() && a.mass.value() > 0.0)
277
+ ? 1.0 / a.mass.value()
278
+ : 0.0;
279
+ double inverseMassB = (b.mass.has_value() && b.mass.value() > 0.0)
280
+ ? 1.0 / b.mass.value()
281
+ : 0.0;
282
+ double totalInverseMass = inverseMassA + inverseMassB;
283
+ if (totalInverseMass == 0.0)
284
+ continue;
285
+
286
+ double correctionDepth = std::max(c.depth - slop, 0.0);
287
+ double correction = (correctionDepth / totalInverseMass) * percent;
288
+ a.px -= c.nx * correction * inverseMassA;
289
+ a.py -= c.ny * correction * inverseMassA;
290
+ b.px += c.nx * correction * inverseMassB;
291
+ b.py += c.ny * correction * inverseMassB;
292
+
293
+ double avx = a.vx.value_or(0.0), avy = a.vy.value_or(0.0);
294
+ double bvx = b.vx.value_or(0.0), bvy = b.vy.value_or(0.0);
295
+ double relativeVx = bvx - avx, relativeVy = bvy - avy;
296
+ double velocityAlongNormal = relativeVx * c.nx + relativeVy * c.ny;
297
+ if (velocityAlongNormal > 0)
298
+ continue;
299
+
300
+ double restitution = 0.0;
301
+ double impulse =
302
+ -(1 + restitution) * velocityAlongNormal / totalInverseMass;
303
+
304
+ a.vx = avx - impulse * c.nx * inverseMassA;
305
+ a.vy = avy - impulse * c.ny * inverseMassA;
306
+ b.vx = bvx + impulse * c.nx * inverseMassB;
307
+ b.vy = bvy + impulse * c.ny * inverseMassB;
308
+ }
309
+ }
219
310
  } // namespace margelo::nitro::rngine
@@ -4,6 +4,7 @@
4
4
  #include "GameStats.hpp"
5
5
  #include "Screen.hpp"
6
6
  #include "System.hpp"
7
+ #include "World.hpp"
7
8
  #include <atomic>
8
9
  #include <memory>
9
10
  #include <thread>
@@ -20,43 +21,38 @@ public:
20
21
 
21
22
  ~GameLoop();
22
23
 
24
+ std::mutex &getWorldMutexInternal() { return _worldMutex; };
23
25
  std::mutex &getMutexInternal() { return _mutex; };
24
- std::mutex &getSnapshotMutexInternal() { return _snapshotMutex; };
25
26
  std::map<string, Entity> &getEntitiesInternal() { return _entities; };
26
- std::map<string, Entity> &getEntitiesSnapshotInternal() {
27
- return _entitiesSnapshot;
28
- };
29
27
  std::vector<System> &getSystemsInternal() { return _systems; };
30
28
  std::atomic<bool> &getIsPausedInternal() { return _isPaused; };
29
+ World &getWorldInternal() { return _world; };
31
30
  Screen &getScreenInternal() { return _screen; };
32
- Screen &getScreenSnapshotInternal() { return _screenSnapshot; };
33
31
 
32
+ bool entityIdMatches(const std::string &entityId, const std::string &prefix);
34
33
  std::vector<Entity *> resolveEntitiesInternal(const std::string &prefix);
35
- void registerLottieDuration(double, double);
36
-
37
- void setTickRate(double tickRate) { _tickRate.store(tickRate); };
38
34
 
39
35
  private:
40
36
  explicit GameLoop();
37
+ std::mutex _worldMutex;
41
38
  std::mutex _mutex;
42
- std::mutex _snapshotMutex;
43
39
  std::map<std::string, Entity> _entities;
44
- std::map<std::string, Entity> _entitiesSnapshot;
45
- std::map<double, double> _lottieDurations;
40
+ std::vector<Collision> _collisions{};
46
41
  std::vector<System> _systems{};
47
42
  std::atomic<bool> _isRunning{true};
48
43
  std::atomic<bool> _isPaused{true};
49
- std::atomic<double> _tickRate{60.0};
44
+ World _world;
50
45
  Screen _screen;
51
- Screen _screenSnapshot;
52
46
  GameStats _gameStats;
53
47
  std::unique_ptr<std::thread> _gameThread;
54
48
 
55
49
  void runGameLoop();
56
50
  void runSystems();
57
- void captureSnapshot();
51
+ void computeCollisions();
52
+ void resolveCollisions();
58
53
  void update(double deltaTime);
59
54
  void updateStats(double deltaTime);
55
+ void updateScreen(double deltaTime);
60
56
  void updateEntities(double deltaTime);
61
57
  };
62
58
  } // namespace margelo::nitro::rngine
@@ -1,39 +1,37 @@
1
1
  #include "GameMethods.hpp"
2
2
  #include "EntityUpdate.hpp"
3
3
  #include "GameLoop.hpp"
4
+ #include "GameRenderer.hpp"
5
+ #include "include/core/SkStream.h"
4
6
  #include <android/log.h>
7
+ #include <fbjni/fbjni.h>
5
8
 
6
9
  namespace margelo::nitro::rngine {
7
- void GameMethods::setTickRate(double tickRate) {
10
+ void GameMethods::setWorld(const World &world) {
8
11
  auto &instance = GameLoop::getInstance();
9
- instance.setTickRate(tickRate);
12
+ std::lock_guard<std::mutex> lock(instance.getWorldMutexInternal());
13
+ instance.getWorldInternal() = world;
10
14
  __android_log_print(ANDROID_LOG_INFO, "GameMethods",
11
- "setTickRate: tickRate=%.1f", tickRate);
15
+ "setWorld: tickRate=%.1f", world.tickRate);
12
16
  }
13
17
 
14
18
  void GameMethods::setScreen(const Screen &screen) {
15
19
  auto &instance = GameLoop::getInstance();
16
20
  std::lock_guard<std::mutex> lock(instance.getMutexInternal());
17
- std::lock_guard<std::mutex> snapshotLock(instance.getSnapshotMutexInternal());
18
21
  instance.getScreenInternal() = screen;
19
- instance.getScreenSnapshotInternal() = screen;
20
22
 
21
23
  __android_log_print(ANDROID_LOG_INFO, "GameMethods",
22
- "setWorld: width=%.0f height=%.0f", screen.width,
24
+ "setScreen: width=%.0f height=%.0f", screen.width,
23
25
  screen.height);
24
26
  }
25
27
 
26
28
  void GameMethods::setEntities(const std::vector<Entity> &entities) {
27
29
  auto &instance = GameLoop::getInstance();
28
30
  std::lock_guard<std::mutex> lock(instance.getMutexInternal());
29
- std::lock_guard<std::mutex> snapshotLock(instance.getSnapshotMutexInternal());
30
31
  auto &entitiesInternal = instance.getEntitiesInternal();
31
- auto &entitiesSnapshotInternal = instance.getEntitiesSnapshotInternal();
32
32
  entitiesInternal.clear();
33
- entitiesSnapshotInternal.clear();
34
33
  for (auto &entity : entities) {
35
34
  entitiesInternal[entity.id] = entity;
36
- entitiesSnapshotInternal[entity.id] = entity;
37
35
  }
38
36
  __android_log_print(ANDROID_LOG_INFO, "GameMethods",
39
37
  "setEntities: loaded %zu entities", entities.size());
@@ -130,6 +128,9 @@ void GameMethods::update(const std::vector<EntityUpdate> &updates) {
130
128
  if (update.shape.has_value()) {
131
129
  entity->shape = update.shape.value();
132
130
  }
131
+ if (update.isSensor.has_value()) {
132
+ entity->isSensor = update.isSensor.value();
133
+ }
133
134
  if (update.asset.has_value()) {
134
135
  entity->asset = update.asset.value();
135
136
  }
@@ -151,6 +152,9 @@ void GameMethods::update(const std::vector<EntityUpdate> &updates) {
151
152
  if (update.ay.has_value()) {
152
153
  entity->ay = update.ay.value();
153
154
  }
155
+ if (update.mass.has_value()) {
156
+ entity->mass = update.mass.value();
157
+ }
154
158
  }
155
159
 
156
160
  __android_log_print(ANDROID_LOG_INFO, "GameMethods",
@@ -158,4 +162,91 @@ void GameMethods::update(const std::vector<EntityUpdate> &updates) {
158
162
  resolvedEntitiesInternals.size(), update.id.c_str());
159
163
  }
160
164
  }
165
+
166
+ bool GameMethods::isAssetLoaded(double id) {
167
+ auto &gameRenderer = GameRenderer::getInstance();
168
+
169
+ if (id > 0) {
170
+ auto &svgCache = gameRenderer.getSvgCacheInternal();
171
+ auto it = svgCache.find(id);
172
+ return it != svgCache.end();
173
+ }
174
+
175
+ if (id < 0) {
176
+ auto &lottieCache = gameRenderer.getLottieCacheInternal();
177
+ auto it = lottieCache.find(id);
178
+ return it != lottieCache.end();
179
+ }
180
+
181
+ return false;
182
+ };
183
+
184
+ std::shared_ptr<Promise<bool>>
185
+ GameMethods::loadLottie(double id, const std::string &jsonStr) {
186
+ return Promise<bool>::async([=]() -> bool {
187
+ auto stream = SkMemoryStream::MakeDirect(jsonStr.data(), jsonStr.size());
188
+ auto animation = skottie::Animation::Make(stream.get());
189
+
190
+ if (!animation) {
191
+ return false;
192
+ }
193
+
194
+ auto &gameRenderer = GameRenderer::getInstance();
195
+ auto &lottieCache = gameRenderer.getLottieCacheInternal();
196
+
197
+ lottieCache[id] = std::move(animation);
198
+
199
+ return true;
200
+ });
201
+ };
202
+
203
+ std::shared_ptr<Promise<bool>> GameMethods::loadSvg(double id,
204
+ const std::string &svgUri) {
205
+ return Promise<bool>::async([=]() -> bool {
206
+ std::string svgStr;
207
+
208
+ using namespace facebook::jni;
209
+
210
+ ThreadScope::WithClassLoader([&] {
211
+ static const auto helperClass =
212
+ findClassStatic("com/margelo/nitro/rngine/SvgLoaderHelper");
213
+
214
+ local_ref<JArrayByte> byteArray;
215
+
216
+ if (svgUri.rfind("http://", 0) == 0 || svgUri.rfind("https://", 0) == 0) {
217
+ static const auto method =
218
+ helperClass->getStaticMethod<JArrayByte(local_ref<JString>)>(
219
+ "loadFromUrl");
220
+ byteArray = method(helperClass, make_jstring(svgUri));
221
+ } else {
222
+ static const auto method =
223
+ helperClass->getStaticMethod<JArrayByte(local_ref<JString>)>(
224
+ "loadFromResource");
225
+ byteArray = method(helperClass, make_jstring(svgUri));
226
+ }
227
+
228
+ if (!byteArray) {
229
+ throw std::runtime_error("Failed to load SVG bytes for: " + svgUri);
230
+ }
231
+
232
+ size_t len = byteArray->size();
233
+ svgStr.resize(len);
234
+ byteArray->getRegion(0, len, reinterpret_cast<int8_t *>(svgStr.data()));
235
+ });
236
+
237
+ auto stream = SkMemoryStream::MakeDirect(svgStr.data(), svgStr.size());
238
+ auto svgDom = SkSVGDOM::MakeFromStream(*stream);
239
+
240
+ if (!svgDom) {
241
+ return false;
242
+ }
243
+
244
+ auto &gameRenderer = GameRenderer::getInstance();
245
+ auto &svgCache = gameRenderer.getSvgCacheInternal();
246
+
247
+ svgCache[id] = std::move(svgDom);
248
+
249
+ return true;
250
+ });
251
+ };
161
252
  } // namespace margelo::nitro::rngine