22 "author" : " " ,
33 "category" : " Visual effect" ,
44 "extensionNamespace" : " " ,
5- "gdevelopVersion" : " >=5.5.222" ,
65 "fullName" : " 3D particle emitter" ,
6+ "gdevelopVersion" : " >=5.5.222" ,
77 "helpPath" : " " ,
88 "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWZpcmUiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTcuNjYgMTEuMkMxNy40MyAxMC45IDE3LjE1IDEwLjY0IDE2Ljg5IDEwLjM4QzE2LjIyIDkuNzggMTUuNDYgOS4zNSAxNC44MiA4LjcyQzEzLjMzIDcuMjYgMTMgNC44NSAxMy45NSAzQzEzIDMuMjMgMTIuMTcgMy43NSAxMS40NiA0LjMyQzguODcgNi40IDcuODUgMTAuMDcgOS4wNyAxMy4yMkM5LjExIDEzLjMyIDkuMTUgMTMuNDIgOS4xNSAxMy41NUM5LjE1IDEzLjc3IDkgMTMuOTcgOC44IDE0LjA1QzguNTcgMTQuMTUgOC4zMyAxNC4wOSA4LjE0IDEzLjkzQzguMDggMTMuODggOC4wNCAxMy44MyA4IDEzLjc2QzYuODcgMTIuMzMgNi42OSAxMC4yOCA3LjQ1IDguNjRDNS43OCAxMCA0Ljg3IDEyLjMgNSAxNC40N0M1LjA2IDE0Ljk3IDUuMTIgMTUuNDcgNS4yOSAxNS45N0M1LjQzIDE2LjU3IDUuNyAxNy4xNyA2IDE3LjdDNy4wOCAxOS40MyA4Ljk1IDIwLjY3IDEwLjk2IDIwLjkyQzEzLjEgMjEuMTkgMTUuMzkgMjAuOCAxNy4wMyAxOS4zMkMxOC44NiAxNy42NiAxOS41IDE1IDE4LjU2IDEyLjcyTDE4LjQzIDEyLjQ2QzE4LjIyIDEyIDE3LjY2IDExLjIgMTcuNjYgMTEuMk0xNC41IDE3LjVDMTQuMjIgMTcuNzQgMTMuNzYgMTggMTMuNCAxOC4xQzEyLjI4IDE4LjUgMTEuMTYgMTcuOTQgMTAuNSAxNy4yOEMxMS42OSAxNyAxMi40IDE2LjEyIDEyLjYxIDE1LjIzQzEyLjc4IDE0LjQzIDEyLjQ2IDEzLjc3IDEyLjMzIDEzQzEyLjIxIDEyLjI2IDEyLjIzIDExLjYzIDEyLjUgMTAuOTRDMTIuNjkgMTEuMzIgMTIuODkgMTEuNyAxMy4xMyAxMkMxMy45IDEzIDE1LjExIDEzLjQ0IDE1LjM3IDE0LjhDMTUuNDEgMTQuOTQgMTUuNDMgMTUuMDggMTUuNDMgMTUuMjNDMTUuNDYgMTYuMDUgMTUuMSAxNi45NSAxNC41IDE3LjVIMTQuNVoiIC8+PC9zdmc+",
99 "name" : " ParticleEmitter3D" ,
1010 "previewIconUrl" : " https://asset-resources.gdevelop.io/public-resources/Icons/f2e5a34bf465f781866677762d385d6c8e9e8d203383f2df9a3b7e0fad6a2cb5_fire.svg" ,
1111 "shortDescription" : " Display a large number of particles to create visual effects." ,
12- "version" : " 2.1.0 " ,
12+ "version" : " 2.1.1 " ,
1313 "description" : [
1414 " Particle emitters can be used to display:" ,
1515 " - Fire" ,
7171 " const threeObject3D = this.get3DRendererObject();" ,
7272 " " ,
7373 " threeObject3D.rotation.set(" ,
74- " gdjs.toRad(this._object.getRotationX())," ,
74+ " // TODO The rotation on X goes the wrong way." ,
75+ " // Increment the major and remove this sign." ,
76+ " - gdjs.toRad(this._object.getRotationX())," ,
7577 " gdjs.toRad(this._object.getRotationY())," ,
76- " - gdjs.toRad(this._object.angle)" ,
78+ " gdjs.toRad(this._object.angle)" ,
7779 " );" ,
7880 " " ,
7981 " threeObject3D.position.set(" ,
8082 " this._object.getX()," ,
81- " - this._object.getY()," ,
83+ " this._object.getY()," ,
8284 " this._object.getZ()" ,
8385 " );" ,
8486 " " ,
67836785 "is3D" : true ,
67846786 "isUsingLegacyInstancesRenderer" : true ,
67856787 "name" : " ParticleEmitter3D" ,
6788+ "objects" : [
6789+ {
6790+ "adaptCollisionMaskAutomatically" : true ,
6791+ "assetStoreId" : " " ,
6792+ "name" : " Particle" ,
6793+ "type" : " Sprite" ,
6794+ "updateIfNotVisible" : false ,
6795+ "variables" : [],
6796+ "effects" : [],
6797+ "behaviors" : [],
6798+ "animations" : [
6799+ {
6800+ "name" : " Image" ,
6801+ "useMultipleDirections" : false ,
6802+ "directions" : [
6803+ {
6804+ "looping" : false ,
6805+ "timeBetweenFrames" : 0.08 ,
6806+ "sprites" : []
6807+ }
6808+ ]
6809+ }
6810+ ]
6811+ }
6812+ ],
6813+ "objectsFolderStructure" : {
6814+ "folderName" : " __ROOT" ,
6815+ "children" : [
6816+ {
6817+ "objectName" : " Particle"
6818+ }
6819+ ]
6820+ },
6821+ "objectsGroups" : [],
6822+ "layers" : [
6823+ {
6824+ "ambientLightColorB" : 200 ,
6825+ "ambientLightColorG" : 200 ,
6826+ "ambientLightColorR" : 200 ,
6827+ "camera3DFarPlaneDistance" : 10000 ,
6828+ "camera3DFieldOfView" : 45 ,
6829+ "camera3DNearPlaneDistance" : 3 ,
6830+ "cameraType" : " " ,
6831+ "followBaseLayerCamera" : false ,
6832+ "isLightingLayer" : false ,
6833+ "isLocked" : false ,
6834+ "name" : " " ,
6835+ "renderingType" : " " ,
6836+ "visibility" : true ,
6837+ "cameras" : [
6838+ {
6839+ "defaultSize" : true ,
6840+ "defaultViewport" : true ,
6841+ "height" : 0 ,
6842+ "viewportBottom" : 1 ,
6843+ "viewportLeft" : 0 ,
6844+ "viewportRight" : 1 ,
6845+ "viewportTop" : 0 ,
6846+ "width" : 0
6847+ }
6848+ ],
6849+ "effects" : []
6850+ }
6851+ ],
6852+ "instances" : [],
67866853 "eventsFunctions" : [
67876854 {
67886855 "fullName" : " " ,
69116978 " " ,
69126979 " // This is a hack that may break in future releases." ,
69136980 " // Replace the group that would hold children objects by the emmiter." ,
6914- " const layer = gameScene .getLayer(object.getLayer());" ,
6981+ " const layer = object.getInstanceContainer() .getLayer(object.getLayer());" ,
69156982 " const group = object.getRenderer()._threeGroup;" ,
69166983 " layer.getRenderer().remove3DRendererObject(group);" ,
69176984 " particleSystem.emitter.position.copy(group.position);" ,
70017068 " for (const layerName of layerNames) {" ,
70027069 " const layer = gameScene.getLayer(layerName);" ,
70037070 " if (layer.__particleEmmiter3DExtension) {" ,
7004- " layer.__particleEmmiter3DExtension.batchSystem.update(object .getElapsedTime() / 1000);" ,
7071+ " layer.__particleEmmiter3DExtension.batchSystem.update(layer .getElapsedTime() / 1000);" ,
70057072 " }" ,
70067073 " }" ,
70077074 " }"
74497516 " for (const layerName of layerNames) {" ,
74507517 " const layer = gameScene.getLayer(layerName);" ,
74517518 " if (layer.__particleEmmiter3DExtension) {" ,
7452- " layer.__particleEmmiter3DExtension.batchSystem.update(object .getElapsedTime() / 1000);" ,
7519+ " layer.__particleEmmiter3DExtension.batchSystem.update(layer .getElapsedTime() / 1000);" ,
74537520 " }" ,
74547521 " }" ,
74557522 " }"
74897556 " // Here runtimeScene is the gdjs.CustomRuntimeObjectInstanceContainer inside the custom object." ,
74907557 " const gameScene = object.getRuntimeScene();" ,
74917558 " " ,
7492- " const layer = gameScene.getLayer(object.getLayer());" ,
7559+ " let rootObject = object;" ,
7560+ " while (rootObject.getInstanceContainer().getOwner) {" ,
7561+ " rootObject = rootObject.getInstanceContainer().getOwner();" ,
7562+ " }" ,
7563+ " " ,
7564+ " const layer = gameScene.getLayer(rootObject.getLayer());" ,
74937565 " layer.__particleEmmiter3DExtension = layer.__particleEmmiter3DExtension || {};" ,
74947566 " if (!layer.__particleEmmiter3DExtension.batchSystem) {" ,
74957567 " const batchSystem = new gdjs.__particleEmmiter3DExtension.BatchedRenderer();" ,
7568+ " batchSystem.scale.y *= -1;" ,
74967569 " const threeScene = layer.getRenderer().getThreeScene();" ,
74977570 " if (threeScene) {" ,
74987571 " threeScene.add(batchSystem);" ,
75367609 ],
75377610 "parameterObjects" : " Object" ,
75387611 "useStrict" : true ,
7539- "eventsSheetExpanded" : false
7612+ "eventsSheetExpanded" : true
75407613 }
75417614 ],
75427615 "parameters" : [
97589831 "hidden" : true ,
97599832 "name" : " RotationY"
97609833 }
9761- ],
9762- "objects" : [
9763- {
9764- "adaptCollisionMaskAutomatically" : true ,
9765- "assetStoreId" : " " ,
9766- "name" : " Particle" ,
9767- "type" : " Sprite" ,
9768- "updateIfNotVisible" : false ,
9769- "variables" : [],
9770- "effects" : [],
9771- "behaviors" : [],
9772- "animations" : [
9773- {
9774- "name" : " Image" ,
9775- "useMultipleDirections" : false ,
9776- "directions" : [
9777- {
9778- "looping" : false ,
9779- "timeBetweenFrames" : 0.08 ,
9780- "sprites" : []
9781- }
9782- ]
9783- }
9784- ]
9785- }
9786- ],
9787- "objectsFolderStructure" : {
9788- "folderName" : " __ROOT" ,
9789- "children" : [
9790- {
9791- "objectName" : " Particle"
9792- }
9793- ]
9794- },
9795- "objectsGroups" : [],
9796- "layers" : [
9797- {
9798- "ambientLightColorB" : 200 ,
9799- "ambientLightColorG" : 200 ,
9800- "ambientLightColorR" : 200 ,
9801- "camera3DFarPlaneDistance" : 10000 ,
9802- "camera3DFieldOfView" : 45 ,
9803- "camera3DNearPlaneDistance" : 3 ,
9804- "cameraType" : " " ,
9805- "followBaseLayerCamera" : false ,
9806- "isLightingLayer" : false ,
9807- "isLocked" : false ,
9808- "name" : " " ,
9809- "renderingType" : " " ,
9810- "visibility" : true ,
9811- "cameras" : [
9812- {
9813- "defaultSize" : true ,
9814- "defaultViewport" : true ,
9815- "height" : 0 ,
9816- "viewportBottom" : 1 ,
9817- "viewportLeft" : 0 ,
9818- "viewportRight" : 1 ,
9819- "viewportTop" : 0 ,
9820- "width" : 0
9821- }
9822- ],
9823- "effects" : []
9824- }
9825- ],
9826- "instances" : []
9834+ ]
98279835 }
98289836 ]
98299837}
0 commit comments