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.
- package/README.md +51 -26
- package/android/CMakeLists.txt +45 -2
- package/android/build.gradle +1 -3
- package/android/kls_database.db +0 -0
- package/android/src/main/cpp/game-view.cpp +29 -0
- package/android/src/main/java/com/margelo/nitro/rngine/GameEngine.kt +1 -28
- package/android/src/main/java/com/margelo/nitro/rngine/GameView.kt +22 -166
- package/android/src/main/java/com/margelo/nitro/rngine/SvgLoaderHelper.kt +24 -0
- package/lib/module/GameMethods.js +46 -2
- package/lib/module/GameMethods.js.map +1 -1
- package/lib/module/GameMethods.nitro.js.map +1 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/GameMethods.d.ts +2 -1
- package/lib/typescript/src/GameMethods.d.ts.map +1 -1
- package/lib/typescript/src/GameMethods.nitro.d.ts +5 -2
- package/lib/typescript/src/GameMethods.nitro.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/nativeTypes.d.ts +12 -0
- package/lib/typescript/src/nativeTypes.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +7 -10
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/nitro.json +0 -10
- package/nitrogen/generated/android/rngine+autolinking.cmake +0 -2
- package/nitrogen/generated/android/rngineOnLoad.cpp +0 -16
- package/nitrogen/generated/ios/Rngine-Swift-Cxx-Bridge.cpp +0 -33
- package/nitrogen/generated/ios/Rngine-Swift-Cxx-Bridge.hpp +0 -96
- package/nitrogen/generated/ios/Rngine-Swift-Cxx-Umbrella.hpp +0 -9
- package/nitrogen/generated/ios/RngineAutolinking.mm +0 -8
- package/nitrogen/generated/ios/RngineAutolinking.swift +0 -12
- package/nitrogen/generated/shared/c++/Entity.hpp +10 -2
- package/nitrogen/generated/shared/c++/EntityUpdate.hpp +10 -2
- package/nitrogen/generated/shared/c++/HybridGameMethodsSpec.cpp +4 -1
- package/nitrogen/generated/shared/c++/HybridGameMethodsSpec.hpp +8 -1
- package/nitrogen/generated/shared/c++/World.hpp +91 -0
- package/package.json +4 -1
- package/shared/CollisionUtils.hpp +1 -6
- package/{android/src/main/cpp/ColorUtils.hpp → shared/ColorUtils.cpp} +8 -12
- package/shared/ColorUtils.hpp +7 -0
- package/shared/GameLoop.cpp +142 -51
- package/shared/GameLoop.hpp +10 -14
- package/shared/GameMethods.cpp +101 -10
- package/shared/GameMethods.hpp +19 -1
- package/shared/GameRenderer.cpp +420 -0
- package/shared/GameRenderer.hpp +65 -0
- package/shared/GameStats.hpp +3 -3
- package/shared/Overlap.hpp +9 -0
- package/shared/skia/include/android/AHardwareBufferUtils.h +26 -0
- package/shared/skia/include/android/GrAHardwareBufferUtils.h +97 -0
- package/shared/skia/include/android/SkAndroidFrameworkUtils.h +83 -0
- package/shared/skia/include/android/SkAnimatedImage.h +193 -0
- package/shared/skia/include/android/SkCanvasAndroid.h +20 -0
- package/shared/skia/include/android/SkImageAndroid.h +100 -0
- package/shared/skia/include/android/SkSurfaceAndroid.h +50 -0
- package/shared/skia/include/android/graphite/SurfaceAndroid.h +59 -0
- package/shared/skia/include/android/vk/AndroidVulkanMemoryAllocator.h +31 -0
- package/shared/skia/include/codec/SkAndroidCodec.h +302 -0
- package/shared/skia/include/codec/SkAvifDecoder.h +80 -0
- package/shared/skia/include/codec/SkBmpDecoder.h +44 -0
- package/shared/skia/include/codec/SkBmpRustDecoder.h +42 -0
- package/shared/skia/include/codec/SkCodec.h +1178 -0
- package/shared/skia/include/codec/SkCodecAnimation.h +61 -0
- package/shared/skia/include/codec/SkEncodedImageFormat.h +33 -0
- package/shared/skia/include/codec/SkEncodedOrigin.h +71 -0
- package/shared/skia/include/codec/SkGifDecoder.h +44 -0
- package/shared/skia/include/codec/SkIcoDecoder.h +44 -0
- package/shared/skia/include/codec/SkJpegDecoder.h +51 -0
- package/shared/skia/include/codec/SkJpegxlDecoder.h +44 -0
- package/shared/skia/include/codec/SkPixmapUtils.h +31 -0
- package/shared/skia/include/codec/SkPngChunkReader.h +45 -0
- package/shared/skia/include/codec/SkPngDecoder.h +51 -0
- package/shared/skia/include/codec/SkPngRustDecoder.h +30 -0
- package/shared/skia/include/codec/SkRawDecoder.h +50 -0
- package/shared/skia/include/codec/SkWbmpDecoder.h +44 -0
- package/shared/skia/include/codec/SkWebpDecoder.h +51 -0
- package/shared/skia/include/config/SkUserConfig.h +141 -0
- package/shared/skia/include/core/SkAlphaType.h +45 -0
- package/shared/skia/include/core/SkAnnotation.h +52 -0
- package/shared/skia/include/core/SkArc.h +69 -0
- package/shared/skia/include/core/SkBBHFactory.h +67 -0
- package/shared/skia/include/core/SkBitmap.h +1264 -0
- package/shared/skia/include/core/SkBlendMode.h +112 -0
- package/shared/skia/include/core/SkBlender.h +30 -0
- package/shared/skia/include/core/SkBlurTypes.h +20 -0
- package/shared/skia/include/core/SkCPUContext.h +31 -0
- package/shared/skia/include/core/SkCPURecorder.h +76 -0
- package/shared/skia/include/core/SkCanvas.h +2770 -0
- package/shared/skia/include/core/SkCanvasVirtualEnforcer.h +61 -0
- package/shared/skia/include/core/SkCapabilities.h +35 -0
- package/shared/skia/include/core/SkClipOp.h +19 -0
- package/shared/skia/include/core/SkColor.h +469 -0
- package/shared/skia/include/core/SkColorFilter.h +150 -0
- package/shared/skia/include/core/SkColorSpace.h +432 -0
- package/shared/skia/include/core/SkColorTable.h +62 -0
- package/shared/skia/include/core/SkColorType.h +159 -0
- package/shared/skia/include/core/SkContourMeasure.h +215 -0
- package/shared/skia/include/core/SkCoverageMode.h +28 -0
- package/shared/skia/include/core/SkCubicMap.h +47 -0
- package/shared/skia/include/core/SkData.h +225 -0
- package/shared/skia/include/core/SkDataTable.h +122 -0
- package/shared/skia/include/core/SkDocument.h +93 -0
- package/shared/skia/include/core/SkDrawable.h +178 -0
- package/shared/skia/include/core/SkExecutor.h +59 -0
- package/shared/skia/include/core/SkFlattenable.h +115 -0
- package/shared/skia/include/core/SkFont.h +536 -0
- package/shared/skia/include/core/SkFontArguments.h +116 -0
- package/shared/skia/include/core/SkFontMetrics.h +139 -0
- package/shared/skia/include/core/SkFontMgr.h +178 -0
- package/shared/skia/include/core/SkFontParameters.h +43 -0
- package/shared/skia/include/core/SkFontScanner.h +45 -0
- package/shared/skia/include/core/SkFontStyle.h +84 -0
- package/shared/skia/include/core/SkFontTypes.h +25 -0
- package/shared/skia/include/core/SkFourByteTag.h +19 -0
- package/shared/skia/include/core/SkGraphics.h +169 -0
- package/shared/skia/include/core/SkImage.h +918 -0
- package/shared/skia/include/core/SkImageFilter.h +119 -0
- package/shared/skia/include/core/SkImageGenerator.h +140 -0
- package/shared/skia/include/core/SkImageInfo.h +634 -0
- package/shared/skia/include/core/SkM44.h +442 -0
- package/shared/skia/include/core/SkMallocPixelRef.h +45 -0
- package/shared/skia/include/core/SkMaskFilter.h +45 -0
- package/shared/skia/include/core/SkMatrix.h +1887 -0
- package/shared/skia/include/core/SkMesh.h +429 -0
- package/shared/skia/include/core/SkMilestone.h +9 -0
- package/shared/skia/include/core/SkOpenTypeSVGDecoder.h +30 -0
- package/shared/skia/include/core/SkOverdrawCanvas.h +94 -0
- package/shared/skia/include/core/SkPaint.h +698 -0
- package/shared/skia/include/core/SkPath.h +1145 -0
- package/shared/skia/include/core/SkPathBuilder.h +1052 -0
- package/shared/skia/include/core/SkPathEffect.h +88 -0
- package/shared/skia/include/core/SkPathIter.h +90 -0
- package/shared/skia/include/core/SkPathMeasure.h +96 -0
- package/shared/skia/include/core/SkPathTypes.h +71 -0
- package/shared/skia/include/core/SkPathUtils.h +39 -0
- package/shared/skia/include/core/SkPicture.h +291 -0
- package/shared/skia/include/core/SkPictureRecorder.h +115 -0
- package/shared/skia/include/core/SkPixelRef.h +120 -0
- package/shared/skia/include/core/SkPixmap.h +736 -0
- package/shared/skia/include/core/SkPoint.h +560 -0
- package/shared/skia/include/core/SkPoint3.h +149 -0
- package/shared/skia/include/core/SkRRect.h +548 -0
- package/shared/skia/include/core/SkRSXform.h +71 -0
- package/shared/skia/include/core/SkRasterHandleAllocator.h +94 -0
- package/shared/skia/include/core/SkRecorder.h +49 -0
- package/shared/skia/include/core/SkRect.h +1419 -0
- package/shared/skia/include/core/SkRefCnt.h +391 -0
- package/shared/skia/include/core/SkRegion.h +701 -0
- package/shared/skia/include/core/SkSamplingOptions.h +107 -0
- package/shared/skia/include/core/SkScalar.h +148 -0
- package/shared/skia/include/core/SkSerialProcs.h +127 -0
- package/shared/skia/include/core/SkShader.h +123 -0
- package/shared/skia/include/core/SkSize.h +93 -0
- package/shared/skia/include/core/SkSpan.h +174 -0
- package/shared/skia/include/core/SkStream.h +524 -0
- package/shared/skia/include/core/SkStrikeRef.h +96 -0
- package/shared/skia/include/core/SkString.h +297 -0
- package/shared/skia/include/core/SkStrokeRec.h +160 -0
- package/shared/skia/include/core/SkSurface.h +689 -0
- package/shared/skia/include/core/SkSurfaceProps.h +122 -0
- package/shared/skia/include/core/SkSwizzle.h +21 -0
- package/shared/skia/include/core/SkTextBlob.h +541 -0
- package/shared/skia/include/core/SkTextureCompressionType.h +30 -0
- package/shared/skia/include/core/SkTileMode.h +41 -0
- package/shared/skia/include/core/SkTiledImageUtils.h +125 -0
- package/shared/skia/include/core/SkTraceMemoryDump.h +121 -0
- package/shared/skia/include/core/SkTypeface.h +468 -0
- package/shared/skia/include/core/SkTypes.h +193 -0
- package/shared/skia/include/core/SkUnPreMultiply.h +55 -0
- package/shared/skia/include/core/SkVertices.h +136 -0
- package/shared/skia/include/core/SkYUVAInfo.h +311 -0
- package/shared/skia/include/core/SkYUVAPixmaps.h +335 -0
- package/shared/skia/include/docs/SkMultiPictureDocument.h +53 -0
- package/shared/skia/include/docs/SkPDFDocument.h +277 -0
- package/shared/skia/include/docs/SkPDFJpegHelpers.h +41 -0
- package/shared/skia/include/docs/SkXPSDocument.h +43 -0
- package/shared/skia/include/effects/Sk1DPathEffect.h +40 -0
- package/shared/skia/include/effects/Sk2DPathEffect.h +33 -0
- package/shared/skia/include/effects/SkBlenders.h +27 -0
- package/shared/skia/include/effects/SkBlurMaskFilter.h +35 -0
- package/shared/skia/include/effects/SkColorMatrix.h +57 -0
- package/shared/skia/include/effects/SkColorMatrixFilter.h +22 -0
- package/shared/skia/include/effects/SkCornerPathEffect.h +32 -0
- package/shared/skia/include/effects/SkDashPathEffect.h +43 -0
- package/shared/skia/include/effects/SkDiscretePathEffect.h +37 -0
- package/shared/skia/include/effects/SkGradient.h +206 -0
- package/shared/skia/include/effects/SkHighContrastFilter.h +84 -0
- package/shared/skia/include/effects/SkImageFilters.h +641 -0
- package/shared/skia/include/effects/SkLumaColorFilter.h +37 -0
- package/shared/skia/include/effects/SkOverdrawColorFilter.h +33 -0
- package/shared/skia/include/effects/SkPerlinNoiseShader.h +53 -0
- package/shared/skia/include/effects/SkRuntimeEffect.h +503 -0
- package/shared/skia/include/effects/SkShaderMaskFilter.h +28 -0
- package/shared/skia/include/effects/SkTableMaskFilter.h +47 -0
- package/shared/skia/include/effects/SkTrimPathEffect.h +45 -0
- package/shared/skia/include/encode/SkEncoder.h +63 -0
- package/shared/skia/include/encode/SkICC.h +36 -0
- package/shared/skia/include/encode/SkJpegEncoder.h +127 -0
- package/shared/skia/include/encode/SkPngEncoder.h +132 -0
- package/shared/skia/include/encode/SkPngRustEncoder.h +121 -0
- package/shared/skia/include/encode/SkWebpEncoder.h +87 -0
- package/shared/skia/include/gpu/GpuTypes.h +98 -0
- package/shared/skia/include/gpu/MutableTextureState.h +68 -0
- package/shared/skia/include/gpu/ShaderErrorHandler.h +46 -0
- package/shared/skia/include/gpu/ganesh/GrBackendSemaphore.h +50 -0
- package/shared/skia/include/gpu/ganesh/GrBackendSurface.h +257 -0
- package/shared/skia/include/gpu/ganesh/GrContextOptions.h +384 -0
- package/shared/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h +175 -0
- package/shared/skia/include/gpu/ganesh/GrDirectContext.h +1027 -0
- package/shared/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h +53 -0
- package/shared/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +49 -0
- package/shared/skia/include/gpu/ganesh/GrExternalTextureGenerator.h +54 -0
- package/shared/skia/include/gpu/ganesh/GrRecordingContext.h +300 -0
- package/shared/skia/include/gpu/ganesh/GrTypes.h +193 -0
- package/shared/skia/include/gpu/ganesh/GrYUVABackendTextures.h +130 -0
- package/shared/skia/include/gpu/ganesh/SkImageGanesh.h +361 -0
- package/shared/skia/include/gpu/ganesh/SkMeshGanesh.h +57 -0
- package/shared/skia/include/gpu/ganesh/SkSurfaceGanesh.h +218 -0
- package/shared/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h +35 -0
- package/shared/skia/include/gpu/ganesh/d3d/GrD3DBackendSemaphore.h +20 -0
- package/shared/skia/include/gpu/ganesh/d3d/GrD3DBackendSurface.h +59 -0
- package/shared/skia/include/gpu/ganesh/d3d/GrD3DDirectContext.h +28 -0
- package/shared/skia/include/gpu/ganesh/d3d/GrD3DTypes.h +248 -0
- package/shared/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h +17 -0
- package/shared/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h +45 -0
- package/shared/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h +64 -0
- package/shared/skia/include/gpu/ganesh/gl/GrGLConfig.h +69 -0
- package/shared/skia/include/gpu/ganesh/gl/GrGLDirectContext.h +30 -0
- package/shared/skia/include/gpu/ganesh/gl/GrGLExtensions.h +79 -0
- package/shared/skia/include/gpu/ganesh/gl/GrGLFunctions.h +313 -0
- package/shared/skia/include/gpu/ganesh/gl/GrGLInterface.h +337 -0
- package/shared/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h +19 -0
- package/shared/skia/include/gpu/ganesh/gl/GrGLTypes.h +219 -0
- package/shared/skia/include/gpu/ganesh/gl/egl/GrGLMakeEGLInterface.h +23 -0
- package/shared/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h +20 -0
- package/shared/skia/include/gpu/ganesh/gl/glx/GrGLMakeGLXInterface.h +23 -0
- package/shared/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h +20 -0
- package/shared/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h +20 -0
- package/shared/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h +20 -0
- package/shared/skia/include/gpu/ganesh/mock/GrMockBackendSurface.h +59 -0
- package/shared/skia/include/gpu/ganesh/mock/GrMockTypes.h +166 -0
- package/shared/skia/include/gpu/ganesh/mtl/GrMtlBackendContext.h +21 -0
- package/shared/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h +23 -0
- package/shared/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h +44 -0
- package/shared/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h +30 -0
- package/shared/skia/include/gpu/ganesh/mtl/GrMtlTypes.h +61 -0
- package/shared/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h +73 -0
- package/shared/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h +44 -0
- package/shared/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +20 -0
- package/shared/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h +71 -0
- package/shared/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +33 -0
- package/shared/skia/include/gpu/ganesh/vk/GrVkTypes.h +101 -0
- package/shared/skia/include/gpu/graphite/BackendSemaphore.h +60 -0
- package/shared/skia/include/gpu/graphite/BackendTexture.h +65 -0
- package/shared/skia/include/gpu/graphite/Context.h +440 -0
- package/shared/skia/include/gpu/graphite/ContextOptions.h +239 -0
- package/shared/skia/include/gpu/graphite/GraphiteTypes.h +315 -0
- package/shared/skia/include/gpu/graphite/Image.h +428 -0
- package/shared/skia/include/gpu/graphite/ImageProvider.h +68 -0
- package/shared/skia/include/gpu/graphite/PersistentPipelineStorage.h +45 -0
- package/shared/skia/include/gpu/graphite/PrecompileContext.h +109 -0
- package/shared/skia/include/gpu/graphite/Recorder.h +355 -0
- package/shared/skia/include/gpu/graphite/Recording.h +100 -0
- package/shared/skia/include/gpu/graphite/Surface.h +121 -0
- package/shared/skia/include/gpu/graphite/TextureInfo.h +133 -0
- package/shared/skia/include/gpu/graphite/YUVABackendTextures.h +148 -0
- package/shared/skia/include/gpu/graphite/dawn/DawnBackendContext.h +77 -0
- package/shared/skia/include/gpu/graphite/dawn/DawnGraphiteTypes.h +163 -0
- package/shared/skia/include/gpu/graphite/dawn/DawnTypes.h +9 -0
- package/shared/skia/include/gpu/graphite/dawn/DawnUtils.h +9 -0
- package/shared/skia/include/gpu/graphite/mtl/MtlBackendContext.h +34 -0
- package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +73 -0
- package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteTypesUtils.h +10 -0
- package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteTypes_cpp.h +50 -0
- package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteUtils.h +9 -0
- package/shared/skia/include/gpu/graphite/precompile/PaintOptions.h +211 -0
- package/shared/skia/include/gpu/graphite/precompile/Precompile.h +59 -0
- package/shared/skia/include/gpu/graphite/precompile/PrecompileBase.h +76 -0
- package/shared/skia/include/gpu/graphite/precompile/PrecompileBlender.h +56 -0
- package/shared/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h +95 -0
- package/shared/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h +116 -0
- package/shared/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h +49 -0
- package/shared/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h +47 -0
- package/shared/skia/include/gpu/graphite/precompile/PrecompileShader.h +268 -0
- package/shared/skia/include/gpu/graphite/vk/VulkanGraphiteContext.h +31 -0
- package/shared/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +104 -0
- package/shared/skia/include/gpu/graphite/vk/precompile/VulkanPrecompileShader.h +39 -0
- package/shared/skia/include/gpu/mtl/MtlMemoryAllocator.h +41 -0
- package/shared/skia/include/gpu/vk/VulkanBackendContext.h +57 -0
- package/shared/skia/include/gpu/vk/VulkanExtensions.h +73 -0
- package/shared/skia/include/gpu/vk/VulkanMemoryAllocator.h +117 -0
- package/shared/skia/include/gpu/vk/VulkanMutableTextureState.h +26 -0
- package/shared/skia/include/gpu/vk/VulkanPreferredFeatures.h +225 -0
- package/shared/skia/include/gpu/vk/VulkanTypes.h +245 -0
- package/shared/skia/include/pathops/SkPathOps.h +150 -0
- package/shared/skia/include/ports/SkCFObject.h +180 -0
- package/shared/skia/include/ports/SkFontConfigInterface.h +112 -0
- package/shared/skia/include/ports/SkFontMgr_FontConfigInterface.h +24 -0
- package/shared/skia/include/ports/SkFontMgr_Fontations.h +20 -0
- package/shared/skia/include/ports/SkFontMgr_android.h +48 -0
- package/shared/skia/include/ports/SkFontMgr_android_ndk.h +27 -0
- package/shared/skia/include/ports/SkFontMgr_data.h +22 -0
- package/shared/skia/include/ports/SkFontMgr_directory.h +21 -0
- package/shared/skia/include/ports/SkFontMgr_empty.h +21 -0
- package/shared/skia/include/ports/SkFontMgr_fontconfig.h +24 -0
- package/shared/skia/include/ports/SkFontMgr_fuchsia.h +21 -0
- package/shared/skia/include/ports/SkFontMgr_mac_ct.h +27 -0
- package/shared/skia/include/ports/SkFontScanner_Fontations.h +15 -0
- package/shared/skia/include/ports/SkFontScanner_FreeType.h +15 -0
- package/shared/skia/include/ports/SkImageGeneratorCG.h +28 -0
- package/shared/skia/include/ports/SkImageGeneratorNDK.h +40 -0
- package/shared/skia/include/ports/SkImageGeneratorWIC.h +41 -0
- package/shared/skia/include/ports/SkTypeface_fontations.h +24 -0
- package/shared/skia/include/ports/SkTypeface_mac.h +44 -0
- package/shared/skia/include/ports/SkTypeface_win.h +63 -0
- package/shared/skia/include/private/SingleOwner.h +75 -0
- package/shared/skia/include/private/SkAPI.h +52 -0
- package/shared/skia/include/private/SkASAN.h +56 -0
- package/shared/skia/include/private/SkAlign.h +51 -0
- package/shared/skia/include/private/SkAlignedStorage.h +32 -0
- package/shared/skia/include/private/SkAnySubclass.h +79 -0
- package/shared/skia/include/private/SkAssert.h +203 -0
- package/shared/skia/include/private/SkAttributes.h +96 -0
- package/shared/skia/include/private/SkCPUTypes.h +25 -0
- package/shared/skia/include/private/SkContainers.h +54 -0
- package/shared/skia/include/private/SkDebug.h +27 -0
- package/shared/skia/include/private/SkDeque.h +138 -0
- package/shared/skia/include/private/SkEncodedInfo.h +249 -0
- package/shared/skia/include/private/SkEnumBitMask.h +92 -0
- package/shared/skia/include/private/SkExif.h +69 -0
- package/shared/skia/include/private/SkFeatures.h +173 -0
- package/shared/skia/include/private/SkFixed.h +143 -0
- package/shared/skia/include/private/SkFloatingPoint.h +183 -0
- package/shared/skia/include/private/SkGainmapInfo.h +140 -0
- package/shared/skia/include/private/SkGainmapShader.h +60 -0
- package/shared/skia/include/private/SkHdrMetadata.h +357 -0
- package/shared/skia/include/private/SkIDChangeListener.h +76 -0
- package/shared/skia/include/private/SkJpegGainmapEncoder.h +48 -0
- package/shared/skia/include/private/SkJpegMetadataDecoder.h +103 -0
- package/shared/skia/include/private/SkLoadUserConfig.h +64 -0
- package/shared/skia/include/private/SkLog.h +62 -0
- package/shared/skia/include/private/SkLogPriority.h +34 -0
- package/shared/skia/include/private/SkMacros.h +170 -0
- package/shared/skia/include/private/SkMalloc.h +152 -0
- package/shared/skia/include/private/SkMath.h +77 -0
- package/shared/skia/include/private/SkMutex.h +72 -0
- package/shared/skia/include/private/SkNoncopyable.h +30 -0
- package/shared/skia/include/private/SkOnce.h +55 -0
- package/shared/skia/include/private/SkPathRef.h +90 -0
- package/shared/skia/include/private/SkPixelStorage.h +52 -0
- package/shared/skia/include/private/SkSLSampleUsage.h +85 -0
- package/shared/skia/include/private/SkSafe32.h +49 -0
- package/shared/skia/include/private/SkSemaphore.h +84 -0
- package/shared/skia/include/private/SkTArray.h +823 -0
- package/shared/skia/include/private/SkTDArray.h +247 -0
- package/shared/skia/include/private/SkTFitsIn.h +92 -0
- package/shared/skia/include/private/SkTLogic.h +56 -0
- package/shared/skia/include/private/SkTPin.h +23 -0
- package/shared/skia/include/private/SkTemplates.h +500 -0
- package/shared/skia/include/private/SkThreadAnnotations.h +104 -0
- package/shared/skia/include/private/SkThreadID.h +23 -0
- package/shared/skia/include/private/SkTo.h +39 -0
- package/shared/skia/include/private/SkTypeTraits.h +53 -0
- package/shared/skia/include/private/SkWeakRefCnt.h +173 -0
- package/shared/skia/include/private/SkXmp.h +62 -0
- package/shared/skia/include/private/chromium/GrDeferredDisplayList.h +120 -0
- package/shared/skia/include/private/chromium/GrDeferredDisplayListRecorder.h +62 -0
- package/shared/skia/include/private/chromium/GrPromiseImageTexture.h +43 -0
- package/shared/skia/include/private/chromium/GrSurfaceCharacterization.h +211 -0
- package/shared/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +131 -0
- package/shared/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +150 -0
- package/shared/skia/include/private/chromium/SkCodecsICCProfileChromium.h +52 -0
- package/shared/skia/include/private/chromium/SkDiscardableMemory.h +70 -0
- package/shared/skia/include/private/chromium/SkExifChromium.h +26 -0
- package/shared/skia/include/private/chromium/SkImageChromium.h +117 -0
- package/shared/skia/include/private/chromium/SkPMColor.h +38 -0
- package/shared/skia/include/private/chromium/Slug.h +72 -0
- package/shared/skia/include/private/gpu/ganesh/GrContext_Base.h +104 -0
- package/shared/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +60 -0
- package/shared/skia/include/private/gpu/ganesh/GrImageContext.h +56 -0
- package/shared/skia/include/private/gpu/ganesh/GrTextureGenerator.h +66 -0
- package/shared/skia/include/private/gpu/ganesh/GrTypesPriv.h +959 -0
- package/shared/skia/include/private/gpu/vk/SkiaVulkan.h +36 -0
- package/shared/skia/include/sksl/SkSLDebugTrace.h +25 -0
- package/shared/skia/include/sksl/SkSLVersion.h +27 -0
- package/shared/skia/include/svg/SkSVGCanvas.h +62 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_icd.h +245 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_layer.h +192 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_platform.h +84 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std.h +394 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_decode.h +109 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_encode.h +143 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h +312 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h +77 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_encode.h +147 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h +446 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h +67 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_encode.h +157 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std.h +151 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std_decode.h +68 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h +36 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan.h +103 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_android.h +159 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_beta.h +375 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_core.h +25896 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_directfb.h +59 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_fuchsia.h +282 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_ggp.h +62 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_ios.h +50 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_macos.h +50 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_metal.h +244 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_ohos.h +120 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_screen.h +114 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_vi.h +50 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_wayland.h +59 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_win32.h +372 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h +60 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_xlib.h +60 -0
- package/shared/skia/include/third_party/vulkan/vulkan/vulkan_xlib_xrandr.h +50 -0
- package/shared/skia/include/utils/SkCamera.h +109 -0
- package/shared/skia/include/utils/SkCanvasStateUtils.h +81 -0
- package/shared/skia/include/utils/SkCustomTypeface.h +70 -0
- package/shared/skia/include/utils/SkEventTracer.h +93 -0
- package/shared/skia/include/utils/SkNWayCanvas.h +123 -0
- package/shared/skia/include/utils/SkNoDrawCanvas.h +78 -0
- package/shared/skia/include/utils/SkNullCanvas.h +22 -0
- package/shared/skia/include/utils/SkOrderedFontMgr.h +66 -0
- package/shared/skia/include/utils/SkPaintFilterCanvas.h +140 -0
- package/shared/skia/include/utils/SkParse.h +36 -0
- package/shared/skia/include/utils/SkParsePath.h +33 -0
- package/shared/skia/include/utils/SkShadowUtils.h +102 -0
- package/shared/skia/include/utils/SkTextUtils.h +43 -0
- package/shared/skia/include/utils/SkTraceEventPhase.h +19 -0
- package/shared/skia/include/utils/mac/SkCGUtils.h +90 -0
- package/shared/skia/modules/jsonreader/SkJSONReader.cpp +996 -0
- package/shared/skia/modules/jsonreader/SkJSONReader.h +389 -0
- package/shared/skia/modules/skcms/skcms.h +10 -0
- package/shared/skia/modules/skcms/src/Transform_inl.h +1600 -0
- package/shared/skia/modules/skcms/src/skcms_Transform.h +167 -0
- package/shared/skia/modules/skcms/src/skcms_internals.h +157 -0
- package/shared/skia/modules/skcms/src/skcms_public.h +496 -0
- package/shared/skia/modules/skottie/include/ExternalLayer.h +56 -0
- package/shared/skia/modules/skottie/include/Skottie.h +324 -0
- package/shared/skia/modules/skottie/include/SkottieProperty.h +190 -0
- package/shared/skia/modules/skottie/include/SlotManager.h +113 -0
- package/shared/skia/modules/skottie/include/TextShaper.h +197 -0
- package/shared/skia/modules/skottie/src/SkottieValue.h +56 -0
- package/shared/skia/modules/skottie/src/animator/Animator.h +89 -0
- package/shared/skia/modules/skottie/src/text/Font.h +82 -0
- package/shared/skia/modules/skottie/src/text/TextAdapter.h +155 -0
- package/shared/skia/modules/skottie/src/text/TextAnimator.h +122 -0
- package/shared/skia/modules/skottie/src/text/TextValue.h +28 -0
- package/shared/skia/modules/skparagraph/include/DartTypes.h +153 -0
- package/shared/skia/modules/skparagraph/include/FontArguments.h +46 -0
- package/shared/skia/modules/skparagraph/include/FontCollection.h +76 -0
- package/shared/skia/modules/skparagraph/include/Metrics.h +98 -0
- package/shared/skia/modules/skparagraph/include/Paragraph.h +289 -0
- package/shared/skia/modules/skparagraph/include/ParagraphBuilder.h +94 -0
- package/shared/skia/modules/skparagraph/include/ParagraphCache.h +52 -0
- package/shared/skia/modules/skparagraph/include/ParagraphPainter.h +63 -0
- package/shared/skia/modules/skparagraph/include/ParagraphStyle.h +160 -0
- package/shared/skia/modules/skparagraph/include/TextShadow.h +30 -0
- package/shared/skia/modules/skparagraph/include/TextStyle.h +392 -0
- package/shared/skia/modules/skparagraph/include/TypefaceFontProvider.h +78 -0
- package/shared/skia/modules/skresources/include/SkResources.h +291 -0
- package/shared/skia/modules/sksg/include/SkSGClipEffect.h +61 -0
- package/shared/skia/modules/sksg/include/SkSGColorFilter.h +135 -0
- package/shared/skia/modules/sksg/include/SkSGDraw.h +57 -0
- package/shared/skia/modules/sksg/include/SkSGEffectNode.h +50 -0
- package/shared/skia/modules/sksg/include/SkSGGeometryEffect.h +207 -0
- package/shared/skia/modules/sksg/include/SkSGGeometryNode.h +54 -0
- package/shared/skia/modules/sksg/include/SkSGGradient.h +108 -0
- package/shared/skia/modules/sksg/include/SkSGGroup.h +65 -0
- package/shared/skia/modules/sksg/include/SkSGImage.h +59 -0
- package/shared/skia/modules/sksg/include/SkSGInvalidationController.h +46 -0
- package/shared/skia/modules/sksg/include/SkSGMaskEffect.h +65 -0
- package/shared/skia/modules/sksg/include/SkSGMerge.h +74 -0
- package/shared/skia/modules/sksg/include/SkSGNode.h +128 -0
- package/shared/skia/modules/sksg/include/SkSGOpacityEffect.h +54 -0
- package/shared/skia/modules/sksg/include/SkSGPaint.h +112 -0
- package/shared/skia/modules/sksg/include/SkSGPath.h +68 -0
- package/shared/skia/modules/sksg/include/SkSGPlane.h +47 -0
- package/shared/skia/modules/sksg/include/SkSGRect.h +122 -0
- package/shared/skia/modules/sksg/include/SkSGRenderEffect.h +283 -0
- package/shared/skia/modules/sksg/include/SkSGRenderNode.h +157 -0
- package/shared/skia/modules/sksg/include/SkSGScene.h +47 -0
- package/shared/skia/modules/sksg/include/SkSGText.h +82 -0
- package/shared/skia/modules/sksg/include/SkSGTransform.h +127 -0
- package/shared/skia/modules/skshaper/include/SkShaper.h +318 -0
- package/shared/skia/modules/skshaper/include/SkShaper_coretext.h +26 -0
- package/shared/skia/modules/skshaper/include/SkShaper_factory.h +41 -0
- package/shared/skia/modules/skshaper/include/SkShaper_harfbuzz.h +39 -0
- package/shared/skia/modules/skshaper/include/SkShaper_skunicode.h +28 -0
- package/shared/skia/modules/skunicode/include/SkUnicode.h +321 -0
- package/shared/skia/modules/skunicode/include/SkUnicode_icu.h +18 -0
- package/shared/skia/modules/skunicode/include/SkUnicode_libgrapheme.h +19 -0
- package/shared/skia/modules/svg/include/SkSVGAttribute.h +110 -0
- package/shared/skia/modules/svg/include/SkSVGAttributeParser.h +170 -0
- package/shared/skia/modules/svg/include/SkSVGCircle.h +56 -0
- package/shared/skia/modules/svg/include/SkSVGClipPath.h +41 -0
- package/shared/skia/modules/svg/include/SkSVGContainer.h +52 -0
- package/shared/skia/modules/svg/include/SkSVGDOM.h +111 -0
- package/shared/skia/modules/svg/include/SkSVGDefs.h +23 -0
- package/shared/skia/modules/svg/include/SkSVGEllipse.h +51 -0
- package/shared/skia/modules/svg/include/SkSVGFe.h +93 -0
- package/shared/skia/modules/svg/include/SkSVGFeBlend.h +54 -0
- package/shared/skia/modules/svg/include/SkSVGFeColorMatrix.h +55 -0
- package/shared/skia/modules/svg/include/SkSVGFeComponentTransfer.h +82 -0
- package/shared/skia/modules/svg/include/SkSVGFeComposite.h +55 -0
- package/shared/skia/modules/svg/include/SkSVGFeDisplacementMap.h +56 -0
- package/shared/skia/modules/svg/include/SkSVGFeFlood.h +42 -0
- package/shared/skia/modules/svg/include/SkSVGFeGaussianBlur.h +50 -0
- package/shared/skia/modules/svg/include/SkSVGFeImage.h +44 -0
- package/shared/skia/modules/svg/include/SkSVGFeLightSource.h +93 -0
- package/shared/skia/modules/svg/include/SkSVGFeLighting.h +131 -0
- package/shared/skia/modules/svg/include/SkSVGFeMerge.h +63 -0
- package/shared/skia/modules/svg/include/SkSVGFeMorphology.h +55 -0
- package/shared/skia/modules/svg/include/SkSVGFeOffset.h +44 -0
- package/shared/skia/modules/svg/include/SkSVGFeTurbulence.h +49 -0
- package/shared/skia/modules/svg/include/SkSVGFilter.h +48 -0
- package/shared/skia/modules/svg/include/SkSVGFilterContext.h +69 -0
- package/shared/skia/modules/svg/include/SkSVGG.h +23 -0
- package/shared/skia/modules/svg/include/SkSVGGradient.h +56 -0
- package/shared/skia/modules/svg/include/SkSVGHiddenContainer.h +23 -0
- package/shared/skia/modules/svg/include/SkSVGIDMapper.h +19 -0
- package/shared/skia/modules/svg/include/SkSVGImage.h +67 -0
- package/shared/skia/modules/svg/include/SkSVGLine.h +53 -0
- package/shared/skia/modules/svg/include/SkSVGLinearGradient.h +47 -0
- package/shared/skia/modules/svg/include/SkSVGMask.h +49 -0
- package/shared/skia/modules/svg/include/SkSVGNode.h +235 -0
- package/shared/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +37 -0
- package/shared/skia/modules/svg/include/SkSVGPath.h +46 -0
- package/shared/skia/modules/svg/include/SkSVGPattern.h +61 -0
- package/shared/skia/modules/svg/include/SkSVGPoly.h +56 -0
- package/shared/skia/modules/svg/include/SkSVGRadialGradient.h +48 -0
- package/shared/skia/modules/svg/include/SkSVGRect.h +56 -0
- package/shared/skia/modules/svg/include/SkSVGRenderContext.h +229 -0
- package/shared/skia/modules/svg/include/SkSVGSVG.h +60 -0
- package/shared/skia/modules/svg/include/SkSVGShape.h +40 -0
- package/shared/skia/modules/svg/include/SkSVGStop.h +36 -0
- package/shared/skia/modules/svg/include/SkSVGText.h +128 -0
- package/shared/skia/modules/svg/include/SkSVGTransformableNode.h +48 -0
- package/shared/skia/modules/svg/include/SkSVGTypes.h +740 -0
- package/shared/skia/modules/svg/include/SkSVGUse.h +49 -0
- package/shared/skia/modules/svg/include/SkSVGValue.h +85 -0
- package/shared/skia/src/core/SkArenaAlloc.h +371 -0
- package/shared/skia/src/core/SkAutoLocaleSetter.h +94 -0
- package/shared/skia/src/core/SkChecksum.h +118 -0
- package/shared/skia/src/core/SkLRUCache.h +143 -0
- package/shared/skia/src/core/SkMathPriv.h +225 -0
- package/shared/skia/src/core/SkTHash.h +714 -0
- package/shared/skia/src/core/SkTInternalLList.h +304 -0
- package/shared/skia/src/core/SkTLazy.h +216 -0
- package/shared/skia/src/core/SkUTF.h +102 -0
- package/shared/skia/src/gpu/ganesh/gl/GrGLDefines.h +1162 -0
- package/src/GameMethods.nitro.ts +12 -2
- package/src/GameMethods.ts +57 -2
- package/src/index.tsx +1 -1
- package/src/nativeTypes.ts +13 -0
- package/src/types.ts +7 -9
- package/android/src/main/cpp/GameLoopJNI.cpp +0 -132
- package/android/src/main/java/com/margelo/nitro/rngine/Asset.kt +0 -9
- package/android/src/main/java/com/margelo/nitro/rngine/GameAssets.kt +0 -61
- package/android/src/main/java/com/margelo/nitro/rngine/Screen.kt +0 -9
- package/android/src/main/java/com/margelo/nitro/rngine/Shape.kt +0 -26
- package/android/src/main/java/com/margelo/nitro/rngine/Snapshot.kt +0 -3
- package/android/src/main/java/com/margelo/nitro/rngine/SnapshotSerializer.kt +0 -53
- package/lib/module/GameAssets.js +0 -41
- package/lib/module/GameAssets.js.map +0 -1
- package/lib/module/GameAssets.nitro.js +0 -5
- package/lib/module/GameAssets.nitro.js.map +0 -1
- package/lib/typescript/src/GameAssets.d.ts +0 -2
- package/lib/typescript/src/GameAssets.d.ts.map +0 -1
- package/lib/typescript/src/GameAssets.nitro.d.ts +0 -12
- package/lib/typescript/src/GameAssets.nitro.d.ts.map +0 -1
- package/nitrogen/generated/android/c++/JHybridGameAssetsSpec.cpp +0 -86
- package/nitrogen/generated/android/c++/JHybridGameAssetsSpec.hpp +0 -65
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngine/HybridGameAssetsSpec.kt +0 -63
- package/nitrogen/generated/ios/c++/HybridGameAssetsSpecSwift.cpp +0 -11
- package/nitrogen/generated/ios/c++/HybridGameAssetsSpecSwift.hpp +0 -99
- package/nitrogen/generated/ios/swift/Func_void.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +0 -46
- package/nitrogen/generated/ios/swift/HybridGameAssetsSpec.swift +0 -57
- package/nitrogen/generated/ios/swift/HybridGameAssetsSpec_cxx.swift +0 -176
- package/nitrogen/generated/shared/c++/HybridGameAssetsSpec.cpp +0 -23
- package/nitrogen/generated/shared/c++/HybridGameAssetsSpec.hpp +0 -65
- package/src/GameAssets.nitro.ts +0 -14
- 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.
|
|
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
|
-
#
|
|
2
|
-
#include <string>
|
|
1
|
+
#include "ColorUtils.hpp"
|
|
3
2
|
|
|
4
|
-
namespace margelo::nitro::rngine {
|
|
5
|
-
|
|
6
|
-
|
|
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
|
|
17
|
-
expanded +=
|
|
18
|
-
expanded +=
|
|
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
|
package/shared/GameLoop.cpp
CHANGED
|
@@ -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 <
|
|
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
|
|
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
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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 =
|
|
165
|
+
_gameStats.tickRate = static_cast<double>(frameCount) / timeAccumulator;
|
|
166
|
+
_gameStats.deltaTime = timeAccumulator / static_cast<double>(frameCount);
|
|
178
167
|
|
|
179
|
-
__android_log_print(
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
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
|
|
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
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
package/shared/GameLoop.hpp
CHANGED
|
@@ -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::
|
|
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
|
-
|
|
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
|
|
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
|
package/shared/GameMethods.cpp
CHANGED
|
@@ -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::
|
|
10
|
+
void GameMethods::setWorld(const World &world) {
|
|
8
11
|
auto &instance = GameLoop::getInstance();
|
|
9
|
-
instance.
|
|
12
|
+
std::lock_guard<std::mutex> lock(instance.getWorldMutexInternal());
|
|
13
|
+
instance.getWorldInternal() = world;
|
|
10
14
|
__android_log_print(ANDROID_LOG_INFO, "GameMethods",
|
|
11
|
-
"
|
|
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
|
-
"
|
|
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
|