gdcore-tools 2.0.0-beta3 → 2.0.0-beta4
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/dist/Runtime/AsyncTasksManager.js +2 -2
- package/dist/Runtime/AsyncTasksManager.js.map +2 -2
- package/dist/Runtime/Cordova/config.xml +23 -1
- package/dist/Runtime/Cordova/www/LICENSE.GDevelop.txt +2 -0
- package/dist/Runtime/Cordova/www/index.html +1 -1
- package/dist/Runtime/CustomRuntimeObject.js +1 -1
- package/dist/Runtime/CustomRuntimeObject.js.map +2 -2
- package/dist/Runtime/CustomRuntimeObject2D.js +2 -0
- package/dist/Runtime/CustomRuntimeObject2D.js.map +7 -0
- package/dist/Runtime/CustomRuntimeObjectInstanceContainer.js +1 -1
- package/dist/Runtime/CustomRuntimeObjectInstanceContainer.js.map +2 -2
- package/dist/Runtime/Electron/LICENSE.GDevelop.txt +2 -0
- package/dist/Runtime/Electron/package.json +3 -0
- package/dist/Runtime/Extensions/3D/A_RuntimeObject3D.js +1 -1
- package/dist/Runtime/Extensions/3D/A_RuntimeObject3D.js.map +2 -2
- package/dist/Runtime/Extensions/3D/A_RuntimeObject3DRenderer.js +1 -1
- package/dist/Runtime/Extensions/3D/A_RuntimeObject3DRenderer.js.map +2 -2
- package/dist/Runtime/Extensions/3D/AmbientLight.js +1 -1
- package/dist/Runtime/Extensions/3D/AmbientLight.js.map +2 -2
- package/dist/Runtime/Extensions/3D/Base3DBehavior.js +1 -1
- package/dist/Runtime/Extensions/3D/Base3DBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/3D/BloomEffect.js +1 -1
- package/dist/Runtime/Extensions/3D/BloomEffect.js.map +2 -2
- package/dist/Runtime/Extensions/3D/BrightnessAndContrastEffect.js +1 -1
- package/dist/Runtime/Extensions/3D/BrightnessAndContrastEffect.js.map +2 -2
- package/dist/Runtime/Extensions/3D/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/3D/Cube3DRuntimeObject.js +1 -1
- package/dist/Runtime/Extensions/3D/Cube3DRuntimeObject.js.map +2 -2
- package/dist/Runtime/Extensions/3D/CustomRuntimeObject3D.js +2 -0
- package/dist/Runtime/Extensions/3D/CustomRuntimeObject3D.js.map +7 -0
- package/dist/Runtime/Extensions/3D/CustomRuntimeObject3DRenderer.js +2 -0
- package/dist/Runtime/Extensions/3D/CustomRuntimeObject3DRenderer.js.map +7 -0
- package/dist/Runtime/Extensions/3D/DirectionalLight.js +1 -1
- package/dist/Runtime/Extensions/3D/DirectionalLight.js.map +2 -2
- package/dist/Runtime/Extensions/3D/ExponentialFog.js +1 -1
- package/dist/Runtime/Extensions/3D/ExponentialFog.js.map +2 -2
- package/dist/Runtime/Extensions/3D/ExposureEffect.js +1 -1
- package/dist/Runtime/Extensions/3D/ExposureEffect.js.map +2 -2
- package/dist/Runtime/Extensions/3D/HemisphereLight.js +1 -1
- package/dist/Runtime/Extensions/3D/HemisphereLight.js.map +2 -2
- package/dist/Runtime/Extensions/3D/HueAndSaturationEffect.js +1 -1
- package/dist/Runtime/Extensions/3D/HueAndSaturationEffect.js.map +2 -2
- package/dist/Runtime/Extensions/3D/JsExtension.js +56 -24
- package/dist/Runtime/Extensions/3D/LinearFog.js +1 -1
- package/dist/Runtime/Extensions/3D/LinearFog.js.map +2 -2
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js +1 -1
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js.map +2 -2
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js +1 -1
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js.map +2 -2
- package/dist/Runtime/Extensions/AdMob/JsExtension.js +11 -10
- package/dist/Runtime/Extensions/AdMob/admobtools.js +1 -1
- package/dist/Runtime/Extensions/AdMob/admobtools.js.map +2 -2
- package/dist/Runtime/Extensions/AnchorBehavior/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/BBText/JsExtension.js +20 -11
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/BitmapText/JsExtension.js +2 -8
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/CMakeLists.txt +35 -0
- package/dist/Runtime/Extensions/CMakeUtils.txt +81 -0
- package/dist/Runtime/Extensions/DestroyOutsideBehavior/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/DestroyOutsideBehavior/destroyoutsideruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/DialogueTree/bondage.js/version.txt +5 -0
- package/dist/Runtime/Extensions/DraggableBehavior/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/Effects/adjustment-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/adjustment-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/advanced-bloom-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/advanced-bloom-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/ascii-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/ascii-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/bevel-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/bevel-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/black-and-white-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/black-and-white-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/blending-mode-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/blending-mode-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/blur-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/blur-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/brightness-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/brightness-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/bulge-pinch-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/bulge-pinch-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/color-map-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/color-map-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/color-replace-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/color-replace-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/crt-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/crt-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/displacement-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/displacement-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/dot-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/dot-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/drop-shadow-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/drop-shadow-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/glitch-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/glitch-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/glow-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/glow-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/godray-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/godray-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/hsl-adjustment-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/hsl-adjustment-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/kawase-blur-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/kawase-blur-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/light-night-pixi-filter.js +2 -2
- package/dist/Runtime/Extensions/Effects/light-night-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/motion-blur-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/motion-blur-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/night-pixi-filter.js +2 -2
- package/dist/Runtime/Extensions/Effects/night-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/noise-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/noise-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/old-film-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/old-film-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/outline-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/outline-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/pixelate-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/pixelate-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/radial-blur-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/radial-blur-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/reflection-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/reflection-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/rgb-split-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/rgb-split-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/sepia-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/sepia-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/shockwave-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/shockwave-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/tilt-shift-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/tilt-shift-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/twist-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/twist-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/Effects/zoom-blur-pixi-filter.js +1 -1
- package/dist/Runtime/Extensions/Effects/zoom-blur-pixi-filter.js.map +2 -2
- package/dist/Runtime/Extensions/ExampleJsExtension/JsExtension.js +2 -11
- package/dist/Runtime/Extensions/ExampleJsExtension/dummyeffect.js +1 -1
- package/dist/Runtime/Extensions/ExampleJsExtension/dummyeffect.js.map +2 -2
- package/dist/Runtime/Extensions/FileSystem/JsExtension.js +22 -0
- package/dist/Runtime/Extensions/FileSystem/filesystemtools.js +1 -1
- package/dist/Runtime/Extensions/FileSystem/filesystemtools.js.map +2 -2
- package/dist/Runtime/Extensions/Firebase/A_firebasejs/NOTICE.txt +6 -0
- package/dist/Runtime/Extensions/Inventory/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/JsExtensionTypes.d.ts +13 -4
- package/dist/Runtime/Extensions/Leaderboards/JsExtension.js +42 -1
- package/dist/Runtime/Extensions/Leaderboards/leaderboardstools.js +1 -1
- package/dist/Runtime/Extensions/Leaderboards/leaderboardstools.js.map +2 -2
- package/dist/Runtime/Extensions/Lighting/JsExtension.js +2 -11
- package/dist/Runtime/Extensions/Lighting/lightruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/Lighting/lightruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/LinkedObjects/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/LinkedObjects/linkedobjects.js +1 -1
- package/dist/Runtime/Extensions/LinkedObjects/linkedobjects.js.map +2 -2
- package/dist/Runtime/Extensions/Multiplayer/JsExtension.js +1130 -0
- package/dist/Runtime/Extensions/Multiplayer/messageManager.js +2 -0
- package/dist/Runtime/Extensions/Multiplayer/messageManager.js.map +7 -0
- package/dist/Runtime/Extensions/Multiplayer/multiplayerVariablesManager.js +2 -0
- package/dist/Runtime/Extensions/Multiplayer/multiplayerVariablesManager.js.map +7 -0
- package/dist/Runtime/Extensions/Multiplayer/multiplayercomponents.js +2 -0
- package/dist/Runtime/Extensions/Multiplayer/multiplayercomponents.js.map +7 -0
- package/dist/Runtime/Extensions/Multiplayer/multiplayerobjectruntimebehavior.js +2 -0
- package/dist/Runtime/Extensions/Multiplayer/multiplayerobjectruntimebehavior.js.map +7 -0
- package/dist/Runtime/Extensions/Multiplayer/multiplayertools.js +2 -0
- package/dist/Runtime/Extensions/Multiplayer/multiplayertools.js.map +7 -0
- package/dist/Runtime/Extensions/Multiplayer/peer.js +10 -0
- package/dist/Runtime/Extensions/Multiplayer/peer.js.map +1 -0
- package/dist/Runtime/Extensions/Multiplayer/peerJsHelper.js +2 -0
- package/dist/Runtime/Extensions/Multiplayer/peerJsHelper.js.map +7 -0
- package/dist/Runtime/Extensions/Multiplayer/peerjs.d.ts +509 -0
- package/dist/Runtime/Extensions/P2P/A_peer.js +8 -2
- package/dist/Runtime/Extensions/P2P/A_peer.js.map +1 -1
- package/dist/Runtime/Extensions/P2P/B_p2ptools.js +1 -1
- package/dist/Runtime/Extensions/P2P/B_p2ptools.js.map +2 -2
- package/dist/Runtime/Extensions/P2P/JsExtension.js +27 -0
- package/dist/Runtime/Extensions/PanelSpriteObject/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/ParticleSystem/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject.js +1 -1
- package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject.js.map +2 -2
- package/dist/Runtime/Extensions/PathfindingBehavior/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics2Behavior/JsExtension.js +47 -4
- package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PhysicsBehavior/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/PlatformBehavior/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/PlatformBehavior/platformerobjectruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/PlatformBehavior/platformerobjectruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PlatformBehavior/platformruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/PlatformBehavior/platformruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PlayerAuthentication/JsExtension.js +6 -3
- package/dist/Runtime/Extensions/PlayerAuthentication/playerauthenticationcomponents.js +4 -4
- package/dist/Runtime/Extensions/PlayerAuthentication/playerauthenticationcomponents.js.map +2 -2
- package/dist/Runtime/Extensions/PlayerAuthentication/playerauthenticationtools.js +1 -1
- package/dist/Runtime/Extensions/PlayerAuthentication/playerauthenticationtools.js.map +2 -2
- package/dist/Runtime/Extensions/PrimitiveDrawing/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/Shopify/CMakeLists.txt +26 -0
- package/dist/Runtime/Extensions/Spine/CMakeLists.txt +20 -0
- package/dist/Runtime/Extensions/Spine/JsExtension.js +11 -2
- package/dist/Runtime/Extensions/Spine/managers/pixi-spine-atlas-manager.js +1 -1
- package/dist/Runtime/Extensions/Spine/managers/pixi-spine-atlas-manager.js.map +2 -2
- package/dist/Runtime/Extensions/Spine/managers/pixi-spine-manager.js +1 -1
- package/dist/Runtime/Extensions/Spine/managers/pixi-spine-manager.js.map +2 -2
- package/dist/Runtime/Extensions/Spine/pixi-spine/Spine-Runtimes-License-Agreement.txt +11 -0
- package/dist/Runtime/Extensions/Spine/pixi-spine/pixi-spine.js +5 -3
- package/dist/Runtime/Extensions/Spine/spineruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/Spine/spineruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/SystemInfo/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/TextEntryObject/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/TextInput/JsExtension.js +3 -10
- package/dist/Runtime/Extensions/TextInput/textinputruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/TextInput/textinputruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/TextInput/textinputruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TextInput/textinputruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TextObject/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/TextObject/textruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TextObject/textruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/JsExtension.js +834 -23
- package/dist/Runtime/Extensions/TileMap/TileMapRuntimeManager.js +1 -1
- package/dist/Runtime/Extensions/TileMap/TileMapRuntimeManager.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/collision/TransformedTileMap.js +1 -1
- package/dist/Runtime/Extensions/TileMap/collision/TransformedTileMap.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/helper/TileMapHelper.d.ts +2 -0
- package/dist/Runtime/Extensions/TileMap/helper/TileMapHelper.js +1 -1
- package/dist/Runtime/Extensions/TileMap/helper/TileMapHelper.js.map +1 -1
- package/dist/Runtime/Extensions/TileMap/helper/dts/model/CommonTypes.d.ts +12 -0
- package/dist/Runtime/Extensions/TileMap/helper/dts/model/CommonTypes.d.ts.map +1 -1
- package/dist/Runtime/Extensions/TileMap/helper/dts/model/TileMapModel.d.ts +119 -5
- package/dist/Runtime/Extensions/TileMap/helper/dts/model/TileMapModel.d.ts.map +1 -1
- package/dist/Runtime/Extensions/TileMap/helper/dts/render/TileMapManager.d.ts +25 -0
- package/dist/Runtime/Extensions/TileMap/helper/dts/render/TileMapManager.d.ts.map +1 -1
- package/dist/Runtime/Extensions/TileMap/helper/dts/render/TileMapPixiHelper.d.ts +16 -1
- package/dist/Runtime/Extensions/TileMap/helper/dts/render/TileMapPixiHelper.d.ts.map +1 -1
- package/dist/Runtime/Extensions/TileMap/simpletilemapruntimeobject.js +2 -0
- package/dist/Runtime/Extensions/TileMap/simpletilemapruntimeobject.js.map +7 -0
- package/dist/Runtime/Extensions/TileMap/tilemapcollisionmaskruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TileMap/tilemapcollisionmaskruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TiledSpriteObject/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TopDownMovementBehavior/CMakeLists.txt +23 -0
- package/dist/Runtime/Extensions/TopDownMovementBehavior/topdownmovementruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/TopDownMovementBehavior/topdownmovementruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/TweenBehavior/JsExtension.js +2 -2
- package/dist/Runtime/Extensions/TweenBehavior/tweenruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/TweenBehavior/tweenruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Video/JsExtension.js +2 -11
- package/dist/Runtime/Extensions/Video/videoruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/Video/videoruntimeobject.js.map +2 -2
- package/dist/Runtime/RuntimeInstanceContainer.js +1 -1
- package/dist/Runtime/RuntimeInstanceContainer.js.map +2 -2
- package/dist/Runtime/SpriteAnimator.js +2 -0
- package/dist/Runtime/SpriteAnimator.js.map +7 -0
- package/dist/Runtime/debugger-client/hot-reloader.js +1 -1
- package/dist/Runtime/debugger-client/hot-reloader.js.map +2 -2
- package/dist/Runtime/events-tools/objecttools.js +1 -1
- package/dist/Runtime/events-tools/objecttools.js.map +2 -2
- package/dist/Runtime/events-tools/runtimescenetools.js +1 -1
- package/dist/Runtime/events-tools/runtimescenetools.js.map +2 -2
- package/dist/Runtime/force.js +1 -1
- package/dist/Runtime/force.js.map +2 -2
- package/dist/Runtime/object-capabilities/TextContainerBehavior.js.map +1 -1
- package/dist/Runtime/pixi-renderers/CustomRuntimeObject2DPixiRenderer.js +2 -0
- package/dist/Runtime/pixi-renderers/CustomRuntimeObject2DPixiRenderer.js.map +7 -0
- package/dist/Runtime/pixi-renderers/DebuggerPixiRenderer.js +1 -1
- package/dist/Runtime/pixi-renderers/DebuggerPixiRenderer.js.map +2 -2
- package/dist/Runtime/pixi-renderers/layer-pixi-renderer.js +2 -2
- package/dist/Runtime/pixi-renderers/layer-pixi-renderer.js.map +2 -2
- package/dist/Runtime/pixi-renderers/pixi-filters-tools.js +1 -1
- package/dist/Runtime/pixi-renderers/pixi-filters-tools.js.map +2 -2
- package/dist/Runtime/pixi-renderers/pixi-image-manager.js.map +2 -2
- package/dist/Runtime/pixi-renderers/runtimegame-pixi-renderer.js +1 -1
- package/dist/Runtime/pixi-renderers/runtimegame-pixi-renderer.js.map +2 -2
- package/dist/Runtime/pixi-renderers/spriteruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/pixi-renderers/spriteruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/polygon.js +1 -1
- package/dist/Runtime/polygon.js.map +2 -2
- package/dist/Runtime/runtimebehavior.js +1 -1
- package/dist/Runtime/runtimebehavior.js.map +2 -2
- package/dist/Runtime/runtimegame.js +1 -1
- package/dist/Runtime/runtimegame.js.map +2 -2
- package/dist/Runtime/runtimeobject.js +1 -1
- package/dist/Runtime/runtimeobject.js.map +2 -2
- package/dist/Runtime/runtimescene.js +1 -1
- package/dist/Runtime/runtimescene.js.map +2 -2
- package/dist/Runtime/scenestack.js +1 -1
- package/dist/Runtime/scenestack.js.map +2 -2
- package/dist/Runtime/spriteruntimeobject.js +1 -1
- package/dist/Runtime/spriteruntimeobject.js.map +2 -2
- package/dist/Runtime/timer.js +1 -1
- package/dist/Runtime/timer.js.map +2 -2
- package/dist/Runtime/types/project-data.d.ts +115 -0
- package/dist/Runtime/variable.js +1 -1
- package/dist/Runtime/variable.js.map +2 -2
- package/dist/Runtime/variablescontainer.js +1 -1
- package/dist/Runtime/variablescontainer.js.map +2 -2
- package/dist/lib/libGD.cjs +2 -1
- package/dist/lib/libGD.d.cts +5 -0
- package/dist/lib/libGD.wasm +0 -0
- package/dist/loaders.cjs +2 -1
- package/dist/loaders.d.cts +2 -0
- package/gd.d.ts +217 -223
- package/package.json +8 -6
- package/src/index.js +2 -0
- package/types/index.d.ts +2 -2
- package/types/open_project.d.ts +4 -4
- package/dist/Runtime/Extensions/Spine/pixi-spine/pixi-spine.js.map +0 -7
- package/dist/Runtime/pixi-renderers/CustomObjectPixiRenderer.js +0 -2
- package/dist/Runtime/pixi-renderers/CustomObjectPixiRenderer.js.map +0 -7
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(d){let
|
|
1
|
+
var gdjs;(function(d){let S;(function(E){let y;(function(n){const C=e=>typeof e=="object"&&e!==null&&typeof e.eventName=="string"&&typeof e.data=="string";class P{constructor(t,o){this.data="";this.sender="";this.data=t,this.sender=o}}n.EventData=P;class N{constructor(){this.data=[];this.dataloss=!1}isTriggered(){return this.data.length>0}pushData(t){this.dataloss&&this.data.length>0?this.data[0]=t:this.data.push(t)}popData(){this.data.shift()}getData(){return this.data.length===0?"":this.data[0].data}getSender(){return this.data.length===0?"":this.data[0].sender}}n.Event=N;let u=null,s={debug:1},r=null;const a=new Map,f=new Map;let b=!1,v=!1,m="";const i=[],c=[],h=()=>{r===null&&(u!==null?r=new Peer(u,s):r=new Peer(s),r.on("open",()=>{b=!0}),r.on("error",e=>{v=!0,m=e.message}),r.on("connection",e=>{e.on("open",()=>{D(e),c.push(e.peer)})}),r.on("close",()=>{r=null,h()}),r.on("disconnected",r.reconnect))},D=e=>{a.set(e.peer,e),e.on("data",t=>{C(t)&&n.getEvent(t.eventName).pushData(new P(t.data,e.peer))}),e.on("error",()=>{x(e.peer)}),e.on("close",()=>{x(e.peer)}),function t(){e.peerConnection&&(e.peerConnection.connectionState==="failed"||e.peerConnection.connectionState==="disconnected"||e.peerConnection.connectionState==="closed")?x(e.peer):setTimeout(t,1e3)}()},x=e=>{!a.has(e)||(i.push(e),a.delete(e))};n.getEvent=e=>{let t=f.get(e);return t||f.set(e,t=new N),t},n.connect=e=>{if(r===null)return;const t=r.connect(e);t.on("open",()=>{D(t)})},n.disconnectFromPeer=e=>{const t=a.get(e);t&&t.close()},n.disconnectFromAllPeers=()=>{for(const e of a.values())e.close()},n.disconnectFromAll=()=>{r&&(r.destroy(),r=null)},n.disconnectFromBroker=()=>{r&&(r.disconnect(),r=null)},n.onEvent=(e,t)=>{const o=n.getEvent(e);return o.dataloss=t,o.isTriggered()},n.sendDataTo=(e,t,o)=>{const l=a.get(e);l&&l.send({eventName:t,data:o})},n.sendDataToAll=(e,t)=>{for(const o of a.values())o.send({eventName:e,data:t})},n.sendVariableTo=(e,t,o)=>{n.sendDataTo(e,t,JSON.stringify(o.toJSObject()))},n.sendVariableToAll=(e,t)=>{n.sendDataToAll(e,JSON.stringify(t.toJSObject()))},n.getEventData=e=>n.getEvent(e).getData(),n.getEventSender=e=>n.getEvent(e).getSender(),n.getEventVariable=(e,t)=>{t.fromJSON(n.getEventData(e))},n.useCustomBrokerServer=(e,t,o,l,I)=>{Object.assign(s,{host:e,port:t,path:o,secure:I,key:l.length===0?"peerjs":l}),h()},n.useDefaultBrokerServer=h,n.useCustomICECandidate=(e,t,o)=>{s.config=s.config||{},s.config.iceServers=s.config.iceServers||[],s.config.iceServers.push({urls:e,username:t,credential:o})},n.forceUseRelayServer=e=>{s.config=s.config||{},s.config.iceTransportPolicy=e?"relay":"all"},n.overrideId=e=>{u=e},n.getCurrentId=()=>r==null?"":r.id||"",n.isReady=()=>b,n.onError=()=>{const e=v;return v=!1,e},n.getLastError=()=>m,n.onDisconnect=()=>i.length>0,n.getDisconnectedPeer=()=>i[0]||"",n.onConnection=()=>c.length>0,n.getConnectedPeer=()=>c[0]||"",n.getConnectionInstance=e=>a.get(e),d.callbacksRuntimeScenePostEvents.push(()=>{for(const e of f.values())e.popData();i.length>0&&i.shift(),c.length>0&&c.shift()})})(y=E.p2p||(E.p2p={}))})(S=d.evtTools||(d.evtTools={}))})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=B_p2ptools.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/P2P/B_p2ptools.ts"],
|
|
4
|
-
"sourcesContent": ["/// <reference path=\"peerjs.d.ts\" />\nnamespace gdjs {\n export namespace evtTools {\n /**\n * Tools for p2p multiplayer.\n * @namespace\n */\n export namespace p2p {\n /**\n * The type of the data that is sent across peerjs.\n */\n type NetworkEvent = {\n eventName: string;\n data: string;\n };\n\n const isValidNetworkEvent = (event: unknown): event is NetworkEvent =>\n typeof event === 'object' &&\n event !== null &&\n typeof event['eventName'] === 'string' &&\n typeof event['data'] === 'string';\n\n /**\n * The data bound to an event that got triggered.\n */\n class EventData {\n constructor(data: string, sender: string) {\n this.data = data;\n this.sender = sender;\n }\n\n /**\n * The data sent alongside the event.\n */\n public readonly data: string = '';\n\n /**\n * The ID of the sender of the event.\n */\n public readonly sender: string = '';\n }\n\n /**\n * An event that can be listened to.\n */\n class Event {\n private readonly data: EventData[] = [];\n public dataloss = false;\n\n /**\n * Returns true if the event is triggered.\n */\n isTriggered() {\n return this.data.length > 0;\n }\n\n /**\n * Add new data, to be called with the event data each time the event is triggered.\n */\n pushData(newData: EventData) {\n if (this.dataloss && this.data.length > 0) this.data[0] = newData;\n else this.data.push(newData);\n }\n\n /**\n * Deleted the last event data, to be called when it is sure the event was processed thoroughly.\n */\n popData() {\n this.data.shift();\n }\n\n /**\n * Get the data sent with the last event triggering.\n */\n getData() {\n return this.data.length === 0 ? '' : this.data[0].data;\n }\n\n /**\n * Get the sender of the last event triggering.\n */\n getSender() {\n return this.data.length === 0 ? '' : this.data[0].sender;\n }\n }\n\n /**\n * The optional peer ID. Only used if explicitly overridden.\n */\n let peerId: string | null = null;\n\n /**\n * The peer to peer configuration.\n */\n let peerConfig: Peer.PeerJSOption = { debug: 1 };\n\n /**\n * The p2p client.\n */\n let peer: Peer<NetworkEvent> | null = null;\n\n /**\n * All connected p2p clients, keyed by their ID.\n */\n const connections = new Map<string, Peer.DataConnection<NetworkEvent>>();\n\n /**\n * Contains a map of events triggered by other p2p clients.\n * It is keyed by the event name.\n */\n const events = new Map<string, Event>();\n\n /**\n * True if PeerJS is initialized and ready.\n */\n let ready = false;\n\n /**\n * True if an error occurred.\n */\n let error = false;\n\n /**\n * Last error's message.\n */\n let lastError = '';\n\n /**\n * List of IDs of peers that just disconnected.\n */\n const disconnectedPeers: string[] = [];\n\n /**\n * List of IDs of peers that just remotely initiated a connection.\n */\n const connectedPeers: string[] = [];\n\n /**\n * Internal function called to initialize PeerJS after it\n * has been configured.\n */\n const loadPeerJS = () => {\n if (peer !== null) return;\n if (peerId !== null) {\n peer = new Peer(peerId, peerConfig);\n } else {\n peer = new Peer(peerConfig);\n }\n peer.on('open', () => {\n ready = true;\n });\n peer.on('error', (errorMessage) => {\n error = true;\n lastError = errorMessage.message;\n });\n peer.on('connection', (connection) => {\n connection.on('open', () => {\n _onConnection(connection);\n connectedPeers.push(connection.peer);\n });\n });\n peer.on('close', () => {\n peer = null;\n loadPeerJS();\n });\n peer.on('disconnected', peer.reconnect);\n };\n\n /**\n * Internal function called when a connection with a remote peer is initiated.\n * @param connection The DataConnection of the peer\n */\n const _onConnection = (connection: Peer.DataConnection<NetworkEvent>) => {\n connections.set(connection.peer, connection);\n connection.on('data', (data) => {\n if (isValidNetworkEvent(data))\n getEvent(data.eventName).pushData(\n new EventData(data.data, connection.peer)\n );\n });\n\n // Close event is only for graceful disconnection,\n // but we want onDisconnect to trigger for any type of disconnection,\n // so we register a listener for both event types.\n connection.on('error', () => {\n _onDisconnect(connection.peer);\n });\n connection.on('close', () => {\n _onDisconnect(connection.peer);\n });\n\n // Regularly check for disconnection as the built in way is not reliable.\n (function disconnectChecker() {\n if (\n connection.peerConnection.connectionState === 'failed' ||\n connection.peerConnection.connectionState === 'disconnected' ||\n connection.peerConnection.connectionState === 'closed'\n ) {\n _onDisconnect(connection.peer);\n } else {\n setTimeout(disconnectChecker, 1000);\n }\n })();\n };\n\n /**\n * Internal function called when a remote client disconnects.\n * @param connectionID The ID of the peer that disconnected.\n */\n const _onDisconnect = (connectionID: string) => {\n if (!connections.has(connectionID)) return;\n disconnectedPeers.push(connectionID);\n connections.delete(connectionID);\n };\n\n /**\n * Get an event, and creates it if it doesn't exist.\n */\n export const getEvent = (name: string): Event => {\n let event = events.get(name);\n if (!event) events.set(name, (event = new Event()));\n return event;\n };\n\n /**\n * Connects to another p2p client.\n * @param id - The other client's ID.\n */\n export const connect = (id: string) => {\n if (peer === null) return;\n const connection = peer.connect(id);\n connection.on('open', () => {\n _onConnection(connection);\n });\n };\n\n /**\n * Disconnects from another p2p client.\n * @param id - The other client's ID.\n */\n export const disconnectFromPeer = (id: string) => {\n const connection = connections.get(id);\n if (connection) connection.close();\n };\n\n /**\n * Disconnects from all other p2p clients.\n */\n export const disconnectFromAllPeers = () => {\n for (const connection of connections.values()) connection.close();\n };\n\n /**\n * Disconnects from all peers and the broker server.\n */\n export const disconnectFromAll = () => {\n if (peer) {\n peer.destroy();\n peer = null;\n }\n };\n\n /**\n * Disconnects from the broker server, leaving the connections intact.\n */\n export const disconnectFromBroker = () => {\n if (peer) {\n peer.disconnect();\n peer = null;\n }\n };\n\n /**\n * Returns true when the event got triggered by another p2p client.\n * @param defaultDataLoss Is data loss allowed (accelerates event handling when true)?\n */\n export const onEvent = (\n eventName: string,\n defaultDataLoss: boolean\n ): boolean => {\n const event = getEvent(eventName);\n event.dataloss = defaultDataLoss;\n return event.isTriggered();\n };\n\n /**\n * Send an event to one specific connected client.\n * @param id - The ID of the client to send the event to.\n * @param eventName - The event to trigger.\n * @param [eventData] - Additional data to send with the event.\n */\n export const sendDataTo = (\n id: string,\n eventName: string,\n eventData: string\n ) => {\n const connection = connections.get(id);\n if (connection) {\n connection.send({\n eventName: eventName,\n data: eventData,\n });\n }\n };\n\n /**\n * Send an event to all connected clients.\n * @param eventName - The event to trigger.\n * @param [eventData] - Additional data to send with the event.\n */\n export const sendDataToAll = (eventName: string, eventData: string) => {\n for (const connection of connections.values())\n connection.send({\n eventName: eventName,\n data: eventData,\n });\n };\n\n /**\n * Send an event to one specific connected client.\n * @param id - The ID of the client to send the event to.\n * @param eventName - The event to trigger.\n * @param variable - Additional variable to send with the event.\n */\n export const sendVariableTo = (\n id: string,\n eventName: string,\n variable: gdjs.Variable\n ) => {\n sendDataTo(id, eventName, JSON.stringify(variable.toJSObject()));\n };\n\n /**\n * Send an event to all connected clients.\n * @param eventName - The event to trigger.\n * @param variable - Additional variable to send with the event.\n */\n export const sendVariableToAll = (\n eventName: string,\n variable: gdjs.Variable\n ) => {\n sendDataToAll(eventName, JSON.stringify(variable.toJSObject()));\n };\n\n /**\n * Get some data associated to the last trigger of an event.\n * @param eventName - The event to get data from.\n * @returns - The data as JSON.\n */\n export const getEventData = (eventName: string) =>\n getEvent(eventName).getData();\n\n /**\n * Get the id of peer that caused the last trigger of an event.\n * @param eventName - The event to get the sender from.\n */\n export const getEventSender = (eventName: string) =>\n getEvent(eventName).getSender();\n\n /**\n * Get a variable associated to the last trigger of an event.\n * @param eventName - The event to get the variable from.\n * @param variable - The variable where to store the variable content.\n */\n export const getEventVariable = (\n eventName: string,\n variable: gdjs.Variable\n ) => {\n variable.fromJSON(getEventData(eventName));\n };\n\n /**\n * Connects to a custom broker server.\n * @param host The host of the broker server.\n * @param port The port of the broker server.\n * @param path The path (part of the url after the host) to the broker server.\n * @param key Optional password to connect to the broker server.\n * @param ssl Use ssl?\n */\n export const useCustomBrokerServer = (\n host: string,\n port: number,\n path: string,\n key: string,\n ssl: boolean\n ) => {\n Object.assign(peerConfig, {\n host,\n port,\n path,\n secure: ssl,\n // All servers have \"peerjs\" as default key\n key: key.length === 0 ? 'peerjs' : key,\n });\n loadPeerJS();\n };\n\n /**\n * Use default broker server.\n * This is not recommended for published games,\n * this server should only be used for quick testing in development.\n */\n export const useDefaultBrokerServer = loadPeerJS;\n\n /**\n * Adds an ICE server candidate, and removes the default ones provided by PeerJs. Must be called before connecting to a broker.\n * @param urls The URL of the STUN/TURN server.\n * @param username An optional username to send to the server.\n * @param credential An optional password to send to the server.\n */\n export const useCustomICECandidate = (\n urls: string,\n username?: string,\n credential?: string\n ) => {\n peerConfig.config = peerConfig.config || {};\n peerConfig.config.iceServers = peerConfig.config.iceServers || [];\n peerConfig.config.iceServers.push({\n urls,\n username,\n credential,\n });\n };\n\n /**\n * Overrides the default peer ID. Must be called before connecting to a broker.\n * Overriding the ID may have unwanted consequences. Do not use this feature\n * unless you really know what you are doing.\n * @param id The peer ID to use when connecting to a broker.\n */\n export const overrideId = (id: string) => {\n peerId = id;\n };\n\n /**\n * Returns the own current peer ID.\n * @see Peer.id\n */\n export const getCurrentId = (): string => {\n if (peer == undefined) return '';\n return peer.id || '';\n };\n\n /**\n * Returns true once PeerJS finished initialization.\n * @see ready\n */\n export const isReady = () => ready;\n\n /**\n * Returns true once when there is an error.\n */\n export const onError = (): boolean => {\n const returnValue = error;\n error = false;\n return returnValue;\n };\n\n /**\n * Returns the latest error message.\n */\n export const getLastError = () => lastError;\n\n /**\n * Returns true once a peer disconnected.\n */\n export const onDisconnect = () => disconnectedPeers.length > 0;\n\n /**\n * Get the ID of the peer that triggered onDisconnect.\n */\n export const getDisconnectedPeer = () => disconnectedPeers[0] || '';\n\n /**\n * Returns true once if a remote peer just initiated a connection.\n */\n export const onConnection = () => connectedPeers.length > 0;\n\n /**\n * Get the ID of the peer that triggered onConnection.\n */\n export const getConnectedPeer = (): string => connectedPeers[0] || '';\n\n /**\n * A JavaScript-only function to get the raw P2P DataConnection.\n * This can be useful for example when you want to use a binary protocol\n * instead of GDevelop variables for high-performance networking.\n */\n export const getConnectionInstance = (peerID: string) =>\n connections.get(peerID);\n\n gdjs.callbacksRuntimeScenePostEvents.push(() => {\n for (const event of events.values()) {\n event.popData();\n }\n if (disconnectedPeers.length > 0) {\n disconnectedPeers.shift();\n }\n if (connectedPeers.length > 0) {\n connectedPeers.shift();\n }\n });\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "AACA,GAAU,MAAV,UAAU,EAAV,CACS,GAAU,GAAV,UAAU,EAAV,CAKE,GAAU,GAAV,UAAU,EAAV,CASL,KAAM,GAAsB,AAAC,GAC3B,MAAO,IAAU,UACjB,IAAU,MACV,MAAO,GAAM,WAAiB,UAC9B,MAAO,GAAM,MAAY,
|
|
4
|
+
"sourcesContent": ["/// <reference path=\"peerjs.d.ts\" />\nnamespace gdjs {\n export namespace evtTools {\n /**\n * Tools for p2p multiplayer.\n * @namespace\n */\n export namespace p2p {\n /**\n * The type of the data that is sent across peerjs.\n */\n type NetworkEvent = {\n eventName: string;\n data: string;\n };\n\n const isValidNetworkEvent = (event: unknown): event is NetworkEvent =>\n typeof event === 'object' &&\n event !== null &&\n typeof event['eventName'] === 'string' &&\n typeof event['data'] === 'string';\n\n export interface IEventData {\n readonly data: string;\n readonly sender: string;\n }\n\n /**\n * The data bound to an event that got triggered.\n */\n export class EventData implements IEventData {\n constructor(data: string, sender: string) {\n this.data = data;\n this.sender = sender;\n }\n\n /**\n * The data sent alongside the event.\n */\n public readonly data: string = '';\n\n /**\n * The ID of the sender of the event.\n */\n public readonly sender: string = '';\n }\n\n export interface IEvent {\n dataloss: boolean;\n\n isTriggered(): boolean;\n pushData(newData: IEventData): void;\n popData(): void;\n getData(): string;\n getSender(): string;\n }\n\n /**\n * An event that can be listened to.\n */\n export class Event implements IEvent {\n private readonly data: IEventData[] = [];\n public dataloss = false;\n\n /**\n * Returns true if the event is triggered.\n */\n isTriggered() {\n return this.data.length > 0;\n }\n\n /**\n * Add new data, to be called with the event data each time the event is triggered.\n */\n pushData(newData: IEventData) {\n if (this.dataloss && this.data.length > 0) this.data[0] = newData;\n else this.data.push(newData);\n }\n\n /**\n * Delete the last event data, to be called when it is sure the event was processed thoroughly.\n */\n popData() {\n this.data.shift();\n }\n\n /**\n * Get the data sent with the last event triggering.\n */\n getData() {\n return this.data.length === 0 ? '' : this.data[0].data;\n }\n\n /**\n * Get the sender of the last event triggering.\n */\n getSender() {\n return this.data.length === 0 ? '' : this.data[0].sender;\n }\n }\n\n /**\n * The optional peer ID. Only used if explicitly overridden.\n */\n let peerId: string | null = null;\n\n /**\n * The peer to peer configuration.\n */\n let peerConfig: Peer.PeerJSOption = { debug: 1 };\n\n /**\n * The p2p client.\n */\n let peer: Peer<NetworkEvent> | null = null;\n\n /**\n * All connected p2p clients, keyed by their ID.\n */\n const connections = new Map<string, Peer.DataConnection<NetworkEvent>>();\n\n /**\n * Contains a map of events triggered by other p2p clients.\n * It is keyed by the event name.\n */\n const events = new Map<string, IEvent>();\n\n /**\n * True if PeerJS is initialized and ready.\n */\n let ready = false;\n\n /**\n * True if an error occurred.\n */\n let error = false;\n\n /**\n * Last error's message.\n */\n let lastError = '';\n\n /**\n * List of IDs of peers that just disconnected.\n */\n const disconnectedPeers: string[] = [];\n\n /**\n * List of IDs of peers that just remotely initiated a connection.\n */\n const connectedPeers: string[] = [];\n\n /**\n * Internal function called to initialize PeerJS after it\n * has been configured.\n */\n const loadPeerJS = () => {\n if (peer !== null) return;\n if (peerId !== null) {\n peer = new Peer(peerId, peerConfig);\n } else {\n peer = new Peer(peerConfig);\n }\n peer.on('open', () => {\n ready = true;\n });\n peer.on('error', (errorMessage) => {\n error = true;\n lastError = errorMessage.message;\n });\n peer.on('connection', (connection) => {\n connection.on('open', () => {\n _onConnection(connection);\n connectedPeers.push(connection.peer);\n });\n });\n peer.on('close', () => {\n peer = null;\n loadPeerJS();\n });\n peer.on('disconnected', peer.reconnect);\n };\n\n /**\n * Internal function called when a connection with a remote peer is initiated.\n * @param connection The DataConnection of the peer\n */\n const _onConnection = (connection: Peer.DataConnection<NetworkEvent>) => {\n connections.set(connection.peer, connection);\n connection.on('data', (data) => {\n if (isValidNetworkEvent(data))\n getEvent(data.eventName).pushData(\n new EventData(data.data, connection.peer)\n );\n });\n\n // Close event is only for graceful disconnection,\n // but we want onDisconnect to trigger for any type of disconnection,\n // so we register a listener for both event types.\n connection.on('error', () => {\n _onDisconnect(connection.peer);\n });\n connection.on('close', () => {\n _onDisconnect(connection.peer);\n });\n\n // Regularly check for disconnection as the built in way is not reliable.\n (function disconnectChecker() {\n if (\n connection.peerConnection &&\n (connection.peerConnection.connectionState === 'failed' ||\n connection.peerConnection.connectionState === 'disconnected' ||\n connection.peerConnection.connectionState === 'closed')\n ) {\n _onDisconnect(connection.peer);\n } else {\n setTimeout(disconnectChecker, 1000);\n }\n })();\n };\n\n /**\n * Internal function called when a remote client disconnects.\n * @param connectionID The ID of the peer that disconnected.\n */\n const _onDisconnect = (connectionID: string) => {\n if (!connections.has(connectionID)) return;\n disconnectedPeers.push(connectionID);\n connections.delete(connectionID);\n };\n\n /**\n * Get an event, and creates it if it doesn't exist.\n */\n export const getEvent = (name: string): IEvent => {\n let event = events.get(name);\n if (!event) events.set(name, (event = new Event()));\n return event;\n };\n\n /**\n * Connects to another p2p client.\n * @param id - The other client's ID.\n */\n export const connect = (id: string) => {\n if (peer === null) return;\n const connection = peer.connect(id);\n connection.on('open', () => {\n _onConnection(connection);\n });\n };\n\n /**\n * Disconnects from another p2p client.\n * @param id - The other client's ID.\n */\n export const disconnectFromPeer = (id: string) => {\n const connection = connections.get(id);\n if (connection) connection.close();\n };\n\n /**\n * Disconnects from all other p2p clients.\n */\n export const disconnectFromAllPeers = () => {\n for (const connection of connections.values()) connection.close();\n };\n\n /**\n * Disconnects from all peers and the broker server.\n */\n export const disconnectFromAll = () => {\n if (peer) {\n peer.destroy();\n peer = null;\n }\n };\n\n /**\n * Disconnects from the broker server, leaving the connections intact.\n */\n export const disconnectFromBroker = () => {\n if (peer) {\n peer.disconnect();\n peer = null;\n }\n };\n\n /**\n * Returns true when the event got triggered by another p2p client.\n * @param defaultDataLoss Is data loss allowed (accelerates event handling when true)?\n */\n export const onEvent = (\n eventName: string,\n defaultDataLoss: boolean\n ): boolean => {\n const event = getEvent(eventName);\n event.dataloss = defaultDataLoss;\n return event.isTriggered();\n };\n\n /**\n * Send an event to one specific connected client.\n * @param id - The ID of the client to send the event to.\n * @param eventName - The event to trigger.\n * @param [eventData] - Additional data to send with the event.\n */\n export const sendDataTo = (\n id: string,\n eventName: string,\n eventData: string\n ) => {\n const connection = connections.get(id);\n if (connection) {\n connection.send({\n eventName: eventName,\n data: eventData,\n });\n }\n };\n\n /**\n * Send an event to all connected clients.\n * @param eventName - The event to trigger.\n * @param [eventData] - Additional data to send with the event.\n */\n export const sendDataToAll = (eventName: string, eventData: string) => {\n for (const connection of connections.values())\n connection.send({\n eventName: eventName,\n data: eventData,\n });\n };\n\n /**\n * Send an event to one specific connected client.\n * @param id - The ID of the client to send the event to.\n * @param eventName - The event to trigger.\n * @param variable - Additional variable to send with the event.\n */\n export const sendVariableTo = (\n id: string,\n eventName: string,\n variable: gdjs.Variable\n ) => {\n sendDataTo(id, eventName, JSON.stringify(variable.toJSObject()));\n };\n\n /**\n * Send an event to all connected clients.\n * @param eventName - The event to trigger.\n * @param variable - Additional variable to send with the event.\n */\n export const sendVariableToAll = (\n eventName: string,\n variable: gdjs.Variable\n ) => {\n sendDataToAll(eventName, JSON.stringify(variable.toJSObject()));\n };\n\n /**\n * Get some data associated to the last trigger of an event.\n * @param eventName - The event to get data from.\n * @returns - The data as JSON.\n */\n export const getEventData = (eventName: string) =>\n getEvent(eventName).getData();\n\n /**\n * Get the id of peer that caused the last trigger of an event.\n * @param eventName - The event to get the sender from.\n */\n export const getEventSender = (eventName: string) =>\n getEvent(eventName).getSender();\n\n /**\n * Get a variable associated to the last trigger of an event.\n * @param eventName - The event to get the variable from.\n * @param variable - The variable where to store the variable content.\n */\n export const getEventVariable = (\n eventName: string,\n variable: gdjs.Variable\n ) => {\n variable.fromJSON(getEventData(eventName));\n };\n\n /**\n * Connects to a custom broker server.\n * @param host The host of the broker server.\n * @param port The port of the broker server.\n * @param path The path (part of the url after the host) to the broker server.\n * @param key Optional password to connect to the broker server.\n * @param ssl Use ssl?\n */\n export const useCustomBrokerServer = (\n host: string,\n port: number,\n path: string,\n key: string,\n ssl: boolean\n ) => {\n Object.assign(peerConfig, {\n host,\n port,\n path,\n secure: ssl,\n // All servers have \"peerjs\" as default key\n key: key.length === 0 ? 'peerjs' : key,\n });\n loadPeerJS();\n };\n\n /**\n * Use default broker server.\n * This is not recommended for published games,\n * this server should only be used for quick testing in development.\n */\n export const useDefaultBrokerServer = loadPeerJS;\n\n /**\n * Adds an ICE server candidate, and removes the default ones provided by PeerJs. Must be called before connecting to a broker.\n * @param urls The URL of the STUN/TURN server.\n * @param username An optional username to send to the server.\n * @param credential An optional password to send to the server.\n */\n export const useCustomICECandidate = (\n urls: string,\n username?: string,\n credential?: string\n ) => {\n peerConfig.config = peerConfig.config || {};\n peerConfig.config.iceServers = peerConfig.config.iceServers || [];\n peerConfig.config.iceServers.push({\n urls,\n username,\n credential,\n });\n };\n\n /**\n * Forces the usage of a relay (TURN) server, to avoid sharing IP addresses with the other peers.\n * @param shouldUseRelayServer Whether relay-only should be enabled or disabled.\n */\n export const forceUseRelayServer = (shouldUseRelayServer: boolean) => {\n peerConfig.config = peerConfig.config || {};\n peerConfig.config.iceTransportPolicy = shouldUseRelayServer\n ? 'relay'\n : 'all';\n };\n\n /**\n * Overrides the default peer ID. Must be called before connecting to a broker.\n * Overriding the ID may have unwanted consequences. Do not use this feature\n * unless you really know what you are doing.\n * @param id The peer ID to use when connecting to a broker.\n */\n export const overrideId = (id: string) => {\n peerId = id;\n };\n\n /**\n * Returns the own current peer ID.\n * @see Peer.id\n */\n export const getCurrentId = (): string => {\n if (peer == undefined) return '';\n return peer.id || '';\n };\n\n /**\n * Returns true once PeerJS finished initialization.\n * @see ready\n */\n export const isReady = () => ready;\n\n /**\n * Returns true once when there is an error.\n */\n export const onError = (): boolean => {\n const returnValue = error;\n error = false;\n return returnValue;\n };\n\n /**\n * Returns the latest error message.\n */\n export const getLastError = () => lastError;\n\n /**\n * Returns true once a peer disconnected.\n */\n export const onDisconnect = () => disconnectedPeers.length > 0;\n\n /**\n * Get the ID of the peer that triggered onDisconnect.\n */\n export const getDisconnectedPeer = () => disconnectedPeers[0] || '';\n\n /**\n * Returns true once if a remote peer just initiated a connection.\n */\n export const onConnection = () => connectedPeers.length > 0;\n\n /**\n * Get the ID of the peer that triggered onConnection.\n */\n export const getConnectedPeer = (): string => connectedPeers[0] || '';\n\n /**\n * A JavaScript-only function to get the raw P2P DataConnection.\n * This can be useful for example when you want to use a binary protocol\n * instead of GDevelop variables for high-performance networking.\n */\n export const getConnectionInstance = (peerID: string) =>\n connections.get(peerID);\n\n gdjs.callbacksRuntimeScenePostEvents.push(() => {\n for (const event of events.values()) {\n event.popData();\n }\n if (disconnectedPeers.length > 0) {\n disconnectedPeers.shift();\n }\n if (connectedPeers.length > 0) {\n connectedPeers.shift();\n }\n });\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -174,6 +174,33 @@ module.exports = {
|
|
|
174
174
|
.addIncludeFile('Extensions/P2P/B_p2ptools.js')
|
|
175
175
|
.setFunctionName('gdjs.evtTools.p2p.useCustomICECandidate');
|
|
176
176
|
|
|
177
|
+
extension
|
|
178
|
+
.addAction(
|
|
179
|
+
'ForceRelayServer',
|
|
180
|
+
_('Disable IP address sharing'),
|
|
181
|
+
_(
|
|
182
|
+
'Disables the sharing of IP addresses with the other peers. ' +
|
|
183
|
+
'This action needs to be called BEFORE connecting to the broker server.'
|
|
184
|
+
),
|
|
185
|
+
_('Disable IP sharing: _PARAM0_'),
|
|
186
|
+
'',
|
|
187
|
+
'JsPlatform/Extensions/p2picon.svg',
|
|
188
|
+
'JsPlatform/Extensions/p2picon.svg'
|
|
189
|
+
)
|
|
190
|
+
.addParameter(
|
|
191
|
+
'yesorno',
|
|
192
|
+
_('Disable sharing of IP addresses'),
|
|
193
|
+
'Generally, it is recommended to keep sharing of IP addressed enabled ' +
|
|
194
|
+
'to make connections faster and more often possible. ' +
|
|
195
|
+
'Disabling IP address sharing will force all connections to pass messages through a ' +
|
|
196
|
+
'TURN relay server, you can make P2P use one by adding one as an ICE candidate.',
|
|
197
|
+
false
|
|
198
|
+
)
|
|
199
|
+
.getCodeExtraInformation()
|
|
200
|
+
.setIncludeFile('Extensions/P2P/A_peer.js')
|
|
201
|
+
.addIncludeFile('Extensions/P2P/B_p2ptools.js')
|
|
202
|
+
.setFunctionName('gdjs.evtTools.p2p.forceUseRelayServer');
|
|
203
|
+
|
|
177
204
|
extension
|
|
178
205
|
.addAction(
|
|
179
206
|
'UseDefaultBroker',
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.5)
|
|
2
|
+
|
|
3
|
+
project(PanelSpriteObject)
|
|
4
|
+
gd_add_extension_includes()
|
|
5
|
+
|
|
6
|
+
# Defines
|
|
7
|
+
#
|
|
8
|
+
gd_add_extension_definitions(PanelSpriteObject)
|
|
9
|
+
|
|
10
|
+
# The targets
|
|
11
|
+
#
|
|
12
|
+
include_directories(.)
|
|
13
|
+
file(
|
|
14
|
+
GLOB
|
|
15
|
+
source_files
|
|
16
|
+
*.cpp
|
|
17
|
+
*.h)
|
|
18
|
+
gd_add_clang_utils(PanelSpriteObject "${source_files}")
|
|
19
|
+
gd_add_extension_target(PanelSpriteObject "${source_files}")
|
|
20
|
+
|
|
21
|
+
# Linker files for the IDE extension
|
|
22
|
+
#
|
|
23
|
+
gd_extension_link_libraries(PanelSpriteObject)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(
|
|
1
|
+
var gdjs;(function(r){class s extends r.RuntimeObject{constructor(e,t){super(e,t);this.opacity=255;this._rBorder=t.rightMargin,this._lBorder=t.leftMargin,this._tBorder=t.topMargin,this._bBorder=t.bottomMargin,this._tiled=t.tiled,this._width=t.width,this._height=t.height,this._renderer=new r.PanelSpriteRuntimeObjectRenderer(this,e,t.texture,t.tiled),this.onCreated()}updateFromObjectData(e,t){e.width!==t.width&&this.setWidth(t.width),e.height!==t.height&&this.setHeight(t.height);let i=!1;return e.rightMargin!==t.rightMargin&&(this._rBorder=t.rightMargin,i=!0),e.leftMargin!==t.leftMargin&&(this._lBorder=t.leftMargin,i=!0),e.topMargin!==t.topMargin&&(this._tBorder=t.topMargin,i=!0),e.bottomMargin!==t.bottomMargin&&(this._bBorder=t.bottomMargin,i=!0),e.texture!==t.texture&&(i=!0),i&&this.setTexture(t.texture,this.getRuntimeScene()),e.tiled===t.tiled}getNetworkSyncData(){return{...super.getNetworkSyncData(),wid:this.getWidth(),hei:this.getHeight(),op:this.getOpacity(),color:this.getColor()}}updateFromNetworkSyncData(e){super.updateFromNetworkSyncData(e),e.wid!==void 0&&this.setWidth(e.wid),e.hei!==void 0&&this.setHeight(e.hei),e.op!==void 0&&this.setOpacity(e.op),e.color!==void 0&&this.setColor(e.color)}getRendererObject(){return this._renderer.getRendererObject()}onDestroyed(){super.onDestroyed(),this._renderer.destroy()}update(e){this._renderer.ensureUpToDate()}extraInitializationFromInitialInstance(e){e.customSize&&(this.setWidth(e.width),this.setHeight(e.height))}setX(e){super.setX(e),this._renderer.updatePosition()}setY(e){super.setY(e),this._renderer.updatePosition()}setTexture(e,t){this._renderer.setTexture(e,t)}setAngle(e){super.setAngle(e),this._renderer.updateAngle()}getWidth(){return this._width}getHeight(){return this._height}setWidth(e){this._width!==e&&(this._width=e,this._renderer.updateWidth(),this.invalidateHitboxes())}setHeight(e){this._height!==e&&(this._height=e,this._renderer.updateHeight(),this.invalidateHitboxes())}setSize(e,t){this.setWidth(e),this.setHeight(t)}setOpacity(e){e<0&&(e=0),e>255&&(e=255),this.opacity=e,this._renderer.updateOpacity()}getOpacity(){return this.opacity}setColor(e){this._renderer.setColor(e)}getColor(){return this._renderer.getColor()}getScale(){const e=Math.abs(this.getScaleX()),t=Math.abs(this.getScaleY());return e===t?e:Math.sqrt(e*t)}getScaleX(){return this._width/this._renderer.getTextureWidth()}getScaleY(){return this._height/this._renderer.getTextureHeight()}setScale(e){this.setWidth(this._renderer.getTextureWidth()*e),this.setHeight(this._renderer.getTextureHeight()*e)}setScaleX(e){this.setWidth(this._renderer.getTextureWidth()*e)}setScaleY(e){this.setHeight(this._renderer.getTextureHeight()*e)}}r.PanelSpriteRuntimeObject=s,r.registerObject("PanelSpriteObject::PanelSprite",r.PanelSpriteRuntimeObject)})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=panelspriteruntimeobject.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/PanelSpriteObject/panelspriteruntimeobject.ts"],
|
|
4
|
-
"sourcesContent": ["/*\n * GDevelop JS Platform\n * 2013 Florian Rival (Florian.Rival@gmail.com)\n */\nnamespace gdjs {\n export type PanelSpriteObjectDataType = {\n /** The right margin */\n rightMargin: number;\n /** The left margin */\n leftMargin: number;\n /** The top margin */\n topMargin: number;\n /** The bottom margin */\n bottomMargin: number;\n /** Are the central part and borders tiled? */\n tiled: boolean;\n /** The object width */\n width: number;\n /** The object height */\n height: number;\n /** The name of the resource containing the texture to use */\n texture: string;\n };\n\n export type PanelSpriteObjectData = ObjectData & PanelSpriteObjectDataType;\n\n /**\n * The PanelSpriteRuntimeObject displays a tiled texture.\n */\n export class PanelSpriteRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.Resizable, gdjs.OpacityHandler {\n _rBorder: integer;\n _lBorder: integer;\n _tBorder: integer;\n _bBorder: integer;\n _tiled: boolean;\n opacity: float = 255;\n\n // Width and height can be stored because they do not depend on the\n // size of the texture being used (contrary to most objects).\n _width: float;\n _height: float;\n\n _renderer: gdjs.PanelSpriteRuntimeObjectRenderer;\n\n /**\n * @param instanceContainer The container the object belongs to.\n * @param panelSpriteObjectData The initial properties of the object\n */\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n panelSpriteObjectData: PanelSpriteObjectData\n ) {\n super(instanceContainer, panelSpriteObjectData);\n this._rBorder = panelSpriteObjectData.rightMargin;\n this._lBorder = panelSpriteObjectData.leftMargin;\n this._tBorder = panelSpriteObjectData.topMargin;\n this._bBorder = panelSpriteObjectData.bottomMargin;\n this._tiled = panelSpriteObjectData.tiled;\n this._width = panelSpriteObjectData.width;\n this._height = panelSpriteObjectData.height;\n this._renderer = new gdjs.PanelSpriteRuntimeObjectRenderer(\n this,\n instanceContainer,\n panelSpriteObjectData.texture,\n panelSpriteObjectData.tiled\n );\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n updateFromObjectData(\n oldObjectData: PanelSpriteObjectData,\n newObjectData: PanelSpriteObjectData\n ): boolean {\n if (oldObjectData.width !== newObjectData.width) {\n this.setWidth(newObjectData.width);\n }\n if (oldObjectData.height !== newObjectData.height) {\n this.setHeight(newObjectData.height);\n }\n let updateTexture = false;\n if (oldObjectData.rightMargin !== newObjectData.rightMargin) {\n this._rBorder = newObjectData.rightMargin;\n updateTexture = true;\n }\n if (oldObjectData.leftMargin !== newObjectData.leftMargin) {\n this._lBorder = newObjectData.leftMargin;\n updateTexture = true;\n }\n if (oldObjectData.topMargin !== newObjectData.topMargin) {\n this._tBorder = newObjectData.topMargin;\n updateTexture = true;\n }\n if (oldObjectData.bottomMargin !== newObjectData.bottomMargin) {\n this._bBorder = newObjectData.bottomMargin;\n updateTexture = true;\n }\n if (oldObjectData.texture !== newObjectData.texture) {\n updateTexture = true;\n }\n if (updateTexture) {\n this.setTexture(newObjectData.texture, this.getRuntimeScene());\n }\n if (oldObjectData.tiled !== newObjectData.tiled) {\n return false;\n }\n return true;\n }\n\n getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.destroy();\n }\n\n update(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n this._renderer.ensureUpToDate();\n }\n\n /**\n * Initialize the extra parameters that could be set for an instance.\n */\n extraInitializationFromInitialInstance(initialInstanceData: InstanceData) {\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n }\n }\n\n /**\n * Set the x position of the panel sprite.\n * @param x The new x position in pixels.\n */\n setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n }\n\n /**\n * Set the y position of the panel sprite.\n * @param y The new y position in pixels.\n */\n setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n }\n\n /**\n * Set the texture of the panel sprite.\n * @param textureName The name of the texture.\n * @param instanceContainer The container the object lives in.\n */\n setTexture(\n textureName: string,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ): void {\n this._renderer.setTexture(textureName, instanceContainer);\n }\n\n /**\n * Set the angle of the panel sprite.\n * @param angle The new angle in degrees.\n */\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n /**\n * Get the width of the panel sprite in pixels\n * @return The width in pixels\n */\n getWidth(): float {\n return this._width;\n }\n\n /**\n * Get the height of the panel sprite in pixels\n * @return The height in pixels\n */\n getHeight(): float {\n return this._height;\n }\n\n setWidth(width: float): void {\n if (this._width === width) return;\n\n this._width = width;\n this._renderer.updateWidth();\n this.invalidateHitboxes();\n }\n\n setHeight(height: float): void {\n if (this._height === height) return;\n\n this._height = height;\n this._renderer.updateHeight();\n this.invalidateHitboxes();\n }\n\n setSize(newWidth: float, newHeight: float): void {\n this.setWidth(newWidth);\n this.setHeight(newHeight);\n }\n\n setOpacity(opacity: float): void {\n if (opacity < 0) {\n opacity = 0;\n }\n if (opacity > 255) {\n opacity = 255;\n }\n this.opacity = opacity;\n this._renderer.updateOpacity();\n }\n\n getOpacity(): number {\n return this.opacity;\n }\n\n /**\n * Change the tint of the panel sprite object.\n *\n * @param rgbColor The color, in RGB format (\"128;200;255\").\n */\n setColor(rgbColor: string): void {\n this._renderer.setColor(rgbColor);\n }\n\n /**\n * Get the tint of the panel sprite object.\n *\n * @returns The color, in RGB format (\"128;200;255\").\n */\n getColor(): string {\n return this._renderer.getColor();\n }\n\n // Implement support for get/set scale:\n\n /**\n * Get the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n */\n getScale(): float {\n const scaleX = Math.abs(this.getScaleX());\n const scaleY = Math.abs(this.getScaleY());\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n /**\n * Get x-scale of the tiled sprite object.\n */\n getScaleX(): float {\n return this._width / this._renderer.getTextureWidth();\n }\n\n /**\n * Get y-scale of the tiled sprite object.\n */\n getScaleY(): float {\n return this._height / this._renderer.getTextureHeight();\n }\n\n /**\n * Set the tiled sprite object scale.\n * @param newScale The new scale for the tiled sprite object.\n */\n setScale(newScale: float): void {\n this.setWidth(this._renderer.getTextureWidth() * newScale);\n this.setHeight(this._renderer.getTextureHeight() * newScale);\n }\n\n /**\n * Set the tiled sprite object x-scale.\n * @param newScale The new x-scale for the tiled sprite object.\n */\n setScaleX(newScale: float): void {\n this.setWidth(this._renderer.getTextureWidth() * newScale);\n }\n\n /**\n * Set the tiled sprite object y-scale.\n * @param newScale The new y-scale for the tiled sprite object.\n */\n setScaleY(newScale: float): void {\n this.setHeight(this._renderer.getTextureHeight() * newScale);\n }\n }\n gdjs.registerObject(\n 'PanelSpriteObject::PanelSprite',\n gdjs.PanelSpriteRuntimeObject\n );\n}\n"],
|
|
5
|
-
"mappings": "AAIA,GAAU,MAAV,UAAU,EAAV,
|
|
4
|
+
"sourcesContent": ["/*\n * GDevelop JS Platform\n * 2013 Florian Rival (Florian.Rival@gmail.com)\n */\nnamespace gdjs {\n export type PanelSpriteObjectDataType = {\n /** The right margin */\n rightMargin: number;\n /** The left margin */\n leftMargin: number;\n /** The top margin */\n topMargin: number;\n /** The bottom margin */\n bottomMargin: number;\n /** Are the central part and borders tiled? */\n tiled: boolean;\n /** The object width */\n width: number;\n /** The object height */\n height: number;\n /** The name of the resource containing the texture to use */\n texture: string;\n };\n\n export type PanelSpriteObjectData = ObjectData & PanelSpriteObjectDataType;\n\n export type PanelSpriteNetworkSyncDataType = {\n wid: number;\n hei: number;\n op: number;\n color: string;\n };\n\n export type PanelSpriteNetworkSyncData = ObjectNetworkSyncData &\n PanelSpriteNetworkSyncDataType;\n\n /**\n * The PanelSpriteRuntimeObject displays a tiled texture.\n */\n export class PanelSpriteRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.Resizable, gdjs.OpacityHandler {\n _rBorder: integer;\n _lBorder: integer;\n _tBorder: integer;\n _bBorder: integer;\n _tiled: boolean;\n opacity: float = 255;\n\n // Width and height can be stored because they do not depend on the\n // size of the texture being used (contrary to most objects).\n _width: float;\n _height: float;\n\n _renderer: gdjs.PanelSpriteRuntimeObjectRenderer;\n\n /**\n * @param instanceContainer The container the object belongs to.\n * @param panelSpriteObjectData The initial properties of the object\n */\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n panelSpriteObjectData: PanelSpriteObjectData\n ) {\n super(instanceContainer, panelSpriteObjectData);\n this._rBorder = panelSpriteObjectData.rightMargin;\n this._lBorder = panelSpriteObjectData.leftMargin;\n this._tBorder = panelSpriteObjectData.topMargin;\n this._bBorder = panelSpriteObjectData.bottomMargin;\n this._tiled = panelSpriteObjectData.tiled;\n this._width = panelSpriteObjectData.width;\n this._height = panelSpriteObjectData.height;\n this._renderer = new gdjs.PanelSpriteRuntimeObjectRenderer(\n this,\n instanceContainer,\n panelSpriteObjectData.texture,\n panelSpriteObjectData.tiled\n );\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n updateFromObjectData(\n oldObjectData: PanelSpriteObjectData,\n newObjectData: PanelSpriteObjectData\n ): boolean {\n if (oldObjectData.width !== newObjectData.width) {\n this.setWidth(newObjectData.width);\n }\n if (oldObjectData.height !== newObjectData.height) {\n this.setHeight(newObjectData.height);\n }\n let updateTexture = false;\n if (oldObjectData.rightMargin !== newObjectData.rightMargin) {\n this._rBorder = newObjectData.rightMargin;\n updateTexture = true;\n }\n if (oldObjectData.leftMargin !== newObjectData.leftMargin) {\n this._lBorder = newObjectData.leftMargin;\n updateTexture = true;\n }\n if (oldObjectData.topMargin !== newObjectData.topMargin) {\n this._tBorder = newObjectData.topMargin;\n updateTexture = true;\n }\n if (oldObjectData.bottomMargin !== newObjectData.bottomMargin) {\n this._bBorder = newObjectData.bottomMargin;\n updateTexture = true;\n }\n if (oldObjectData.texture !== newObjectData.texture) {\n updateTexture = true;\n }\n if (updateTexture) {\n this.setTexture(newObjectData.texture, this.getRuntimeScene());\n }\n if (oldObjectData.tiled !== newObjectData.tiled) {\n return false;\n }\n return true;\n }\n\n getNetworkSyncData(): PanelSpriteNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n wid: this.getWidth(),\n hei: this.getHeight(),\n op: this.getOpacity(),\n color: this.getColor(),\n };\n }\n\n updateFromNetworkSyncData(\n networkSyncData: PanelSpriteNetworkSyncData\n ): void {\n super.updateFromNetworkSyncData(networkSyncData);\n\n // Texture is not synchronized, see if this is asked or not.\n\n if (networkSyncData.wid !== undefined) {\n this.setWidth(networkSyncData.wid);\n }\n if (networkSyncData.hei !== undefined) {\n this.setHeight(networkSyncData.hei);\n }\n if (networkSyncData.op !== undefined) {\n this.setOpacity(networkSyncData.op);\n }\n if (networkSyncData.color !== undefined) {\n this.setColor(networkSyncData.color);\n }\n }\n\n getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.destroy();\n }\n\n update(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n this._renderer.ensureUpToDate();\n }\n\n /**\n * Initialize the extra parameters that could be set for an instance.\n */\n extraInitializationFromInitialInstance(initialInstanceData: InstanceData) {\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n }\n }\n\n /**\n * Set the x position of the panel sprite.\n * @param x The new x position in pixels.\n */\n setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n }\n\n /**\n * Set the y position of the panel sprite.\n * @param y The new y position in pixels.\n */\n setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n }\n\n /**\n * Set the texture of the panel sprite.\n * @param textureName The name of the texture.\n * @param instanceContainer The container the object lives in.\n */\n setTexture(\n textureName: string,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ): void {\n this._renderer.setTexture(textureName, instanceContainer);\n }\n\n /**\n * Set the angle of the panel sprite.\n * @param angle The new angle in degrees.\n */\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n /**\n * Get the width of the panel sprite in pixels\n * @return The width in pixels\n */\n getWidth(): float {\n return this._width;\n }\n\n /**\n * Get the height of the panel sprite in pixels\n * @return The height in pixels\n */\n getHeight(): float {\n return this._height;\n }\n\n setWidth(width: float): void {\n if (this._width === width) return;\n\n this._width = width;\n this._renderer.updateWidth();\n this.invalidateHitboxes();\n }\n\n setHeight(height: float): void {\n if (this._height === height) return;\n\n this._height = height;\n this._renderer.updateHeight();\n this.invalidateHitboxes();\n }\n\n setSize(newWidth: float, newHeight: float): void {\n this.setWidth(newWidth);\n this.setHeight(newHeight);\n }\n\n setOpacity(opacity: float): void {\n if (opacity < 0) {\n opacity = 0;\n }\n if (opacity > 255) {\n opacity = 255;\n }\n this.opacity = opacity;\n this._renderer.updateOpacity();\n }\n\n getOpacity(): number {\n return this.opacity;\n }\n\n /**\n * Change the tint of the panel sprite object.\n *\n * @param rgbColor The color, in RGB format (\"128;200;255\").\n */\n setColor(rgbColor: string): void {\n this._renderer.setColor(rgbColor);\n }\n\n /**\n * Get the tint of the panel sprite object.\n *\n * @returns The color, in RGB format (\"128;200;255\").\n */\n getColor(): string {\n return this._renderer.getColor();\n }\n\n // Implement support for get/set scale:\n\n /**\n * Get the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n */\n getScale(): float {\n const scaleX = Math.abs(this.getScaleX());\n const scaleY = Math.abs(this.getScaleY());\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n /**\n * Get x-scale of the tiled sprite object.\n */\n getScaleX(): float {\n return this._width / this._renderer.getTextureWidth();\n }\n\n /**\n * Get y-scale of the tiled sprite object.\n */\n getScaleY(): float {\n return this._height / this._renderer.getTextureHeight();\n }\n\n /**\n * Set the tiled sprite object scale.\n * @param newScale The new scale for the tiled sprite object.\n */\n setScale(newScale: float): void {\n this.setWidth(this._renderer.getTextureWidth() * newScale);\n this.setHeight(this._renderer.getTextureHeight() * newScale);\n }\n\n /**\n * Set the tiled sprite object x-scale.\n * @param newScale The new x-scale for the tiled sprite object.\n */\n setScaleX(newScale: float): void {\n this.setWidth(this._renderer.getTextureWidth() * newScale);\n }\n\n /**\n * Set the tiled sprite object y-scale.\n * @param newScale The new y-scale for the tiled sprite object.\n */\n setScaleY(newScale: float): void {\n this.setHeight(this._renderer.getTextureHeight() * newScale);\n }\n }\n gdjs.registerObject(\n 'PanelSpriteObject::PanelSprite',\n gdjs.PanelSpriteRuntimeObject\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.5)
|
|
2
|
+
|
|
3
|
+
project(ParticleSystem)
|
|
4
|
+
gd_add_extension_includes()
|
|
5
|
+
|
|
6
|
+
# Defines
|
|
7
|
+
#
|
|
8
|
+
gd_add_extension_definitions(ParticleSystem)
|
|
9
|
+
|
|
10
|
+
# The targets
|
|
11
|
+
#
|
|
12
|
+
include_directories(.)
|
|
13
|
+
file(
|
|
14
|
+
GLOB
|
|
15
|
+
source_files
|
|
16
|
+
*.cpp
|
|
17
|
+
*.h)
|
|
18
|
+
gd_add_clang_utils(ParticleSystem "${source_files}")
|
|
19
|
+
gd_add_extension_target(ParticleSystem "${source_files}")
|
|
20
|
+
|
|
21
|
+
# Linker files for the IDE extension
|
|
22
|
+
#
|
|
23
|
+
gd_extension_link_libraries(ParticleSystem)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(n){const
|
|
1
|
+
var gdjs;(function(n){const p=(c,t,i)=>{const e=c.first;e.value=t,e.next=e.next||{time:1,value:0},e.next.value=i},s=class{constructor(t,i,e){this.started=!1;const r=t.getGame().getRenderer().getPIXIRenderer(),a=t.getGame().getImageManager();let m=PIXI.Texture.WHITE;r&&(e.rendererType==="Point"?m=a.getOrCreateDiskTexture(e.rendererParam1,r):e.rendererType==="Line"?m=a.getOrCreateRectangleTexture(e.rendererParam1,e.rendererParam2,r):e.textureParticleName?m=a.getOrCreateScaledTexture(e.textureParticleName,e.rendererParam1,e.rendererParam2,r):m=a.getOrCreateRectangleTexture(e.rendererParam1,e.rendererParam2,r));const g={ease:void 0,emit:void 0,lifetime:{min:e.particleLifeTimeMin,max:e.particleLifeTimeMax},frequency:e.flow<0?s.frequencyMinimumValue:1/e.flow,spawnChance:1,particlesPerWave:e.flow<0?e.maxParticleNb:1,maxParticles:e.maxParticleNb,emitterLifetime:s.computeLifetime(e.flow,e.tank),pos:{x:0,y:0},addAtBack:!1,behaviors:[{type:"alpha",config:{alpha:{isStepped:!1,list:[{time:0,value:e.particleAlpha1/255},{time:1,value:e.particleAlpha2/255}]}}},{type:"moveAcceleration",config:{accel:{x:e.particleGravityX,y:e.particleGravityY},minStart:e.emitterForceMin,maxStart:e.emitterForceMax,rotate:e.particleAngle1===0&&e.particleAngle2===0&&(e.particleGravityX!==0||e.particleGravityY!==0||e.emitterForceMin<0||e.emitterForceMax<0)}},{type:"scale",config:{scale:{isStepped:!1,list:[{time:0,value:e.particleSize1/100*(1+e.particleSizeRandomness1/100)},{time:1,value:e.particleSize2/100*(1+e.particleSizeRandomness2/100)}]}}},{type:"color",config:{color:{isStepped:!1,list:[{time:0,value:n.rgbToHex(e.particleRed1,e.particleGreen1,e.particleBlue1)},{time:1,value:n.rgbToHex(e.particleRed2,e.particleGreen2,e.particleBlue2)}]}}},{type:"rotation",config:{accel:0,minStart:-e.emitterAngleB/2,maxStart:e.emitterAngleB/2,maxSpeed:e.particleAngle2,minSpeed:e.particleAngle1}},{type:"blendMode",config:{blendMode:e.additive?"ADD":"NORMAL"}},{type:"textureSingle",config:{texture:m}},{type:"spawnShape",config:{type:"torus",data:{affectRotation:!1,innerRadius:0,radius:e.zoneRadius,x:0,y:0}}}]};this.renderer=new PIXI.Container,this.emitter=new PIXI.particles.Emitter(this.renderer,g),this.start();const l=t.getLayer(i.getLayer());l&&l.getRenderer().addRendererObject(this.renderer,i.getZOrder())}getRendererObject(){return this.renderer}update(t){const i=this.emitter.emit;this.emitter.update(t),!this.started&&i&&(this.started=!0)}setPosition(t,i){this.emitter.spawnPos.x=t,this.emitter.spawnPos.y=i}setAngle(t,i){const e=this.emitter.getBehavior("rotation");e.minStart=n.toRad(t),e.maxStart=n.toRad(i)}setForce(t,i){const e=this.emitter.getBehavior("moveAcceleration");e.maxStart=i||1e-6,e.minStart=t}setZoneRadius(t){const i=this.emitter.getBehavior("spawnShape");i.shape.radius=t}setLifeTime(t,i){this.emitter.minLifetime=t,this.emitter.maxLifetime=i}setGravity(t,i){const e=this.emitter.getBehavior("moveAcceleration");e.accel.x=t,e.accel.y=i,this._updateRotateFlagFromSpeed()}_updateRotateFlagFromSpeed(){const t=this.emitter.getBehavior("rotation"),i=this.emitter.getBehavior("moveAcceleration");i.rotate=t.minSpeed===0&&t.maxSpeed===0&&(i.accel.x!==0||i.accel.y!==0||i.minStart<0||i.maxStart<0)}setColor(t,i,e,r,a,m){const l=this.emitter.getBehavior("color").list.first,d=l.value;d.r=t,d.g=i,d.b=e,l.next=l.next||{time:1,value:{}};const u=l.next.value;u.r=r,u.g=a,u.b=m}setSize(t,i){const e=this.emitter.getBehavior("scale");p(e.list,t/100,i/100)}setParticleRotationSpeed(t,i){const e=this.emitter.getBehavior("rotation");e.minSpeed=n.toRad(t),e.maxSpeed=n.toRad(i),this._updateRotateFlagFromSpeed()}setMaxParticlesCount(t){this.emitter.maxParticles=t}setAdditiveRendering(t){const i=this.emitter.getBehavior("blendMode");i.value=t?"ADD":"NORMAL"}setAlpha(t,i){const e=this.emitter.getBehavior("alpha");p(e.list,t/255,i/255)}setFlow(t,i){this.emitter.frequency=t<0?s.frequencyMinimumValue:1/t,this.emitter.emitterLifetime=s.computeLifetime(t,i)}resetEmission(t,i){this.setFlow(t,i);const e=this.emitter.emit;this.start(),e||this.stop()}isTextureNameValid(t,i){const e=i.getGame().getImageManager().getInvalidPIXITexture(),r=i.getGame().getImageManager().getPIXITexture(t);return r.valid&&r!==e}setTextureName(t,i){const e=i.getGame().getImageManager().getInvalidPIXITexture(),r=i.getGame().getImageManager().getPIXITexture(t);if(r.valid&&r!==e){const a=this.emitter.getBehavior("textureSingle");a.texture=r}}getParticleCount(){return this.emitter.particleCount}stop(){this.emitter.emit=!1}start(){this.emitter.emit=!0}recreate(){this.emitter.cleanup()}destroy(){this.emitter.destroy()}hasStarted(){return this.started}_mayHaveEndedEmission(){return this.emitter.frequency>s.frequencyMinimumValue&&this.emitter.emitterLifetime>=0&&!this.emitter.emit&&this.emitter._emitterLife===this.emitter.emitterLifetime}static computeLifetime(t,i){return i<0?-1:t<0?.001:(i+.1)/t}};let o=s;o.frequencyMinimumValue=1e-4,n.ParticleEmitterObjectPixiRenderer=o,n.ParticleEmitterObjectRenderer=o})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=particleemitterobject-pixi-renderer.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/ParticleSystem/particleemitterobject-pixi-renderer.ts"],
|
|
4
|
-
"sourcesContent": ["/*\nGDevelop - Particle System Extension\nCopyright (c) 2010-2016 Florian Rival (Florian.Rival@gmail.com)\nThis project is released under the MIT License.\n*/\nnamespace gdjs {\n const setBoundsValues = (list: any, startValue: float, endValue: float) => {\n const first = list.first;\n first.value = startValue;\n first.next = first.next || {\n time: 1,\n value: 0,\n };\n first.next.value = endValue;\n };\n\n export class ParticleEmitterObjectPixiRenderer {\n renderer: PIXI.Container;\n emitter: PIXI.particles.Emitter;\n started: boolean = false;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n runtimeObject: gdjs.RuntimeObject,\n objectData: any\n ) {\n const pixiRenderer = instanceContainer\n .getGame()\n .getRenderer()\n .getPIXIRenderer();\n const imageManager = instanceContainer\n .getGame()\n .getImageManager() as gdjs.PixiImageManager;\n let particleTexture: PIXI.Texture = PIXI.Texture.WHITE;\n if (pixiRenderer) {\n if (objectData.rendererType === 'Point') {\n particleTexture = imageManager.getOrCreateDiskTexture(\n objectData.rendererParam1,\n pixiRenderer\n );\n } else if (objectData.rendererType === 'Line') {\n particleTexture = imageManager.getOrCreateRectangleTexture(\n objectData.rendererParam1,\n objectData.rendererParam2,\n pixiRenderer\n );\n } else if (objectData.textureParticleName) {\n particleTexture = imageManager.getOrCreateScaledTexture(\n objectData.textureParticleName,\n objectData.rendererParam1,\n objectData.rendererParam2,\n pixiRenderer\n );\n } else {\n particleTexture = imageManager.getOrCreateRectangleTexture(\n objectData.rendererParam1,\n objectData.rendererParam2,\n pixiRenderer\n );\n }\n }\n\n const configuration = {\n ease: undefined,\n emit: undefined,\n lifetime: {\n min: objectData.particleLifeTimeMin,\n max: objectData.particleLifeTimeMax,\n },\n // A negative flow is \"infinite flow\" (all particles burst)\n frequency: objectData.flow < 0 ? 0.0001 : 1.0 / objectData.flow,\n spawnChance: 1,\n particlesPerWave: objectData.flow < 0 ? objectData.maxParticleNb : 1,\n maxParticles: objectData.maxParticleNb,\n // Lifetime can be computed from the tank (the number of particles available)\n // and the flow (number of particles emitted per seconds)\n emitterLifetime: ParticleEmitterObjectPixiRenderer.computeLifetime(\n objectData.flow,\n objectData.tank\n ),\n pos: { x: 0, y: 0 },\n addAtBack: false,\n behaviors: [\n {\n type: 'alpha',\n config: {\n alpha: {\n isStepped: false,\n list: [\n { time: 0, value: objectData.particleAlpha1 / 255.0 },\n { time: 1, value: objectData.particleAlpha2 / 255.0 },\n ],\n },\n },\n },\n {\n type: 'moveAcceleration',\n config: {\n accel: {\n x: objectData.particleGravityX,\n y: objectData.particleGravityY,\n },\n minStart: objectData.emitterForceMin,\n maxStart: objectData.emitterForceMax,\n // See _updateRotateFlagFromSpeed\n rotate:\n objectData.particleAngle1 === 0 &&\n objectData.particleAngle2 === 0 &&\n (objectData.particleGravityX !== 0 ||\n objectData.particleGravityY !== 0 ||\n objectData.emitterForceMin < 0 ||\n objectData.emitterForceMax < 0),\n },\n },\n {\n type: 'scale',\n config: {\n scale: {\n isStepped: false,\n list: [\n {\n time: 0,\n value:\n (objectData.particleSize1 / 100) *\n (1 + objectData.particleSizeRandomness1 / 100),\n },\n {\n time: 1,\n value:\n (objectData.particleSize2 / 100) *\n (1 + objectData.particleSizeRandomness2 / 100),\n },\n ],\n },\n },\n },\n {\n type: 'color',\n config: {\n color: {\n isStepped: false,\n list: [\n {\n time: 0,\n value: gdjs.rgbToHex(\n objectData.particleRed1,\n objectData.particleGreen1,\n objectData.particleBlue1\n ),\n },\n {\n time: 1,\n value: gdjs.rgbToHex(\n objectData.particleRed2,\n objectData.particleGreen2,\n objectData.particleBlue2\n ),\n },\n ],\n },\n },\n },\n {\n type: 'rotation',\n config: {\n accel: 0,\n // Angle of the spray cone\n minStart: -objectData.emitterAngleB / 2.0,\n maxStart: objectData.emitterAngleB / 2.0,\n // Rotation speed of the particles\n maxSpeed: objectData.particleAngle2,\n minSpeed: objectData.particleAngle1,\n },\n },\n {\n type: 'blendMode',\n config: {\n blendMode: objectData.additive ? 'ADD' : 'NORMAL',\n },\n },\n {\n type: 'textureSingle',\n config: {\n texture: particleTexture,\n },\n },\n {\n type: 'spawnShape',\n config: {\n type: 'torus',\n data: {\n affectRotation: false,\n innerRadius: 0,\n radius: objectData.zoneRadius,\n x: 0,\n y: 0,\n },\n },\n },\n ],\n };\n\n this.renderer = new PIXI.Container();\n // The embedded particle emitter is supposed to be the last minor version\n // of the version 5 of the particle emitter object\n // See source https://github.com/pixijs/particle-emitter/blob/v5.0.8/src/Emitter.ts\n this.emitter = new PIXI.particles.Emitter(this.renderer, configuration);\n this.start();\n const layer = instanceContainer.getLayer(runtimeObject.getLayer());\n if (layer) {\n layer\n .getRenderer()\n .addRendererObject(this.renderer, runtimeObject.getZOrder());\n }\n }\n\n getRendererObject() {\n return this.renderer;\n }\n\n update(delta: float): void {\n const wasEmitting = this.emitter.emit;\n this.emitter.update(delta);\n if (!this.started && wasEmitting) {\n this.started = true;\n }\n }\n\n setPosition(x: number, y: number): void {\n this.emitter.spawnPos.x = x;\n this.emitter.spawnPos.y = y;\n }\n\n setAngle(angle1: float, angle2: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('rotation');\n behavior.minStart = gdjs.toRad(angle1);\n behavior.maxStart = gdjs.toRad(angle2);\n }\n\n setForce(min: float, max: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('moveAcceleration');\n // If max force is zero, PIXI seems to not be able to compute correctly\n // the angle of the emitter, resulting in it staying at 0\u00B0 or 180\u00B0.\n // See https://github.com/4ian/GDevelop/issues/4312.\n behavior.maxStart = max || 0.000001;\n behavior.minStart = min;\n }\n\n setZoneRadius(radius: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('spawnShape');\n behavior.shape.radius = radius;\n }\n\n setLifeTime(min: float, max: float): void {\n this.emitter.minLifetime = min;\n this.emitter.maxLifetime = max;\n }\n\n setGravity(x: float, y: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('moveAcceleration');\n behavior.accel.x = x;\n behavior.accel.y = y;\n this._updateRotateFlagFromSpeed();\n }\n\n /**\n * When rotate from `moveAcceleration` is `true` the rotation is set\n * according to the speed direction. This is overriding the particle\n * rotation calculated by from `rotation`.\n */\n private _updateRotateFlagFromSpeed() {\n const rotation: any = this.emitter.getBehavior('rotation');\n const moveAcceleration: any = this.emitter.getBehavior(\n 'moveAcceleration'\n );\n moveAcceleration.rotate =\n rotation.minSpeed === 0 &&\n rotation.maxSpeed === 0 &&\n // This part is to avoid to do `atan` every frame when the object\n // direction doesn't change.\n (moveAcceleration.accel.x !== 0 ||\n moveAcceleration.accel.y !== 0 ||\n // Negative speeds need a 180\u00B0 rotation.\n moveAcceleration.minStart < 0 ||\n moveAcceleration.maxStart < 0);\n }\n\n setColor(\n r1: number,\n g1: number,\n b1: number,\n r2: number,\n g2: number,\n b2: number\n ): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('color');\n const first = behavior.list.first;\n\n const startColor = first.value;\n startColor.r = r1;\n startColor.g = g1;\n startColor.b = b1;\n\n first.next = first.next || {\n time: 1,\n value: {},\n };\n const endColor = first.next.value;\n endColor.r = r2;\n endColor.g = g2;\n endColor.b = b2;\n }\n\n setSize(size1: float, size2: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('scale');\n setBoundsValues(behavior.list, size1 / 100.0, size2 / 100.0);\n }\n\n setParticleRotationSpeed(min: float, max: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('rotation');\n behavior.minSpeed = gdjs.toRad(min);\n behavior.maxSpeed = gdjs.toRad(max);\n this._updateRotateFlagFromSpeed();\n }\n\n setMaxParticlesCount(count: float): void {\n this.emitter.maxParticles = count;\n }\n\n setAdditiveRendering(enabled: boolean): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('blendMode');\n behavior.blendMode = enabled ? 'ADD' : 'NORMAL';\n }\n\n setAlpha(alpha1: number, alpha2: number): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('alpha');\n setBoundsValues(behavior.list, alpha1 / 255.0, alpha2 / 255.0);\n }\n\n setFlow(flow: number, tank: number): void {\n this.emitter.frequency = flow < 0 ? 0.0001 : 1.0 / flow;\n this.emitter.emitterLifetime = ParticleEmitterObjectPixiRenderer.computeLifetime(\n flow,\n tank\n );\n }\n\n resetEmission(flow: number, tank: number): void {\n this.setFlow(flow, tank);\n const wasEmitting = this.emitter.emit;\n // The only way to recompute emitter lifetime is to start the emitter.\n this.start();\n if (!wasEmitting) this.stop();\n }\n\n isTextureNameValid(\n texture: string,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ): boolean {\n const invalidPixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getInvalidPIXITexture();\n const pixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getPIXITexture(texture);\n return pixiTexture.valid && pixiTexture !== invalidPixiTexture;\n }\n\n setTextureName(\n texture: string,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ): void {\n const invalidPixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getInvalidPIXITexture();\n const pixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getPIXITexture(texture);\n if (pixiTexture.valid && pixiTexture !== invalidPixiTexture) {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('textureSingle');\n behavior.texture = pixiTexture;\n }\n }\n\n getParticleCount(): integer {\n return this.emitter.particleCount;\n }\n\n stop(): void {\n this.emitter.emit = false;\n }\n\n start(): void {\n this.emitter.emit = true;\n }\n\n recreate(): void {\n this.emitter.cleanup();\n }\n\n destroy(): void {\n this.emitter.destroy();\n }\n\n hasStarted(): boolean {\n return this.started;\n }\n\n static computeLifetime(flow: number, tank: number): float {\n if (tank < 0) return -1;\n else if (flow < 0) return 0.001;\n else return (tank + 0.1) / flow;\n }\n }\n\n // @ts-ignore - Register the class to let the engine use it.\n export const ParticleEmitterObjectRenderer = ParticleEmitterObjectPixiRenderer;\n export type ParticleEmitterObjectRenderer = ParticleEmitterObjectPixiRenderer;\n}\n"],
|
|
5
|
-
"mappings": "AAKA,GAAU,MAAV,UAAU,EAAV,CACE,KAAM,GAAkB,CAAC,EAAW,EAAmB,IAAoB,CACzE,KAAM,GAAQ,EAAK,MACnB,EAAM,MAAQ,EACd,EAAM,KAAO,EAAM,MAAQ,CACzB,KAAM,EACN,MAAO,GAET,EAAM,KAAK,MAAQ,GAGd,OAAwC,CAK7C,YACE,EACA,EACA,EACA,CANF,aAAmB,GAOjB,KAAM,GAAe,EAClB,UACA,cACA,kBACG,EAAe,EAClB,UACA,kBACH,GAAI,GAAgC,KAAK,QAAQ,MACjD,AAAI,GACF,CAAI,EAAW,eAAiB,QAC9B,EAAkB,EAAa,uBAC7B,EAAW,eACX,GAEG,AAAI,EAAW,eAAiB,OACrC,EAAkB,EAAa,4BAC7B,EAAW,eACX,EAAW,eACX,GAEG,AAAI,EAAW,oBACpB,EAAkB,EAAa,yBAC7B,EAAW,oBACX,EAAW,eACX,EAAW,eACX,GAGF,EAAkB,EAAa,4BAC7B,EAAW,eACX,EAAW,eACX,IAKN,KAAM,GAAgB,CACpB,KAAM,OACN,KAAM,OACN,SAAU,CACR,IAAK,EAAW,oBAChB,IAAK,EAAW,qBAGlB,
|
|
4
|
+
"sourcesContent": ["/*\nGDevelop - Particle System Extension\nCopyright (c) 2010-2016 Florian Rival (Florian.Rival@gmail.com)\nThis project is released under the MIT License.\n*/\nnamespace gdjs {\n const setBoundsValues = (list: any, startValue: float, endValue: float) => {\n const first = list.first;\n first.value = startValue;\n first.next = first.next || {\n time: 1,\n value: 0,\n };\n first.next.value = endValue;\n };\n\n export class ParticleEmitterObjectPixiRenderer {\n renderer: PIXI.Container;\n emitter: PIXI.particles.Emitter;\n started: boolean = false;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n runtimeObject: gdjs.RuntimeObject,\n objectData: any\n ) {\n const pixiRenderer = instanceContainer\n .getGame()\n .getRenderer()\n .getPIXIRenderer();\n const imageManager = instanceContainer\n .getGame()\n .getImageManager() as gdjs.PixiImageManager;\n let particleTexture: PIXI.Texture = PIXI.Texture.WHITE;\n if (pixiRenderer) {\n if (objectData.rendererType === 'Point') {\n particleTexture = imageManager.getOrCreateDiskTexture(\n objectData.rendererParam1,\n pixiRenderer\n );\n } else if (objectData.rendererType === 'Line') {\n particleTexture = imageManager.getOrCreateRectangleTexture(\n objectData.rendererParam1,\n objectData.rendererParam2,\n pixiRenderer\n );\n } else if (objectData.textureParticleName) {\n particleTexture = imageManager.getOrCreateScaledTexture(\n objectData.textureParticleName,\n objectData.rendererParam1,\n objectData.rendererParam2,\n pixiRenderer\n );\n } else {\n particleTexture = imageManager.getOrCreateRectangleTexture(\n objectData.rendererParam1,\n objectData.rendererParam2,\n pixiRenderer\n );\n }\n }\n\n const configuration = {\n ease: undefined,\n emit: undefined,\n lifetime: {\n min: objectData.particleLifeTimeMin,\n max: objectData.particleLifeTimeMax,\n },\n // A negative flow is \"infinite flow\" (all particles burst)\n frequency:\n objectData.flow < 0\n ? ParticleEmitterObjectPixiRenderer.frequencyMinimumValue\n : 1.0 / objectData.flow,\n spawnChance: 1,\n particlesPerWave: objectData.flow < 0 ? objectData.maxParticleNb : 1,\n maxParticles: objectData.maxParticleNb,\n // Lifetime can be computed from the tank (the number of particles available)\n // and the flow (number of particles emitted per seconds)\n emitterLifetime: ParticleEmitterObjectPixiRenderer.computeLifetime(\n objectData.flow,\n objectData.tank\n ),\n pos: { x: 0, y: 0 },\n addAtBack: false,\n behaviors: [\n {\n type: 'alpha',\n config: {\n alpha: {\n isStepped: false,\n list: [\n { time: 0, value: objectData.particleAlpha1 / 255.0 },\n { time: 1, value: objectData.particleAlpha2 / 255.0 },\n ],\n },\n },\n },\n {\n type: 'moveAcceleration',\n config: {\n accel: {\n x: objectData.particleGravityX,\n y: objectData.particleGravityY,\n },\n minStart: objectData.emitterForceMin,\n maxStart: objectData.emitterForceMax,\n // See _updateRotateFlagFromSpeed\n rotate:\n objectData.particleAngle1 === 0 &&\n objectData.particleAngle2 === 0 &&\n (objectData.particleGravityX !== 0 ||\n objectData.particleGravityY !== 0 ||\n objectData.emitterForceMin < 0 ||\n objectData.emitterForceMax < 0),\n },\n },\n {\n type: 'scale',\n config: {\n scale: {\n isStepped: false,\n list: [\n {\n time: 0,\n value:\n (objectData.particleSize1 / 100) *\n (1 + objectData.particleSizeRandomness1 / 100),\n },\n {\n time: 1,\n value:\n (objectData.particleSize2 / 100) *\n (1 + objectData.particleSizeRandomness2 / 100),\n },\n ],\n },\n },\n },\n {\n type: 'color',\n config: {\n color: {\n isStepped: false,\n list: [\n {\n time: 0,\n value: gdjs.rgbToHex(\n objectData.particleRed1,\n objectData.particleGreen1,\n objectData.particleBlue1\n ),\n },\n {\n time: 1,\n value: gdjs.rgbToHex(\n objectData.particleRed2,\n objectData.particleGreen2,\n objectData.particleBlue2\n ),\n },\n ],\n },\n },\n },\n {\n type: 'rotation',\n config: {\n accel: 0,\n // Angle of the spray cone\n minStart: -objectData.emitterAngleB / 2.0,\n maxStart: objectData.emitterAngleB / 2.0,\n // Rotation speed of the particles\n maxSpeed: objectData.particleAngle2,\n minSpeed: objectData.particleAngle1,\n },\n },\n {\n type: 'blendMode',\n config: {\n blendMode: objectData.additive ? 'ADD' : 'NORMAL',\n },\n },\n {\n type: 'textureSingle',\n config: {\n texture: particleTexture,\n },\n },\n {\n type: 'spawnShape',\n config: {\n type: 'torus',\n data: {\n affectRotation: false,\n innerRadius: 0,\n radius: objectData.zoneRadius,\n x: 0,\n y: 0,\n },\n },\n },\n ],\n };\n\n this.renderer = new PIXI.Container();\n // The embedded particle emitter is supposed to be the last minor version\n // of the version 5 of the particle emitter object\n // See source https://github.com/pixijs/particle-emitter/blob/v5.0.8/src/Emitter.ts\n this.emitter = new PIXI.particles.Emitter(this.renderer, configuration);\n this.start();\n const layer = instanceContainer.getLayer(runtimeObject.getLayer());\n if (layer) {\n layer\n .getRenderer()\n .addRendererObject(this.renderer, runtimeObject.getZOrder());\n }\n }\n\n getRendererObject() {\n return this.renderer;\n }\n\n update(delta: float): void {\n const wasEmitting = this.emitter.emit;\n this.emitter.update(delta);\n if (!this.started && wasEmitting) {\n this.started = true;\n }\n }\n\n setPosition(x: number, y: number): void {\n this.emitter.spawnPos.x = x;\n this.emitter.spawnPos.y = y;\n }\n\n setAngle(angle1: float, angle2: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('rotation');\n behavior.minStart = gdjs.toRad(angle1);\n behavior.maxStart = gdjs.toRad(angle2);\n }\n\n setForce(min: float, max: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('moveAcceleration');\n // If max force is zero, PIXI seems to not be able to compute correctly\n // the angle of the emitter, resulting in it staying at 0\u00B0 or 180\u00B0.\n // See https://github.com/4ian/GDevelop/issues/4312.\n behavior.maxStart = max || 0.000001;\n behavior.minStart = min;\n }\n\n setZoneRadius(radius: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('spawnShape');\n behavior.shape.radius = radius;\n }\n\n setLifeTime(min: float, max: float): void {\n this.emitter.minLifetime = min;\n this.emitter.maxLifetime = max;\n }\n\n setGravity(x: float, y: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('moveAcceleration');\n behavior.accel.x = x;\n behavior.accel.y = y;\n this._updateRotateFlagFromSpeed();\n }\n\n /**\n * When rotate from `moveAcceleration` is `true` the rotation is set\n * according to the speed direction. This is overriding the particle\n * rotation calculated by from `rotation`.\n */\n private _updateRotateFlagFromSpeed() {\n const rotation: any = this.emitter.getBehavior('rotation');\n const moveAcceleration: any = this.emitter.getBehavior(\n 'moveAcceleration'\n );\n moveAcceleration.rotate =\n rotation.minSpeed === 0 &&\n rotation.maxSpeed === 0 &&\n // This part is to avoid to do `atan` every frame when the object\n // direction doesn't change.\n (moveAcceleration.accel.x !== 0 ||\n moveAcceleration.accel.y !== 0 ||\n // Negative speeds need a 180\u00B0 rotation.\n moveAcceleration.minStart < 0 ||\n moveAcceleration.maxStart < 0);\n }\n\n setColor(\n r1: number,\n g1: number,\n b1: number,\n r2: number,\n g2: number,\n b2: number\n ): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('color');\n const first = behavior.list.first;\n\n const startColor = first.value;\n startColor.r = r1;\n startColor.g = g1;\n startColor.b = b1;\n\n first.next = first.next || {\n time: 1,\n value: {},\n };\n const endColor = first.next.value;\n endColor.r = r2;\n endColor.g = g2;\n endColor.b = b2;\n }\n\n setSize(size1: float, size2: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('scale');\n setBoundsValues(behavior.list, size1 / 100.0, size2 / 100.0);\n }\n\n setParticleRotationSpeed(min: float, max: float): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('rotation');\n behavior.minSpeed = gdjs.toRad(min);\n behavior.maxSpeed = gdjs.toRad(max);\n this._updateRotateFlagFromSpeed();\n }\n\n setMaxParticlesCount(count: float): void {\n this.emitter.maxParticles = count;\n }\n\n setAdditiveRendering(enabled: boolean): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('blendMode');\n behavior.value = enabled ? 'ADD' : 'NORMAL';\n }\n\n setAlpha(alpha1: number, alpha2: number): void {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('alpha');\n setBoundsValues(behavior.list, alpha1 / 255.0, alpha2 / 255.0);\n }\n\n setFlow(flow: number, tank: number): void {\n this.emitter.frequency =\n flow < 0\n ? ParticleEmitterObjectPixiRenderer.frequencyMinimumValue\n : 1.0 / flow;\n this.emitter.emitterLifetime = ParticleEmitterObjectPixiRenderer.computeLifetime(\n flow,\n tank\n );\n }\n\n resetEmission(flow: number, tank: number): void {\n this.setFlow(flow, tank);\n const wasEmitting = this.emitter.emit;\n // The only way to recompute emitter lifetime is to start the emitter.\n this.start();\n if (!wasEmitting) this.stop();\n }\n\n isTextureNameValid(\n texture: string,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ): boolean {\n const invalidPixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getInvalidPIXITexture();\n const pixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getPIXITexture(texture);\n return pixiTexture.valid && pixiTexture !== invalidPixiTexture;\n }\n\n setTextureName(\n texture: string,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ): void {\n const invalidPixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getInvalidPIXITexture();\n const pixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getPIXITexture(texture);\n if (pixiTexture.valid && pixiTexture !== invalidPixiTexture) {\n // Access private members of the behavior to apply changes right away.\n const behavior: any = this.emitter.getBehavior('textureSingle');\n behavior.texture = pixiTexture;\n }\n }\n\n getParticleCount(): integer {\n return this.emitter.particleCount;\n }\n\n stop(): void {\n this.emitter.emit = false;\n }\n\n start(): void {\n this.emitter.emit = true;\n }\n\n recreate(): void {\n this.emitter.cleanup();\n }\n\n destroy(): void {\n this.emitter.destroy();\n }\n\n hasStarted(): boolean {\n return this.started;\n }\n\n /**\n * @returns `true` at the end of emission or at the start if it's paused.\n * Returns false if there is no limit.\n */\n _mayHaveEndedEmission(): boolean {\n return (\n // No end can be reached if there is no flow.\n this.emitter.frequency >\n ParticleEmitterObjectPixiRenderer.frequencyMinimumValue &&\n // No end can be reached when there is no limit.\n this.emitter.emitterLifetime >= 0 &&\n // Pixi stops the emission at the end.\n !this.emitter.emit &&\n // Pixi reset `_emitterLife` to `emitterLifetime` at the end of emission\n // so there is no way to know if it is the end or the start.\n // @ts-ignore Use a private attribute.\n this.emitter._emitterLife === this.emitter.emitterLifetime\n );\n }\n\n static computeLifetime(flow: number, tank: number): float {\n if (tank < 0) return -1;\n else if (flow < 0) return 0.001;\n else return (tank + 0.1) / flow;\n }\n\n private static readonly frequencyMinimumValue = 0.0001;\n }\n\n // @ts-ignore - Register the class to let the engine use it.\n export const ParticleEmitterObjectRenderer = ParticleEmitterObjectPixiRenderer;\n export type ParticleEmitterObjectRenderer = ParticleEmitterObjectPixiRenderer;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(t){class s extends t.RuntimeObject{constructor(i,e){super(i,e);this._jumpForwardInTimeCompleted=!1;this._posDirty=!0;this._angleDirty=!0;this._forceDirty=!0;this._zoneRadiusDirty=!0;this._lifeTimeDirty=!0;this._gravityDirty=!0;this._colorDirty=!0;this._sizeDirty=!0;this._alphaDirty=!0;this._flowDirty=!0;this._tankDirty=!0;this._particleRotationSpeedDirty=!0;this._maxParticlesCountDirty=!0;this._additiveRenderingDirty=!0;this._renderer=new t.ParticleEmitterObjectRenderer(i,this,e),this.angleA=e.emitterAngleA,this.angleB=e.emitterAngleB,this.forceMin=e.emitterForceMin,this.forceMax=e.emitterForceMax,this.zoneRadius=e.zoneRadius,this.lifeTimeMin=e.particleLifeTimeMin,this.lifeTimeMax=e.particleLifeTimeMax,this.gravityX=e.particleGravityX,this.gravityY=e.particleGravityY,this.colorR1=e.particleRed1,this.colorR2=e.particleRed2,this.colorG1=e.particleGreen1,this.colorG2=e.particleGreen2,this.colorB1=e.particleBlue1,this.colorB2=e.particleBlue2,this.size1=e.particleSize1,this.size2=e.particleSize2,this.alpha1=e.particleAlpha1,this.alpha2=e.particleAlpha2,this.rendererType=e.rendererType,this.rendererParam1=e.rendererParam1,this.rendererParam2=e.rendererParam2,this.texture=e.textureParticleName,this.flow=e.flow,this.tank=e.tank,this.destroyWhenNoParticles=e.destroyWhenNoParticles,this.particleRotationMinSpeed=e.particleAngle1,this.particleRotationMaxSpeed=e.particleAngle2,this.maxParticlesCount=e.maxParticleNb,this.additiveRendering=e.additive,this.jumpForwardInTimeOnCreation=e.jumpForwardInTimeOnCreation,this._textureDirty=this.texture!=="",this.onCreated()}setX(i){this.x!==i&&(this._posDirty=!0),super.setX(i)}setY(i){this.y!==i&&(this._posDirty=!0),super.setY(i)}setAngle(i){this.angle!==i&&(this._angleDirty=!0),super.setAngle(i)}getRendererObject(){return this._renderer.getRendererObject()}updateFromObjectData(i,e){return i.emitterAngleA!==e.emitterAngleA&&this.setEmitterAngleA(e.emitterAngleA),i.emitterAngleB!==e.emitterAngleB&&this.setEmitterAngleB(e.emitterAngleB),i.emitterForceMin!==e.emitterForceMin&&this.setEmitterForceMin(e.emitterForceMin),i.particleAngle1!==e.particleAngle1&&this.setParticleRotationMinSpeed(e.particleAngle1),i.particleAngle2!==e.particleAngle2&&this.setParticleRotationMaxSpeed(e.particleAngle2),i.maxParticleNb!==e.maxParticleNb&&this.setMaxParticlesCount(e.maxParticleNb),i.additive!==e.additive&&this.setAdditiveRendering(e.additive),i.emitterForceMax!==e.emitterForceMax&&this.setEmitterForceMax(e.emitterForceMax),i.zoneRadius!==e.zoneRadius&&this.setZoneRadius(e.zoneRadius),i.particleLifeTimeMin!==e.particleLifeTimeMin&&this.setParticleLifeTimeMin(e.particleLifeTimeMin),i.particleLifeTimeMax!==e.particleLifeTimeMax&&this.setParticleLifeTimeMax(e.particleLifeTimeMax),i.particleGravityX!==e.particleGravityX&&this.setParticleGravityX(e.particleGravityX),i.particleGravityY!==e.particleGravityY&&this.setParticleGravityY(e.particleGravityY),i.particleRed1!==e.particleRed1&&this.setParticleRed1(e.particleRed1),i.particleRed2!==e.particleRed2&&this.setParticleRed2(e.particleRed2),i.particleGreen1!==e.particleGreen1&&this.setParticleGreen1(e.particleGreen1),i.particleGreen2!==e.particleGreen2&&this.setParticleGreen2(e.particleGreen2),i.particleBlue1!==e.particleBlue1&&this.setParticleBlue1(e.particleBlue1),i.particleBlue2!==e.particleBlue2&&this.setParticleBlue2(e.particleBlue2),i.particleSize1!==e.particleSize1&&this.setParticleSize1(e.particleSize1),i.particleSize2!==e.particleSize2&&this.setParticleSize2(e.particleSize2),i.particleAlpha1!==e.particleAlpha1&&this.setParticleAlpha1(e.particleAlpha1),i.particleAlpha2!==e.particleAlpha2&&this.setParticleAlpha2(e.particleAlpha2),i.textureParticleName!==e.textureParticleName&&this.setTexture(e.textureParticleName,this.getRuntimeScene()),i.flow!==e.flow&&this.setFlow(e.flow),i.tank!==e.tank&&this.setTank(e.tank),i.destroyWhenNoParticles!==e.destroyWhenNoParticles&&(this.destroyWhenNoParticles=e.destroyWhenNoParticles),(i.particleSizeRandomness1!==e.particleSizeRandomness1||i.particleSizeRandomness2!==e.particleSizeRandomness2||i.particleAngle1!==e.particleAngle1||i.particleAngle2!==e.particleAngle2||i.maxParticleNb!==e.maxParticleNb||i.additive!==e.additive||i.rendererType!==e.rendererType||i.rendererParam1!==e.rendererParam1||i.rendererParam2!==e.rendererParam2)&&(this.getInstanceContainer().getLayer(this.layer).getRenderer().removeRendererObject(this._renderer.getRendererObject()),this._renderer.destroy(),this._renderer=new t.ParticleEmitterObjectRenderer(this.getInstanceContainer(),this,e),this._posDirty=this._angleDirty=this._forceDirty=this._zoneRadiusDirty=!0,this._lifeTimeDirty=this._gravityDirty=this._colorDirty=this._sizeDirty=!0,this._alphaDirty=this._flowDirty=this._tankDirty=this._textureDirty=!0),!0}update(i){if(this._posDirty&&this._renderer.setPosition(this.getX(),this.getY()),this._particleRotationSpeedDirty&&this._renderer.setParticleRotationSpeed(this.particleRotationMinSpeed,this.particleRotationMaxSpeed),this._maxParticlesCountDirty&&this._renderer.setMaxParticlesCount(this.maxParticlesCount),this._additiveRenderingDirty&&this._renderer.setAdditiveRendering(this.additiveRendering),this._angleDirty){const e=this.getAngle();this._renderer.setAngle(e-this.angleB/2,e+this.angleB/2)}this._forceDirty&&this._renderer.setForce(this.forceMin,this.forceMax),this._zoneRadiusDirty&&this._renderer.setZoneRadius(this.zoneRadius),this._lifeTimeDirty&&this._renderer.setLifeTime(this.lifeTimeMin,this.lifeTimeMax),this._gravityDirty&&this._renderer.setGravity(this.gravityX,this.gravityY),this._colorDirty&&this._renderer.setColor(this.colorR1,this.colorG1,this.colorB1,this.colorR2,this.colorG2,this.colorB2),this._sizeDirty&&this._renderer.setSize(this.size1,this.size2),this._alphaDirty&&this._renderer.setAlpha(this.alpha1,this.alpha2),(this._flowDirty||this._tankDirty)&&this._renderer.resetEmission(this.flow,this.tank),this._textureDirty&&this._renderer.setTextureName(this.texture,i),this._posDirty=this._angleDirty=this._forceDirty=this._zoneRadiusDirty=!1,this._lifeTimeDirty=this._gravityDirty=this._colorDirty=this._sizeDirty=!1,this._alphaDirty=this._flowDirty=this._textureDirty=this._tankDirty=!1,this._additiveRenderingDirty=this._maxParticlesCountDirty=this._particleRotationSpeedDirty=!1,this._renderer.update(this.getElapsedTime()/1e3),this._renderer.hasStarted()&&this.getParticleCount()===0&&this.destroyWhenNoParticles&&this.deleteFromScene(i),this.jumpForwardInTimeOnCreation>0&&this._jumpForwardInTimeCompleted===!1&&(this._renderer.update(this.jumpForwardInTimeOnCreation),this._jumpForwardInTimeCompleted=!0)}onDestroyed(){this._renderer.destroy(),super.onDestroyed()}getEmitterForceMin(){return this.forceMin}setEmitterForceMin(i){i<0&&(i=0),this.forceMin!==i&&(this._forceDirty=!0,this.forceMin=i)}getEmitterForceMax(){return this.forceMax}setEmitterForceMax(i){i<0&&(i=0),this.forceMax!==i&&(this._forceDirty=!0,this.forceMax=i)}setParticleRotationMinSpeed(i){this.particleRotationMinSpeed!==i&&(this._particleRotationSpeedDirty=!0,this.particleRotationMinSpeed=i)}getParticleRotationMinSpeed(){return this.particleRotationMinSpeed}setParticleRotationMaxSpeed(i){this.particleRotationMaxSpeed!==i&&(this._particleRotationSpeedDirty=!0,this.particleRotationMaxSpeed=i)}getParticleRotationMaxSpeed(){return this.particleRotationMaxSpeed}setMaxParticlesCount(i){this.maxParticlesCount!==i&&(this._maxParticlesCountDirty=!0,this.maxParticlesCount=i)}getMaxParticlesCount(){return this.maxParticlesCount}setAdditiveRendering(i){this.additiveRendering!==i&&(this._additiveRenderingDirty=!0,this.additiveRendering=i)}getAdditiveRendering(){return this.additiveRendering}getEmitterAngle(){return(this.angleA+this.angleB)/2}setEmitterAngle(i){const e=this.getEmitterAngle();i!==e&&(this._angleDirty=!0,this.angleA+=i-e,this.angleB+=i-e)}getEmitterAngleA(){return this.angleA}setEmitterAngleA(i){this.angleA!==i&&(this._angleDirty=!0,this.angleA=i)}getEmitterAngleB(){return this.angleB}setEmitterAngleB(i){this.angleB!==i&&(this._angleDirty=!0,this.angleB=i)}getConeSprayAngle(){return this.getEmitterAngleB()}setConeSprayAngle(i){this.setEmitterAngleB(i)}getZoneRadius(){return this.zoneRadius}setZoneRadius(i){i<0&&(i=0),this.zoneRadius!==i&&i>0&&(this._zoneRadiusDirty=!0,this.zoneRadius=i)}getParticleLifeTimeMin(){return this.lifeTimeMin}setParticleLifeTimeMin(i){i<0&&(i=0),this.lifeTimeMin!==i&&(this._lifeTimeDirty=!0,this.lifeTimeMin=i)}getParticleLifeTimeMax(){return this.lifeTimeMax}setParticleLifeTimeMax(i){i<0&&(i=0),this.lifeTimeMax!==i&&(this._lifeTimeDirty=!0,this.lifeTimeMax=i)}getParticleGravityX(){return this.gravityX}setParticleGravityX(i){this.gravityX!==i&&(this._gravityDirty=!0,this.gravityX=i)}getParticleGravityY(){return this.gravityY}setParticleGravityY(i){this.gravityY!==i&&(this._gravityDirty=!0,this.gravityY=i)}getParticleGravityAngle(){return Math.atan2(this.gravityY,this.gravityX)*180/Math.PI}setParticleGravityAngle(i){if(this.getParticleGravityAngle()!==i){this._gravityDirty=!0;const r=this.getParticleGravityLength();this.gravityX=r*Math.cos(i*Math.PI/180),this.gravityY=r*Math.sin(i*Math.PI/180)}}getParticleGravityLength(){return Math.sqrt(this.gravityX*this.gravityX+this.gravityY*this.gravityY)}setParticleGravityLength(i){i<0&&(i=0);const e=this.getParticleGravityLength();e!==i&&(this._gravityDirty=!0,this.gravityX*=i/e,this.gravityY*=i/e)}getParticleRed1(){return this.colorR1}setParticleRed1(i){i<0&&(i=0),i>255&&(i=255),this.colorR1!==i&&(this._colorDirty=!0,this.colorR1=i)}getParticleRed2(){return this.colorR2}setParticleRed2(i){i<0&&(i=0),i>255&&(i=255),this.colorR2!==i&&(this._colorDirty=!0,this.colorR2=i)}getParticleGreen1(){return this.colorG1}setParticleGreen1(i){i<0&&(i=0),i>255&&(i=255),this.colorG1!==i&&(this._colorDirty=!0,this.colorG1=i)}getParticleGreen2(){return this.colorG2}setParticleGreen2(i){i<0&&(i=0),i>255&&(i=255),this.colorG2!==i&&(this._colorDirty=!0,this.colorG2=i)}getParticleBlue1(){return this.colorB1}setParticleBlue1(i){i<0&&(i=0),i>255&&(i=255),this.colorB1!==i&&(this._colorDirty=!0,this.colorB1=i)}getParticleBlue2(){return this.colorB2}setParticleBlue2(i){i<0&&(i=0),i>255&&(i=255),this.colorB2!==i&&(this._colorDirty=!0,this.colorB2=i)}setParticleColor1(i){const e=i.split(";");e.length<3||(this.setParticleRed1(parseInt(e[0],10)),this.setParticleGreen1(parseInt(e[1],10)),this.setParticleBlue1(parseInt(e[2],10)))}setParticleColor2(i){const e=i.split(";");e.length<3||(this.setParticleRed2(parseInt(e[0],10)),this.setParticleGreen2(parseInt(e[1],10)),this.setParticleBlue2(parseInt(e[2],10)))}getParticleSize1(){return this.size1}setParticleSize1(i){i<0&&(i=0),this.size1!==i&&(this._sizeDirty=!0,this.size1=i)}getParticleSize2(){return this.size2}setParticleSize2(i){this.size2!==i&&(this._sizeDirty=!0,this.size2=i)}getParticleAlpha1(){return this.alpha1}setParticleAlpha1(i){this.alpha1!==i&&(this._alphaDirty=!0,this.alpha1=i)}getParticleAlpha2(){return this.alpha2}setParticleAlpha2(i){this.alpha2!==i&&(this._alphaDirty=!0,this.alpha2=i)}startEmission(){this._renderer.start()}stopEmission(){this._renderer.stop()}isEmitting(){return this._renderer.emitter.emit}noMoreParticles(){return!this.isEmitting()}recreateParticleSystem(){this._renderer.recreate()}getFlow(){return this.flow}setFlow(i){this.flow!==i&&(this.flow=i,this._flowDirty=!0)}getParticleCount(){return this._renderer.getParticleCount()}getTank(){return this.tank}setTank(i){this.tank=i,this._tankDirty=!0}getTexture(){return this.texture}setTexture(i,e){this.texture!==i&&this._renderer.isTextureNameValid(i,e)&&(this.texture=i,this._textureDirty=!0)}jumpEmitterForwardInTime(i){this._renderer.update(i)}}t.ParticleEmitterObject=s,t.registerObject("ParticleSystem::ParticleEmitter",t.ParticleEmitterObject)})(gdjs||(gdjs={}));
|
|
1
|
+
var gdjs;(function(t){class s extends t.RuntimeObject{constructor(e,i){super(e,i);this._jumpForwardInTimeCompleted=!1;this._posDirty=!0;this._angleDirty=!0;this._forceDirty=!0;this._zoneRadiusDirty=!0;this._lifeTimeDirty=!0;this._gravityDirty=!0;this._colorDirty=!0;this._sizeDirty=!0;this._alphaDirty=!0;this._flowDirty=!0;this._tankDirty=!0;this._particleRotationSpeedDirty=!0;this._maxParticlesCountDirty=!0;this._additiveRenderingDirty=!0;this._isEmissionPaused=!1;this._renderer=new t.ParticleEmitterObjectRenderer(e,this,i),this.angleA=i.emitterAngleA,this.angleB=i.emitterAngleB,this.forceMin=i.emitterForceMin,this.forceMax=i.emitterForceMax,this.zoneRadius=i.zoneRadius,this.lifeTimeMin=i.particleLifeTimeMin,this.lifeTimeMax=i.particleLifeTimeMax,this.gravityX=i.particleGravityX,this.gravityY=i.particleGravityY,this.colorR1=i.particleRed1,this.colorR2=i.particleRed2,this.colorG1=i.particleGreen1,this.colorG2=i.particleGreen2,this.colorB1=i.particleBlue1,this.colorB2=i.particleBlue2,this.size1=i.particleSize1,this.size2=i.particleSize2,this.alpha1=i.particleAlpha1,this.alpha2=i.particleAlpha2,this.rendererType=i.rendererType,this.rendererParam1=i.rendererParam1,this.rendererParam2=i.rendererParam2,this.texture=i.textureParticleName,this.flow=i.flow,this.tank=i.tank,this.destroyWhenNoParticles=i.destroyWhenNoParticles,this.particleRotationMinSpeed=i.particleAngle1,this.particleRotationMaxSpeed=i.particleAngle2,this.maxParticlesCount=i.maxParticleNb,this.additiveRendering=i.additive,this.jumpForwardInTimeOnCreation=i.jumpForwardInTimeOnCreation,this._textureDirty=this.texture!=="",this.onCreated()}setX(e){this.x!==e&&(this._posDirty=!0),super.setX(e)}setY(e){this.y!==e&&(this._posDirty=!0),super.setY(e)}setAngle(e){this.angle!==e&&(this._angleDirty=!0),super.setAngle(e)}getRendererObject(){return this._renderer.getRendererObject()}updateFromObjectData(e,i){return e.emitterAngleA!==i.emitterAngleA&&this.setEmitterAngleA(i.emitterAngleA),e.emitterAngleB!==i.emitterAngleB&&this.setEmitterAngleB(i.emitterAngleB),e.emitterForceMin!==i.emitterForceMin&&this.setEmitterForceMin(i.emitterForceMin),e.particleAngle1!==i.particleAngle1&&this.setParticleRotationMinSpeed(i.particleAngle1),e.particleAngle2!==i.particleAngle2&&this.setParticleRotationMaxSpeed(i.particleAngle2),e.maxParticleNb!==i.maxParticleNb&&this.setMaxParticlesCount(i.maxParticleNb),e.additive!==i.additive&&this.setAdditiveRendering(i.additive),e.emitterForceMax!==i.emitterForceMax&&this.setEmitterForceMax(i.emitterForceMax),e.zoneRadius!==i.zoneRadius&&this.setZoneRadius(i.zoneRadius),e.particleLifeTimeMin!==i.particleLifeTimeMin&&this.setParticleLifeTimeMin(i.particleLifeTimeMin),e.particleLifeTimeMax!==i.particleLifeTimeMax&&this.setParticleLifeTimeMax(i.particleLifeTimeMax),e.particleGravityX!==i.particleGravityX&&this.setParticleGravityX(i.particleGravityX),e.particleGravityY!==i.particleGravityY&&this.setParticleGravityY(i.particleGravityY),e.particleRed1!==i.particleRed1&&this.setParticleRed1(i.particleRed1),e.particleRed2!==i.particleRed2&&this.setParticleRed2(i.particleRed2),e.particleGreen1!==i.particleGreen1&&this.setParticleGreen1(i.particleGreen1),e.particleGreen2!==i.particleGreen2&&this.setParticleGreen2(i.particleGreen2),e.particleBlue1!==i.particleBlue1&&this.setParticleBlue1(i.particleBlue1),e.particleBlue2!==i.particleBlue2&&this.setParticleBlue2(i.particleBlue2),e.particleSize1!==i.particleSize1&&this.setParticleSize1(i.particleSize1),e.particleSize2!==i.particleSize2&&this.setParticleSize2(i.particleSize2),e.particleAlpha1!==i.particleAlpha1&&this.setParticleAlpha1(i.particleAlpha1),e.particleAlpha2!==i.particleAlpha2&&this.setParticleAlpha2(i.particleAlpha2),e.textureParticleName!==i.textureParticleName&&this.setTexture(i.textureParticleName,this.getRuntimeScene()),e.flow!==i.flow&&this.setFlow(i.flow),e.tank!==i.tank&&this.setTank(i.tank),e.destroyWhenNoParticles!==i.destroyWhenNoParticles&&(this.destroyWhenNoParticles=i.destroyWhenNoParticles),(e.particleSizeRandomness1!==i.particleSizeRandomness1||e.particleSizeRandomness2!==i.particleSizeRandomness2||e.particleAngle1!==i.particleAngle1||e.particleAngle2!==i.particleAngle2||e.maxParticleNb!==i.maxParticleNb||e.additive!==i.additive||e.rendererType!==i.rendererType||e.rendererParam1!==i.rendererParam1||e.rendererParam2!==i.rendererParam2)&&(this.getInstanceContainer().getLayer(this.layer).getRenderer().removeRendererObject(this._renderer.getRendererObject()),this._renderer.destroy(),this._renderer=new t.ParticleEmitterObjectRenderer(this.getInstanceContainer(),this,i),this._posDirty=this._angleDirty=this._forceDirty=this._zoneRadiusDirty=!0,this._lifeTimeDirty=this._gravityDirty=this._colorDirty=this._sizeDirty=!0,this._alphaDirty=this._flowDirty=this._tankDirty=this._textureDirty=!0),!0}getNetworkSyncData(){return{...super.getNetworkSyncData(),prms:this.particleRotationMinSpeed,prmx:this.particleRotationMaxSpeed,mpc:this.maxParticlesCount,addr:this.additiveRendering,angb:this.angleB,formin:this.forceMin,formax:this.forceMax,zr:this.zoneRadius,ltmin:this.lifeTimeMin,ltmax:this.lifeTimeMax,gravx:this.gravityX,gravy:this.gravityY,colr1:this.colorR1,colr2:this.colorR2,colg1:this.colorG1,colg2:this.colorG2,colb1:this.colorB1,colb2:this.colorB2,size1:this.size1,size2:this.size2,alp1:this.alpha1,alp2:this.alpha2,flow:this.flow,tank:this.tank,text:this.texture,paused:this._isEmissionPaused}}updateFromNetworkSyncData(e){super.updateFromNetworkSyncData(e),e.x!==void 0&&this.setX(e.x),e.y!==void 0&&this.setY(e.y),e.a!==void 0&&this.setAngle(e.a),e.prms!==void 0&&this.setParticleRotationMinSpeed(e.prms),e.prmx!==void 0&&this.setParticleRotationMaxSpeed(e.prmx),e.mpc!==void 0&&this.setMaxParticlesCount(e.mpc),e.addr!==void 0&&this.setAdditiveRendering(e.addr),e.angb!==void 0&&this.setEmitterAngleB(e.angb),e.formin!==void 0&&this.setEmitterForceMin(e.formin),e.formax!==void 0&&this.setEmitterForceMax(e.formax),e.zr!==void 0&&this.setZoneRadius(e.zr),e.ltmin!==void 0&&this.setParticleLifeTimeMin(e.ltmin),e.ltmax!==void 0&&this.setParticleLifeTimeMax(e.ltmax),e.gravx!==void 0&&this.setParticleGravityX(e.gravx),e.gravy!==void 0&&this.setParticleGravityY(e.gravy),e.colr1!==void 0&&this.setParticleRed1(e.colr1),e.colr2!==void 0&&this.setParticleRed2(e.colr2),e.colg1!==void 0&&this.setParticleGreen1(e.colg1),e.colg2!==void 0&&this.setParticleGreen2(e.colg2),e.colb1!==void 0&&this.setParticleBlue1(e.colb1),e.colb2!==void 0&&this.setParticleBlue2(e.colb2),e.size1!==void 0&&this.setParticleSize1(e.size1),e.size2!==void 0&&this.setParticleSize2(e.size2),e.alp1!==void 0&&this.setParticleAlpha1(e.alp1),e.alp2!==void 0&&this.setParticleAlpha2(e.alp2),e.flow!==void 0&&this.setFlow(e.flow),e.tank!==void 0&&this.setTank(e.tank),e.text!==void 0&&this.setTexture(e.text,this.getRuntimeScene()),e.paused!==void 0&&(e.paused?this.stopEmission():this.startEmission())}update(e){if(this._posDirty&&this._renderer.setPosition(this.getX(),this.getY()),this._particleRotationSpeedDirty&&this._renderer.setParticleRotationSpeed(this.particleRotationMinSpeed,this.particleRotationMaxSpeed),this._maxParticlesCountDirty&&this._renderer.setMaxParticlesCount(this.maxParticlesCount),this._additiveRenderingDirty&&this._renderer.setAdditiveRendering(this.additiveRendering),this._angleDirty){const i=this.getAngle();this._renderer.setAngle(i-this.angleB/2,i+this.angleB/2)}this._forceDirty&&this._renderer.setForce(this.forceMin,this.forceMax),this._zoneRadiusDirty&&this._renderer.setZoneRadius(this.zoneRadius),this._lifeTimeDirty&&this._renderer.setLifeTime(this.lifeTimeMin,this.lifeTimeMax),this._gravityDirty&&this._renderer.setGravity(this.gravityX,this.gravityY),this._colorDirty&&this._renderer.setColor(this.colorR1,this.colorG1,this.colorB1,this.colorR2,this.colorG2,this.colorB2),this._sizeDirty&&this._renderer.setSize(this.size1,this.size2),this._alphaDirty&&this._renderer.setAlpha(this.alpha1,this.alpha2),(this._flowDirty||this._tankDirty)&&this._renderer.resetEmission(this.flow,this.tank),this._textureDirty&&this._renderer.setTextureName(this.texture,e),this._posDirty=this._angleDirty=this._forceDirty=this._zoneRadiusDirty=!1,this._lifeTimeDirty=this._gravityDirty=this._colorDirty=this._sizeDirty=!1,this._alphaDirty=this._flowDirty=this._textureDirty=this._tankDirty=!1,this._additiveRenderingDirty=this._maxParticlesCountDirty=this._particleRotationSpeedDirty=!1,this._renderer.update(this.getElapsedTime()/1e3),this.destroyWhenNoParticles&&this.getParticleCount()===0&&this._renderer.hasStarted()&&!this._isEmissionPaused&&this._renderer._mayHaveEndedEmission()&&this.deleteFromScene(e),this.jumpForwardInTimeOnCreation>0&&this._jumpForwardInTimeCompleted===!1&&(this._renderer.update(this.jumpForwardInTimeOnCreation),this._jumpForwardInTimeCompleted=!0)}onDestroyed(){this._renderer.destroy(),super.onDestroyed()}getEmitterForceMin(){return this.forceMin}setEmitterForceMin(e){e<0&&(e=0),this.forceMin!==e&&(this._forceDirty=!0,this.forceMin=e)}getEmitterForceMax(){return this.forceMax}setEmitterForceMax(e){e<0&&(e=0),this.forceMax!==e&&(this._forceDirty=!0,this.forceMax=e)}setParticleRotationMinSpeed(e){this.particleRotationMinSpeed!==e&&(this._particleRotationSpeedDirty=!0,this.particleRotationMinSpeed=e)}getParticleRotationMinSpeed(){return this.particleRotationMinSpeed}setParticleRotationMaxSpeed(e){this.particleRotationMaxSpeed!==e&&(this._particleRotationSpeedDirty=!0,this.particleRotationMaxSpeed=e)}getParticleRotationMaxSpeed(){return this.particleRotationMaxSpeed}setMaxParticlesCount(e){this.maxParticlesCount!==e&&(this._maxParticlesCountDirty=!0,this.maxParticlesCount=e)}getMaxParticlesCount(){return this.maxParticlesCount}setAdditiveRendering(e){this.additiveRendering!==e&&(this._additiveRenderingDirty=!0,this.additiveRendering=e)}getAdditiveRendering(){return this.additiveRendering}getEmitterAngle(){return(this.angleA+this.angleB)/2}setEmitterAngle(e){const i=this.getEmitterAngle();e!==i&&(this._angleDirty=!0,this.angleA+=e-i,this.angleB+=e-i)}getEmitterAngleA(){return this.angleA}setEmitterAngleA(e){this.angleA!==e&&(this._angleDirty=!0,this.angleA=e)}getEmitterAngleB(){return this.angleB}setEmitterAngleB(e){this.angleB!==e&&(this._angleDirty=!0,this.angleB=e)}getConeSprayAngle(){return this.getEmitterAngleB()}setConeSprayAngle(e){this.setEmitterAngleB(e)}getZoneRadius(){return this.zoneRadius}setZoneRadius(e){e<0&&(e=0),this.zoneRadius!==e&&e>0&&(this._zoneRadiusDirty=!0,this.zoneRadius=e)}getParticleLifeTimeMin(){return this.lifeTimeMin}setParticleLifeTimeMin(e){e<0&&(e=0),this.lifeTimeMin!==e&&(this._lifeTimeDirty=!0,this.lifeTimeMin=e)}getParticleLifeTimeMax(){return this.lifeTimeMax}setParticleLifeTimeMax(e){e<0&&(e=0),this.lifeTimeMax!==e&&(this._lifeTimeDirty=!0,this.lifeTimeMax=e)}getParticleGravityX(){return this.gravityX}setParticleGravityX(e){this.gravityX!==e&&(this._gravityDirty=!0,this.gravityX=e)}getParticleGravityY(){return this.gravityY}setParticleGravityY(e){this.gravityY!==e&&(this._gravityDirty=!0,this.gravityY=e)}getParticleGravityAngle(){return Math.atan2(this.gravityY,this.gravityX)*180/Math.PI}setParticleGravityAngle(e){if(this.getParticleGravityAngle()!==e){this._gravityDirty=!0;const r=this.getParticleGravityLength();this.gravityX=r*Math.cos(e*Math.PI/180),this.gravityY=r*Math.sin(e*Math.PI/180)}}getParticleGravityLength(){return Math.sqrt(this.gravityX*this.gravityX+this.gravityY*this.gravityY)}setParticleGravityLength(e){e<0&&(e=0);const i=this.getParticleGravityLength();i!==e&&(this._gravityDirty=!0,this.gravityX*=e/i,this.gravityY*=e/i)}getParticleRed1(){return this.colorR1}setParticleRed1(e){e<0&&(e=0),e>255&&(e=255),this.colorR1!==e&&(this._colorDirty=!0,this.colorR1=e)}getParticleRed2(){return this.colorR2}setParticleRed2(e){e<0&&(e=0),e>255&&(e=255),this.colorR2!==e&&(this._colorDirty=!0,this.colorR2=e)}getParticleGreen1(){return this.colorG1}setParticleGreen1(e){e<0&&(e=0),e>255&&(e=255),this.colorG1!==e&&(this._colorDirty=!0,this.colorG1=e)}getParticleGreen2(){return this.colorG2}setParticleGreen2(e){e<0&&(e=0),e>255&&(e=255),this.colorG2!==e&&(this._colorDirty=!0,this.colorG2=e)}getParticleBlue1(){return this.colorB1}setParticleBlue1(e){e<0&&(e=0),e>255&&(e=255),this.colorB1!==e&&(this._colorDirty=!0,this.colorB1=e)}getParticleBlue2(){return this.colorB2}setParticleBlue2(e){e<0&&(e=0),e>255&&(e=255),this.colorB2!==e&&(this._colorDirty=!0,this.colorB2=e)}setParticleColor1(e){const i=e.split(";");i.length<3||(this.setParticleRed1(parseInt(i[0],10)),this.setParticleGreen1(parseInt(i[1],10)),this.setParticleBlue1(parseInt(i[2],10)))}setParticleColor2(e){const i=e.split(";");i.length<3||(this.setParticleRed2(parseInt(i[0],10)),this.setParticleGreen2(parseInt(i[1],10)),this.setParticleBlue2(parseInt(i[2],10)))}getParticleSize1(){return this.size1}setParticleSize1(e){e<0&&(e=0),this.size1!==e&&(this._sizeDirty=!0,this.size1=e)}getParticleSize2(){return this.size2}setParticleSize2(e){this.size2!==e&&(this._sizeDirty=!0,this.size2=e)}getParticleAlpha1(){return this.alpha1}setParticleAlpha1(e){this.alpha1!==e&&(this._alphaDirty=!0,this.alpha1=e)}getParticleAlpha2(){return this.alpha2}setParticleAlpha2(e){this.alpha2!==e&&(this._alphaDirty=!0,this.alpha2=e)}startEmission(){this._isEmissionPaused=!1,this._renderer.start()}stopEmission(){this._isEmissionPaused=!0,this._renderer.stop()}isEmitting(){return this._renderer.emitter.emit}noMoreParticles(){return!this.isEmitting()}recreateParticleSystem(){this._renderer.recreate()}getFlow(){return this.flow}setFlow(e){this.flow!==e&&(this.flow=e,this._flowDirty=!0)}getParticleCount(){return this._renderer.getParticleCount()}getTank(){return this.tank}setTank(e){this.tank=e,this._tankDirty=!0}getTexture(){return this.texture}setTexture(e,i){this.texture!==e&&this._renderer.isTextureNameValid(e,i)&&(this.texture=e,this._textureDirty=!0)}jumpEmitterForwardInTime(e){this._renderer.update(e)}}t.ParticleEmitterObject=s,t.registerObject("ParticleSystem::ParticleEmitter",t.ParticleEmitterObject)})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=particleemitterobject.js.map
|