diff --git a/examples/3d-car-coin-hunt/3d-car-coin-hunt.json b/examples/3d-car-coin-hunt/3d-car-coin-hunt.json index bcbc450fb..920dc3645 100644 --- a/examples/3d-car-coin-hunt/3d-car-coin-hunt.json +++ b/examples/3d-car-coin-hunt/3d-car-coin-hunt.json @@ -1,7 +1,7 @@ { "firstLayout": "Menu", "gdVersion": { - "build": 235, + "build": 236, "major": 5, "minor": 5, "revision": 0 @@ -4306,7 +4306,7 @@ "isLightingLayer": false, "isLocked": false, "name": "", - "renderingType": "2d+3d", + "renderingType": "", "visibility": true, "cameras": [ { @@ -4321,26 +4321,16 @@ } ], "effects": [ - { - "effectType": "Scene3D::AmbientLight", - "name": "Effect3", - "doubleParameters": { - "intensity": 0.25 - }, - "stringParameters": { - "color": "255;255;255" - }, - "booleanParameters": {} - }, { "effectType": "Scene3D::DirectionalLight", - "name": "Effect", + "name": "DirectionalLight", "doubleParameters": { "distanceFromCamera": 1500, - "elevation": 45, + "elevation": 40, "frustumSize": 4000, "intensity": 0.75, - "rotation": 45 + "minimumShadowBias": 0, + "rotation": 300 }, "stringParameters": { "color": "255;255;255", @@ -4361,6 +4351,21 @@ "color": "221;221;215" }, "booleanParameters": {} + }, + { + "effectType": "Scene3D::HemisphereLight", + "name": "HemisphereLight", + "doubleParameters": { + "elevation": 80, + "intensity": 0.33, + "rotation": 300 + }, + "stringParameters": { + "groundColor": "128;128;128", + "skyColor": "255;255;255", + "top": "Z+" + }, + "booleanParameters": {} } ] }, @@ -4376,7 +4381,7 @@ "isLightingLayer": false, "isLocked": false, "name": "UI", - "renderingType": "2d", + "renderingType": "", "visibility": true, "cameras": [], "effects": [ @@ -4406,7 +4411,7 @@ "isLightingLayer": false, "isLocked": false, "name": "MobileControls", - "renderingType": "2d", + "renderingType": "", "visibility": true, "cameras": [], "effects": [] @@ -5093,13 +5098,13 @@ "category": "Input", "extensionNamespace": "", "fullName": "Screen Orientation Checker", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNjcmVlbi1yb3RhdGlvbiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik03LjUsMjEuNUM0LjI1LDE5Ljk0IDEuOTEsMTYuNzYgMS41NSwxM0gwLjA1QzAuNTYsMTkuMTYgNS43MSwyNCAxMiwyNEwxMi42NiwyMy45N0w4Ljg1LDIwLjE2TTE0LjgzLDIxLjE5TDIuODEsOS4xN0w5LjE3LDIuODFMMjEuMTksMTQuODNNMTAuMjMsMS43NUM5LjY0LDEuMTYgOC42OSwxLjE2IDguMTEsMS43NUwxLjc1LDguMTFDMS4xNiw4LjcgMS4xNiw5LjY1IDEuNzUsMTAuMjNMMTMuNzcsMjIuMjVDMTQuMzYsMjIuODQgMTUuMzEsMjIuODQgMTUuODksMjIuMjVMMjIuMjUsMTUuODlDMjIuODQsMTUuMyAyMi44NCwxNC4zNSAyMi4yNSwxMy43N0wxMC4yMywxLjc1TTE2LjUsMi41QzE5Ljc1LDQuMDcgMjIuMDksNy4yNCAyMi40NSwxMUgyMy45NUMyMy40NCw0Ljg0IDE4LjI5LDAgMTIsMEwxMS4zNCwwLjAzTDE1LjE1LDMuODRMMTYuNSwyLjVaIiAvPjwvc3ZnPg==", "name": "ScreenOrientationChecker", "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/0126888931a4a4f82bb2824df9f096347ace1c47f510c44df42aa8dc9e49e24a_screen-rotation.svg", "shortDescription": "Display a customizable screen asking the user to rotate their phone/tablet if not in the right orientation.", - "version": "0.0.2", + "version": "0.1.1", "description": "Display a customizable screen asking the user to rotate their phone/tablet if not in the right orientation.", "origin": { "identifier": "ScreenOrientationChecker", @@ -5503,11 +5508,12 @@ "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "yes" + "IsShown", + "False", + "" ] } ] @@ -5529,11 +5535,12 @@ "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "no" + "IsShown", + "False", + "" ] } ] @@ -5573,11 +5580,12 @@ "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "yes" + "IsShown", + "False", + "" ] } ] @@ -5599,11 +5607,12 @@ "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "no" + "IsShown", + "False", + "" ] } ] @@ -5635,18 +5644,22 @@ "subInstructions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::PropertyIsShown" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsShown", + "True", + "" ] }, { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::PropertyIsForceShown" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsForceShown", + "True", + "" ] } ] @@ -5692,19 +5705,23 @@ { "type": { "inverted": true, - "value": "ScreenOrientationChecker::ScreenOrientationChecker::PropertyIsShown" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsShown", + "True", + "" ] }, { "type": { "inverted": true, - "value": "ScreenOrientationChecker::ScreenOrientationChecker::PropertyIsForceShown" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsForceShown", + "True", + "" ] } ], @@ -5896,10 +5913,12 @@ "conditions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::PropertyIsForceShown" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsForceShown", + "True", + "" ] } ], @@ -5939,21 +5958,24 @@ { "type": { "inverted": true, - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"Value\"" + "Value", + "True", + "" ] } ], "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsForceShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "no" + "IsForceShown", + "False", + "" ] } ] @@ -5963,21 +5985,24 @@ "conditions": [ { "type": { - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"Value\"" + "Value", + "True", + "" ] } ], "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsForceShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "yes" + "IsForceShown", + "False", + "" ] } ] @@ -11482,7 +11507,7 @@ "name": "SpriteMultitouchJoystick", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Videogames/Videogames_controller_joystick_arrows_direction.svg", "shortDescription": "Joysticks or buttons for touchscreens.", - "version": "1.8.2", + "version": "1.8.3", "description": [ "Multitouch joysticks can be used the same way as physical gamepads:", "- 4 or 8 directions", @@ -14672,11 +14697,10 @@ }, { "type": { - "value": "SpriteMultitouchJoystick::MultitouchButton::PropertyRadius" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Radius", ">", "DistanceBetweenPositions(Object.CenterX(), Object.CenterY(), TouchX(StartedTouchOrMouseId(TouchIndex), Object.Layer()), TouchY(StartedTouchOrMouseId(TouchIndex), Object.Layer()))" ] @@ -18537,7 +18561,7 @@ "version": "1.0.1", "description": "3D physics car keyboard controls.", "origin": { - "identifier": "PhysicsCharacter3DKeyMapper", + "identifier": "PhysicsCar3DKeyMapper", "name": "gdevelop-extension-store" }, "tags": [ @@ -24066,20 +24090,14 @@ "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWZpcmUiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTcuNjYgMTEuMkMxNy40MyAxMC45IDE3LjE1IDEwLjY0IDE2Ljg5IDEwLjM4QzE2LjIyIDkuNzggMTUuNDYgOS4zNSAxNC44MiA4LjcyQzEzLjMzIDcuMjYgMTMgNC44NSAxMy45NSAzQzEzIDMuMjMgMTIuMTcgMy43NSAxMS40NiA0LjMyQzguODcgNi40IDcuODUgMTAuMDcgOS4wNyAxMy4yMkM5LjExIDEzLjMyIDkuMTUgMTMuNDIgOS4xNSAxMy41NUM5LjE1IDEzLjc3IDkgMTMuOTcgOC44IDE0LjA1QzguNTcgMTQuMTUgOC4zMyAxNC4wOSA4LjE0IDEzLjkzQzguMDggMTMuODggOC4wNCAxMy44MyA4IDEzLjc2QzYuODcgMTIuMzMgNi42OSAxMC4yOCA3LjQ1IDguNjRDNS43OCAxMCA0Ljg3IDEyLjMgNSAxNC40N0M1LjA2IDE0Ljk3IDUuMTIgMTUuNDcgNS4yOSAxNS45N0M1LjQzIDE2LjU3IDUuNyAxNy4xNyA2IDE3LjdDNy4wOCAxOS40MyA4Ljk1IDIwLjY3IDEwLjk2IDIwLjkyQzEzLjEgMjEuMTkgMTUuMzkgMjAuOCAxNy4wMyAxOS4zMkMxOC44NiAxNy42NiAxOS41IDE1IDE4LjU2IDEyLjcyTDE4LjQzIDEyLjQ2QzE4LjIyIDEyIDE3LjY2IDExLjIgMTcuNjYgMTEuMk0xNC41IDE3LjVDMTQuMjIgMTcuNzQgMTMuNzYgMTggMTMuNCAxOC4xQzEyLjI4IDE4LjUgMTEuMTYgMTcuOTQgMTAuNSAxNy4yOEMxMS42OSAxNyAxMi40IDE2LjEyIDEyLjYxIDE1LjIzQzEyLjc4IDE0LjQzIDEyLjQ2IDEzLjc3IDEyLjMzIDEzQzEyLjIxIDEyLjI2IDEyLjIzIDExLjYzIDEyLjUgMTAuOTRDMTIuNjkgMTEuMzIgMTIuODkgMTEuNyAxMy4xMyAxMkMxMy45IDEzIDE1LjExIDEzLjQ0IDE1LjM3IDE0LjhDMTUuNDEgMTQuOTQgMTUuNDMgMTUuMDggMTUuNDMgMTUuMjNDMTUuNDYgMTYuMDUgMTUuMSAxNi45NSAxNC41IDE3LjVIMTQuNVoiIC8+PC9zdmc+", "name": "ParticleEmitter3D", "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/f2e5a34bf465f781866677762d385d6c8e9e8d203383f2df9a3b7e0fad6a2cb5_fire.svg", - "shortDescription": "Display a large number of particles to create visual effects.", - "version": "2.1.1", + "shortDescription": "Display a large number of particles in 3D to create visual effects in a 3D game.", + "version": "2.2.0", "description": [ - "Particle emitters can be used to display:", - "- Fire", - "- Smoke", - "- Splashes", - "- Lights", + "3D particle emitters let you create and display many small particles to simulate visual effects in your game — like fire, explosions, smoke, or dust.", "", - "Breaking change", - "- 2.0.0", - " - Object properties for position and rotation have been removed. They must be set with the instance editor or the action.", - "- 1.0.0", - " - Particles were 3 times too small" + "The parameters of the object can be configured in multiple different ways to create a specific desired effect. GDevelop will give a set of a pre-configured 3D particle emitters that you should try first.", + "", + "Use these 3D particle emitters in 3D games. For 2D games or particles that appear on a game's 2D user interface, use the 2D particle emitter object instead." ], "origin": { "identifier": "ParticleEmitter3D", @@ -24097,6 +24115,16 @@ "authorIds": [ "IWykYNRvhCZBN3vEgKEbBPOR3Oc2" ], + "changelog": [ + { + "version": "2.0.0", + "breaking": "- Object properties for position and rotation have been removed. They must be set with the instance editor or the action." + }, + { + "version": "1.0.0", + "breaking": "- Particles were 3 times too small." + } + ], "dependencies": [], "globalVariables": [], "sceneVariables": [], @@ -24116,6 +24144,8 @@ " return;", "}", "", + "const game = runtimeScene.getGame();", + "", "class ParticleEmitter3DRenderer extends gdjs.CustomRuntimeObject3DRenderer {", " constructor(", " object,", @@ -24142,6 +24172,7 @@ " this._object.getZ()", " );", "", + " // Force the scale to 1 because the particle emitter doesn't really has a size.", " threeObject3D.scale.set(", " this._object.isFlippedX() ? -1 : 1,", " this._object.isFlippedY() ? -1 : 1,", @@ -24154,6 +24185,89 @@ " }", "}", "", + "const coneLength = 64;", + "", + "class ParticleEmitterHelper extends THREE.Object3D {", + " /** @type {gdjs.CustomRuntimeObject3D} */", + " object;", + " /** @type {THREE.LineSegments} */", + " cone;", + " /** @type {THREE.LineSegments} */", + " centerLine;", + " /** @type {THREE.Mesh} */", + " originBox;", + "", + "\t/**", + " * @param gdjs.CustomRuntimeObject3D object", + "\t */", + " constructor(object) {", + " super();", + " this.object = object;", + " this.type = 'ParticleEmitterHelper';", + "", + " const coneGeometry = new THREE.BufferGeometry();", + " const conePositions = [", + " 0, 0, 0, 0, 0, 1,", + " 0, 0, 0, 1, 0, 1,", + " 0, 0, 0, - 1, 0, 1,", + " 0, 0, 0, 0, 1, 1,", + " 0, 0, 0, 0, - 1, 1", + " ];", + " for (let i = 0, j = 1, l = 32; i < l; i++ , j++) {", + " const p1 = (i / l) * Math.PI * 2;", + " const p2 = (j / l) * Math.PI * 2;", + " conePositions.push(", + " Math.cos(p1), Math.sin(p1), 1,", + " Math.cos(p2), Math.sin(p2), 1", + " );", + " }", + " coneGeometry.setAttribute('position', new THREE.Float32BufferAttribute(conePositions, 3));", + " this.cone = new THREE.LineSegments(", + " coneGeometry,", + " new THREE.LineBasicMaterial({ fog: false, toneMapped: false })", + " );", + " this.add(this.cone);", + " const centerLineGeometry = new THREE.BufferGeometry();", + " centerLineGeometry.setAttribute('position', new THREE.Float32BufferAttribute([", + " 0, 0, 0, 0, 0, coneLength", + " ], 3));", + " this.centerLine = new THREE.LineSegments(", + " centerLineGeometry,", + " new THREE.LineBasicMaterial({ fog: false, toneMapped: false })", + " );", + " this.add(this.centerLine);", + "", + " this.originBox = new THREE.Mesh(", + " new THREE.BoxGeometry(16, 16, 16),", + " new THREE.MeshBasicMaterial({ fog: false, toneMapped: false })", + " );", + " this.add(this.originBox);", + " this.update();", + "", + " this.originBox.gdjsRuntimeObject = object;", + " }", + "", + " dispose() {", + " this.cone.geometry.dispose();", + " this.cone.material.dispose();", + " this.centerLine.geometry.dispose();", + " this.centerLine.material.dispose();", + " this.originBox.geometry.dispose();", + " this.originBox.material.dispose();", + " }", + "", + " update() {", + " const coneWidth = coneLength * Math.sin(gdjs.toRad(this.object._getSpayConeAngle()));", + " const coneHeight = coneLength * Math.cos(gdjs.toRad(this.object._getSpayConeAngle()));", + " this.cone.scale.set(coneWidth, coneWidth, coneHeight);", + " const startColor = gdjs.rgbOrHexStringToNumber(this.object._getStartColor())", + " const endColor = gdjs.rgbOrHexStringToNumber(this.object._getEndColor());", + " this.cone.material.color.set(endColor);", + " this.centerLine.material.color.set(startColor);", + " this.originBox.material.color.set(startColor);", + " }", + "}", + "", "/**", " * @param {string} colorString", " * @param {THREE.Vector4} threeColor", @@ -24344,6 +24458,11 @@ " break;", " }", " }", + "", + " setImage(resourceName) {", + " const texture = game.getImageManager().getThreeTexture(resourceName);", + " this.particleSystem.texture = texture;", + " }", "}", "", "", @@ -30720,6 +30839,7 @@ "gdjs.__particleEmmiter3DExtension = {", " ParticleEmitter3DRenderer,", " ParticleEmitterAdapter,", + " ParticleEmitterHelper,", "", " ApplyCollision,", " ApplyForce,", @@ -30933,37 +31053,34 @@ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ - "const BatchedRenderer = gdjs.__particleEmmiter3DExtension.BatchedRenderer;", - "const ParticleSystem = gdjs.__particleEmmiter3DExtension.ParticleSystem;", - "const TextureLoader = gdjs.__particleEmmiter3DExtension.TextureLoader;", - "const IntervalValue = gdjs.__particleEmmiter3DExtension.IntervalValue;", - "const ConstantValue = gdjs.__particleEmmiter3DExtension.ConstantValue;", - "const ConstantColor = gdjs.__particleEmmiter3DExtension.ConstantColor;", - "const ColorOverLife = gdjs.__particleEmmiter3DExtension.ColorOverLife;", - "const SizeOverLife = gdjs.__particleEmmiter3DExtension.SizeOverLife;", - "const ApplyForce = gdjs.__particleEmmiter3DExtension.ApplyForce;", - "const Gradient = gdjs.__particleEmmiter3DExtension.Gradient;", - "const PiecewiseBezier = gdjs.__particleEmmiter3DExtension.PiecewiseBezier;", - "const Bezier = gdjs.__particleEmmiter3DExtension.Bezier;", - "const PointEmitter = gdjs.__particleEmmiter3DExtension.PointEmitter;", - "const ConeEmitter = gdjs.__particleEmmiter3DExtension.ConeEmitter;", - "const RenderMode = gdjs.__particleEmmiter3DExtension.RenderMode;", + "const {", + " ParticleEmitterAdapter,", + " ParticleEmitter3DRenderer,", + " ParticleEmitterHelper,", "", - "const { ParticleEmitterAdapter, ParticleEmitter3DRenderer } = gdjs.__particleEmmiter3DExtension;", + " ParticleSystem,", + " IntervalValue,", + " ConstantValue,", + " ConstantColor,", + " ColorOverLife,", + " SizeOverLife,", + " ApplyForce,", + " Gradient,", + " PiecewiseBezier,", + " Bezier,", + " PointEmitter,", + " ConeEmitter,", + " RenderMode", + "} = gdjs.__particleEmmiter3DExtension;", "", "/** @type {gdjs.CustomRuntimeObject} */", "const object = objects[0];", "", "// Here runtimeScene is the gdjs.CustomRuntimeObjectInstanceContainer inside the custom object.", "const gameScene = object.getRuntimeScene();", + "const game = runtimeScene.getGame();", "", - "/** @type {SpriteObjectDataType} */", - "const particleSpriteData = object._instanceContainer._objects.get(\"Particle\");", - "const resourceName = particleSpriteData.animations[0].directions[0].sprites[0].image;", - "const texture = object", - " .getInstanceContainer()", - " .getGame()", - " .getImageManager().getThreeTexture(resourceName);", + "const texture = game.getImageManager().getThreeTexture('');", "", "// Set the blending here because changes are not applied after the emitter creation.", "const blendingString = object._getBlending();", @@ -31045,8 +31162,15 @@ "", "const particleEmitter3DRenderer = new ParticleEmitter3DRenderer(object, object._instanceContainer, object.getInstanceContainer());", "object._renderer = particleEmitter3DRenderer;", - "particleEmitter3DRenderer._threeGroup = particleSystem.emitter;", - "layer.getRenderer().add3DRendererObject(particleSystem.emitter);", + "if (game.isInGameEdition && game.isInGameEdition()) {", + " const particleEmitterHelper = new ParticleEmitterHelper(object);", + " particleEmitter3DRenderer._threeGroup = particleEmitterHelper;", + " layer.getRenderer().add3DRendererObject(particleEmitterHelper);", + "}", + "else {", + " particleEmitter3DRenderer._threeGroup = particleSystem.emitter;", + " layer.getRenderer().add3DRendererObject(particleSystem.emitter);", + "}", "", "particleSystem.emitter.updateMatrixWorld(true);", "", @@ -31398,6 +31522,15 @@ "Object.GravityTop()", "" ] + }, + { + "type": { + "value": "ParticleEmitter3D::ParticleEmitter3D::UpdateImage" + }, + "parameters": [ + "Object", + "" + ] } ], "events": [ @@ -31487,6 +31620,87 @@ ] } ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ParticleEmitter3D::ParticleEmitter3D::UpdateHelper" + }, + "parameters": [ + "Object", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "ParticleEmitter3D::ParticleEmitter3D", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "Update helper", + "functionType": "Action", + "name": "UpdateHelper", + "private": true, + "sentence": "Update graphical helper of _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::JsCode", + "inlineCode": [ + "const game = runtimeScene.getGame();", + "if (game.isInGameEdition && game.isInGameEdition()) {", + " const particleEmitterHelper = objects[0].get3DRendererObject();", + " particleEmitterHelper.update();", + "}" + ], + "parameterObjects": "Object", + "useStrict": true, + "eventsSheetExpanded": false + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "ParticleEmitter3D::ParticleEmitter3D", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "Update particle image", + "functionType": "Action", + "name": "UpdateImage", + "private": true, + "sentence": "Update particle image of _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::JsCode", + "inlineCode": [ + "/** @type {gdjs.CustomRuntimeObject3D} */\r", + "const object = objects[0];\r", + "/** @type {SpriteObjectDataType} */\r", + "const particleSpriteData = object._instanceContainer._objects.get(\"Particle\");\r", + "/** @type {gdjs.SpriteAnimationData} */\r", + "const animation = particleSpriteData.animations[0];\r", + "const animationFrame = animation ? animation.directions[0].sprites[0] : null;\r", + "const resourceName = animationFrame ? animationFrame.image : '';\r", + "object.__particleEmitterAdapter.setImage(resourceName);" + ], + "parameterObjects": "Object", + "useStrict": true, + "eventsSheetExpanded": true } ], "parameters": [ @@ -36685,7 +36899,7 @@ "name": "Sticker", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/sticker-outline.svg", "shortDescription": "Make objects follow the position and rotation of the object they are stuck to.", - "version": "0.5.2", + "version": "0.5.3", "description": [ "This extension can be useful to:", "- Stick accessories to moving objects", @@ -37046,6 +37260,7 @@ "fullName": "Sticker", "name": "Sticker", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -39758,7 +39973,7 @@ "name": "IsOnScreen", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/monitor-screenshot.svg", "shortDescription": "This adds a condition to detect if an object is on screen based off its current layer.", - "version": "1.2.1", + "version": "1.2.2", "description": [ "This extension adds conditions to check if an object is located within the visible portion of its layer's camera. The condition also allows for specifying padding to the virtual screen border.", "", @@ -39790,6 +40005,7 @@ "fullName": "Is on screen", "name": "InOnScreen", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "description": "Checks if an object position is within the viewport of its layer.", @@ -47067,6 +47283,22 @@ "numberProperties": [], "stringProperties": [], "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "depth": 9.275844810159482, + "height": 30.999999999999996, + "layer": "UI", + "name": "Coin", + "persistentUuid": "f50ed303-2126-42de-bc74-f78ec1b86de4", + "width": 29.482750369101787, + "x": -438.47364915529886, + "y": 699.6271509849621, + "zOrder": 0, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] } ], "editionSettings": { diff --git a/examples/3d-platformer/3d-platformer.json b/examples/3d-platformer/3d-platformer.json index c40598cde..b90142cdf 100644 --- a/examples/3d-platformer/3d-platformer.json +++ b/examples/3d-platformer/3d-platformer.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 234, + "build": 236, "major": 5, "minor": 5, "revision": 0 @@ -3924,6 +3924,18 @@ "=", "RandomFloat(360)" ] + }, + { + "type": { + "value": "SetCameraAngle" + }, + "parameters": [ + "", + "=", + "Character.Angle() + 90", + "", + "" + ] } ], "events": [ @@ -5146,7 +5158,7 @@ "isLightingLayer": false, "isLocked": false, "name": "", - "renderingType": "3d", + "renderingType": "", "visibility": true, "cameras": [ { @@ -5161,27 +5173,16 @@ } ], "effects": [ - { - "effectType": "Scene3D::AmbientLight", - "name": "Effect2", - "doubleParameters": { - "intensity": 0.25 - }, - "stringParameters": { - "color": "255;255;255" - }, - "booleanParameters": {} - }, { "effectType": "Scene3D::DirectionalLight", - "name": "Effect", + "name": "DirectionalLight", "doubleParameters": { "distanceFromCamera": 1500, - "elevation": 45, + "elevation": 60, "frustumSize": 4000, "intensity": 0.75, "minimumShadowBias": 0.0008, - "rotation": 20 + "rotation": 30 }, "stringParameters": { "color": "255;255;255", @@ -5191,6 +5192,21 @@ "booleanParameters": { "isCastingShadow": true } + }, + { + "effectType": "Scene3D::HemisphereLight", + "name": "HemisphereLight", + "doubleParameters": { + "elevation": 90, + "intensity": 1, + "rotation": 0 + }, + "stringParameters": { + "groundColor": "192;192;192", + "skyColor": "255;255;255", + "top": "Z+" + }, + "booleanParameters": {} } ] }, @@ -6507,13 +6523,13 @@ "category": "Input", "extensionNamespace": "", "fullName": "3D character keyboard mapper", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggZD0iTTI5LDE0aC00LjJjMC4xLTAuMywwLjItMC42LDAuMi0xYzAtMS43LTEuMy0zLTMtM0g4Yy0wLjYsMC0xLTAuNC0xLTFzMC40LTEsMS0xaDZjMS43LDAsMy0xLjMsMy0zVjJjMC0wLjYtMC40LTEtMS0xDQoJcy0xLDAuNC0xLDF2M2MwLDAuNi0wLjQsMS0xLDFIOEM2LjMsNiw1LDcuMyw1LDlzMS4zLDMsMywzaDE0YzAuNiwwLDEsMC40LDEsMXMtMC40LDEtMSwxSDNjLTAuNiwwLTEsMC40LTEsMXYxNGMwLDAuNiwwLjQsMSwxLDENCgloMjZjMC42LDAsMS0wLjQsMS0xVjE1QzMwLDE0LjQsMjkuNiwxNCwyOSwxNHogTTcsMThoMmMwLjYsMCwxLDAuNCwxLDFjMC0wLjYsMC40LTEsMS0xaDJjMC42LDAsMSwwLjQsMSwxYzAtMC42LDAuNC0xLDEtMWgyDQoJYzAuNiwwLDEsMC40LDEsMWMwLTAuNiwwLjQtMSwxLTFoMmMwLjYsMCwxLDAuNCwxLDFjMC0wLjYsMC40LTEsMS0xaDJjMC42LDAsMSwwLjQsMSwxcy0wLjQsMS0xLDFoLTJjLTAuNiwwLTEtMC40LTEtMQ0KCWMwLDAuNi0wLjQsMS0xLDFoLTJjLTAuNiwwLTEtMC40LTEtMWMwLDAuNi0wLjQsMS0xLDFoLTJjLTAuNiwwLTEtMC40LTEtMWMwLDAuNi0wLjQsMS0xLDFoLTJjLTAuNiwwLTEtMC40LTEtMWMwLDAuNi0wLjQsMS0xLDFINw0KCWMtMC42LDAtMS0wLjQtMS0xUzYuNCwxOCw3LDE4eiBNMTksMjJjMCwwLjEsMCwwLjMtMC4xLDAuNHMtMC4xLDAuMi0wLjIsMC4zYzAsMC0wLjEsMC4xLTAuMiwwLjFjMCwwLTAuMSwwLjEtMC4yLDAuMQ0KCWMtMC4xLDAtMC4xLDAtMC4yLDAuMWMtMC4xLDAtMC4xLDAtMC4yLDBjLTAuMSwwLTAuMSwwLTAuMiwwYy0wLjEsMC0wLjEsMC0wLjItMC4xYy0wLjEsMC0wLjEtMC4xLTAuMi0wLjFjMCwwLTAuMS0wLjEtMC4xLTAuMQ0KCWMtMC4xLTAuMS0wLjItMC4yLTAuMi0wLjNDMTcsMjIuMywxNywyMi4xLDE3LDIyYzAtMC4xLDAtMC4zLDAuMS0wLjRjMC0wLjEsMC4xLTAuMiwwLjItMC4zYzAsMCwwLjEtMC4xLDAuMS0wLjENCgljMC4xLDAsMC4xLTAuMSwwLjItMC4xYzAuMSwwLDAuMSwwLDAuMi0wLjFjMC4xLDAsMC4zLDAsMC40LDBjMC4xLDAsMC4xLDAsMC4yLDAuMWMwLjEsMCwwLjEsMC4xLDAuMiwwLjFjMC4xLDAsMC4xLDAuMSwwLjIsMC4xDQoJYzAuMSwwLjEsMC4yLDAuMiwwLjIsMC4zQzE5LDIxLjcsMTksMjEuOSwxOSwyMnogTTE1LDIyYzAsMC4xLDAsMC4zLTAuMSwwLjRzLTAuMSwwLjItMC4yLDAuM2MwLDAtMC4xLDAuMS0wLjIsMC4xDQoJYzAsMC0wLjEsMC4xLTAuMiwwLjFjLTAuMSwwLTAuMSwwLTAuMiwwLjFjLTAuMSwwLTAuMSwwLTAuMiwwYy0wLjMsMC0wLjUtMC4xLTAuNy0wLjNjLTAuMS0wLjEtMC4yLTAuMi0wLjItMC4zDQoJQzEzLDIyLjMsMTMsMjIuMSwxMywyMmMwLTAuMSwwLTAuMSwwLTAuMmMwLTAuMSwwLTAuMSwwLjEtMC4yYzAtMC4xLDAtMC4xLDAuMS0wLjJjMC0wLjEsMC4xLTAuMSwwLjEtMC4xYzAuMi0wLjIsMC42LTAuMywwLjktMC4zDQoJYzAuMSwwLDAuMSwwLDAuMiwwLjFjMC4xLDAsMC4xLDAuMSwwLjIsMC4xYzAuMSwwLDAuMSwwLjEsMC4yLDAuMWMwLDAsMC4xLDAuMSwwLjEsMC4xYzAsMC4xLDAuMSwwLjEsMC4xLDAuMmMwLDAuMSwwLDAuMSwwLjEsMC4yDQoJQzE1LDIxLjksMTUsMjEuOSwxNSwyMnogTTUsMjJjMC0wLjEsMC0wLjMsMC4xLTAuNGMwLTAuMSwwLjEtMC4yLDAuMi0wLjNjMC4yLTAuMiwwLjYtMC4zLDAuOS0wLjNjMC4xLDAsMC4xLDAsMC4yLDAuMQ0KCWMwLjEsMCwwLjEsMC4xLDAuMiwwLjFjMCwwLDAuMSwwLjEsMC4yLDAuMWMwLjEsMC4xLDAuMiwwLjIsMC4yLDAuM0M3LDIxLjcsNywyMS45LDcsMjJjMCwwLjMtMC4xLDAuNS0wLjMsMC43YzAsMC0wLjEsMC4xLTAuMiwwLjENCgljLTAuMSwwLTAuMSwwLjEtMC4yLDAuMWMtMC4xLDAtMC4xLDAtMC4yLDAuMWMtMC4xLDAtMC4xLDAtMC4yLDBjLTAuMywwLTAuNS0wLjEtMC43LTAuM0M1LjEsMjIuNSw1LDIyLjMsNSwyMnogTTgsMjZINw0KCWMtMC42LDAtMS0wLjQtMS0xczAuNC0xLDEtMWgxYzAuNiwwLDEsMC40LDEsMVM4LjYsMjYsOCwyNnogTTEwLjksMjIuNGMwLDAuMSwwLDAuMS0wLjEsMC4yYzAsMC0wLjEsMC4xLTAuMSwwLjENCglDMTAuNSwyMi45LDEwLjMsMjMsMTAsMjNjLTAuMSwwLTAuMywwLTAuNC0wLjFjLTAuMS0wLjEtMC4yLTAuMS0wLjMtMC4yYzAtMC4xLTAuMS0wLjEtMC4xLTAuMWMwLTAuMS0wLjEtMC4xLTAuMS0wLjINCgljMC0wLjEsMC0wLjEtMC4xLTAuMmMwLTAuMSwwLTAuMSwwLTAuMmMwLTAuMywwLjEtMC41LDAuMy0wLjdjMC4xLTAuMSwwLjItMC4yLDAuMy0wLjJjMC40LTAuMiwwLjgtMC4xLDEuMSwwLjINCgljMC4yLDAuMiwwLjMsMC40LDAuMywwLjdjMCwwLjEsMCwwLjEsMCwwLjJDMTEsMjIuMywxMSwyMi4zLDEwLjksMjIuNHogTTIwLDI2aC04Yy0wLjYsMC0xLTAuNC0xLTFzMC40LTEsMS0xaDhjMC42LDAsMSwwLjQsMSwxDQoJUzIwLjYsMjYsMjAsMjZ6IE0yMi45LDIyLjRjMCwwLjEsMCwwLjEtMC4xLDAuMmMwLDAtMC4xLDAuMS0wLjEsMC4xYzAsMC0wLjEsMC4xLTAuMiwwLjFjMCwwLTAuMSwwLjEtMC4yLDAuMWMtMC4xLDAtMC4xLDAtMC4yLDAuMQ0KCWMtMC4xLDAtMC4xLDAtMC4yLDBjLTAuMSwwLTAuMSwwLTAuMiwwYy0wLjEsMC0wLjEsMC0wLjItMC4xYy0wLjEsMC0wLjEtMC4xLTAuMi0wLjFjMCwwLTAuMS0wLjEtMC4xLTAuMWMwLTAuMS0wLjEtMC4xLTAuMS0wLjENCgljMC0wLjEtMC4xLTAuMS0wLjEtMC4yYzAtMC4xLDAtMC4xLTAuMS0wLjJjMC0wLjEsMC0wLjEsMC0wLjJjMC0wLjMsMC4xLTAuNSwwLjMtMC43YzAsMCwwLjEtMC4xLDAuMS0wLjFjMC4xLDAsMC4xLTAuMSwwLjItMC4xDQoJYzAuMSwwLDAuMSwwLDAuMi0wLjFjMC4xLDAsMC4zLDAsMC40LDBjMC4xLDAsMC4xLDAsMC4yLDAuMWMwLjEsMCwwLjEsMC4xLDAuMiwwLjFjMC4xLDAsMC4xLDAuMSwwLjIsMC4xYzAuMiwwLjIsMC4zLDAuNCwwLjMsMC43DQoJYzAsMC4xLDAsMC4xLDAsMC4yQzIzLDIyLjMsMjMsMjIuMywyMi45LDIyLjR6IE0yNSwyNmgtMWMtMC42LDAtMS0wLjQtMS0xczAuNC0xLDEtMWgxYzAuNiwwLDEsMC40LDEsMVMyNS42LDI2LDI1LDI2eiBNMjYuNywyMi43DQoJQzI2LjUsMjIuOSwyNi4zLDIzLDI2LDIzYy0wLjEsMC0wLjEsMC0wLjIsMGMtMC4xLDAtMC4xLDAtMC4yLTAuMWMtMC4xLDAtMC4xLTAuMS0wLjItMC4xYy0wLjEsMC0wLjEtMC4xLTAuMi0wLjENCglDMjUuMSwyMi41LDI1LDIyLjMsMjUsMjJjMC0wLjEsMC0wLjMsMC4xLTAuNGMwLTAuMSwwLjEtMC4yLDAuMi0wLjNjMCwwLDAuMS0wLjEsMC4yLTAuMWMwLDAsMC4xLTAuMSwwLjItMC4xYzAuMSwwLDAuMSwwLDAuMi0wLjENCgljMC4zLTAuMSwwLjcsMCwwLjksMC4zYzAuMiwwLjIsMC4zLDAuNCwwLjMsMC43QzI3LDIyLjMsMjYuOSwyMi41LDI2LjcsMjIuN3oiLz4NCjwvc3ZnPg0K", "name": "PhysicsCharacter3DKeyMapper", "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/Glyphster Pack/Master/SVG/Computers and Hardware/3e5871434a72821bf3ecb44a6857e62a438cf23dc8f95966f56ae97e95315468_Computers and Hardware_keyboard.svg", "shortDescription": "3D platformer and 3D shooter keyboard controls.", - "version": "1.0.0", + "version": "1.1.1", "description": "3D platformer and 3D shooter keyboard controls.", "origin": { "identifier": "PhysicsCharacter3DKeyMapper", @@ -6548,22 +6564,22 @@ { "type": { "inverted": true, - "value": "PhysicsCharacter3DKeyMapper::Platformer3DKeyboardMapper::PropertyLockedCameraAngle" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "LockedCameraAngle", + "True", + "" ] } ], "actions": [ { "type": { - "value": "PhysicsCharacter3DKeyMapper::Platformer3DKeyboardMapper::SetPropertyCameraAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CameraAngle", "=", "CameraAngle(Object.Layer())" ] @@ -6576,11 +6592,11 @@ "actions": [ { "type": { - "value": "PhysicsCharacter3DKeyMapper::Platformer3DKeyboardMapper::SetPropertyLockedCameraAngle" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", + "LockedCameraAngle", + "False", "" ] } @@ -7014,11 +7030,12 @@ "conditions": [ { "type": { - "value": "PhysicsCharacter3DKeyMapper::Platformer3DKeyboardMapper::PropertyLockedCameraAngle" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "LockedCameraAngle", + "True", + "" ] } ], @@ -7063,22 +7080,24 @@ { "type": { "inverted": true, - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"Value\"" + "Value", + "True", + "" ] } ], "actions": [ { "type": { - "value": "PhysicsCharacter3DKeyMapper::Platformer3DKeyboardMapper::SetPropertyLockedCameraAngle" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "no" + "LockedCameraAngle", + "False", + "" ] } ] @@ -7088,22 +7107,24 @@ "conditions": [ { "type": { - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"Value\"" + "Value", + "True", + "" ] } ], "actions": [ { "type": { - "value": "PhysicsCharacter3DKeyMapper::Platformer3DKeyboardMapper::SetPropertyLockedCameraAngle" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "yes" + "LockedCameraAngle", + "True", + "" ] } ] @@ -7144,37 +7165,38 @@ }, { "value": "Space", - "type": "String", + "type": "KeyboardKey", "label": "Jump key", "name": "Jump" }, { "value": "w", - "type": "String", + "type": "KeyboardKey", "label": "Up key", "name": "Up" }, { "value": "a", - "type": "String", + "type": "KeyboardKey", "label": "Left key", "name": "Left" }, { "value": "s", - "type": "String", + "type": "KeyboardKey", "label": "Down key", "name": "Down" }, { "value": "d", - "type": "String", + "type": "KeyboardKey", "label": "Right key", "name": "Right" }, { "value": "0", "type": "Number", + "unit": "DegreeAngle", "label": "", "hidden": true, "name": "CameraAngle" @@ -7355,31 +7377,31 @@ }, { "value": "Space", - "type": "String", + "type": "KeyboardKey", "label": "Jump key", "name": "Jump" }, { "value": "w", - "type": "String", + "type": "KeyboardKey", "label": "Up key", "name": "Up" }, { "value": "a", - "type": "String", + "type": "KeyboardKey", "label": "Left key", "name": "Left" }, { "value": "s", - "type": "String", + "type": "KeyboardKey", "label": "Down key", "name": "Down" }, { "value": "d", - "type": "String", + "type": "KeyboardKey", "label": "Right key", "name": "Right" } @@ -7394,13 +7416,13 @@ "category": "Input", "extensionNamespace": "", "fullName": "Gamepads (controllers)", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "/all-features/gamepad", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWdhbWVwYWQtdmFyaWFudC1vdXRsaW5lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTYsOUg4VjExSDEwVjEzSDhWMTVINlYxM0g0VjExSDZWOU0xOC41LDlBMS41LDEuNSAwIDAsMSAyMCwxMC41QTEuNSwxLjUgMCAwLDEgMTguNSwxMkExLjUsMS41IDAgMCwxIDE3LDEwLjVBMS41LDEuNSAwIDAsMSAxOC41LDlNMTUuNSwxMkExLjUsMS41IDAgMCwxIDE3LDEzLjVBMS41LDEuNSAwIDAsMSAxNS41LDE1QTEuNSwxLjUgMCAwLDEgMTQsMTMuNUExLjUsMS41IDAgMCwxIDE1LjUsMTJNMTcsNUE3LDcgMCAwLDEgMjQsMTJBNyw3IDAgMCwxIDE3LDE5QzE1LjA0LDE5IDEzLjI3LDE4LjIgMTIsMTYuOUMxMC43MywxOC4yIDguOTYsMTkgNywxOUE3LDcgMCAwLDEgMCwxMkE3LDcgMCAwLDEgNyw1SDE3TTcsN0E1LDUgMCAwLDAgMiwxMkE1LDUgMCAwLDAgNywxN0M4LjY0LDE3IDEwLjA5LDE2LjIxIDExLDE1SDEzQzEzLjkxLDE2LjIxIDE1LjM2LDE3IDE3LDE3QTUsNSAwIDAsMCAyMiwxMkE1LDUgMCAwLDAgMTcsN0g3WiIgLz48L3N2Zz4=", "name": "Gamepads", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/gamepad-variant-outline.svg", "shortDescription": "Add support for gamepads (or other controllers) to your game, giving access to information such as button presses, axis positions, trigger pressure, etc...", - "version": "0.6.3", + "version": "0.8.1", "description": [ "Add support for gamepads (or other controllers).", "", @@ -7436,7 +7458,54 @@ ], "dependencies": [], "globalVariables": [], - "sceneVariables": [], + "sceneVariables": [ + { + "name": "Buttons", + "type": "structure", + "children": [ + { + "name": "A or Cross", + "type": "string", + "value": "A" + }, + { + "name": "B or Circle", + "type": "string", + "value": "B" + }, + { + "name": "LB or L1", + "type": "string", + "value": "LB" + }, + { + "name": "LT or L2", + "type": "string", + "value": "LT" + }, + { + "name": "RB or R1", + "type": "string", + "value": "RB" + }, + { + "name": "RT or R2", + "type": "string", + "value": "RT" + }, + { + "name": "X or Square", + "type": "string", + "value": "X" + }, + { + "name": "Y or Triangle", + "type": "string", + "value": "Y" + } + ] + } + ], "eventsFunctions": [ { "fullName": "", @@ -7670,10 +7739,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"TargetedSpeed\"", + "TargetedSpeed", "<", "0" ] @@ -7698,10 +7767,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", "<", "TargetedSpeed" ] @@ -7725,20 +7794,20 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", ">", "TargetedSpeed" ] }, { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", "<", "0" ] @@ -7774,10 +7843,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", ">=", "0" ] @@ -7803,10 +7872,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"TargetedSpeed\"", + "TargetedSpeed", ">", "0" ] @@ -7831,10 +7900,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", ">", "TargetedSpeed" ] @@ -7858,20 +7927,20 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", "<", "TargetedSpeed" ] }, { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", ">", "0" ] @@ -7907,10 +7976,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", "<=", "0" ] @@ -7936,10 +8005,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"TargetedSpeed\"", + "TargetedSpeed", "=", "0" ] @@ -7952,10 +8021,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", "<", "0" ] @@ -7979,10 +8048,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", ">", "0" ] @@ -9884,6 +9953,7 @@ "fullName": "Platformer gamepad mapper", "name": "PlatformerGamepadMapper", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -9912,11 +9982,12 @@ "conditions": [ { "type": { - "value": "Gamepads::PlatformerGamepadMapper::PropertyUseArrows" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "UseArrows", + "True", + "" ] } ], @@ -10046,11 +10117,12 @@ "conditions": [ { "type": { - "value": "Gamepads::PlatformerGamepadMapper::PropertyUseLeftStick" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "UseLeftStick", + "True", + "" ] } ], @@ -10184,11 +10256,12 @@ "conditions": [ { "type": { - "value": "Gamepads::PlatformerGamepadMapper::PropertyUseRightStick" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "UseRightStick", + "True", + "" ] } ], @@ -10320,283 +10393,6 @@ { "type": "BuiltinCommonInstructions::Standard", "conditions": [ - { - "type": { - "value": "Gamepads::PlatformerGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"A or Cross\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"A\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "PlatformBehavior::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PlatformerCharacter" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::PlatformerGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"B or Circle\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"B\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "PlatformBehavior::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PlatformerCharacter" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::PlatformerGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"X or Square\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"X\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "PlatformBehavior::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PlatformerCharacter" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::PlatformerGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"Y or Triangle\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"Y\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "PlatformBehavior::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PlatformerCharacter" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::PlatformerGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"LB or L1\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"LB\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "PlatformBehavior::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PlatformerCharacter" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::PlatformerGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"RB or R1\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"RB\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "PlatformBehavior::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PlatformerCharacter" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::PlatformerGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"LT or L2\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"LT\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "PlatformBehavior::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PlatformerCharacter" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::PlatformerGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"RT or R2\"" - ] - }, { "type": { "value": "Gamepads::C_Button_pressed" @@ -10604,7 +10400,7 @@ "parameters": [ "", "GamepadIdentifier", - "\"RT\"", + "Buttons[JumpButton]", "\"Left\"" ] } @@ -10702,6 +10498,7 @@ "fullName": "3D platformer gamepad mapper", "name": "Platformer3DGamepadMapper", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -10770,283 +10567,6 @@ { "type": "BuiltinCommonInstructions::Standard", "conditions": [ - { - "type": { - "value": "Gamepads::Platformer3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"A or Cross\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"A\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Platformer3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"B or Circle\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"B\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Platformer3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"X or Square\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"X\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Platformer3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"Y or Triangle\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"Y\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Platformer3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"LB or L1\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"LB\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Platformer3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"RB or R1\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"RB\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Platformer3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"LT or L2\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"LT\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Platformer3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"RT or R2\"" - ] - }, { "type": { "value": "Gamepads::C_Button_pressed" @@ -11054,7 +10574,7 @@ "parameters": [ "", "GamepadIdentifier", - "\"RT\"", + "Buttons[JumpButton]", "\"Left\"" ] } @@ -11142,6 +10662,7 @@ "fullName": "3D shooter gamepad mapper", "name": "Shooter3DGamepadMapper", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -11199,283 +10720,6 @@ { "type": "BuiltinCommonInstructions::Standard", "conditions": [ - { - "type": { - "value": "Gamepads::Shooter3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"A or Cross\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"A\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Shooter3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"B or Circle\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"B\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Shooter3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"X or Square\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"X\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Shooter3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"Y or Triangle\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"Y\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Shooter3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"LB or L1\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"LB\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Shooter3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"RB or R1\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"RB\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Shooter3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"LT or L2\"" - ] - }, - { - "type": { - "value": "Gamepads::C_Button_pressed" - }, - "parameters": [ - "", - "GamepadIdentifier", - "\"LT\"", - "\"Left\"" - ] - } - ], - "actions": [ - { - "type": { - "value": "Physics3D::PhysicsCharacter3D::SimulateJumpKey" - }, - "parameters": [ - "Object", - "PhysicsCharacter3D" - ] - } - ] - }, - { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "Gamepads::Shooter3DGamepadMapper::PropertyJumpButton" - }, - "parameters": [ - "Object", - "Behavior", - "=", - "\"RT or R2\"" - ] - }, { "type": { "value": "Gamepads::C_Button_pressed" @@ -11483,7 +10727,7 @@ "parameters": [ "", "GamepadIdentifier", - "\"RT\"", + "Buttons[JumpButton]", "\"Left\"" ] } @@ -11582,6 +10826,7 @@ "fullName": "First person camera gamepad mapper", "name": "FirstPersonGamepadMapper", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -11607,11 +10852,10 @@ "actions": [ { "type": { - "value": "Gamepads::FirstPersonGamepadMapper::SetPropertyCurrentRotationSpeedZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CurrentRotationSpeedZ", "=", "Gamepads::AcceleratedSpeed(CurrentRotationSpeedZ, Gamepads::StickForceX(GamepadIdentifier, CameraStick) * HorizontalRotationSpeedMax, HorizontalRotationSpeedMax, HorizontalRotationAcceleration, HorizontalRotationDeceleration)" ] @@ -11628,11 +10872,10 @@ }, { "type": { - "value": "Gamepads::FirstPersonGamepadMapper::SetPropertyCurrentRotationSpeedY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CurrentRotationSpeedY", "=", "Gamepads::AcceleratedSpeed(CurrentRotationSpeedY, Gamepads::StickForceY(GamepadIdentifier, CameraStick) * VerticalRotationSpeedMax, VerticalRotationSpeedMax, VerticalRotationAcceleration, VerticalRotationDeceleration)" ] @@ -11832,11 +11075,10 @@ "actions": [ { "type": { - "value": "Gamepads::FirstPersonGamepadMapper::SetPropertyHorizontalRotationSpeedMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "HorizontalRotationSpeedMax", "=", "Value" ] @@ -11913,11 +11155,10 @@ "actions": [ { "type": { - "value": "Gamepads::FirstPersonGamepadMapper::SetPropertyHorizontalRotationAcceleration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "HorizontalRotationAcceleration", "=", "Value" ] @@ -11994,11 +11235,10 @@ "actions": [ { "type": { - "value": "Gamepads::FirstPersonGamepadMapper::SetPropertyHorizontalRotationDeceleration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "HorizontalRotationDeceleration", "=", "Value" ] @@ -12075,11 +11315,10 @@ "actions": [ { "type": { - "value": "Gamepads::FirstPersonGamepadMapper::SetPropertyVerticalRotationSpeedMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalRotationSpeedMax", "=", "Value" ] @@ -12156,11 +11395,10 @@ "actions": [ { "type": { - "value": "Gamepads::FirstPersonGamepadMapper::SetPropertyVerticalRotationAcceleration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalRotationAcceleration", "=", "Value" ] @@ -12237,11 +11475,10 @@ "actions": [ { "type": { - "value": "Gamepads::FirstPersonGamepadMapper::SetPropertyVerticalRotationDeceleration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalRotationDeceleration", "=", "Value" ] @@ -12318,11 +11555,10 @@ "actions": [ { "type": { - "value": "Gamepads::FirstPersonGamepadMapper::SetPropertyVerticalAngleMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalAngleMin", "=", "Value" ] @@ -12399,11 +11635,10 @@ "actions": [ { "type": { - "value": "Gamepads::FirstPersonGamepadMapper::SetPropertyVerticalAngleMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalAngleMax", "=", "Value" ] @@ -12480,11 +11715,10 @@ "actions": [ { "type": { - "value": "Gamepads::FirstPersonGamepadMapper::SetPropertyOffsetZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "OffsetZ", "=", "Value" ] @@ -12621,11 +11855,357 @@ ], "sharedPropertyDescriptors": [] }, + { + "description": "Control a 3D physics car with a gamepad.", + "fullName": "3D car gamepad mapper", + "name": "PhysicsCar3DGamepadMapper", + "objectType": "", + "quickCustomizationVisibility": "hidden", + "eventsFunctions": [ + { + "fullName": "", + "functionType": "Action", + "name": "doStepPreEvents", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "Gamepads::C_Controller_X_is_connected" + }, + "parameters": [ + "", + "GamepadIdentifier", + "" + ] + } + ], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "UseArrows", + "True", + "" + ] + } + ], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "Gamepads::C_Button_pressed" + }, + "parameters": [ + "", + "GamepadIdentifier", + "\"Left\"", + "\"Left\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "Physics3D::PhysicsCar3D::SimulateLeftKey" + }, + "parameters": [ + "Object", + "PhysicsCar3D" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "Gamepads::C_Button_pressed" + }, + "parameters": [ + "", + "GamepadIdentifier", + "\"Right\"", + "\"Left\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "Physics3D::PhysicsCar3D::SimulateRightKey" + }, + "parameters": [ + "Object", + "PhysicsCar3D" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "UseLeftStick", + "True", + "" + ] + } + ], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "Gamepads::C_Axis_pushed" + }, + "parameters": [ + "", + "1", + "\"Left\"", + "\"Any\"", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "Physics3D::PhysicsCar3D::SimulateSteeringStick" + }, + "parameters": [ + "Object", + "PhysicsCar3D", + "Gamepads::StickForceX(GamepadIdentifier, \"Left\")" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "UseRightStick", + "True", + "" + ] + } + ], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "Gamepads::C_Axis_pushed" + }, + "parameters": [ + "", + "1", + "\"Right\"", + "\"Any\"", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "Physics3D::PhysicsCar3D::SimulateSteeringStick" + }, + "parameters": [ + "Object", + "PhysicsCar3D", + "Gamepads::StickForceX(GamepadIdentifier, \"Right\")" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BuiltinCommonInstructions::Or" + }, + "parameters": [], + "subInstructions": [ + { + "type": { + "value": "Gamepads::C_Button_pressed" + }, + "parameters": [ + "", + "1", + "\"LT\"", + "\"Up\"" + ] + }, + { + "type": { + "value": "Gamepads::C_Button_pressed" + }, + "parameters": [ + "", + "1", + "\"RT\"", + "\"Up\"" + ] + } + ] + } + ], + "actions": [ + { + "type": { + "value": "Physics3D::PhysicsCar3D::SimulateAcceleratorStick" + }, + "parameters": [ + "Object", + "PhysicsCar3D", + "Gamepads::TriggerPressure(GamepadIdentifier, \"RT\") - Gamepads::TriggerPressure(GamepadIdentifier, \"LT\")" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "Gamepads::C_Button_pressed" + }, + "parameters": [ + "", + "GamepadIdentifier", + "Buttons[HandBrakeButton]", + "\"Left\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "Physics3D::PhysicsCar3D::SimulateHandBrakeKey" + }, + "parameters": [ + "Object", + "PhysicsCar3D" + ] + } + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "Gamepads::PhysicsCar3DGamepadMapper", + "type": "behavior" + } + ], + "objectGroups": [] + } + ], + "propertyDescriptors": [ + { + "value": "", + "type": "Behavior", + "label": "3D physics car", + "extraInformation": [ + "Physics3D::PhysicsCar3D" + ], + "name": "PhysicsCar3D" + }, + { + "value": "1", + "type": "Number", + "label": "Gamepad identifier (1, 2, 3 or 4)", + "name": "GamepadIdentifier" + }, + { + "value": "true", + "type": "Boolean", + "label": "Use directional pad", + "group": "Controls", + "name": "UseArrows" + }, + { + "value": "true", + "type": "Boolean", + "label": "Use left stick", + "group": "Controls", + "name": "UseLeftStick" + }, + { + "value": "", + "type": "Boolean", + "label": "Use right stick", + "group": "Controls", + "name": "UseRightStick" + }, + { + "value": "B or Circle", + "type": "Choice", + "label": "Hand brake button", + "group": "Controls", + "extraInformation": [ + "A or Cross", + "B or Circle", + "X or Square", + "Y or Triangle", + "LB or L1", + "RB or R1", + "LT or L2", + "RT or R2" + ], + "name": "HandBrakeButton" + } + ], + "sharedPropertyDescriptors": [] + }, { "description": "Control a top-down character with a gamepad.", "fullName": "Top-down gamepad mapper", "name": "TopDownGamepadMapper", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -12654,11 +12234,12 @@ "conditions": [ { "type": { - "value": "Gamepads::TopDownGamepadMapper::PropertyUseArrows" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "UseArrows", + "True", + "" ] } ], @@ -12779,11 +12360,12 @@ "conditions": [ { "type": { - "value": "Gamepads::TopDownGamepadMapper::PropertyUseLeftStick" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "UseLeftStick", + "True", + "" ] } ], @@ -12794,11 +12376,10 @@ "conditions": [ { "type": { - "value": "Gamepads::TopDownGamepadMapper::PropertyStickMode" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "StickMode", "=", "\"Analog\"" ] @@ -12823,11 +12404,10 @@ "conditions": [ { "type": { - "value": "Gamepads::TopDownGamepadMapper::PropertyStickMode" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "StickMode", "=", "\"360°\"" ] @@ -12852,11 +12432,10 @@ "conditions": [ { "type": { - "value": "Gamepads::TopDownGamepadMapper::PropertyStickMode" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "StickMode", "=", "\"8 Directions\"" ] @@ -12985,11 +12564,12 @@ "conditions": [ { "type": { - "value": "Gamepads::TopDownGamepadMapper::PropertyUseRightStick" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "UseRightStick", + "True", + "" ] } ], @@ -13000,11 +12580,10 @@ "conditions": [ { "type": { - "value": "Gamepads::TopDownGamepadMapper::PropertyStickMode" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "StickMode", "=", "\"Analog\"" ] @@ -13029,11 +12608,10 @@ "conditions": [ { "type": { - "value": "Gamepads::TopDownGamepadMapper::PropertyStickMode" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "StickMode", "=", "\"360°\"" ] @@ -13058,11 +12636,10 @@ "conditions": [ { "type": { - "value": "Gamepads::TopDownGamepadMapper::PropertyStickMode" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "StickMode", "=", "\"8 Directions\"" ] @@ -13265,13 +12842,13 @@ "category": "Input", "extensionNamespace": "", "fullName": "Multitouch joystick and buttons (sprite)", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "/objects/multitouch-joystick", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iMTYiIGN5PSIxNiIgcj0iMTMiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QwIiBwb2ludHM9IjI4LjQsMTIgMjAsMTIgMjAsMy42ICIvPg0KPHBvbHlsaW5lIGNsYXNzPSJzdDAiIHBvaW50cz0iMjAsMjguNCAyMCwyMCAyOC40LDIwICIvPg0KPHBvbHlsaW5lIGNsYXNzPSJzdDAiIHBvaW50cz0iMy42LDIwIDEyLDIwIDEyLDI4LjQgIi8+DQo8cG9seWxpbmUgY2xhc3M9InN0MCIgcG9pbnRzPSIxMiwzLjYgMTIsMTIgMy42LDEyICIvPg0KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxNiw2IDE2LjcsNyAxNS4zLDcgIi8+DQo8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE2LDI2IDE1LjMsMjUgMTYuNywyNSAiLz4NCjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iNiwxNiA3LDE1LjMgNywxNi43ICIvPg0KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIyNiwxNiAyNSwxNi43IDI1LDE1LjMgIi8+DQo8L3N2Zz4NCg==", "name": "SpriteMultitouchJoystick", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Videogames/Videogames_controller_joystick_arrows_direction.svg", "shortDescription": "Joysticks or buttons for touchscreens.", - "version": "1.6.1", + "version": "1.8.3", "description": [ "Multitouch joysticks can be used the same way as physical gamepads:", "- 4 or 8 directions", @@ -13369,10 +12946,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"TargetedSpeed\"", + "TargetedSpeed", "<", "0" ] @@ -13397,10 +12974,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", "<", "TargetedSpeed" ] @@ -13424,20 +13001,20 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", ">", "TargetedSpeed" ] }, { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", "<", "0" ] @@ -13473,10 +13050,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", ">=", "0" ] @@ -13502,10 +13079,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"TargetedSpeed\"", + "TargetedSpeed", ">", "0" ] @@ -13530,10 +13107,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", ">", "TargetedSpeed" ] @@ -13557,20 +13134,20 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", "<", "TargetedSpeed" ] }, { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", ">", "0" ] @@ -13606,10 +13183,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", "<=", "0" ] @@ -13635,10 +13212,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"TargetedSpeed\"", + "TargetedSpeed", "=", "0" ] @@ -13651,10 +13228,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", "<", "0" ] @@ -13678,10 +13255,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"CurrentSpeed\"", + "CurrentSpeed", ">", "0" ] @@ -15068,10 +14645,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsString" + "value": "StringVariable" }, "parameters": [ - "\"Side\"", + "Side", "=", "\"Left\"" ] @@ -15106,10 +14683,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsString" + "value": "StringVariable" }, "parameters": [ - "\"Side\"", + "Side", "=", "\"Right\"" ] @@ -15310,11 +14887,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchIndex" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchIndex", "=", "0" ] @@ -15332,11 +14908,10 @@ "conditions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::PropertyTouchId" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchId", "=", "0" ] @@ -15355,11 +14930,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchId" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchId", "=", "StartedTouchOrMouseId(TouchIndex)" ] @@ -15372,11 +14946,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchIndex" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchIndex", "+", "1" ] @@ -15442,11 +15015,10 @@ "conditions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::PropertyTouchId" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchId", "!=", "0" ] @@ -15551,11 +15123,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyJoystickForce" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "JoystickForce", "=", "Value" ] @@ -15649,11 +15220,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyJoystickAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "JoystickAngle", "=", "Value" ] @@ -15919,11 +15489,10 @@ "conditions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::PropertyTouchId" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchId", "!=", "0" ] @@ -15982,11 +15551,10 @@ }, { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchId" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchId", "=", "0" ] @@ -16063,11 +15631,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyControllerIdentifier" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ControllerIdentifier", "=", "Value" ] @@ -16144,11 +15711,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyJoystickIdentifier" + "value": "SetStringVariable" }, "parameters": [ - "Object", - "Behavior", + "JoystickIdentifier", "=", "Value" ] @@ -16225,11 +15791,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyDeadZoneRadius" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "DeadZoneRadius", "=", "Value" ] @@ -16277,11 +15842,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchId" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchId", "=", "Value" ] @@ -16390,12 +15954,12 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchButton::SetPropertyIsReleased" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "no" + "IsReleased", + "False", + "" ] }, { @@ -16437,11 +16001,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchIndex" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchIndex", "=", "0" ] @@ -16475,11 +16038,10 @@ }, { "type": { - "value": "SpriteMultitouchJoystick::MultitouchButton::PropertyRadius" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Radius", ">", "DistanceBetweenPositions(Object.CenterX(), Object.CenterY(), TouchX(StartedTouchOrMouseId(TouchIndex), Object.Layer()), TouchY(StartedTouchOrMouseId(TouchIndex), Object.Layer()))" ] @@ -16490,11 +16052,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchId" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchId", "=", "StartedTouchOrMouseId(TouchIndex)" ] @@ -16518,11 +16079,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchIndex" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchIndex", "+", "1" ] @@ -16570,21 +16130,20 @@ }, { "type": { - "value": "SpriteMultitouchJoystick::MultitouchButton::SetPropertyIsReleased" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "yes" + "IsReleased", + "True", + "" ] }, { "type": { - "value": "SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchId" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchId", "=", "0" ] @@ -16619,11 +16178,12 @@ "conditions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchButton::PropertyIsReleased" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "IsReleased", + "True", + "" ] } ], @@ -16666,11 +16226,10 @@ "conditions": [ { "type": { - "value": "SpriteMultitouchJoystick::MultitouchButton::PropertyTouchId" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TouchId", "!=", "0" ] @@ -16801,6 +16360,7 @@ "fullName": "Platformer multitouch controller mapper", "name": "PlatformerMultitouchMapper", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -17015,6 +16575,7 @@ "fullName": "3D platformer multitouch controller mapper", "name": "Platformer3DMultitouchMapper", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -17150,6 +16711,7 @@ "fullName": "3D shooter multitouch controller mapper", "name": "Shooter3DMultitouchMapper", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -17274,6 +16836,7 @@ "fullName": "First person camera multitouch controller mapper", "name": "FirstPersonMultitouchMapper", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -17299,11 +16862,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::FirstPersonMultitouchMapper::SetPropertyCurrentRotationSpeedZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CurrentRotationSpeedZ", "=", "SpriteMultitouchJoystick::AcceleratedSpeed(CurrentRotationSpeedZ, SpriteMultitouchJoystick::StickForceX(ControllerIdentifier, CameraStick) * HorizontalRotationSpeedMax, HorizontalRotationSpeedMax, HorizontalRotationAcceleration, HorizontalRotationDeceleration)" ] @@ -17320,11 +16882,10 @@ }, { "type": { - "value": "SpriteMultitouchJoystick::FirstPersonMultitouchMapper::SetPropertyCurrentRotationSpeedY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CurrentRotationSpeedY", "=", "SpriteMultitouchJoystick::AcceleratedSpeed(CurrentRotationSpeedY, SpriteMultitouchJoystick::StickForceY(ControllerIdentifier, CameraStick) * VerticalRotationSpeedMax, VerticalRotationSpeedMax, VerticalRotationAcceleration, VerticalRotationDeceleration)" ] @@ -17524,11 +17085,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::FirstPersonMultitouchMapper::SetPropertyHorizontalRotationSpeedMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "HorizontalRotationSpeedMax", "=", "Value" ] @@ -17605,11 +17165,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::FirstPersonMultitouchMapper::SetPropertyHorizontalRotationAcceleration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "HorizontalRotationAcceleration", "=", "Value" ] @@ -17686,11 +17245,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::FirstPersonMultitouchMapper::SetPropertyHorizontalRotationDeceleration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "HorizontalRotationDeceleration", "=", "Value" ] @@ -17767,11 +17325,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::FirstPersonMultitouchMapper::SetPropertyVerticalRotationSpeedMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalRotationSpeedMax", "=", "Value" ] @@ -17848,11 +17405,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::FirstPersonMultitouchMapper::SetPropertyVerticalRotationAcceleration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalRotationAcceleration", "=", "Value" ] @@ -17929,11 +17485,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::FirstPersonMultitouchMapper::SetPropertyVerticalRotationDeceleration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalRotationDeceleration", "=", "Value" ] @@ -18010,11 +17565,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::FirstPersonMultitouchMapper::SetPropertyVerticalAngleMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalAngleMin", "=", "Value" ] @@ -18091,11 +17645,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::FirstPersonMultitouchMapper::SetPropertyVerticalAngleMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalAngleMax", "=", "Value" ] @@ -18172,11 +17725,10 @@ "actions": [ { "type": { - "value": "SpriteMultitouchJoystick::FirstPersonMultitouchMapper::SetPropertyOffsetZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "OffsetZ", "=", "Value" ] @@ -18314,11 +17866,177 @@ ], "sharedPropertyDescriptors": [] }, + { + "description": "Control a 3D physics car with a multitouch controller.", + "fullName": "3D car multitouch controller mapper", + "name": "PhysicsCar3DMultitouchMapper", + "objectType": "", + "quickCustomizationVisibility": "hidden", + "eventsFunctions": [ + { + "fullName": "", + "functionType": "Action", + "name": "doStepPreEvents", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteMultitouchJoystick::StickForce" + }, + "parameters": [ + "", + ">", + "0", + "ControllerIdentifier", + "SteerJoystickIdentifier", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "Physics3D::PhysicsCar3D::SimulateSteeringStick" + }, + "parameters": [ + "Object", + "PhysicsCar3D", + "SpriteMultitouchJoystick::StickForceX(ControllerIdentifier, \"Primary\")" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteMultitouchJoystick::StickForce" + }, + "parameters": [ + "", + ">", + "0", + "ControllerIdentifier", + "SpeedJoystickIdentifier", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "Physics3D::PhysicsCar3D::SimulateAcceleratorStick" + }, + "parameters": [ + "Object", + "PhysicsCar3D", + "-SpriteMultitouchJoystick::StickForceY(ControllerIdentifier, \"Secondary\")" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteMultitouchJoystick::IsButtonPressed" + }, + "parameters": [ + "", + "ControllerIdentifier", + "HandBrakeButton", + "\"Down\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "Physics3D::PhysicsCar3D::SimulateHandBrakeKey" + }, + "parameters": [ + "Object", + "PhysicsCar3D" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteMultitouchJoystick::PhysicsCar3DMultitouchMapper", + "type": "behavior" + } + ], + "objectGroups": [] + } + ], + "propertyDescriptors": [ + { + "value": "", + "type": "Behavior", + "label": "3D physics car", + "extraInformation": [ + "Physics3D::PhysicsCar3D" + ], + "name": "PhysicsCar3D" + }, + { + "value": "1", + "type": "Number", + "label": "Controller identifier (1, 2, 3, 4...)", + "name": "ControllerIdentifier" + }, + { + "value": "Primary", + "type": "Choice", + "label": "Steer joystick", + "group": "Controls", + "extraInformation": [ + "Primary", + "Secondary" + ], + "name": "SteerJoystickIdentifier" + }, + { + "value": "Secondary", + "type": "Choice", + "label": "Speed joystick", + "group": "Controls", + "extraInformation": [ + "Primary", + "Secondary" + ], + "name": "SpeedJoystickIdentifier" + }, + { + "value": "B", + "type": "String", + "label": "Hand brake button name", + "group": "Controls", + "name": "HandBrakeButton" + } + ], + "sharedPropertyDescriptors": [] + }, { "description": "Control a top-down character with a multitouch controller.", "fullName": "Top-down multitouch controller mapper", "name": "TopDownMultitouchMapper", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -18331,11 +18049,10 @@ "conditions": [ { "type": { - "value": "SpriteMultitouchJoystick::TopDownMultitouchMapper::PropertyStickMode" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "StickMode", "=", "\"Analog\"" ] @@ -18360,11 +18077,10 @@ "conditions": [ { "type": { - "value": "SpriteMultitouchJoystick::TopDownMultitouchMapper::PropertyStickMode" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "StickMode", "=", "\"360°\"" ] @@ -18389,11 +18105,10 @@ "conditions": [ { "type": { - "value": "SpriteMultitouchJoystick::TopDownMultitouchMapper::PropertyStickMode" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "StickMode", "=", "\"8 Directions\"" ] @@ -19124,10 +18839,12 @@ "conditions": [ { "type": { - "value": "SpriteMultitouchJoystick::SpriteMultitouchJoystick::PropertyShouldBeHiddenWhenReleased" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "ShouldBeHiddenWhenReleased", + "True", + "" ] }, { @@ -19159,6 +18876,16 @@ "no", "" ] + }, + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "ShouldBeHiddenWhenReleased", + "False", + "" + ] } ] } @@ -19319,11 +19046,12 @@ }, { "type": { - "value": "SpriteMultitouchJoystick::SpriteMultitouchJoystick::SetPropertyShouldBeHiddenWhenReleased" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "yes" + "ShouldBeHiddenWhenReleased", + "True", + "" ] }, { @@ -19449,10 +19177,12 @@ { "type": { "inverted": true, - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"ShouldActivate\"" + "ShouldActivate", + "True", + "" ] } ], @@ -19474,10 +19204,12 @@ "conditions": [ { "type": { - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"ShouldActivate\"" + "ShouldActivate", + "True", + "" ] } ], @@ -20161,13 +19893,13 @@ "category": "Input", "extensionNamespace": "", "fullName": "Mouse Pointer Lock", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBvbHlsaW5lIGNsYXNzPSJzdDAiIHBvaW50cz0iMTksMTkgMjQsMTkgMjQsMjQgIi8+DQo8cG9seWxpbmUgY2xhc3M9InN0MCIgcG9pbnRzPSI2LDIzIDExLDIzIDExLDE4ICIvPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTI0LDE5LjRjLTAuNywwLjgtMS40LDEuNi0yLjIsMi40Yy03LDctMTUuMywxMC4yLTE4LjUsN3MtMC4xLTExLjUsNy0xOC41czE1LjMtMTAuMiwxOC41LTcNCgljMS40LDEuNCwxLjYsMy42LDAuOCw2LjMiLz4NCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMSwyMi41Yy0wLjMtMC4yLTAuNS0wLjUtMC44LTAuOGMtNy03LTEwLjItMTUuMy03LTE4LjVzMTEuNS0wLjEsMTguNSw3czEwLjIsMTUuMyw3LDE4LjUNCgljLTEuNywxLjctNC44LDEuNi04LjQsMC4xIi8+DQo8L3N2Zz4NCg==", "name": "MousePointerLock", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Virtual Reality/Virtual Reality_360_rotate_vr_movement.svg", "shortDescription": "This behavior removes the limit on the distance the mouse can move and hides the cursor.", - "version": "0.2.0", + "version": "0.3.0", "description": [ "This behavior removes the limit on the distance the mouse can move and hides the cursor.", "", @@ -20721,7 +20453,6 @@ "fullName": "Pointer X movement", "functionType": "ExpressionAndCondition", "name": "MovementX", - "private": true, "sentence": "the movement of the locked pointer on the X axis", "events": [ { @@ -20772,7 +20503,6 @@ "fullName": "Pointer Y movement", "functionType": "ExpressionAndCondition", "name": "MovementY", - "private": true, "sentence": "the movement of the pointer on the Y axis", "events": [ { @@ -21035,11 +20765,12 @@ }, { "type": { - "value": "MousePointerLock::FirstPersonPointerMapper::PropertyShouldLock" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "ShouldLock", + "True", + "" ] }, { @@ -21226,11 +20957,10 @@ "actions": [ { "type": { - "value": "MousePointerLock::FirstPersonPointerMapper::SetPropertyHorizontalSpeed" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "HorizontalSpeed", "=", "Value" ] @@ -21307,11 +21037,10 @@ "actions": [ { "type": { - "value": "MousePointerLock::FirstPersonPointerMapper::SetPropertyVerticalSpeed" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalSpeed", "=", "Value" ] @@ -21388,11 +21117,10 @@ "actions": [ { "type": { - "value": "MousePointerLock::FirstPersonPointerMapper::SetPropertyVerticalAngleMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalAngleMin", "=", "Value" ] @@ -21469,11 +21197,10 @@ "actions": [ { "type": { - "value": "MousePointerLock::FirstPersonPointerMapper::SetPropertyVerticalAngleMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "VerticalAngleMax", "=", "Value" ] @@ -21550,11 +21277,10 @@ "actions": [ { "type": { - "value": "MousePointerLock::FirstPersonPointerMapper::SetPropertyOffsetZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "OffsetZ", "=", "Value" ] @@ -21640,13 +21366,13 @@ "category": "Movement", "extensionNamespace": "", "fullName": "Advanced movements for 3D physics characters", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iMjMiIGN5PSI3IiByPSIzIi8+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNOCwxMGwyLjgtMi44QzEyLDYsMTQsNiwxNS4yLDcuMmw3LjksNy45YzEuMSwxLjEsMi44LDEuMiw0LjEsMC4yTDMwLDEzIi8+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTcsMTBsLTQuNyw0LjdjLTEuNSwxLjUtMSw0LjIsMSw1bDMuOSwxLjVjMS4xLDAuNCwxLjksMS41LDEuOSwyLjd2NiIvPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE0LDIwbC0yLjYsMi42Yy0wLjgsMC44LTIuMSwwLjgtMi44LDBMNSwxOSIvPg0KPGxpbmUgY2xhc3M9InN0MCIgeDE9IjE2IiB5MT0iMTgiIHgyPSIyMSIgeTI9IjEzIi8+DQo8L3N2Zz4NCg==", "name": "AdvancedJump3D", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Sports and Fitness/Sports and Fitness_training_running_run.svg", "shortDescription": "Let 3D physics characters: air jump, wall jump wall sliding, coyote time and dashing.", - "version": "1.0.1", + "version": "1.1.0", "description": [ "This extension provides behaviors to:", "", @@ -21719,11 +21445,10 @@ "conditions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::PropertyCoyoteTimeFrameDuration" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CoyoteTimeFrameDuration", ">", "0" ] @@ -21749,11 +21474,12 @@ { "type": { "inverted": true, - "value": "AdvancedJump3D::AdvancedJump3D::PropertyWasInTheAir" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "WasInTheAir", + "True", + "" ] }, { @@ -21787,12 +21513,12 @@ }, { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyCanCoyoteJump" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "yes" + "CanCoyoteJump", + "True", + "" ] } ], @@ -21821,11 +21547,12 @@ "conditions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::PropertyCanCoyoteJump" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "CanCoyoteJump", + "True", + "" ] } ], @@ -21870,12 +21597,12 @@ }, { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyCanCoyoteJump" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "no" + "CanCoyoteJump", + "False", + "" ] } ], @@ -21927,12 +21654,12 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyCanCoyoteJump" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "no" + "CanCoyoteJump", + "False", + "" ] } ], @@ -22050,11 +21777,12 @@ "conditions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::PropertyAreFloorJumpCountedAsAirJump" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "AreFloorJumpCountedAsAirJump", + "True", + "" ] }, { @@ -22070,11 +21798,10 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyAirJumpCount" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "AirJumpCount", "+", "1" ] @@ -22128,12 +21855,12 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyWasJumpKeyReleased" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "yes" + "WasJumpKeyReleased", + "True", + "" ] } ], @@ -22195,12 +21922,12 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyWasJumpKeyReleased" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "yes" + "WasJumpKeyReleased", + "True", + "" ] } ], @@ -22263,23 +21990,22 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyAirJumpCount" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "AirJumpCount", "=", "0" ] }, { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyWasJumpKeyReleased" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "False" + "WasJumpKeyReleased", + "False", + "" ] } ], @@ -22337,22 +22063,22 @@ }, { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::PropertyAirJumpCount" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "AirJumpCount", "<", "AirJumpCountMaximum" ] }, { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::PropertyWasJumpKeyReleased" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "WasJumpKeyReleased", + "True", + "" ] } ], @@ -22368,21 +22094,20 @@ }, { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyWasJumpKeyReleased" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "False" + "WasJumpKeyReleased", + "False", + "" ] }, { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyAirJumpCount" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "AirJumpCount", "+", "1" ] @@ -22577,11 +22302,10 @@ "conditions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::PropertyCoyoteTimeFrameDuration" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CoyoteTimeFrameDuration", "<=", "0" ] @@ -22606,11 +22330,10 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyCoyoteTimeFrameDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CoyoteTimeFrameDuration", "=", "Value" ] @@ -22666,11 +22389,12 @@ "conditions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::PropertyCanCoyoteJump" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "CanCoyoteJump", + "True", + "" ] } ], @@ -22715,12 +22439,12 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyWasInTheAir" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "no" + "WasInTheAir", + "False", + "" ] } ] @@ -22742,12 +22466,12 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyWasInTheAir" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "yes" + "WasInTheAir", + "True", + "" ] } ] @@ -22823,11 +22547,10 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyAirJumpCountMaximum" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "AirJumpCountMaximum", "=", "Value" ] @@ -22957,11 +22680,10 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyAirJumpCount" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "AirJumpCount", "+", "1" ] @@ -22997,12 +22719,12 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyWasJumpKeyReleased" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "False" + "WasJumpKeyReleased", + "False", + "" ] } ] @@ -23012,11 +22734,10 @@ "conditions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::PropertyAirJumpCount" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "AirJumpCount", ">=", "AirJumpCountMaximum" ] @@ -23066,11 +22787,10 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyAirJumpCount" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "AirJumpCount", "=", "0" ] @@ -23104,12 +22824,12 @@ }, { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyWasJumpKeyReleased" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "yes" + "WasJumpKeyReleased", + "True", + "" ] } ] @@ -23143,12 +22863,12 @@ "actions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::SetPropertyWasJumpKeyReleased" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", - "False" + "WasJumpKeyReleased", + "False", + "" ] } ] @@ -23182,11 +22902,12 @@ "conditions": [ { "type": { - "value": "AdvancedJump3D::AdvancedJump3D::PropertyAreFloorJumpCountedAsAirJump" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "AreFloorJumpCountedAsAirJump", + "True", + "" ] } ], @@ -23331,13 +23052,13 @@ "category": "Movement", "extensionNamespace": "", "fullName": "3D physics character animator", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPGc+DQoJPHBhdGggZD0iTTIzLDExYzIuMiwwLDQtMS44LDQtNHMtMS44LTQtNC00cy00LDEuOC00LDRTMjAuOCwxMSwyMywxMXoiLz4NCgk8cGF0aCBkPSJNMzAuOCwxMi40Yy0wLjMtMC40LTEtMC41LTEuNC0wLjJsLTIuOSwyLjNjLTAuOCwwLjctMiwwLjYtMi43LTAuMmwtNy45LTcuOWMtMS42LTEuNi00LjEtMS42LTUuNywwTDcuMyw5LjMNCgkJYy0wLjQsMC40LTAuNCwxLDAsMS40czEsMC40LDEuNCwwbDIuOC0yLjhjMC44LTAuOCwyLjEtMC44LDIuOSwwbDEuNiwxLjZMMTEuNiwxNGMtMSwxLTEuNCwyLjMtMS4xLDMuN2MwLjIsMS4xLDAuOSwyLDEuOCwyLjYNCgkJbC0xLjYsMS42Yy0wLjQsMC40LTEsMC40LTEuNCwwbC0zLjYtMy42Yy0wLjQtMC40LTEtMC40LTEuNCwwcy0wLjQsMSwwLDEuNGwzLjYsMy42YzAuNiwwLjYsMS4zLDAuOSwyLjEsMC45czEuNi0wLjMsMi4xLTAuOQ0KCQlsMi4xLTIuMWwyLjUsMWMwLjcsMC4zLDEuMiwxLDEuMiwxLjh2NmMwLDAuNiwwLjQsMSwxLDFzMS0wLjQsMS0xdi02YzAtMS42LTEtMy4xLTIuNS0zLjdsLTEuNy0wLjdsNS4yLTUuMmwxLjQsMS40DQoJCWMwLjgsMC44LDEuOCwxLjIsMi45LDEuMmMwLjksMCwxLjgtMC4zLDIuNS0wLjlsMi45LTIuM0MzMS4xLDEzLjQsMzEuMSwxMi44LDMwLjgsMTIuNHoiLz4NCjwvZz4NCjwvc3ZnPg0K", "name": "PhysicsCharacter3DAnimator", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/Glyphster Pack/Master/SVG/Sports and Fitness/Sports and Fitness_training_running_run.svg", "shortDescription": "Change animations of a 3D physics character automatically.", - "version": "1.0.0", + "version": "1.1.0", "description": [ "Automatically change the animationsof a 3D physics character based on movement and interaction with platform objects.", "", @@ -23690,11 +23411,10 @@ "actions": [ { "type": { - "value": "PhysicsCharacter3DAnimator::PhysicsCharacter3DAnimator::SetPropertyRotationSpeed" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "RotationSpeed", "=", "Value" ] @@ -23791,13 +23511,13 @@ "category": "Movement", "extensionNamespace": "", "fullName": "3D ellipse movement", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNpbmUtd2F2ZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNi41LDIxQzEzLjUsMjEgMTIuMzEsMTYuNzYgMTEuMDUsMTIuMjhDMTAuMTQsOS4wNCA5LDUgNy41LDVDNC4xMSw1IDQsMTEuOTMgNCwxMkgyQzIsMTEuNjMgMi4wNiwzIDcuNSwzQzEwLjUsMyAxMS43MSw3LjI1IDEyLjk3LDExLjc0QzEzLjgzLDE0LjggMTUsMTkgMTYuNSwxOUMxOS45NCwxOSAyMC4wMywxMi4wNyAyMC4wMywxMkgyMi4wM0MyMi4wMywxMi4zNyAyMS45NywyMSAxNi41LDIxWiIgLz48L3N2Zz4=", "name": "PhysicsEllipseMovement3D", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/sine-wave.svg", "shortDescription": "Move objects on ellipses or smoothly back and forth in one direction.", - "version": "1.0.0", + "version": "1.1.0", "description": [ "It allows objects to move:", "- on an ellipsis or arcs", @@ -23863,22 +23583,22 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyInitialTurningLeft" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "InitialTurningLeft", + "True", + "" ] } ], "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyLoopDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "LoopDuration", "*", "-1" ] @@ -23890,11 +23610,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyLoopDuration" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "LoopDuration", "<", "0" ] @@ -23903,11 +23622,10 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyMovementAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "MovementAngle", "=", "InitialDirectionAngle + 90" ] @@ -23919,11 +23637,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyLoopDuration" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "LoopDuration", ">=", "0" ] @@ -23932,11 +23649,10 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyMovementAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "MovementAngle", "=", "InitialDirectionAngle - 90" ] @@ -23982,11 +23698,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyPlane" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "Plane", "=", "\"Z\"" ] @@ -23995,22 +23710,20 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyCenterV" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CenterV", "=", "Object.X() - Object.Behavior::DeltaH()" ] }, { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyCenterH" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CenterH", "=", "Object.Y() - Object.Behavior::DeltaV()" ] @@ -24022,11 +23735,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyPlane" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "Plane", "=", "\"Y\"" ] @@ -24035,22 +23747,20 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyCenterV" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CenterV", "=", "Object.Y() - Object.Behavior::DeltaH()" ] }, { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyCenterH" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CenterH", "=", "Object.Object3D::Z() - Object.Behavior::DeltaV()" ] @@ -24062,11 +23772,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyPlane" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "Plane", "=", "\"X\"" ] @@ -24075,22 +23784,20 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyCenterV" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CenterV", "=", "Object.X() - Object.Behavior::DeltaH()" ] }, { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyCenterH" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CenterH", "=", "Object.Object3D::Z() - Object.Behavior::DeltaV()" ] @@ -24104,11 +23811,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyPlane" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "Plane", "=", "\"Z\"" ] @@ -24121,11 +23827,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyWidth" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Width", "!=", "0" ] @@ -24150,11 +23855,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyHeight" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Height", "!=", "0" ] @@ -24179,11 +23883,12 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyShouldRotate" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "ShouldRotate", + "True", + "" ] } ], @@ -24238,11 +23943,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyPlane" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "Plane", "=", "\"Y\"" ] @@ -24255,11 +23959,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyWidth" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Width", "!=", "0" ] @@ -24284,11 +23987,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyHeight" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Height", "!=", "0" ] @@ -24313,11 +24015,12 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyShouldRotate" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "ShouldRotate", + "True", + "" ] } ], @@ -24381,11 +24084,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyPlane" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "Plane", "=", "\"X\"" ] @@ -24398,11 +24100,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyWidth" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Width", "!=", "0" ] @@ -24427,11 +24128,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyHeight" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Height", "!=", "0" ] @@ -24456,11 +24156,12 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyShouldRotate" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "ShouldRotate", + "True", + "" ] } ], @@ -24559,11 +24260,10 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyMovementAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "MovementAngle", "+", "360 * TimeDelta() / LoopDuration" ] @@ -24692,11 +24392,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyLoopDuration" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "LoopDuration", "<", "0" ] @@ -24850,44 +24549,40 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyCenterV" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CenterV", "=", "2 * Object.X() - Object.Behavior::CenterV()" ] }, { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyCenterH" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CenterH", "=", "2 * Object.Y() - Object.Behavior::CenterH()" ] }, { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyMovementAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "MovementAngle", "+", "180" ] }, { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyLoopDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "LoopDuration", "*", "-1" ] @@ -24963,11 +24658,10 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyMovementAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "MovementAngle", "=", "Value" ] @@ -25131,11 +24825,10 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyWidth" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Width", "=", "Value" ] @@ -25212,11 +24905,10 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyHeight" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Height", "=", "Value" ] @@ -25306,11 +24998,10 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyLoopDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "LoopDuration", "=", "-Value" ] @@ -25335,11 +25026,10 @@ "actions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::SetPropertyLoopDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "LoopDuration", "=", "Value" ] @@ -25459,11 +25149,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyLoopDuration" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "LoopDuration", "<", "0" ] @@ -25485,11 +25174,10 @@ "conditions": [ { "type": { - "value": "PhysicsEllipseMovement3D::PhysicsEllipseMovement3D::PropertyLoopDuration" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "LoopDuration", ">=", "0" ] @@ -26746,20 +26434,17 @@ "category": "Visual effect", "extensionNamespace": "", "fullName": "3D object shake", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXZlY3Rvci1kaWZmZXJlbmNlLWFiIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTMsMUMxLjg5LDEgMSwxLjg5IDEsM1Y1SDNWM0g1VjFIM003LDFWM0gxMFYxSDdNMTIsMVYzSDE0VjVIMTZWM0MxNiwxLjg5IDE1LjExLDEgMTQsMUgxMk0xLDdWMTBIM1Y3SDFNMTQsN0MxNCw3IDE0LDExLjY3IDE0LDE0QzExLjY3LDE0IDcsMTQgNywxNEM3LDE0IDcsMTggNywyMEM3LDIxLjExIDcuODksMjIgOSwyMkgyMEMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFY5QzIyLDcuODkgMjEuMTEsNyAyMCw3QzE4LDcgMTQsNyAxNCw3TTE2LDlIMjBWMjBIOVYxNkgxNEMxNS4xMSwxNiAxNiwxNS4xMSAxNiwxNFY5TTEsMTJWMTRDMSwxNS4xMSAxLjg5LDE2IDMsMTZINVYxNEgzVjEySDFaIiAvPjwvc3ZnPg==", "name": "ShakeObject3D", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/vector-difference-ab.svg", "shortDescription": "Shake 3D objects.", - "version": "2.0.4", + "version": "2.1.0", "description": [ "Shake 3D objects with translation and rotation.", "", - "The 3D racing game example uses this extension ([open the project online](https://editor.gdevelop.io/?project=example://3d-racing-game)).", - "", - "Breaking changes from 2.0.0", - "- The behavior for 3D box has been removed. The other behavior can be used for both models and boxes." + "The 3D racing game example uses this extension ([open the project online](https://editor.gdevelop.io/?project=example://3d-racing-game))." ], "origin": { "identifier": "ShakeObject3D", @@ -26776,6 +26461,12 @@ "authorIds": [ "IWykYNRvhCZBN3vEgKEbBPOR3Oc2" ], + "changelog": [ + { + "version": "2.0.0", + "breaking": "- The behavior for 3D box has been removed. The other behavior can be used for both models and boxes." + } + ], "dependencies": [], "globalVariables": [], "sceneVariables": [], @@ -28085,11 +27776,12 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyIsStartingAtCreation" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "IsStartingAtCreation", + "True", + "" ] } ], @@ -28156,11 +27848,10 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyTime" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Time", "+", "TimeDelta()" ] @@ -28184,11 +27875,10 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyNoiseTime" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "NoiseTime", "+", "TimeDelta() * Frequency" ] @@ -28223,11 +27913,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyTranslationAmplitudeX" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TranslationAmplitudeX", "!=", "0" ] @@ -28236,11 +27925,10 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyDeltaX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "DeltaX", "=", "ShakeObject3D::Noise2d(\"\", NoiseTime, 1000) * TranslationAmplitudeX * EasingFactor" ] @@ -28262,11 +27950,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyTranslationAmplitudeY" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TranslationAmplitudeY", "!=", "0" ] @@ -28275,11 +27962,10 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyDeltaY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "DeltaY", "=", "ShakeObject3D::Noise2d(\"\", NoiseTime, 2000) * TranslationAmplitudeY * EasingFactor" ] @@ -28301,11 +27987,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyTranslationAmplitudeZ" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TranslationAmplitudeZ", "!=", "0" ] @@ -28314,11 +27999,10 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyDeltaZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "DeltaZ", "=", "ShakeObject3D::Noise2d(\"\", NoiseTime, 3000) * TranslationAmplitudeZ * EasingFactor" ] @@ -28341,11 +28025,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyRotationAmplitudeX" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "RotationAmplitudeX", "!=", "0" ] @@ -28354,11 +28037,10 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyDeltaAngleX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "DeltaAngleX", "=", "ShakeObject3D::Noise2d(\"\", NoiseTime, 4000) * RotationAmplitudeX * EasingFactor" ] @@ -28381,11 +28063,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyRotationAmplitudeY" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "RotationAmplitudeY", "!=", "0" ] @@ -28394,11 +28075,10 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyDeltaAngleY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "DeltaAngleY", "=", "ShakeObject3D::Noise2d(\"\", NoiseTime, 5000) * RotationAmplitudeY * EasingFactor" ] @@ -28421,11 +28101,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyRotationAmplitudeZ" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "RotationAmplitudeZ", "!=", "0" ] @@ -28434,11 +28113,10 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyDeltaAngleZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "DeltaAngleZ", "=", "ShakeObject3D::Noise2d(\"\", NoiseTime, 6000) * RotationAmplitudeZ * EasingFactor" ] @@ -28512,11 +28190,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyTranslationAmplitudeX" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TranslationAmplitudeX", "!=", "0" ] @@ -28540,11 +28217,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyTranslationAmplitudeY" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TranslationAmplitudeY", "!=", "0" ] @@ -28568,11 +28244,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyTranslationAmplitudeZ" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TranslationAmplitudeZ", "!=", "0" ] @@ -28597,11 +28272,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyRotationAmplitudeX" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "RotationAmplitudeX", "!=", "0" ] @@ -28626,11 +28300,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyRotationAmplitudeY" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "RotationAmplitudeY", "!=", "0" ] @@ -28655,11 +28328,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyRotationAmplitudeZ" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "RotationAmplitudeZ", "!=", "0" ] @@ -28709,55 +28381,50 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyTime" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Time", "=", "0" ] }, { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyNoiseTime" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "NoiseTime", "=", "TimeFromStart() * Frequency" ] }, { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Duration", "=", "NewDuration" ] }, { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyStartEasingDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StartEasingDuration", "=", "StartEaseDuration" ] }, { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyStopEasingDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StopEasingDuration", "=", "StopEaseDuration" ] @@ -28769,10 +28436,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsNumber" + "value": "NumberVariable" }, "parameters": [ - "\"NewDuration\"", + "NewDuration", "<", "StartEaseDuration + StopEaseDuration" ] @@ -28781,22 +28448,20 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyStartEasingDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StartEasingDuration", "=", "StartEaseDuration * NewDuration / (StartEaseDuration + StopEaseDuration)" ] }, { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyStopEasingDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StopEasingDuration", "=", "StopEaseDuration * NewDuration / (StartEaseDuration + StopEaseDuration)" ] @@ -28847,44 +28512,40 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyTime" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Time", "=", "0" ] }, { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyNoiseTime" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "NoiseTime", "=", "TimeFromStart() * Frequency" ] }, { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Duration", "=", "1234567890" ] }, { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyStartEasingDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StartEasingDuration", "=", "EaseDuration" ] @@ -28936,33 +28597,30 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyTime" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Time", "=", "0" ] }, { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Duration", "=", "EaseDuration" ] }, { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyStopEasingDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StopEasingDuration", "=", "EaseDuration" ] @@ -29002,22 +28660,20 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyTime" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Time", "<", "Duration" ] }, { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyTime" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Time", ">", "0" ] @@ -29164,11 +28820,10 @@ "actions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::SetPropertyFrequency" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Frequency", "=", "Value" ] @@ -29204,11 +28859,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyStartEasingDuration" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StartEasingDuration", "<=", "0" ] @@ -29230,11 +28884,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyStartEasingDuration" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StartEasingDuration", ">", "0" ] @@ -29283,11 +28936,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyStopEasingDuration" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StopEasingDuration", "<=", "0" ] @@ -29300,11 +28952,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyTime" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Time", "<", "Duration" ] @@ -29326,11 +28977,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyTime" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Time", ">=", "Duration" ] @@ -29354,11 +29004,10 @@ "conditions": [ { "type": { - "value": "ShakeObject3D::ShakeModel3D::PropertyStopEasingDuration" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StopEasingDuration", ">", "0" ] @@ -30469,21 +30118,18 @@ "category": "Visual effect", "extensionNamespace": "", "fullName": "Advanced 3D tween", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXRlbm5pcy1iYWxsIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyLDJDMTQuNSwyIDE2Ljc1LDIuOSAxOC41LDQuNEMxNi4zNiw2LjIzIDE1LDguOTYgMTUsMTJDMTUsMTUuMDQgMTYuMzYsMTcuNzcgMTguNSwxOS42QzE2Ljc1LDIxLjEgMTQuNSwyMiAxMiwyMkM5LjUsMjIgNy4yNSwyMS4xIDUuNSwxOS42QzcuNjQsMTcuNzcgOSwxNS4wNCA5LDEyQzksOC45NiA3LjY0LDYuMjMgNS41LDQuNEM3LjI1LDIuOSA5LjUsMiAxMiwyTTIyLDEyQzIyLDE0LjMyIDIxLjIxLDE2LjQ1IDE5Ljg4LDE4LjE1QzE4LjEyLDE2LjY4IDE3LDE0LjQ3IDE3LDEyQzE3LDkuNTMgMTguMTIsNy4zMiAxOS44OCw1Ljg1QzIxLjIxLDcuNTUgMjIsOS42OCAyMiwxMk0yLDEyQzIsOS42OCAyLjc5LDcuNTUgNC4xMiw1Ljg1QzUuODgsNy4zMiA3LDkuNTMgNywxMkM3LDE0LjQ3IDUuODgsMTYuNjggNC4xMiwxOC4xNUMyLjc5LDE2LjQ1IDIsMTQuMzIgMiwxMloiIC8+PC9zdmc+", "name": "Tween3D", "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/30bc03f9cf5f2f42960246a605352a6937ae6b603f0177396a83193849a4724a_tennis-ball.svg", "shortDescription": "Smoothly squash, strentch, tint and wobble 3D models.", - "version": "0.2.1", + "version": "0.3.1", "description": [ "Change 3D models proportions over time to make smooth animations like wobbling.", "", "It's used in this example:", - "* a 3D Bomberman-like game ([open the project online](https://editor.gdevelop.io/?project=example://3d-bomber-bunny))", - "", - "Breaking changes of 0.1.0:", - "- The Tween behavior is now required by the 3D Tween behavior. Add the Tween behavior on any object that uses the 3D Tween behavior" + "* a 3D Bomberman-like game ([open the project online](https://editor.gdevelop.io/?project=example://3d-bomber-bunny))" ], "origin": { "identifier": "Tween3D", @@ -30501,6 +30147,12 @@ "IWykYNRvhCZBN3vEgKEbBPOR3Oc2", "dt0tRnf2kHWJnjkrpnzTzNj9Yc63" ], + "changelog": [ + { + "version": "0.1.0", + "breaking": "- The Tween behavior is now required by the 3D Tween behavior. Add the Tween behavior on any object that uses the 3D Tween behavior." + } + ], "dependencies": [], "globalVariables": [], "sceneVariables": [], @@ -30583,12 +30235,18 @@ " setColor(tintColor, originalTint) {", " const originalMaterials = originalTint.materials;", " for (const [materialId, material] of this.materials) {", - " const originalColor = originalMaterials.get(materialId).color;", - " const color = material.color;", - " color.setHex(tintColor);", - " color.r *= originalColor.r;", - " color.g *= originalColor.g;", - " color.b *= originalColor.b;", + " const originalMaterial = originalMaterials.get(materialId);", + " if (!originalMaterial) {", + " // A new material may have been changed by another extension.", + " continue;", + " }", + " const originalColor = originalMaterial.color;", + "", + " const color = material.color;", + " color.setHex(tintColor);", + " color.r *= originalColor.r;", + " color.g *= originalColor.g;", + " color.b *= originalColor.b;", " }", " }", "", @@ -30607,7 +30265,7 @@ " tints = new Map();", " /**", " * Materials by material `id`.", - " * @type {Map}", + " * @type {Tint}", " */", " originalTint;", " /**", @@ -30676,19 +30334,11 @@ " }", " else {", " const materials = new Map();", - " object.get3DRendererObject().traverse((mesh) => {", - " if (mesh.material && mesh.material.color) {", - " const material = mesh.material;", - " const originalId = material.id;", - " if (materials.has(originalId)) {", - " // Meshes can share the same material.", - " return;", - " }", - " const tintedMaterial = mesh.material.clone();", - " tintedMaterial.originalId = originalId;", - " materials.set(originalId, tintedMaterial);", - " }", - " });", + " for (const [originalId, material] of this.originalTint.materials) {", + " const tintedMaterial = material.clone();", + " tintedMaterial.originalId = originalId;", + " materials.set(originalId, tintedMaterial);", + " }", " tint = new Tint(materials);", " }", " tint.setColor(color, this.originalTint);", @@ -30708,15 +30358,15 @@ "}", "", "gdjs.registerObjectDeletedFromSceneCallback(function (runtimeScene, deletedObject) {", - " const extension = runtimeScene.__tween3DExtension;", - " if (!extension) {", - " return;", - " }", - " const managers = extension.tintManagers;", - " const manager = managers.get(deletedObject.getName());", - " if (manager) {", - " manager.applyTint(deletedObject, 0xffffff);", - " }", + " const extension = runtimeScene.__tween3DExtension;", + " if (!extension) {", + " return;", + " }", + " const managers = extension.tintManagers;", + " const manager = managers.get(deletedObject.getName());", + " if (manager) {", + " manager.applyTint(deletedObject, 0xffffff);", + " }", "});", "", "", @@ -31261,6 +30911,7 @@ "fullName": "Advanced 3D tween", "name": "Tween3D", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -32807,10 +32458,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsString" + "value": "StringVariable" }, "parameters": [ - "\"Type\"", + "Type", "=", "\"StretchZ\"" ] @@ -32837,10 +32488,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsString" + "value": "StringVariable" }, "parameters": [ - "\"Type\"", + "Type", "=", "\"StretchY\"" ] @@ -32867,10 +32518,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsString" + "value": "StringVariable" }, "parameters": [ - "\"Type\"", + "Type", "=", "\"ScaleVolume\"" ] @@ -32897,10 +32548,10 @@ "conditions": [ { "type": { - "value": "CompareArgumentAsString" + "value": "StringVariable" }, "parameters": [ - "\"Type\"", + "Type", "=", "\"Tint\"" ] @@ -33597,10 +33248,12 @@ "conditions": [ { "type": { - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"IsPaused\"" + "IsPaused", + "True", + "" ] } ], @@ -33623,10 +33276,12 @@ { "type": { "inverted": true, - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"IsPaused\"" + "IsPaused", + "True", + "" ] } ], @@ -33713,10 +33368,12 @@ "conditions": [ { "type": { - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"JumpToEnd\"" + "JumpToEnd", + "True", + "" ] } ], @@ -34309,6 +33966,7 @@ "fullName": "3D wobble", "name": "Wobble", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -34378,11 +34036,10 @@ "conditions": [ { "type": { - "value": "Tween3D::Wobble::PropertyScaleMinTweenTime" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMinTweenTime", "<", "ScaleMinTweenDuration" ] @@ -34391,22 +34048,20 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMinTweenTime" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMinTweenTime", "+", "Object.Behavior::TimeDelta()" ] }, { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMin", "=", "Tween3D::EaseExp(ScaleMinTweenEasing, ScaleMinTweenInitialValue, ScaleMinTweenTarget, ScaleMinTweenTime / ScaleMinTweenDuration)" ] @@ -34418,11 +34073,10 @@ "conditions": [ { "type": { - "value": "Tween3D::Wobble::PropertyScaleMinTweenTime" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMinTweenTime", ">=", "ScaleMinTweenDuration" ] @@ -34431,11 +34085,10 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMin", "=", "ScaleMinTweenTarget" ] @@ -34449,11 +34102,10 @@ "conditions": [ { "type": { - "value": "Tween3D::Wobble::PropertyScaleMaxTweenTime" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMaxTweenTime", "<", "ScaleMaxTweenDuration" ] @@ -34462,22 +34114,20 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMaxTweenTime" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMaxTweenTime", "+", "Object.Behavior::TimeDelta()" ] }, { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMax", "=", "Tween3D::EaseExp(ScaleMaxTweenEasing, ScaleMaxTweenInitialValue, ScaleMaxTweenTarget, ScaleMaxTweenTime / ScaleMaxTweenDuration)" ] @@ -34489,11 +34139,10 @@ "conditions": [ { "type": { - "value": "Tween3D::Wobble::PropertyScaleMaxTweenTime" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMaxTweenTime", ">=", "ScaleMaxTweenDuration" ] @@ -34502,11 +34151,10 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMin", "=", "ScaleMinTweenTarget" ] @@ -34559,11 +34207,10 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Angle", "+", "mod(Object.Behavior::TimeDelta() * 2 * Pi()\n / PeriodDuration, 2 * Pi())" ] @@ -34643,11 +34290,10 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMin", "=", "Value" ] @@ -34724,11 +34370,10 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMax", "=", "Value" ] @@ -34765,55 +34410,50 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMinTweenInitialValue" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMinTweenInitialValue", "=", "Object.Behavior::ScaleMin()" ] }, { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMinTweenTime" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMinTweenTime", "=", "0" ] }, { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMinTweenTarget" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMinTweenTarget", "=", "TargetedValue" ] }, { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMinTweenDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMinTweenDuration", "=", "Duration" ] }, { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMinTweenEasing" + "value": "SetStringVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMinTweenEasing", "=", "Easing" ] @@ -34866,55 +34506,50 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMaxTweenInitialValue" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMaxTweenInitialValue", "=", "Object.Behavior::ScaleMax()" ] }, { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMaxTweenTime" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMaxTweenTime", "=", "0" ] }, { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMaxTweenTarget" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMaxTweenTarget", "=", "TargetedValue" ] }, { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMaxTweenDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMaxTweenDuration", "=", "Duration" ] }, { "type": { - "value": "Tween3D::Wobble::SetPropertyScaleMaxTweenEasing" + "value": "SetStringVariable" }, "parameters": [ - "Object", - "Behavior", + "ScaleMaxTweenEasing", "=", "Easing" ] @@ -35046,11 +34681,10 @@ "conditions": [ { "type": { - "value": "Tween3D::Wobble::PropertyTop" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "Top", "=", "\"Z+\"" ] @@ -35076,11 +34710,10 @@ "conditions": [ { "type": { - "value": "Tween3D::Wobble::PropertyTop" + "value": "StringVariable" }, "parameters": [ - "Object", - "Behavior", + "Top", "=", "\"Y-\"" ] @@ -35171,11 +34804,10 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyPeriodDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "PeriodDuration", "=", "Value" ] @@ -35252,11 +34884,10 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyScalePeriodOffset" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ScalePeriodOffset", "=", "Value" ] @@ -35333,11 +34964,10 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyStretchMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StretchMin", "=", "Value" ] @@ -35414,11 +35044,10 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyStretchMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StretchMax", "=", "Value" ] @@ -35495,11 +35124,10 @@ "actions": [ { "type": { - "value": "Tween3D::Wobble::SetPropertyStretchPeriodOffset" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "StretchPeriodOffset", "=", "Value" ] @@ -35693,20 +35321,21 @@ "category": "Camera", "extensionNamespace": "", "fullName": "Third person camera", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSI3LDEwIDEsMTMgNywxNiAxMywxMyAiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QwIiBwb2ludHM9IjEsMTMgMSwyMCA3LDIzIDEzLDIwIDEzLDEzICIvPg0KPGxpbmUgY2xhc3M9InN0MCIgeDE9IjciIHkxPSIxNiIgeDI9IjciIHkyPSIyMyIvPg0KPGxpbmUgY2xhc3M9InN0MCIgeDE9IjMxIiB5MT0iMTYiIHgyPSIyMSIgeTI9IjgiLz4NCjxsaW5lIGNsYXNzPSJzdDAiIHgxPSIyMSIgeTE9IjI0IiB4Mj0iMzEiIHkyPSIxNiIvPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTIyLjcsMjIuNkMyMCwyMS43LDE4LDE5LjEsMTgsMTZjMC0zLjEsMi01LjcsNC43LTYuNiIvPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE5LjgsMTEuM2MxLjQsMS4xLDIuMiwyLjgsMi4yLDQuN2MwLDEuOS0wLjksMy42LTIuMiw0LjciLz4NCjwvc3ZnPg0K", "name": "ThirdPersonCamera", "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/Line Hero Pack/Master/SVG/Virtual Reality/94e95d2c318e1f3dc7151a351024e13c574e1e44669c6696aa107d60230073f6_Virtual Reality_3d_vision_eye_vr.svg", "shortDescription": "Move the camera to look at an object from a given distance.", - "version": "1.5.0", + "version": "1.7.1", "description": [ "Move the camera to look at an object from a given distance with a rotation and an elevation angles.", "", "It can be useful for:", - "- Third person camera", - "- Isometric-like point of view", - "" + "- 3D platformer games ([open the project online](https://editor.gdevelop.io/?project=example://3d-platformer))", + "- 3D racing games ([open the project online](https://editor.gdevelop.io/?project=example://3d-car-coin-hunt))", + "- Orbit camera controls ([open the project online](https://editor.gdevelop.io/?project=example://3d-tile-based-city-builder))", + "- Isometric-like point of view ([open the project online](https://editor.gdevelop.io/?project=example://3d-road-crosser))" ], "origin": { "identifier": "ThirdPersonCamera", @@ -36237,6 +35866,7 @@ "fullName": "Third person camera", "name": "ThirdPersonCamera", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -36272,6 +35902,18 @@ "" ] }, + { + "type": { + "value": "ThirdPersonCamera::ThirdPersonCamera::SetElevationHalfwayDuration" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "ElevationHalfwayDuration", + "" + ] + }, { "type": { "value": "ThirdPersonCamera::ThirdPersonCamera::SetTranslationZHalfwayDuration" @@ -36313,46 +35955,44 @@ "conditions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::PropertyHasJustBeenCreated" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "HasJustBeenCreated", + "True", + "" ] } ], "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyHasJustBeenCreated" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", + "HasJustBeenCreated", + "False", "" ] }, { "type": { - "value": "SetCameraAngle" + "value": "SetNumberVariable" }, "parameters": [ - "", + "CameraZ", "=", - "Object.Angle() + 90", - "Object.Layer()", - "0" + "Object.Object3D::CenterZ()" ] }, { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyCameraZ" + "value": "ThirdPersonCamera::ThirdPersonCamera::JumpToTargetedRotation" }, "parameters": [ "Object", "Behavior", - "=", - "Object.Object3D::CenterZ()" + "" ] } ] @@ -36363,11 +36003,12 @@ { "type": { "inverted": true, - "value": "ThirdPersonCamera::ThirdPersonCamera::PropertyIsCalledManually" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "IsCalledManually", + "True", + "" ] } ], @@ -36435,11 +36076,11 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyIsCalledManually" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", + "IsCalledManually", + "False", "" ] }, @@ -36510,11 +36151,10 @@ "conditions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::PropertyCameraZ" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CameraZ", "<", "Object.Behavior::FreeAreaZMin()" ] @@ -36523,11 +36163,10 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyCameraZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CameraZ", "=", "Object.Behavior::FreeAreaZMin() + (CameraZ - Object.Behavior::FreeAreaZMin()) * exp(TimeDelta() * TranslationZLogSpeed)" ] @@ -36539,11 +36178,10 @@ "conditions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::PropertyCameraZ" + "value": "NumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CameraZ", ">", "Object.Behavior::FreeAreaZMax()" ] @@ -36552,11 +36190,10 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyCameraZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "CameraZ", "=", "Object.Behavior::FreeAreaZMax() + (CameraZ - Object.Behavior::FreeAreaZMax()) * exp(TimeDelta() * TranslationZLogSpeed)" ] @@ -36582,28 +36219,55 @@ "conditions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::PropertyIsRotatingWithObject" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "IsRotatingWithObject", + "True", + "" ] } ], "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyTargetedRotationAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TargetedRotationAngle", "=", "Object.Angle()" ] } ] }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "IsElevatingWithObject", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "TargetedElevationAngle", + "=", + "Object.Object3D::RotationY()" + ] + } + ] + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [], @@ -36613,23 +36277,33 @@ "value": "SetNumberVariable" }, "parameters": [ - "CameraAngle", + "CameraRotationAngle", "=", "TargetedRotationAngle + 90 + RotationAngleOffset + AngleDifference(CameraAngle(Object.Layer()), TargetedRotationAngle + 90 + RotationAngleOffset) * exp(TimeDelta() * RotationLogSpeed)" ] }, + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "CameraElevationAngle", + "=", + "TargetedElevationAngle + ElevationAngleOffset + AngleDifference(90 - Scene3D::CameraRotationX(Object.Layer()), TargetedElevationAngle + ElevationAngleOffset) * exp(TimeDelta() * ElevationLogSpeed)" + ] + }, { "type": { "value": "ThirdPersonCamera::LookFromDistanceAtPosition3D" }, "parameters": [ "", - "Object.CenterX() + ThirdPersonCamera::RotatedX(CameraAngle, OffsetX, -OffsetY)", - "Object.CenterY() + ThirdPersonCamera::RotatedY(CameraAngle, OffsetX, -OffsetY)", + "Object.CenterX() + ThirdPersonCamera::RotatedX(CameraRotationAngle, OffsetX, -OffsetY)", + "Object.CenterY() + ThirdPersonCamera::RotatedY(CameraRotationAngle, OffsetX, -OffsetY)", "CameraZ + OffsetZ", "Distance", - "CameraAngle", - "Object.Object3D::RotationY() + ElevationAngleOffset", + "CameraRotationAngle", + "CameraElevationAngle", "", "" ] @@ -36638,7 +36312,12 @@ "variables": [ { "folded": true, - "name": "CameraAngle", + "name": "CameraRotationAngle", + "type": "number", + "value": 0 + }, + { + "name": "CameraElevationAngle", "type": "number", "value": 0 } @@ -36668,7 +36347,6 @@ "fullName": "Rotate the camera all the way", "functionType": "Action", "name": "JumpToTargetedRotation", - "private": true, "sentence": "Rotate the camera all the way to the targeted angle of _PARAM0_", "events": [ { @@ -36676,28 +36354,55 @@ "conditions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::PropertyIsRotatingWithObject" + "value": "BooleanVariable" }, "parameters": [ - "Object", - "Behavior" + "IsRotatingWithObject", + "True", + "" ] } ], "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyTargetedRotationAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TargetedRotationAngle", "=", "Object.Angle()" ] } ] }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "IsElevatingWithObject", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "TargetedElevationAngle", + "=", + "Object.Object3D::RotationY()" + ] + } + ] + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [], @@ -36907,22 +36612,122 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyRotationHalfwayDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "RotationHalfwayDuration", "=", "Value" ] }, { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyRotationLogSpeed" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "RotationLogSpeed", + "=", + "log(0.5) / Value" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ThirdPersonCamera::ThirdPersonCamera", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the halfway time for elevation rotation of the object.", + "fullName": "Halfway time for elevation rotation", + "functionType": "ExpressionAndCondition", + "group": "Third person camera configuration", + "name": "ElevationHalfwayDuration", + "sentence": "the halfway time for elevation rotation", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "ElevationHalfwayDuration" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ThirdPersonCamera::ThirdPersonCamera", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "ElevationHalfwayDuration", + "name": "SetElevationHalfwayDuration", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "ln((1 - speed)) = ln(1 / 2) / halfwatTime" + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "ElevationHalfwayDuration", + "=", + "Value" + ] + }, + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "ElevationLogSpeed", "=", "log(0.5) / Value" ] @@ -37011,22 +36816,20 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyTranslationZHalfwayDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TranslationZHalfwayDuration", "=", "Value" ] }, { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyTranslationZLogSpeed" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TranslationZLogSpeed", "=", "log(0.5) / Value" ] @@ -37187,11 +36990,10 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyFollowFreeAreaZMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "FollowFreeAreaZMax", "=", "Value" ] @@ -37268,11 +37070,10 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyFollowFreeAreaZMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "FollowFreeAreaZMin", "=", "Value" ] @@ -37349,11 +37150,10 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyDistance" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "Distance", "=", "Value" ] @@ -37430,11 +37230,10 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyOffsetX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "OffsetX", "=", "Value" ] @@ -37511,11 +37310,10 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyOffsetY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "OffsetY", "=", "Value" ] @@ -37592,11 +37390,10 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyOffsetZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "OffsetZ", "=", "Value" ] @@ -37673,11 +37470,10 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyRotationAngleOffset" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "RotationAngleOffset", "=", "Value" ] @@ -37754,11 +37550,10 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyElevationAngleOffset" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "ElevationAngleOffset", "=", "Value" ] @@ -37835,22 +37630,21 @@ "actions": [ { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyTargetedRotationAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", - "Behavior", + "TargetedRotationAngle", "=", "Value" ] }, { "type": { - "value": "ThirdPersonCamera::ThirdPersonCamera::SetPropertyIsRotatingWithObject" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "Behavior", + "IsRotatingWithObject", + "False", "" ] } @@ -37889,14 +37683,25 @@ "unit": "Second", "label": "Halfway time for rotation", "group": "Catch-up speed", + "quickCustomizationVisibility": "hidden", "name": "RotationHalfwayDuration" }, + { + "value": "0", + "type": "Number", + "unit": "Second", + "label": "Halfway time for elevation rotation", + "group": "Catch-up speed", + "quickCustomizationVisibility": "hidden", + "name": "ElevationHalfwayDuration" + }, { "value": "0.125", "type": "Number", "unit": "Second", "label": "Halfway time on Z axis", "group": "Catch-up speed", + "quickCustomizationVisibility": "hidden", "name": "TranslationZHalfwayDuration" }, { @@ -37954,6 +37759,7 @@ "label": "Follow free area top border on Z axis", "group": "Position", "advanced": true, + "quickCustomizationVisibility": "hidden", "name": "FollowFreeAreaZMax" }, { @@ -37963,6 +37769,7 @@ "label": "Follow free area bottom border on Z axis", "group": "Position", "advanced": true, + "quickCustomizationVisibility": "hidden", "name": "FollowFreeAreaZMin" }, { @@ -37972,6 +37779,13 @@ "hidden": true, "name": "RotationLogSpeed" }, + { + "value": "", + "type": "Number", + "label": "", + "hidden": true, + "name": "ElevationLogSpeed" + }, { "value": "", "type": "Number", @@ -38005,8 +37819,16 @@ "value": "true", "type": "Boolean", "label": "Automatically rotate the camera with the object", + "quickCustomizationVisibility": "hidden", "name": "IsRotatingWithObject" }, + { + "value": "false", + "type": "Boolean", + "label": "Automatically rotate the camera with the object (elevation)", + "quickCustomizationVisibility": "hidden", + "name": "IsElevatingWithObject" + }, { "value": "0", "type": "Number", @@ -38015,6 +37837,15 @@ "description": "When this angle is set, the camera follow this value instead of the object angle.", "hidden": true, "name": "TargetedRotationAngle" + }, + { + "value": "0", + "type": "Number", + "unit": "DegreeAngle", + "label": "Targeted camera rotation angle", + "description": "When this angle is set, the camera follow this value instead of the object angle.", + "hidden": true, + "name": "TargetedElevationAngle" } ], "sharedPropertyDescriptors": [] @@ -38027,18 +37858,18 @@ "category": "Movement", "extensionNamespace": "", "fullName": "Stick objects to others", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXN0aWNrZXItb3V0bGluZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik01LjUgMkMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMkg1LjVNNS44IDRIMTguM0MxOS4zIDQgMjAuMSA0LjggMjAuMSA1LjhWMTVIMTguNkMxNi43IDE1IDE1LjEgMTYuNiAxNS4xIDE4LjVWMjBINS44QzQuOCAyMCA0IDE5LjIgNCAxOC4yVjUuOEM0IDQuOCA0LjggNCA1LjggNCIgLz48L3N2Zz4=", "name": "Sticker", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/sticker-outline.svg", "shortDescription": "Make objects follow the position and rotation of the object they are stuck to.", - "version": "0.5.1", + "version": "0.5.3", "description": [ "This extension can be useful to:", - "* Stick accessories to moving objects", - "* Animate a skeleton", - "* Delete an object with another one", + "- Stick accessories to moving objects", + "- Animate a skeleton", + "- Delete an object with another one", "", "An example allows to check it out ([open the project online](https://editor.gdevelop.io/?project=example://stick-objects))." ], @@ -38173,8 +38004,10 @@ " const deltaX = object.getCenterXInScene() - this.basisOldCenterXInScene;", " const deltaY = object.getCenterYInScene() - this.basisOldCenterYInScene;", " const angle = this.basisOldAngle * Math.PI / 180;", - " this.relativeRotatedX = (deltaX * Math.cos(angle) + deltaY * Math.sin(angle)) / this.basisOldWidth;", - " this.relativeRotatedY = (-deltaX * Math.sin(angle) + deltaY * Math.cos(angle)) / this.basisOldHeight;", + " const cosA = Math.cos(angle);", + " const sinA = Math.sin(angle);", + " this.relativeRotatedX = (deltaX * cosA + deltaY * sinA) / this.basisOldWidth;", + " this.relativeRotatedY = (-deltaX * sinA + deltaY * cosA) / this.basisOldHeight;", "", " // Save initial values to avoid calculus and rounding errors", " this.basisOriginalWidth = this.basisObject.getWidth();", @@ -38220,78 +38053,104 @@ " }", " this.followingDoneThisFrame = true;", " const basisObject = this.basisObject;", - " if (basisObject) {", - " // If the behavior on the basis object has a different name,", - " // the objects will still follow their basis objects", - " // but frame delays could happen.", - " const behaviorName = this.behavior.getName();", - " if (basisObject.hasBehavior(behaviorName)) {", - " const basisBehavior = basisObject.getBehavior(behaviorName);", - " if (basisBehavior.type === this.behavior.type) {", - " // Follow parents 1st to avoid frame delays", - " basisBehavior._sticker.followBasisObject();", - " }", + " if (!basisObject) {", + " return;", + " }", + " // If the behavior on the basis object has a different name,", + " // the objects will still follow their basis objects", + " // but frame delays could happen.", + " const behaviorName = this.behavior.getName();", + " if (basisObject.hasBehavior(behaviorName)) {", + " const basisBehavior = basisObject.getBehavior(behaviorName);", + " if (basisBehavior.type === this.behavior.type) {", + " // Follow parents 1st to avoid frame delays", + " basisBehavior._sticker.followBasisObject();", " }", + " }", + " if (this.behavior._getOnlyFollowPosition()) {", + " this.followPosition();", + " } else {", + " this.followTransformation();", + " }", + " this.updateOldCoordinates();", + " }", "", - " const object = this.behavior.owner;", - "", - " if (this.behavior._getOnlyFollowPosition()) {", - " if (object.getX() !== this.ownerOldX", - " || object.getY() !== this.ownerOldY) {", - " this.updateRelativeCoordinates();", - " }", - "", - " if (this.basisOldX !== basisObject.getX() ||", - " this.basisOldY !== basisObject.getY()) {", - " object.setPosition(", - " basisObject.getX() + this.relativeX,", - " basisObject.getY() + this.relativeY);", - " }", - " } else {", - " if (object.getX() !== this.ownerOldX", - " || object.getY() !== this.ownerOldY", - " || object.getAngle() !== this.ownerOldAngle", - " || object.getWidth() !== this.ownerOldWidth", - " || object.getHeight() !== this.ownerOldHeight) {", - " this.updateRelativeCoordinates();", - " }", + " followPosition() {", + " const object = this.behavior.owner;", + " const basisObject = this.basisObject;", + " if (!basisObject) {", + " return;", + " }", + " if (object.getX() !== this.ownerOldX", + " || object.getY() !== this.ownerOldY) {", + " this.updateRelativeCoordinates();", + " }", + " if (this.basisOldX !== basisObject.getX()", + " || this.basisOldY !== basisObject.getY()) {", + " object.setPosition(", + " basisObject.getX() + this.relativeX,", + " basisObject.getY() + this.relativeY);", + " }", + " }", "", - " // Follow basisObject", - " if (basisObject.getAngle() === this.basisOriginalAngle && this.basisOriginalAngle === 0) {", - " if (basisObject.getWidth() === this.basisOriginalWidth ||", - " basisObject.getHeight() === this.basisOriginalHeight) {", - " if (this.basisOldX !== basisObject.getX() ||", - " this.basisOldY !== basisObject.getY()) {", - " object.setPosition(", - " basisObject.getX() + this.relativeX,", - " basisObject.getY() + this.relativeY);", - " }", - " } else {", - " object.setCenterPositionInScene(", - " basisObject.getCenterXInScene() + this.relativeRotatedX * basisObject.getWidth(),", - " basisObject.getCenterYInScene() + this.relativeRotatedY * basisObject.getHeight());", + " followTransformation() {", + " const object = this.behavior.owner;", + " const basisObject = this.basisObject;", + " if (!basisObject) {", + " return;", + " }", + " if (object.getX() !== this.ownerOldX", + " || object.getY() !== this.ownerOldY", + " || object.getAngle() !== this.ownerOldAngle", + " || object.getWidth() !== this.ownerOldWidth", + " || object.getHeight() !== this.ownerOldHeight) {", + " this.updateRelativeCoordinates();", + " }", + " if (this.basisOldAngle !== this.basisObject.getAngle()", + " || this.basisOldWidth !== this.basisObject.getWidth()", + " || this.basisOldHeight !== this.basisObject.getHeight()", + " || this.basisOldCenterXInScene !== this.basisObject.getCenterXInScene()", + " || this.basisOldCenterYInScene !== this.basisObject.getCenterYInScene()) {", + " // Unproportional dimensions changes won't work as expected", + " // if the object angle is not null but nothing more can be done", + " // because there is no full affine transformation on objects.", + " if (basisObject.getWidth() !== this.basisOriginalWidth) {", + " object.setWidth(this.relativeWidth * basisObject.getWidth());", + " }", + " if (basisObject.getHeight() !== this.basisOriginalHeight) {", + " object.setHeight(this.relativeHeight * basisObject.getHeight());", + " }", + " // Follow basisObject", + " if (basisObject.getAngle() === this.basisOriginalAngle", + " && this.basisOriginalAngle === 0) {", + " if (basisObject.getWidth() === this.basisOriginalWidth", + " || basisObject.getHeight() === this.basisOriginalHeight) {", + " if (this.basisOldX !== basisObject.getX() ||", + " this.basisOldY !== basisObject.getY()) {", + " object.setPosition(", + " basisObject.getX() + this.relativeX,", + " basisObject.getY() + this.relativeY);", " }", " } else {", - " object.setAngle(basisObject.getAngle() + this.relativeAngle);", - "", - " const deltaX = this.relativeRotatedX * basisObject.getWidth();", - " const deltaY = this.relativeRotatedY * basisObject.getHeight();", - " const angle = -basisObject.getAngle() * Math.PI / 180;", - " object.setX(basisObject.getCenterXInScene() + object.getX() - object.getCenterXInScene() + deltaX * Math.cos(angle) + deltaY * Math.sin(angle));", - " object.setY(basisObject.getCenterYInScene() + object.getY() - object.getCenterYInScene() - deltaX * Math.sin(angle) + deltaY * Math.cos(angle));", - " }", - " // Unproportional dimensions changes won't work as expected", - " // if the object angle is not null but nothing more can be done", - " // because there is no full affine transformation on objects.", - " if (basisObject.getWidth() !== this.basisOriginalWidth) {", - " object.setWidth(this.relativeWidth * basisObject.getWidth());", - " }", - " if (basisObject.getHeight() !== this.basisOriginalHeight) {", - " object.setHeight(this.relativeHeight * basisObject.getHeight());", + " object.setCenterPositionInScene(", + " basisObject.getCenterXInScene() + this.relativeRotatedX * basisObject.getWidth(),", + " basisObject.getCenterYInScene() + this.relativeRotatedY * basisObject.getHeight());", " }", + " } else {", + " object.setAngle(basisObject.getAngle() + this.relativeAngle);", + "", + " const deltaX = this.relativeRotatedX * basisObject.getWidth();", + " const deltaY = this.relativeRotatedY * basisObject.getHeight();", + " const angle = -basisObject.getAngle() * Math.PI / 180;", + " const cosA = Math.cos(angle);", + " const sinA = Math.sin(angle);", + " object.setX(", + " basisObject.getCenterXInScene() + object.getX() - object.getCenterXInScene()", + " + deltaX * cosA + deltaY * sinA);", + " object.setY(", + " basisObject.getCenterYInScene() + object.getY() - object.getCenterYInScene()", + " - deltaX * sinA + deltaY * cosA);", " }", - "", - " this.updateOldCoordinates();", " }", " }", "}", @@ -38366,6 +38225,7 @@ "fullName": "Sticker", "name": "Sticker", "objectType": "", + "quickCustomizationVisibility": "hidden", "eventsFunctions": [ { "fullName": "", @@ -38640,25 +38500,19 @@ "category": "Visual effect", "extensionNamespace": "", "fullName": "3D particle emitter", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWZpcmUiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTcuNjYgMTEuMkMxNy40MyAxMC45IDE3LjE1IDEwLjY0IDE2Ljg5IDEwLjM4QzE2LjIyIDkuNzggMTUuNDYgOS4zNSAxNC44MiA4LjcyQzEzLjMzIDcuMjYgMTMgNC44NSAxMy45NSAzQzEzIDMuMjMgMTIuMTcgMy43NSAxMS40NiA0LjMyQzguODcgNi40IDcuODUgMTAuMDcgOS4wNyAxMy4yMkM5LjExIDEzLjMyIDkuMTUgMTMuNDIgOS4xNSAxMy41NUM5LjE1IDEzLjc3IDkgMTMuOTcgOC44IDE0LjA1QzguNTcgMTQuMTUgOC4zMyAxNC4wOSA4LjE0IDEzLjkzQzguMDggMTMuODggOC4wNCAxMy44MyA4IDEzLjc2QzYuODcgMTIuMzMgNi42OSAxMC4yOCA3LjQ1IDguNjRDNS43OCAxMCA0Ljg3IDEyLjMgNSAxNC40N0M1LjA2IDE0Ljk3IDUuMTIgMTUuNDcgNS4yOSAxNS45N0M1LjQzIDE2LjU3IDUuNyAxNy4xNyA2IDE3LjdDNy4wOCAxOS40MyA4Ljk1IDIwLjY3IDEwLjk2IDIwLjkyQzEzLjEgMjEuMTkgMTUuMzkgMjAuOCAxNy4wMyAxOS4zMkMxOC44NiAxNy42NiAxOS41IDE1IDE4LjU2IDEyLjcyTDE4LjQzIDEyLjQ2QzE4LjIyIDEyIDE3LjY2IDExLjIgMTcuNjYgMTEuMk0xNC41IDE3LjVDMTQuMjIgMTcuNzQgMTMuNzYgMTggMTMuNCAxOC4xQzEyLjI4IDE4LjUgMTEuMTYgMTcuOTQgMTAuNSAxNy4yOEMxMS42OSAxNyAxMi40IDE2LjEyIDEyLjYxIDE1LjIzQzEyLjc4IDE0LjQzIDEyLjQ2IDEzLjc3IDEyLjMzIDEzQzEyLjIxIDEyLjI2IDEyLjIzIDExLjYzIDEyLjUgMTAuOTRDMTIuNjkgMTEuMzIgMTIuODkgMTEuNyAxMy4xMyAxMkMxMy45IDEzIDE1LjExIDEzLjQ0IDE1LjM3IDE0LjhDMTUuNDEgMTQuOTQgMTUuNDMgMTUuMDggMTUuNDMgMTUuMjNDMTUuNDYgMTYuMDUgMTUuMSAxNi45NSAxNC41IDE3LjVIMTQuNVoiIC8+PC9zdmc+", "name": "ParticleEmitter3D", "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/f2e5a34bf465f781866677762d385d6c8e9e8d203383f2df9a3b7e0fad6a2cb5_fire.svg", - "shortDescription": "Display a large number of particles to create visual effects.", - "version": "2.0.5", + "shortDescription": "Display a large number of particles in 3D to create visual effects in a 3D game.", + "version": "2.2.0", "description": [ - "Particle emitters can be used to display:", - "- Fire", - "- Smoke", - "- Splashes", - "- Lights", + "3D particle emitters let you create and display many small particles to simulate visual effects in your game — like fire, explosions, smoke, or dust.", "", - "Breaking change", - "- 2.0.0", - " - Object properties for position and rotation have been removed. They must be set with the instance editor or the action.", - "- 1.0.0", - " - Particles were 3 times too small" + "The parameters of the object can be configured in multiple different ways to create a specific desired effect. GDevelop will give a set of a pre-configured 3D particle emitters that you should try first.", + "", + "Use these 3D particle emitters in 3D games. For 2D games or particles that appear on a game's 2D user interface, use the 2D particle emitter object instead." ], "origin": { "identifier": "ParticleEmitter3D", @@ -38676,6 +38530,16 @@ "authorIds": [ "IWykYNRvhCZBN3vEgKEbBPOR3Oc2" ], + "changelog": [ + { + "version": "2.0.0", + "breaking": "- Object properties for position and rotation have been removed. They must be set with the instance editor or the action." + }, + { + "version": "1.0.0", + "breaking": "- Particles were 3 times too small." + } + ], "dependencies": [], "globalVariables": [], "sceneVariables": [], @@ -38695,6 +38559,8 @@ " return;", "}", "", + "const game = runtimeScene.getGame();", + "", "class ParticleEmitter3DRenderer extends gdjs.CustomRuntimeObject3DRenderer {", " constructor(", " object,", @@ -38708,17 +38574,20 @@ " const threeObject3D = this.get3DRendererObject();", "", " threeObject3D.rotation.set(", - " gdjs.toRad(this._object.getRotationX()),", + " // TODO The rotation on X goes the wrong way.", + " // Increment the major and remove this sign.", + " - gdjs.toRad(this._object.getRotationX()),", " gdjs.toRad(this._object.getRotationY()),", - " -gdjs.toRad(this._object.angle)", + " gdjs.toRad(this._object.angle)", " );", "", " threeObject3D.position.set(", " this._object.getX(),", - " -this._object.getY(),", + " this._object.getY(),", " this._object.getZ()", " );", "", + " // Force the scale to 1 because the particle emitter doesn't really has a size.", " threeObject3D.scale.set(", " this._object.isFlippedX() ? -1 : 1,", " this._object.isFlippedY() ? -1 : 1,", @@ -38731,6 +38600,89 @@ " }", "}", "", + "const coneLength = 64;", + "", + "class ParticleEmitterHelper extends THREE.Object3D {", + " /** @type {gdjs.CustomRuntimeObject3D} */", + " object;", + " /** @type {THREE.LineSegments} */", + " cone;", + " /** @type {THREE.LineSegments} */", + " centerLine;", + " /** @type {THREE.Mesh} */", + " originBox;", + "", + "\t/**", + " * @param gdjs.CustomRuntimeObject3D object", + "\t */", + " constructor(object) {", + " super();", + " this.object = object;", + " this.type = 'ParticleEmitterHelper';", + "", + " const coneGeometry = new THREE.BufferGeometry();", + " const conePositions = [", + " 0, 0, 0, 0, 0, 1,", + " 0, 0, 0, 1, 0, 1,", + " 0, 0, 0, - 1, 0, 1,", + " 0, 0, 0, 0, 1, 1,", + " 0, 0, 0, 0, - 1, 1", + " ];", + " for (let i = 0, j = 1, l = 32; i < l; i++ , j++) {", + " const p1 = (i / l) * Math.PI * 2;", + " const p2 = (j / l) * Math.PI * 2;", + " conePositions.push(", + " Math.cos(p1), Math.sin(p1), 1,", + " Math.cos(p2), Math.sin(p2), 1", + " );", + " }", + " coneGeometry.setAttribute('position', new THREE.Float32BufferAttribute(conePositions, 3));", + " this.cone = new THREE.LineSegments(", + " coneGeometry,", + " new THREE.LineBasicMaterial({ fog: false, toneMapped: false })", + " );", + " this.add(this.cone);", + " const centerLineGeometry = new THREE.BufferGeometry();", + " centerLineGeometry.setAttribute('position', new THREE.Float32BufferAttribute([", + " 0, 0, 0, 0, 0, coneLength", + " ], 3));", + " this.centerLine = new THREE.LineSegments(", + " centerLineGeometry,", + " new THREE.LineBasicMaterial({ fog: false, toneMapped: false })", + " );", + " this.add(this.centerLine);", + "", + " this.originBox = new THREE.Mesh(", + " new THREE.BoxGeometry(16, 16, 16),", + " new THREE.MeshBasicMaterial({ fog: false, toneMapped: false })", + " );", + " this.add(this.originBox);", + " this.update();", + "", + " this.originBox.gdjsRuntimeObject = object;", + " }", + "", + " dispose() {", + " this.cone.geometry.dispose();", + " this.cone.material.dispose();", + " this.centerLine.geometry.dispose();", + " this.centerLine.material.dispose();", + " this.originBox.geometry.dispose();", + " this.originBox.material.dispose();", + " }", + "", + " update() {", + " const coneWidth = coneLength * Math.sin(gdjs.toRad(this.object._getSpayConeAngle()));", + " const coneHeight = coneLength * Math.cos(gdjs.toRad(this.object._getSpayConeAngle()));", + " this.cone.scale.set(coneWidth, coneWidth, coneHeight);", + " const startColor = gdjs.rgbOrHexStringToNumber(this.object._getStartColor())", + " const endColor = gdjs.rgbOrHexStringToNumber(this.object._getEndColor());", + " this.cone.material.color.set(endColor);", + " this.centerLine.material.color.set(startColor);", + " this.originBox.material.color.set(startColor);", + " }", + "}", + "", "/**", " * @param {string} colorString", " * @param {THREE.Vector4} threeColor", @@ -38921,6 +38873,11 @@ " break;", " }", " }", + "", + " setImage(resourceName) {", + " const texture = game.getImageManager().getThreeTexture(resourceName);", + " this.particleSystem.texture = texture;", + " }", "}", "", "", @@ -45297,6 +45254,7 @@ "gdjs.__particleEmmiter3DExtension = {", " ParticleEmitter3DRenderer,", " ParticleEmitterAdapter,", + " ParticleEmitterHelper,", "", " ApplyCollision,", " ApplyForce,", @@ -45510,37 +45468,34 @@ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ - "const BatchedRenderer = gdjs.__particleEmmiter3DExtension.BatchedRenderer;", - "const ParticleSystem = gdjs.__particleEmmiter3DExtension.ParticleSystem;", - "const TextureLoader = gdjs.__particleEmmiter3DExtension.TextureLoader;", - "const IntervalValue = gdjs.__particleEmmiter3DExtension.IntervalValue;", - "const ConstantValue = gdjs.__particleEmmiter3DExtension.ConstantValue;", - "const ConstantColor = gdjs.__particleEmmiter3DExtension.ConstantColor;", - "const ColorOverLife = gdjs.__particleEmmiter3DExtension.ColorOverLife;", - "const SizeOverLife = gdjs.__particleEmmiter3DExtension.SizeOverLife;", - "const ApplyForce = gdjs.__particleEmmiter3DExtension.ApplyForce;", - "const Gradient = gdjs.__particleEmmiter3DExtension.Gradient;", - "const PiecewiseBezier = gdjs.__particleEmmiter3DExtension.PiecewiseBezier;", - "const Bezier = gdjs.__particleEmmiter3DExtension.Bezier;", - "const PointEmitter = gdjs.__particleEmmiter3DExtension.PointEmitter;", - "const ConeEmitter = gdjs.__particleEmmiter3DExtension.ConeEmitter;", - "const RenderMode = gdjs.__particleEmmiter3DExtension.RenderMode;", + "const {", + " ParticleEmitterAdapter,", + " ParticleEmitter3DRenderer,", + " ParticleEmitterHelper,", "", - "const { ParticleEmitterAdapter, ParticleEmitter3DRenderer } = gdjs.__particleEmmiter3DExtension;", + " ParticleSystem,", + " IntervalValue,", + " ConstantValue,", + " ConstantColor,", + " ColorOverLife,", + " SizeOverLife,", + " ApplyForce,", + " Gradient,", + " PiecewiseBezier,", + " Bezier,", + " PointEmitter,", + " ConeEmitter,", + " RenderMode", + "} = gdjs.__particleEmmiter3DExtension;", "", "/** @type {gdjs.CustomRuntimeObject} */", "const object = objects[0];", "", "// Here runtimeScene is the gdjs.CustomRuntimeObjectInstanceContainer inside the custom object.", "const gameScene = object.getRuntimeScene();", + "const game = runtimeScene.getGame();", "", - "/** @type {SpriteObjectDataType} */", - "const particleSpriteData = object._instanceContainer._objects.get(\"Particle\");", - "const resourceName = particleSpriteData.animations[0].directions[0].sprites[0].image;", - "const texture = object", - " .getInstanceContainer()", - " .getGame()", - " .getImageManager().getThreeTexture(resourceName);", + "const texture = game.getImageManager().getThreeTexture('');", "", "// Set the blending here because changes are not applied after the emitter creation.", "const blendingString = object._getBlending();", @@ -45613,7 +45568,7 @@ "", "// This is a hack that may break in future releases.", "// Replace the group that would hold children objects by the emmiter.", - "const layer = gameScene.getLayer(object.getLayer());", + "const layer = object.getInstanceContainer().getLayer(object.getLayer());", "const group = object.getRenderer()._threeGroup;", "layer.getRenderer().remove3DRendererObject(group);", "particleSystem.emitter.position.copy(group.position);", @@ -45622,8 +45577,15 @@ "", "const particleEmitter3DRenderer = new ParticleEmitter3DRenderer(object, object._instanceContainer, object.getInstanceContainer());", "object._renderer = particleEmitter3DRenderer;", - "particleEmitter3DRenderer._threeGroup = particleSystem.emitter;", - "layer.getRenderer().add3DRendererObject(particleSystem.emitter);", + "if (game.isInGameEdition && game.isInGameEdition()) {", + " const particleEmitterHelper = new ParticleEmitterHelper(object);", + " particleEmitter3DRenderer._threeGroup = particleEmitterHelper;", + " layer.getRenderer().add3DRendererObject(particleEmitterHelper);", + "}", + "else {", + " particleEmitter3DRenderer._threeGroup = particleSystem.emitter;", + " layer.getRenderer().add3DRendererObject(particleSystem.emitter);", + "}", "", "particleSystem.emitter.updateMatrixWorld(true);", "", @@ -45703,7 +45665,7 @@ " for (const layerName of layerNames) {", " const layer = gameScene.getLayer(layerName);", " if (layer.__particleEmmiter3DExtension) {", - " layer.__particleEmmiter3DExtension.batchSystem.update(object.getElapsedTime() / 1000);", + " layer.__particleEmmiter3DExtension.batchSystem.update(layer.getElapsedTime() / 1000);", " }", " }", "}" @@ -45975,6 +45937,15 @@ "Object.GravityTop()", "" ] + }, + { + "type": { + "value": "ParticleEmitter3D::ParticleEmitter3D::UpdateImage" + }, + "parameters": [ + "Object", + "" + ] } ], "events": [ @@ -45984,10 +45955,12 @@ { "type": { "inverted": true, - "value": "ParticleEmitter3D::ParticleEmitter3D::PropertyAreParticlesRelative" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "AreParticlesRelative", + "True", + "" ] } ], @@ -46009,10 +45982,12 @@ "conditions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::PropertyAreParticlesRelative" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "AreParticlesRelative", + "True", + "" ] } ], @@ -46060,6 +46035,87 @@ ] } ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ParticleEmitter3D::ParticleEmitter3D::UpdateHelper" + }, + "parameters": [ + "Object", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "ParticleEmitter3D::ParticleEmitter3D", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "Update helper", + "functionType": "Action", + "name": "UpdateHelper", + "private": true, + "sentence": "Update graphical helper of _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::JsCode", + "inlineCode": [ + "const game = runtimeScene.getGame();", + "if (game.isInGameEdition && game.isInGameEdition()) {", + " const particleEmitterHelper = objects[0].get3DRendererObject();", + " particleEmitterHelper.update();", + "}" + ], + "parameterObjects": "Object", + "useStrict": true, + "eventsSheetExpanded": false + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "ParticleEmitter3D::ParticleEmitter3D", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "Update particle image", + "functionType": "Action", + "name": "UpdateImage", + "private": true, + "sentence": "Update particle image of _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::JsCode", + "inlineCode": [ + "/** @type {gdjs.CustomRuntimeObject3D} */\r", + "const object = objects[0];\r", + "/** @type {SpriteObjectDataType} */\r", + "const particleSpriteData = object._instanceContainer._objects.get(\"Particle\");\r", + "/** @type {gdjs.SpriteAnimationData} */\r", + "const animation = particleSpriteData.animations[0];\r", + "const animationFrame = animation ? animation.directions[0].sprites[0] : null;\r", + "const resourceName = animationFrame ? animationFrame.image : '';\r", + "object.__particleEmitterAdapter.setImage(resourceName);" + ], + "parameterObjects": "Object", + "useStrict": true, + "eventsSheetExpanded": true } ], "parameters": [ @@ -46147,7 +46203,7 @@ " for (const layerName of layerNames) {", " const layer = gameScene.getLayer(layerName);", " if (layer.__particleEmmiter3DExtension) {", - " layer.__particleEmmiter3DExtension.batchSystem.update(object.getElapsedTime() / 1000);", + " layer.__particleEmmiter3DExtension.batchSystem.update(layer.getElapsedTime() / 1000);", " }", " }", "}" @@ -46187,10 +46243,16 @@ " // Here runtimeScene is the gdjs.CustomRuntimeObjectInstanceContainer inside the custom object.", " const gameScene = object.getRuntimeScene();", "", - " const layer = gameScene.getLayer(object.getLayer());", + " let rootObject = object;", + " while (rootObject.getInstanceContainer().getOwner) {", + " rootObject = rootObject.getInstanceContainer().getOwner();", + " }", + "", + " const layer = gameScene.getLayer(rootObject.getLayer());", " layer.__particleEmmiter3DExtension = layer.__particleEmmiter3DExtension || {};", " if (!layer.__particleEmmiter3DExtension.batchSystem) {", " const batchSystem = new gdjs.__particleEmmiter3DExtension.BatchedRenderer();", + " batchSystem.scale.y *= -1;", " const threeScene = layer.getRenderer().getThreeScene();", " if (threeScene) {", " threeScene.add(batchSystem);", @@ -46234,7 +46296,7 @@ ], "parameterObjects": "Object", "useStrict": true, - "eventsSheetExpanded": false + "eventsSheetExpanded": true } ], "parameters": [ @@ -46257,7 +46319,6 @@ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ - "\r", "const object = objects[0];\r", "\r", "eventsFunctionContext.returnValue =\r", @@ -46363,10 +46424,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Z", "=", "Value" ] @@ -46435,10 +46496,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyRotationX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "RotationX", "=", "Value" ] @@ -46518,10 +46579,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyRotationY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "RotationY", "=", "Value" ] @@ -46599,10 +46660,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyStartColor" + "value": "SetStringVariable" }, "parameters": [ - "Object", + "StartColor", "=", "Value" ] @@ -46681,10 +46742,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyEndColor" + "value": "SetStringVariable" }, "parameters": [ - "Object", + "EndColor", "=", "Value" ] @@ -46763,10 +46824,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyStartOpacity" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "StartOpacity", "=", "Value" ] @@ -46845,10 +46906,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyEndOpacity" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "EndOpacity", "=", "Value" ] @@ -46927,10 +46988,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyFlow" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Flow", "=", "Value" ] @@ -47010,10 +47071,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyStartSizeMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "StartSizeMin", "=", "Value" ] @@ -47092,10 +47153,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyStartSizeMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "StartSizeMax", "=", "Value" ] @@ -47175,10 +47236,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyEndScale" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "EndScale", "=", "Value" ] @@ -47258,10 +47319,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyStartSpeedMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "StartSpeedMin", "=", "Value" ] @@ -47340,10 +47401,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyStartSpeedMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "StartSpeedMax", "=", "Value" ] @@ -47422,10 +47483,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyLifespanMin" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "LifespanMin", "=", "Value" ] @@ -47505,10 +47566,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyLifespanMax" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "LifespanMax", "=", "Value" ] @@ -47588,10 +47649,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyDuration" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Duration", "=", "Value" ] @@ -47635,10 +47696,12 @@ "conditions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::PropertyAreParticlesRelative" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "AreParticlesRelative", + "True", + "" ] } ], @@ -47678,21 +47741,24 @@ { "type": { "inverted": true, - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"Value\"" + "Value", + "True", + "" ] } ], "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyAreParticlesRelative" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "no" + "AreParticlesRelative", + "False", + "" ] } ] @@ -47702,21 +47768,24 @@ "conditions": [ { "type": { - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"Value\"" + "Value", + "True", + "" ] } ], "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyAreParticlesRelative" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "yes" + "AreParticlesRelative", + "True", + "" ] } ] @@ -47801,10 +47870,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertySpayConeAngle" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "SpayConeAngle", "=", "Value" ] @@ -47886,10 +47955,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyBlending" + "value": "SetStringVariable" }, "parameters": [ - "Object", + "Blending", "=", "Value" ] @@ -47970,10 +48039,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyGravityTop" + "value": "SetStringVariable" }, "parameters": [ - "Object", + "GravityTop", "=", "Value" ] @@ -48053,10 +48122,10 @@ "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyGravity" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Gravity", "=", "Value" ] @@ -48100,10 +48169,12 @@ "conditions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::PropertyShouldAutodestruct" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "ShouldAutodestruct", + "True", + "" ] } ], @@ -48143,21 +48214,24 @@ { "type": { "inverted": true, - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"Value\"" + "Value", + "True", + "" ] } ], "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyShouldAutodestruct" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "no" + "ShouldAutodestruct", + "False", + "" ] } ] @@ -48167,21 +48241,24 @@ "conditions": [ { "type": { - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"Value\"" + "Value", + "True", + "" ] } ], "actions": [ { "type": { - "value": "ParticleEmitter3D::ParticleEmitter3D::SetPropertyShouldAutodestruct" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "yes" + "ShouldAutodestruct", + "True", + "" ] } ] @@ -48403,13 +48480,13 @@ "category": "General", "extensionNamespace": "", "fullName": "3D raycast", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXJheS1zdGFydC1hcnJvdyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMywxMkwxOSwxNlYxM0g2LjgzQzYuNDIsMTQuMTcgNS4zMSwxNSA0LDE1QTMsMyAwIDAsMSAxLDEyQTMsMyAwIDAsMSA0LDlDNS4zMSw5IDYuNDIsOS44MyA2LjgzLDExSDE5VjhMMjMsMTJaIiAvPjwvc3ZnPg==", "name": "Raycaster3D", "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/8419f46b76bce482c14b4c03b4141a64d457e4cdc92686f3470381f5d2694abd_ray-start-arrow.svg", "shortDescription": "Find 3D objects that cross a line.", - "version": "0.1.4", + "version": "0.1.7", "description": [ "It can be useful to:", "- Find 3D objects under the pointer", @@ -48466,207 +48543,187 @@ "sentence": "Define helper classes JavaScript code", "events": [ { - "type": "BuiltinCommonInstructions::Standard", - "conditions": [ - { - "type": { - "value": "GlobalVariableAsBoolean" - }, - "parameters": [ - "_Raycaster3DExtension_ClassesDefined", - "" - ] - } - ], - "actions": [ - { - "type": { - "value": "SetGlobalVariableAsBoolean" - }, - "parameters": [ - "_Raycaster3DExtension_ClassesDefined", - "True" - ] - } + "type": "BuiltinCommonInstructions::JsCode", + "inlineCode": [ + "if (gdjs.__raycaster3DExtension) {", + " return;", + "}", + "", + "class Raycaster {", + " raycaster = new THREE.Raycaster();", + " pointer = new THREE.Vector2();", + " /** @type {Array} */", + " raycastResults = [];", + " lastDistance = 0;", + " lastPositionX = 0;", + " lastPositionY = 0;", + " lastPositionZ = 0;", + " lastNormal = new THREE.Vector3();", + "", + " /**", + " * @param objectsLists {Hashtable}", + " * @param objects {gdjs.RuntimeObject[]}", + " * @param pointerX {number}", + " * @param pointerY {number}", + " * @param distanceMax {number}", + " */", + " recastFromCamera(objectsLists, objects, pointerX, pointerY, distanceMax) {", + " if (objects.length === 0) {", + " return false;", + " }", + " const object = objects[0];", + " const layer = object.getInstanceContainer().getLayer(object.getLayer());", + " const camera = layer.getRenderer().getThreeCamera();", + "", + " const raycaster = this.raycaster;", + " const pointer = this.pointer;", + " pointer.x = -1 + 2 * pointerX;", + " pointer.y = 1 - 2 * pointerY;", + " raycaster.setFromCamera(pointer, camera);", + " raycaster.far = distanceMax;", + "", + " return this._doRecast(objectsLists, objects);", + " }", + "", + " /**", + " * @param objectsLists {Hashtable}", + " * @param objects {gdjs.RuntimeObject[]}", + " * @param originX {number}", + " * @param originY {number}", + " * @param originZ {number}", + " * @param rotationAngle {number}", + " * @param elevationAngle {number}", + " * @param distanceMax {number}", + " */", + " recastWithAngle(", + " objectsLists,", + " objects,", + " originX,", + " originY,", + " originZ,", + " rotationAngle,", + " elevationAngle,", + " distanceMax", + " ) {", + " if (objects.length === 0) {", + " return false;", + " }", + " const raycaster = this.raycaster;", + " raycaster.ray.origin.set(", + " originX,", + " -originY,", + " originZ,", + " );", + " const rotation = rotationAngle * Math.PI / 180;", + " const elevation = elevationAngle * Math.PI / 180;", + " const cosElevation = Math.cos(elevation);", + " raycaster.ray.direction.set(", + " Math.cos(rotation) * cosElevation,", + " -Math.sin(rotation) * cosElevation,", + " Math.sin(elevation),", + " );", + " raycaster.far = distanceMax;", + "", + " return this._doRecast(objectsLists, objects);", + " }", + "", + " /**", + " * @param objectsLists {Hashtable}", + " * @param objects {gdjs.RuntimeObject[]}", + " * @param originX {number}", + " * @param originY {number}", + " * @param originZ {number}", + " * @param targetX {number}", + " * @param targetY {number}", + " * @param targetZ {number}", + " * @param distanceMax {number}", + " */", + " recastBetweenPosition(", + " objectsLists,", + " objects,", + " originX,", + " originY,", + " originZ,", + " targetX,", + " targetY,", + " targetZ", + " ) {", + " if (objects.length === 0) {", + " return false;", + " }", + " const raycaster = this.raycaster;", + " raycaster.ray.origin.set(", + " originX,", + " -originY,", + " originZ,", + " );", + " const deltaX = targetX - originX;", + " const deltaY = targetY - originY;", + " const deltaZ = targetZ - originZ;", + " const deltaLength = Math.hypot(deltaX, deltaY, deltaZ);", + " raycaster.ray.direction.set(", + " deltaX / deltaLength,", + " -deltaY / deltaLength,", + " deltaZ / deltaLength,", + " );", + " raycaster.far = deltaLength;", + "", + " return this._doRecast(objectsLists, objects);", + " }", + "", + " /**", + " * @param objectsLists {Hashtable}", + " * @param objects {gdjs.RuntimeObject[]}", + " */", + " _doRecast(objectsLists, objects) {", + " const raycastResults = this.raycastResults;", + " let distanceMin = Number.MAX_VALUE;", + " /** @type {gdjs.RuntimeObject | null} */", + " let nearestObject = null;", + " /** @type {THREE.Object3D | null} */", + " let nearestThreeObject = null;", + " for (const object of objects) {", + " raycastResults.length = 0;", + " const threeObject = object.get3DRendererObject();", + " if (!threeObject) {", + " continue;", + " }", + " this.raycaster.intersectObject(threeObject, true, raycastResults);", + " if (raycastResults.length > 0 && raycastResults[0].distance < distanceMin) {", + " const raycastResult = raycastResults[0];", + " distanceMin = raycastResult.distance;", + " nearestObject = object;", + " this.lastDistance = raycastResult.distance;", + " this.lastPositionX = raycastResult.point.x;", + " this.lastPositionY = -raycastResult.point.y;", + " this.lastPositionZ = raycastResult.point.z;", + " this.lastNormal.copy(raycastResult.normal);", + " nearestThreeObject = raycastResult.object;", + " }", + " }", + " if (!nearestObject) {", + " return false;", + " }", + " this.lastNormal.transformDirection(nearestThreeObject.matrixWorld);", + " this.lastNormal.y = -this.lastNormal.y;", + " raycastResults.length = 0;", + " gdjs.evtTools.object.pickOnly(", + " objectsLists,", + " nearestObject", + " );", + " return true;", + " }", + "}", + "", + "gdjs.__raycaster3DExtension = {", + " Raycaster,", + " raycaster: new Raycaster(),", + "}", + "" ], - "events": [ - { - "type": "BuiltinCommonInstructions::JsCode", - "inlineCode": [ - "gdjs.__raycaster3DExtension = gdjs.__raycaster3DExtension || {};", - "", - "class Raycaster {", - " raycaster = new THREE.Raycaster();", - " pointer = new THREE.Vector2();", - " raycastResults = [];", - " lastDistance = 0;", - " lastPositionX = 0;", - " lastPositionY = 0;", - " lastPositionZ = 0;", - " lastNormalX = 0;", - " lastNormalY = 0;", - " lastNormalZ = 0;", - "", - " /**", - " * @param objectsLists {Hashtable}", - " * @param objects {gdjs.RuntimeObject[]}", - " * @param pointerX {number}", - " * @param pointerY {number}", - " * @param distanceMax {number}", - " */", - " recastFromCamera(objectsLists, objects, pointerX, pointerY, distanceMax) {", - " if (objects.length === 0) {", - " return false;", - " }", - " const object = objects[0];", - " const layer = object.getInstanceContainer().getLayer(object.getLayer());", - " const camera = layer.getRenderer().getThreeCamera();", - "", - " const raycaster = this.raycaster;", - " const pointer = this.pointer;", - " pointer.x = -1 + 2 * pointerX;", - " pointer.y = 1 - 2 * pointerY;", - " raycaster.setFromCamera(pointer, camera);", - " raycaster.far = distanceMax;", - "", - " return this._doRecast(objectsLists, objects);", - " }", - "", - " /**", - " * @param objectsLists {Hashtable}", - " * @param objects {gdjs.RuntimeObject[]}", - " * @param originX {number}", - " * @param originY {number}", - " * @param originZ {number}", - " * @param rotationAngle {number}", - " * @param elevationAngle {number}", - " * @param distanceMax {number}", - " */", - " recastWithAngle(", - " objectsLists,", - " objects,", - " originX,", - " originY,", - " originZ,", - " rotationAngle,", - " elevationAngle,", - " distanceMax", - " ) {", - " if (objects.length === 0) {", - " return false;", - " }", - " const raycaster = this.raycaster;", - " raycaster.ray.origin.set(", - " originX,", - " -originY,", - " originZ,", - " );", - " const rotation = rotationAngle * Math.PI / 180;", - " const elevation = elevationAngle * Math.PI / 180;", - " const cosElevation = Math.cos(elevation);", - " raycaster.ray.direction.set(", - " Math.cos(rotation) * cosElevation,", - " -Math.sin(rotation) * cosElevation,", - " Math.sin(elevation),", - " );", - " raycaster.far = distanceMax;", - "", - " return this._doRecast(objectsLists, objects);", - " }", - "", - " /**", - " * @param objectsLists {Hashtable}", - " * @param objects {gdjs.RuntimeObject[]}", - " * @param originX {number}", - " * @param originY {number}", - " * @param originZ {number}", - " * @param targetX {number}", - " * @param targetY {number}", - " * @param targetZ {number}", - " * @param distanceMax {number}", - " */", - " recastBetweenPosition(", - " objectsLists,", - " objects,", - " originX,", - " originY,", - " originZ,", - " targetX,", - " targetY,", - " targetZ", - " ) {", - " if (objects.length === 0) {", - " return false;", - " }", - " const raycaster = this.raycaster;", - " raycaster.ray.origin.set(", - " originX,", - " -originY,", - " originZ,", - " );", - " const deltaX = targetX - originX;", - " const deltaY = targetY - originY;", - " const deltaZ = targetZ - originZ;", - " const deltaLength = Math.hypot(deltaX, deltaY, deltaZ);", - " raycaster.ray.direction.set(", - " deltaX / deltaLength,", - " -deltaY / deltaLength,", - " deltaZ / deltaLength,", - " );", - " raycaster.far = deltaLength;", - "", - " return this._doRecast(objectsLists, objects);", - " }", - "", - " /**", - " * @param objectsLists {Hashtable}", - " * @param objects {gdjs.RuntimeObject[]}", - " */", - " _doRecast(objectsLists, objects) {", - " const raycastResults = this.raycastResults;", - " let distanceMin = Number.MAX_VALUE;", - " let nearestObject = null;", - " for (const object of objects) {", - " raycastResults.length = 0;", - " const threeObject = object.get3DRendererObject();", - " if (!threeObject) {", - " continue;", - " }", - " this.raycaster.intersectObject(threeObject, true, raycastResults);", - " if (raycastResults.length > 0 && raycastResults[0].distance < distanceMin) {", - " const raycastResult = raycastResults[0];", - " distanceMin = raycastResult.distance;", - " nearestObject = object;", - " this.lastDistance = raycastResult.distance;", - " this.lastPositionX = raycastResult.point.x;", - " this.lastPositionY = -raycastResult.point.y;", - " this.lastPositionZ = raycastResult.point.z;", - " this.lastNormalX = raycastResult.normal.x;", - " this.lastNormalY = raycastResult.normal.y;", - " this.lastNormalZ = raycastResult.normal.z;", - " }", - " }", - " if (!nearestObject) {", - " return false;", - " }", - " raycastResults.length = 0;", - " gdjs.evtTools.object.pickOnly(", - " objectsLists,", - " nearestObject", - " );", - " return true;", - " }", - "}", - "", - "gdjs.__raycaster3DExtension.Raycaster = Raycaster;", - "gdjs.__raycaster3DExtension.raycaster = new Raycaster();", - "" - ], - "parameterObjects": "", - "useStrict": true, - "eventsSheetExpanded": true - } - ] + "parameterObjects": "", + "useStrict": true, + "eventsSheetExpanded": true } ], "parameters": [], @@ -48723,44 +48780,109 @@ "type": "expression" }, { - "description": "Rotation angle (in degrees)", - "name": "RotationAngle", + "description": "Rotation angle (in degrees)", + "name": "RotationAngle", + "type": "expression" + }, + { + "description": "Elevation angle (in degrees)", + "name": "ElevationAngle", + "type": "expression" + }, + { + "description": "Ray maximum distance (in pixels)", + "name": "DistanceMax", + "type": "expression" + } + ], + "objectGroups": [] + }, + { + "description": "Sends a ray from the given source position to the final point, intersecting the closest object. The intersected object will become the only one taken into account.", + "fullName": "Raycast to a position", + "functionType": "Condition", + "group": "Collision", + "name": "RaycastBetweenPosition", + "sentence": "Cast a ray from _PARAM2_; _PARAM3_; _PARAM4_ to _PARAM5_; _PARAM6_; _PARAM7_ against _PARAM1_", + "events": [ + { + "type": "BuiltinCommonInstructions::JsCode", + "inlineCode": [ + "eventsFunctionContext.returnValue =", + " gdjs.__raycaster3DExtension.raycaster.recastBetweenPosition(", + " eventsFunctionContext.getObjectsLists(\"Object\"),", + " objects,", + " eventsFunctionContext.getArgument(\"OriginX\"),", + " eventsFunctionContext.getArgument(\"OriginY\"),", + " eventsFunctionContext.getArgument(\"OriginZ\"),", + " eventsFunctionContext.getArgument(\"TargetX\"),", + " eventsFunctionContext.getArgument(\"TargetY\"),", + " eventsFunctionContext.getArgument(\"TargetZ\")", + " );", + "" + ], + "parameterObjects": "Object", + "useStrict": true, + "eventsSheetExpanded": true + } + ], + "parameters": [ + { + "description": "Objects to test against the ray", + "name": "Object", + "type": "objectList" + }, + { + "description": "Ray source X position", + "name": "OriginX", + "type": "expression" + }, + { + "description": "Ray source Y position", + "name": "OriginY", + "type": "expression" + }, + { + "description": "Ray source Z position", + "name": "OriginZ", + "type": "expression" + }, + { + "description": "Ray target X position", + "name": "TargetX", "type": "expression" }, { - "description": "Elevation angle (in degrees)", - "name": "ElevationAngle", + "description": "Ray target Y position", + "name": "TargetY", "type": "expression" }, { - "description": "Ray maximum distance (in pixels)", - "name": "DistanceMax", + "description": "Ray target Z position", + "name": "TargetZ", "type": "expression" } ], "objectGroups": [] }, { - "description": "Sends a ray from the given source position to the final point, intersecting the closest object. The intersected object will become the only one taken into account.", - "fullName": "Raycast to a position", + "description": "Sends a ray from the center of the camera, intersecting the closest object. The intersected object will become the only one taken into account.", + "fullName": "Raycast from camera center", "functionType": "Condition", "group": "Collision", - "name": "RaycastBetweenPosition", - "sentence": "Cast a ray from _PARAM2_; _PARAM3_; _PARAM4_ to _PARAM5_; _PARAM6_; _PARAM7_ against _PARAM1_", + "name": "RaycastFromCameraCenter", + "sentence": "Cast a ray from the camera center to a maximum distance of _PARAM2_ against _PARAM1_", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "eventsFunctionContext.returnValue =", - " gdjs.__raycaster3DExtension.raycaster.recastBetweenPosition(", + " gdjs.__raycaster3DExtension.raycaster.recastFromCamera(", " eventsFunctionContext.getObjectsLists(\"Object\"),", " objects,", - " eventsFunctionContext.getArgument(\"OriginX\"),", - " eventsFunctionContext.getArgument(\"OriginY\"),", - " eventsFunctionContext.getArgument(\"OriginZ\"),", - " eventsFunctionContext.getArgument(\"TargetX\"),", - " eventsFunctionContext.getArgument(\"TargetY\"),", - " eventsFunctionContext.getArgument(\"TargetZ\")", + " 0.5,", + " 0.5,", + " eventsFunctionContext.getArgument(\"DistanceMax\")", " );", "" ], @@ -48776,45 +48898,20 @@ "type": "objectList" }, { - "description": "Ray source X position", - "name": "OriginX", - "type": "expression" - }, - { - "description": "Ray source Y position", - "name": "OriginY", - "type": "expression" - }, - { - "description": "Ray source Z position", - "name": "OriginZ", - "type": "expression" - }, - { - "description": "Ray target X position", - "name": "TargetX", - "type": "expression" - }, - { - "description": "Ray target Y position", - "name": "TargetY", - "type": "expression" - }, - { - "description": "Ray target Z position", - "name": "TargetZ", + "description": "Ray maximum distance (in pixels)", + "name": "DistanceMax", "type": "expression" } ], "objectGroups": [] }, { - "description": "Sends a ray from the center of the camera, intersecting the closest object. The intersected object will become the only one taken into account.", - "fullName": "Raycast from camera center", + "description": "Sends a ray from the given source point on the camera screen, intersecting the closest object. The intersected object will become the only one taken into account.", + "fullName": "Raycast from a camera point", "functionType": "Condition", "group": "Collision", - "name": "RaycastFromCameraCenter", - "sentence": "Cast a ray from the camera center to a maximum distance of _PARAM2_ against _PARAM1_", + "name": "RaycastFromCameraPoint", + "sentence": "Cast a ray from the camera point _PARAM2_; _PARAM3_ to a maximum distance of _PARAM4_ against _PARAM1_", "events": [ { "type": "BuiltinCommonInstructions::JsCode", @@ -48823,8 +48920,8 @@ " gdjs.__raycaster3DExtension.raycaster.recastFromCamera(", " eventsFunctionContext.getObjectsLists(\"Object\"),", " objects,", - " 0.5,", - " 0.5,", + " eventsFunctionContext.getArgument(\"PointerX\"),", + " eventsFunctionContext.getArgument(\"PointerY\"),", " eventsFunctionContext.getArgument(\"DistanceMax\")", " );", "" @@ -48840,6 +48937,16 @@ "name": "Object", "type": "objectList" }, + { + "description": "X position on the screen (from 0 to 1)", + "name": "PointerX", + "type": "expression" + }, + { + "description": "Y position on the screen (from 0 to 1)", + "name": "PointerY", + "type": "expression" + }, { "description": "Ray maximum distance (in pixels)", "name": "DistanceMax", @@ -48849,22 +48956,34 @@ "objectGroups": [] }, { - "description": "Sends a ray from the given source point on the camera screen, intersecting the closest object. The intersected object will become the only one taken into account.", - "fullName": "Raycast from a camera point", + "description": "Sends a ray from the cursor on the camera screen, intersecting the closest object. The intersected object will become the only one taken into account.", + "fullName": "Raycast from cursor", "functionType": "Condition", "group": "Collision", - "name": "RaycastFromCameraPoint", - "sentence": "Cast a ray from the camera point _PARAM2_; _PARAM3_ to a maximum distance of _PARAM4_ against _PARAM1_", + "name": "RaycastFromCameraCursor", + "sentence": "Cast a ray from the cursor on 2D layer: _PARAM2_ to a maximum distance of _PARAM3_ against _PARAM1_", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ + "const { camera, input } = gdjs.evtTools;", + "", + "const layer2D = eventsFunctionContext.getArgument(\"Layer2D\");", + "", + "const cameraMinX = camera.getCameraBorderLeft(runtimeScene, layer2D, 0);", + "const cameraMaxX = camera.getCameraBorderRight(runtimeScene, layer2D, 0);", + "const cameraMinY = camera.getCameraBorderTop(runtimeScene, layer2D, 0);", + "const cameraMaxY = camera.getCameraBorderBottom(runtimeScene, layer2D, 0);", + "", + "const cursorX = input.getCursorX(runtimeScene, layer2D, 0);", + "const cursorY = input.getCursorY(runtimeScene, layer2D, 0);", + "", "eventsFunctionContext.returnValue =", " gdjs.__raycaster3DExtension.raycaster.recastFromCamera(", " eventsFunctionContext.getObjectsLists(\"Object\"),", " objects,", - " eventsFunctionContext.getArgument(\"PointerX\"),", - " eventsFunctionContext.getArgument(\"PointerY\"),", + " (cursorX - cameraMinX) / (cameraMaxX - cameraMinX),", + " (cursorY - cameraMinY) / (cameraMaxY - cameraMinY),", " eventsFunctionContext.getArgument(\"DistanceMax\")", " );", "" @@ -48881,14 +49000,9 @@ "type": "objectList" }, { - "description": "X position on the screen (from 0 to 1)", - "name": "PointerX", - "type": "expression" - }, - { - "description": "Y position on the screen (from 0 to 1)", - "name": "PointerY", - "type": "expression" + "description": "2D layer", + "name": "Layer2D", + "type": "layer" }, { "description": "Ray maximum distance (in pixels)", @@ -48991,7 +49105,7 @@ "events": [ { "type": "BuiltinCommonInstructions::JsCode", - "inlineCode": "eventsFunctionContext.returnValue = gdjs.__raycaster3DExtension.raycaster.lastNormalX;", + "inlineCode": "eventsFunctionContext.returnValue = gdjs.__raycaster3DExtension.raycaster.lastNormal.x;", "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false @@ -49012,7 +49126,7 @@ "events": [ { "type": "BuiltinCommonInstructions::JsCode", - "inlineCode": "eventsFunctionContext.returnValue = gdjs.__raycaster3DExtension.raycaster.lastNormalY;", + "inlineCode": "eventsFunctionContext.returnValue = gdjs.__raycaster3DExtension.raycaster.lastNormal.y;", "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false @@ -49033,7 +49147,7 @@ "events": [ { "type": "BuiltinCommonInstructions::JsCode", - "inlineCode": "eventsFunctionContext.returnValue = gdjs.__raycaster3DExtension.raycaster.lastNormalZ;", + "inlineCode": "eventsFunctionContext.returnValue = gdjs.__raycaster3DExtension.raycaster.lastNormal.z;", "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false @@ -49054,14 +49168,18 @@ "category": "General", "extensionNamespace": "", "fullName": "3D model 9-patch", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNlbGVjdC1ncm91cCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik01IDNBMiAyIDAgMCAwIDMgNUg1TTcgM1Y1SDlWM00xMSAzVjVIMTNWM00xNSAzVjVIMTdWM00xOSAzVjVIMjFBMiAyIDAgMCAwIDE5IDNNMyA3VjlINVY3TTcgN1YxMUgxMVY3TTEzIDdWMTFIMTdWN00xOSA3VjlIMjFWN00zIDExVjEzSDVWMTFNMTkgMTFWMTNIMjFWMTFNNyAxM1YxN0gxMVYxM00xMyAxM1YxN0gxN1YxM00zIDE1VjE3SDVWMTVNMTkgMTVWMTdIMjFWMTVNMyAxOUEyIDIgMCAwIDAgNSAyMVYxOU03IDE5VjIxSDlWMTlNMTEgMTlWMjFIMTNWMTlNMTUgMTlWMjFIMTdWMTlNMTkgMTlWMjFBMiAyIDAgMCAwIDIxIDE5WiIgLz48L3N2Zz4=", "name": "Model9Patch3D", "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/ff2624a18972ac70bedc9ef990d9ddbc894c3a7b6e46a75ace8e9572c9aa5a50_select-group.svg", - "shortDescription": "3D plaforms and walls.", - "version": "0.1.0", - "description": "3D plaforms and walls that resize as 9-patch. Corners don't stretch and sides can be tiled.", + "shortDescription": "3D platforms and walls.", + "version": "0.2.1", + "description": "3D platforms and walls that resize as 9-patch. Corners don't stretch and sides can be tiled.", + "origin": { + "identifier": "Model9Patch3D", + "name": "gdevelop-extension-store" + }, "tags": [ "3d", "platform", @@ -49322,9 +49440,7 @@ "rightFaceResourceRepeat": false, "topFaceResourceRepeat": false, "bottomFaceResourceRepeat": false, - "materialType": "StandardWithoutMetalness", - "isCastingShadow": true, - "isReceivingShadow": true + "materialType": "Basic" } } ], @@ -49490,30 +49606,30 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyWidth" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Width", "=", "Object.Width()" ] }, { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyHeight" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Height", "=", "Object.Height()" ] }, { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyDepth" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Depth", "=", "Object.Object3D::Depth()" ] @@ -49710,10 +49826,12 @@ { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnZ" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnZ", + "True", + "" ] }, { @@ -49758,20 +49876,22 @@ "conditions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnZ" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnZ", + "True", + "" ] } ], "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Z", "=", "Size / 2" ] @@ -49785,10 +49905,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyZ" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Z", "+", "Size" ] @@ -50022,10 +50142,12 @@ "conditions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], @@ -50085,10 +50207,12 @@ { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], @@ -50191,10 +50315,12 @@ "conditions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] } ], @@ -50274,10 +50400,12 @@ { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] } ], @@ -50452,10 +50580,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "X", "=", "Size / 2" ] @@ -50469,10 +50597,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "X", "+", "Size" ] @@ -50543,10 +50671,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Y", "=", "Size / 2" ] @@ -50560,10 +50688,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Y", "+", "Size" ] @@ -50634,10 +50762,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Y", "=", "Size / 2" ] @@ -50651,20 +50779,20 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Y", "+", "Size" ] }, { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "X", "=", "Size / 2" ] @@ -50678,10 +50806,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::SetPropertyX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "X", "+", "Size" ] @@ -50761,19 +50889,23 @@ { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] }, { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], @@ -50830,19 +50962,23 @@ "conditions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] }, { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], @@ -50878,18 +51014,22 @@ { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] }, { "type": { - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], @@ -50924,18 +51064,22 @@ "conditions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] }, { "type": { - "value": "Model9Patch3D::Model9Patch3D::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], @@ -51287,9 +51431,7 @@ "rightFaceResourceRepeat": false, "topFaceResourceRepeat": false, "bottomFaceResourceRepeat": false, - "materialType": "StandardWithoutMetalness", - "isReceivingShadow": true, - "isCastingShadow": true + "materialType": "Basic" } } ], @@ -51443,30 +51585,30 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyWidth" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Width", "=", "Object.Width()" ] }, { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyHeight" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Height", "=", "Object.Height()" ] }, { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyDepth" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Depth", "=", "Object.Object3D::Depth()" ] @@ -51869,20 +52011,22 @@ "conditions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Y", "=", "Size / 2" ] @@ -51896,10 +52040,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Y", "+", "Size" ] @@ -51984,10 +52128,12 @@ { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], @@ -52090,20 +52236,22 @@ "conditions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] } ], "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "X", "=", "Size / 2" ] @@ -52117,10 +52265,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "X", "+", "Size" ] @@ -52225,10 +52373,12 @@ { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] } ], @@ -52403,10 +52553,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "X", "=", "Size / 2" ] @@ -52420,10 +52570,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "X", "+", "Size" ] @@ -52494,10 +52644,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Y", "=", "Size / 2" ] @@ -52511,10 +52661,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Y", "+", "Size" ] @@ -52585,10 +52735,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Y", "=", "Size / 2" ] @@ -52602,20 +52752,20 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyY" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "Y", "+", "Size" ] }, { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "X", "=", "Size / 2" ] @@ -52629,10 +52779,10 @@ "actions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::SetPropertyX" + "value": "SetNumberVariable" }, "parameters": [ - "Object", + "X", "+", "Size" ] @@ -52712,19 +52862,23 @@ { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] }, { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], @@ -52781,19 +52935,23 @@ "conditions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] }, { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], @@ -52829,18 +52987,22 @@ { "type": { "inverted": true, - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] }, { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], @@ -52875,18 +53037,22 @@ "conditions": [ { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnX" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnX", + "True", + "" ] }, { "type": { - "value": "Model9Patch3D::Model9Patch3DSingleDepth::PropertyIsTiledOnY" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsTiledOnY", + "True", + "" ] } ], @@ -53249,13 +53415,13 @@ "category": "Input", "extensionNamespace": "", "fullName": "Screen Orientation Checker", - "gdevelopVersion": "", + "gdevelopVersion": ">=5.5.222", "helpPath": "", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNjcmVlbi1yb3RhdGlvbiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik03LjUsMjEuNUM0LjI1LDE5Ljk0IDEuOTEsMTYuNzYgMS41NSwxM0gwLjA1QzAuNTYsMTkuMTYgNS43MSwyNCAxMiwyNEwxMi42NiwyMy45N0w4Ljg1LDIwLjE2TTE0LjgzLDIxLjE5TDIuODEsOS4xN0w5LjE3LDIuODFMMjEuMTksMTQuODNNMTAuMjMsMS43NUM5LjY0LDEuMTYgOC42OSwxLjE2IDguMTEsMS43NUwxLjc1LDguMTFDMS4xNiw4LjcgMS4xNiw5LjY1IDEuNzUsMTAuMjNMMTMuNzcsMjIuMjVDMTQuMzYsMjIuODQgMTUuMzEsMjIuODQgMTUuODksMjIuMjVMMjIuMjUsMTUuODlDMjIuODQsMTUuMyAyMi44NCwxNC4zNSAyMi4yNSwxMy43N0wxMC4yMywxLjc1TTE2LjUsMi41QzE5Ljc1LDQuMDcgMjIuMDksNy4yNCAyMi40NSwxMUgyMy45NUMyMy40NCw0Ljg0IDE4LjI5LDAgMTIsMEwxMS4zNCwwLjAzTDE1LjE1LDMuODRMMTYuNSwyLjVaIiAvPjwvc3ZnPg==", "name": "ScreenOrientationChecker", "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/0126888931a4a4f82bb2824df9f096347ace1c47f510c44df42aa8dc9e49e24a_screen-rotation.svg", "shortDescription": "Display a customizable screen asking the user to rotate their phone/tablet if not in the right orientation.", - "version": "0.0.2", + "version": "0.1.1", "description": "Display a customizable screen asking the user to rotate their phone/tablet if not in the right orientation.", "origin": { "identifier": "ScreenOrientationChecker", @@ -53659,11 +53825,12 @@ "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "yes" + "IsShown", + "False", + "" ] } ] @@ -53685,11 +53852,12 @@ "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "no" + "IsShown", + "False", + "" ] } ] @@ -53729,11 +53897,12 @@ "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "yes" + "IsShown", + "False", + "" ] } ] @@ -53755,11 +53924,12 @@ "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "no" + "IsShown", + "False", + "" ] } ] @@ -53791,18 +53961,22 @@ "subInstructions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::PropertyIsShown" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsShown", + "True", + "" ] }, { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::PropertyIsForceShown" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsForceShown", + "True", + "" ] } ] @@ -53848,19 +54022,23 @@ { "type": { "inverted": true, - "value": "ScreenOrientationChecker::ScreenOrientationChecker::PropertyIsShown" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsShown", + "True", + "" ] }, { "type": { "inverted": true, - "value": "ScreenOrientationChecker::ScreenOrientationChecker::PropertyIsForceShown" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsForceShown", + "True", + "" ] } ], @@ -54052,10 +54230,12 @@ "conditions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::PropertyIsForceShown" + "value": "BooleanVariable" }, "parameters": [ - "Object" + "IsForceShown", + "True", + "" ] } ], @@ -54095,21 +54275,24 @@ { "type": { "inverted": true, - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"Value\"" + "Value", + "True", + "" ] } ], "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsForceShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "no" + "IsForceShown", + "False", + "" ] } ] @@ -54119,21 +54302,24 @@ "conditions": [ { "type": { - "value": "GetArgumentAsBoolean" + "value": "BooleanVariable" }, "parameters": [ - "\"Value\"" + "Value", + "True", + "" ] } ], "actions": [ { "type": { - "value": "ScreenOrientationChecker::ScreenOrientationChecker::SetPropertyIsForceShown" + "value": "SetBooleanVariable" }, "parameters": [ - "Object", - "yes" + "IsForceShown", + "False", + "" ] } ]