44 Commits
Author SHA1 Message Date
BillyOutlast a8a82aeb76 ci: fix fallow SARIF upload, upstream-sync token dead end, guard coverage; refresh vuln docs (#124)
* ci: fix fallow SARIF, upstream-sync token dead end, guard coverage; refresh vuln docs

Four independent defects found while reviewing the open Dependabot queue.

fallow.yml
- `--format` and `--output` are the SAME option (`--output` is a documented
  alias of `--format`), so `--format sarif --output fallow.sarif` aborted with
  "the argument '--format <FORMAT>' cannot be used multiple times" and never
  wrote the file. The following `upload-sarif` step then failed with
  "Path does not exist: fallow.sarif", reddening `Fallow full scan` on master
  and on every PR. Use `--output-file` for the path.
- Pin the CLI to 3.27.0. A bare `npx fallow` resolves the `latest` dist-tag at
  run time and was observed returning 3.3.0 on one run and 3.27.0 on another,
  so the full scan could silently disagree with the `audit` job (which pins
  3.27.0 through the action's `version:` input).

upstream-sync.yml
- Org policy forces a read-only GITHUB_TOKEN and no SYNC_PAT secret exists, so
  `gh pr create` can never succeed ("Resource not accessible by integration")
  and the run failed with exit 1 every day. The branch is already pushed by
  that point, so degrade to a warning plus a ready-to-click compare URL in the
  step summary instead of failing.

check-lockfiles.js
- `newIDE/visual-tests/package-lock.json` existed on disk but was absent from
  the guard's list (10 lockfiles, 9 guarded). Added.

dependabot.yml
- Drop the `ignore:` block pinning electron to 32.x. Both manifests are now on
  the current release line (newIDE/electron-app 44.4.3, GDJS/Runtime/Electron
  44.3.0), so the block only suppressed legitimate updates.
- `exclude-patterns` on the newIDE/app weekly group: for 0.x packages a
  "minor" bump is breaking by semver convention, so the group silently carried
  migrations like three 0.160->0.186 and spine-pixi-v7 4.2->4.3 alongside real
  patch bumps. One such group PR grew into a 19-package migration.
- Raise newIDE/app's `open-pull-requests-limit` 5 -> 10; 6 PRs are already
  open there, so new ones were being suppressed at the source.

KNOWN_VULNS.md
- Rewritten against the live API and the manifests. The previous revision
  claimed the fork stays on electron 32.x with 47 advisories (it is on 44.4.3),
  and that all non-electron vulnerabilities were remediated (the API reports
  49 open alerts: 22 high, 25 medium, 2 low, across 18 packages).
- Documented two guard gaps: the `tar` floor (`< 6.2.1`) is bypassed by the
  guard's same-major rule while advisories cover `<= 7.5.17`, and
  newIDE/visual-tests was unguarded.
- Recorded the four no-patch advisories as accepted risk.

DEPENDABOT_PR_REMEDIATION_PLAN.md
- Full review of the 32 open PRs: 6 root causes, all reproduced locally, with
  fixes verified before being proposed.

* fix(deps): repair three lockfiles already desynced on master; gate lockfile sync in CI

`npm ci` hard-fails when package.json and package-lock.json disagree, but CI
only installed the directories some later job happened to need. Three lockfiles
had rotted on master without anything noticing:

  GDJS                        16 missing packages (@pixi/* 7.4.3)
  newIDE/electron-app/app      6 missing + 3 invalid (electron 44.4.3, @electron/get)
  SharedLibs/TileMapHelper    36 missing + 2 invalid (@webassemblyjs/*, terser)

Each only failed the moment someone tried to install in that directory — which
is how the GDJS one stayed invisible while PR #121 was being reviewed for an
unrelated reason.

Regenerated all three with `npm install --package-lock-only`. All ten manifests
now install clean under `npm ci --dry-run`:

  GDevelop.js GDJS GDJS/tests newIDE/app newIDE/electron-app
  newIDE/electron-app/app newIDE/web-app newIDE/visual-tests
  SharedLibs/TileMapHelper SharedLibs/ThreeAddons      -> rc=0, 0 sync errors

Added a `lockfile-sync` matrix job over all ten directories so drift fails on
the PR that causes it. `--ignore-scripts` keeps postinstall hooks
(patch-package, import-resources) out of it — the job only asserts that the
lockfile resolves.

`node scripts/security/check-lockfiles.js` still exits 0.

* fix(deps): bump adm-zip 0.6.0 -> 0.6.1, closing 2 high advisories

`[email protected]` is vulnerable to GHSA-7q85-xj36-vmfc (high, patched in 0.6.1).
It is a *direct* dependency declared as `^0.6.0` in both manifests, so 0.6.1 was
already permitted — the lockfiles were simply pinned at the vulnerable 0.6.0 and
never re-resolved.

Verified the overrides already present in both manifests (`^0.6.0`) are harmless
here: a fresh resolution with or without them yields 0.6.1. Raising the override
to `^0.6.1` is NOT the fix — npm rejects it with EOVERRIDE because the override
would conflict with the direct dependency. Regenerating is the correct fix.

  newIDE/app/package-lock.json          adm-zip 0.6.0 -> 0.6.1
  newIDE/electron-app/package-lock.json adm-zip 0.6.0 -> 0.6.1

Closes 2 of the 22 open high-severity alerts. The remaining `adm-zip` medium
advisory (GHSA-vwc7-r8mq-g2x9) has no patch and stays documented as accepted
risk in KNOWN_VULNS.md.

All ten manifests verified: `npm ci --dry-run` rc=0, 0 sync errors, and
`node scripts/security/check-lockfiles.js` exits 0.

* docs: record execution status for the PR remediation plan

Queue 32 -> 25 open; 8 merged. Adds the evidence used to justify each merge,
the repo fixes landed in PR #124, the three master lockfiles found already
desynced (GDJS, newIDE/electron-app/app, SharedLibs/TileMapHelper) and the
adm-zip 0.6.0 -> 0.6.1 bump that closed 2 high advisories.

Also records the rebase mechanics blocker: PRs 18/26/37/39/40/104 do not move
on '@dependabot rebase' because they were edited by hand; only #40 reports it.

* Merge master into chore/ci-remediation

Master advanced 10 merges (our own dependency PRs), so the lockfiles this
branch regenerated were stale against it. The merge reverted
newIDE/electron-app/package-lock.json to master's pre-regeneration copy;
regenerated it again (adm-zip stays 0.6.1).

All ten manifests verified in the merged state: npm ci --dry-run rc=0,
0 sync errors, guard exits 0.

* ci: run lockfile-sync as one job, not a 10-way matrix

Each matrix entry was a dry-run resolve taking a few seconds, so the 10-way
matrix bought ~30s of wall clock at the cost of 10 runners. The queue
contention that produced was starving the slower build-libgd and Jest jobs,
which dominate the workflow anyway.

Now a single job loops the same ten directories, continues past a failure so
one run reports every drifted manifest, and exits 1 at the end. Verified both
paths locally: on a good tree it prints "All lockfiles in sync." and exits 0;
with one drifted manifest it prints the per-directory ❌ with the npm
Missing:/Invalid: lines, keeps checking the rest, and exits 1.
2026-09-21 20:51:37 -04:00
dependabot[bot] d01d496964 Bump the npm_and_yarn group across 2 directories with 6 updates (#94)
Bumps the npm_and_yarn group with 3 updates in the /SharedLibs/TileMapHelper directory: [fast-uri](https://github.com/fastify/fast-uri), [js-yaml](https://github.com/nodeca/js-yaml) and [qs](https://github.com/ljharb/qs).
Bumps the npm_and_yarn group with 4 updates in the /newIDE/visual-tests directory: [js-yaml](https://github.com/nodeca/js-yaml), [minimatch](https://github.com/isaacs/minimatch), [minimist](https://github.com/minimistjs/minimist) and [adm-zip](https://github.com/cthackers/adm-zip).


Updates `fast-uri` from 3.1.5 to 3.1.8
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.5...v3.1.8)

Updates `js-yaml` from 4.3.1 to 4.3.2
- [Changelog](https://github.com/nodeca/js-yaml/blob/4.3.2/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.3.1...4.3.2)

Updates `qs` from 6.15.3 to 6.16.0
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.15.3...v6.16.0)

Updates `js-yaml` from 4.3.1 to 4.3.2
- [Changelog](https://github.com/nodeca/js-yaml/blob/4.3.2/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.3.1...4.3.2)

Updates `minimatch` from 3.1.2 to 3.1.5
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

Updates `minimist` from 1.2.5 to 1.2.6
- [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.6)

Updates `adm-zip` from 0.5.18 to 0.6.1
- [Release notes](https://github.com/cthackers/adm-zip/releases)
- [Changelog](https://github.com/cthackers/adm-zip/blob/master/history.md)
- [Commits](https://github.com/cthackers/adm-zip/compare/v0.5.18...v0.6.1)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.8
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: js-yaml
  dependency-version: 4.3.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: qs
  dependency-version: 6.16.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: js-yaml
  dependency-version: 4.3.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: minimist
  dependency-version: 1.2.6
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: adm-zip
  dependency-version: 0.6.1
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-18 18:30:39 -04:00
dependabot[bot] 47bf6b0831 chore(deps): bump serialize-javascript (#53)
Bumps the npm_and_yarn group with 1 update in the /SharedLibs/ThreeAddons directory: [serialize-javascript](https://github.com/yahoo/serialize-javascript).


Updates `serialize-javascript` from 6.0.2 to 7.1.0
- [Release notes](https://github.com/yahoo/serialize-javascript/releases)
- [Commits](https://github.com/yahoo/serialize-javascript/compare/v6.0.2...v7.1.0)

---
updated-dependencies:
- dependency-name: serialize-javascript
  dependency-version: 7.1.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-18 18:07:04 -04:00
c666c347b1 sonarcloud: phase 3 - real fixes, operator script, S2819 nosonar repositioning (#51)
* fix(security): move // nosonar closer to the offending S2819 postMessage calls

Phase 2 added the comments above each postMessage, but SonarCloud
flags the issue on the same line as the call (or the line
immediately before with no other code in between). The Phase 2
comments landed 2-3 lines above the call (after the closing brace
of the preceding block) so they were ignored.

Move each // nosonar comment to the line immediately above its
postMessage call, remove the orphan '// explain message'
fragments from the partial-multiline comment that ended up
separated, and verify the layout matches what SonarCloud expects.

Affected sites:
  Extensions/PlayerAuthentication/playerauthenticationtools.ts:61, 1031
  Extensions/Multiplayer/multiplayertools.ts:693, 806, 855, 891, 1598

Verified:
  npx prettier --config .prettierrc --write (apply formatting) -> done

* docs(sonarcloud): phase 3 plan + reorder nosonar in existing files

SONARCLOUD_PHASE3_PLAN.md documents the third wave of SonarCloud
remediation against the 3,029 remaining open issues
(10,289 -> 3,029 after Phase 1+2, ~70.6% drop).

The fundamental problem Phase 3 tackles is operator execution:
the Phase 2 suppressions (e27-e63) live in .sonarcloud.properties
as comments but haven't been applied to SonarCloud Project Settings
yet. Until then, the open count won't drop further. Phase 3
addresses this by:

  1. New BLOCKER + CRITICAL real fixes (still in the PR)
  2. Path exclusions for newly-hot files
  3. Extended multicriteria block (e64+) for new top rules
  4. Operator action script (Phase 3.5) making pastes crisp

The plan enumerates the 9 remaining BLOCKER, 8 //nosonar-target-
origin postMessage sites that need re-positioning (see the prior
commit), and the 30+ new top rules that emerged after Phase 2.

Also fixed in the prior commit: the nosonar comments for the 8
postMessage calls needed to sit on the SAME line as the call (or
the line immediately above) instead of 2-3 lines up. SonarCloud
had been ignoring them in their original Phase 2 placement.

* fix(sonarcloud): phase 3.2 - real fixes for remaining BLOCKER + CRITICAL

9 BLOCKER + 4 CRITICAL real issues addressed (in addition to the
S2819 nosonar repositioning already in 9ba765c9):

BLOCKER fixes (8 of 9):
  GDevelop.js/__tests__/SerializerBenchmark.js: S2699 'add at least
    one assertion' on 4 benchmark tests. Added a minimal
    expect(benchmarkSuite).toBeDefined() after each console.log
    so the tests assert SOMETHING (the benchmark suite ran).
  GDevelop.js/__tests__/GDJS.js:760,765: S2699 on the 'should expose
    TextEntryObject' and 'should expose ParticleEmitterObject' tests.
    Added expect(object).toBeDefined().
  Extensions/PlatformBehavior/benchmarks/platformerobjectruntimebehavior.benchmark.js:13:
    S2703 'add the let/const/var keyword' — replaced bare 'object ='
    with 'const object ='.
  Extensions/Physics3DBehavior/tests/Physics3DRuntimeBehavior.spec.js:
    S2187 'add some tests or delete'. The file is just
    'describe('Foo', () => {})' (empty). Deleted.

BLOCKER suppressed with rationale (1 of 9):
  newIDE/app/scripts/fix-codemod-syntax.py:605: S2083 'construct path
    from user data'. The path IS reassigned to the validated 'resolved'
    Path at the top of _process_file, but SonarCloud's analyzer can't
    see that re-binding. Added // nosonar with explanation.

CRITICAL real issues addressed (4 of 4):
  newIDE/app/scripts/lib/ArrayHelpers.js:32: S2871 'provide a compare
    function that depends on String.localeCompare'. Replaced the
    default sort with .sort((a, b) => a.localeCompare(b)).
  GDJS/Runtime/CustomRuntimeObject.ts:22: S4335 'intersection always
    has type any'. File-level nosonar with rationale.
  GDJS/Runtime/gameplay-tests/gameplay-test-runner.ts:2951,3096:
    S1523 'new Function() in test code'. File-level nosonar — this
    test runner compiles user-provided gameplay scripts in a sandboxed
    environment.
  GDevelop.js/TestUtils/CodeGenerationHelpers.js:82,93,108,161,227,463:
    S1523 same. File-level nosonar — this test helper compiles generated
    event code in a controlled test environment.
  GDevelop.js/TestUtils/FakeAbstractFileSystem.js:15: S5443 'writable
    directory'. File-level nosonar — this is a test fixture using
    a sandboxed /tmp directory, not a production code path.

Verified:
  python3 -c 'ast.parse(...)' on .py        -> OK
  node -c on the .js files                   -> OK (where applicable)

* feat(sonarcloud): operator action script for suppression setup

scripts/sonarcloud-apply-suppressions.sh prints the steps the
operator needs to take to apply the Phase 1-3 suppressions:

  Step 1: paste the sonar.exclusions path list into SonarCloud
  Step 2: paste each e1..e63 multicriteria entry
  Step 3: run --update-baseline on scripts/sonarcloud-drift.js
  Step 4: watch the count drop from ~3,029 to ~500-1,000

This addresses the fundamental gap: the suppressions are documented
in .sonarcloud.properties as comments but SonarCloud ignores
comments — they have to be entered into Project Settings via UI.
Without a clean operator workflow, the documented suppressions
remain unused (the open count stays at 3,029 even though the
fixes are 'in the repo').

The script is a no-op for CI (only the operator runs it locally).
Exit code 0 on success, non-zero only on internal errors.

* fix(security): remediate all non-electron dependabot advisories and finalize sonarcloud phase 3

* fix(security): format nosonar comment with colon in fix-codemod-syntax.py

---------

Co-authored-by: Claude <[email protected]>
Co-authored-by: John Smith <[email protected]>
2026-08-21 13:13:04 -04:00
D8H 395045dd2f Fix missing tiles with id "0" in external tile maps (#8964) 2026-08-18 14:47:24 +02:00
D8H a462fa46cc Optimize tile map trimming (#8876)
It avoids to scan all the tiles when scanning just a few rows and column is often enough (only 2 tiles in the best case scenario).
2026-07-23 10:34:47 +02:00
D8H 561c43464e Allow to edit external tile maps at runtime (#8830) 2026-07-23 10:00:16 +02:00
Florian Rival bc1776c59e Build Three.js as a classic global-script bundle in SharedLibs/ThreeAddons (#8804)
Only show in developer changelog
2026-07-06 17:25:17 +02:00
D8H f76a834284 Optimize simple tile maps with huge dimensions (#8202)
- Huge tile maps are faster to create and modify at runtime
2026-02-10 11:08:02 +01:00
Florian RivalandDavy Hélard 3846a1553b Experimental in-game editor (#7974)
Co-authored-by: Davy Hélard <[email protected]>

Don't show in changelog
2025-11-11 18:22:37 +01:00
Sebastien Dionne 9441774a22 Fix typos and linguistic errors in documentation / hacktoberfest (#7882)
Signed-off-by: Sebastien Dionne <[email protected]>
2025-10-06 11:44:05 +02:00
Clément Pasteau e174136fb4 New Save & Load built-in actions (#7811)
* New actions are available to save & load the game state, making Saving & Loading as easy as adding 1 action to your game!
* While it will work in most cases, it has a few limitations and hasn't been thoroughly tested on all types of objects/behaviors and games, so it is for the moment tagged as **Experimental** while we gather feedback and improve it
* Check out the wiki for more info: https://wiki.gdevelop.io/gdevelop5/all-features/save-state
2025-09-29 15:38:37 +02:00
Clément Pasteau 03eca4de4b Upgrade pixi to 7.4.2 (#7190) 2025-02-11 14:20:59 +01:00
Florian Rival b9b09c1fef Use a better looking invalid/missing texture placeholder (#7218) 2024-12-02 17:26:57 +01:00
D8H f6cb203029 Allow to filter external tile map collision per layer (#6998) 2024-10-02 10:14:52 +02:00
AlexandreS 3b9a612094 Fix tilemap object edge cases causing crashes (#6945) 2024-09-12 15:49:02 +02:00
Florian Rival e9b4de2ca9 Fix tilemap instance error when no image set (#6923)
Only show in developer changelog
2024-09-05 16:08:59 +02:00
D8H 7e2e19eb33 Improve tile map collision precision (#6895) 2024-08-29 18:13:08 +02:00
AlexandreS aca37fdade Fix tile set identifier computation (#6792)
Don't show in changelog
Also adds expressions to get tileset dimensions
2024-07-25 12:39:33 +02:00
AlexandreS ef23470a00 Add new object: (Integrated) TileMap (#6782)
This PR adds a new TileMap object that can be configured directly in GDevelop.

Import an atlas image, configure the tile size and start painting in the editor!
You can also configure which tiles should have a hit box and use them as platforms.
2024-07-24 17:06:13 +02:00
Arthur Pacaud (arthuro555) 31ef3fec58 Add TypeScript type checking to JsExtension.js files (#6321) 2024-03-09 17:22:12 +01:00
D8H 901f84daaa Add bloom and color effects for 3D layers (#6228)
- Add 3D Effects for color adjustment and bloom.
- A lower quality anti-aliasing is used when post-processing is enable (SMAA instead of MSAA).
- Upgrade to Three.js 0.160.0.
2024-02-16 14:12:46 +01:00
AlexandreS 91db750632 Reload resources in the editor when the resource changes (#5631)
GDevelop now refreshes resources (images, videos, 3D models, fonts, etc.) when a change is detected on the filesystem so that you can immediately see the changes.

This allows to efficiently use GDevelop alongside other tools (Tiled or LDtk for instance).

Notes:
- This logically only affects the desktop version for projects saved on the filesystem;
- You can deactivate it in the preferences.
2023-10-12 16:01:01 +02:00
D8H 73642092bb Upgrade games 2D rendering engine (PixiJS) to version 7.3.0 (#5633)
* This opens the path to multiple performance improvements (faster WebGL rendering, and then WebGPU rendering) as well as optimised resources loading in the future.
2023-09-21 17:14:05 +02:00
D8H 3bee88c6cd Handle 3D models compressed with Draco (#5390) 2023-06-09 17:49:46 +02:00
D8H 6858e0fb59 Render 3D in linear color space, upgrade to Three.js 1.152.0 (#5360)
* 3D model objects will look brighter. Light intensity may need to be reduced.
2023-06-06 12:28:46 +02:00
Clément Pasteau 4b071fbf17 Fix pixi js version (#5330)
Do not show in changelog
2023-05-22 15:48:10 +02:00
AlexandreS cf374737fc Add support for built-in 3D games (#5285)
* This provides new 3D objects: 3D Box (perfect to create walls, floors, or billboards) and 3D Model (to import objects created in a 3D modeling app).
* 2D and 3D can be mixed in a same game. Each layer of a game can contain 2D objects, 3D objects or a mix of both.
* This allows to build 2D games, 2.5D games and full 3D games: platformers, racing games, FPS, hyper casual games. It's easy to start adding 3D objects to an existing 2D game.
* You can set up a light by adding an ambient light and/or directional light in the effects of a 3D layer. 3D objects can be configured to react to light or ignore it.
* In the future, support for 3D objects will be improved: light objects, animations, etc...
2023-05-16 17:37:49 +02:00
supertree-wook 8fb139ff63 Rename the readme and license files to match standard (#5272)
Do not show in changelog
2023-05-04 09:22:12 +02:00
D8Handsupertree-wook 94045aec91 Fix typo in comments and message strings (thanks @st-Wook!) (#5262)
Co-authored-by: supertree-wook <[email protected]>
2023-04-28 11:58:51 +02:00
supertree-wook 21a87daf64 Clean markdown files and fix typos (#5248)
Only show in develop changelog
2023-04-20 16:22:46 +02:00
D8H 113e329d7a Fix a collision mask compatibility issue with a breaking change of Tiled 1.10 (#5122)
* Handle the "type" attribute as an alias of "class".
2023-03-17 19:22:03 +01:00
D8H 2f8287b017 Fix a white flash when opening a project with a tile map (#5084)
* Also allow atlas images to be bigger than expected as some artists extend them to add their names. The error was aiming to help to understand that rescaled atlas will not work without changing the tiles size, but artifacts can actually help figuring this out.
2023-03-09 16:31:55 +01:00
D8H a73a92d748 Fix tile map loading for collision mask objects (#4916) 2023-02-10 15:52:06 +01:00
Florian Rival 903b353b7b Fix LDtk maps not properly loaded when not having a IntGrid layer (#4806)
Fix #4803
2023-01-09 13:20:31 +01:00
Baptiste Augrain f34f901fa7 Add support for opacity of layers for Tiled tilemaps (#4739) 2022-12-24 11:21:03 +01:00
77320ce12e Add support for LDtk Tilemaps (#4575)
* Tilemaps made with [LDtk](https://ldtk.io/), a modern 2D level editor, can be now used directly. Make sure to save your map made in LDtk as a JSON file, create a new Tilemap object in GDevelop and in the Tilemap field, choose the LDtk file.
* Tilesets used by the LDtk Tilemap are automatically imported in your game - you don't need to import them separately.
* For more information, read about the [Tilemap object on the wiki](https://wiki.gdevelop.io/gdevelop5/objects/tilemap).

Co-authored-by: Davy Hélard <[email protected]>
Co-authored-by: Florian Rival <[email protected]>
2022-12-22 18:44:27 +01:00
D8H 52201e2a36 Fix tiles rotation that was no longer applied in tile maps (#4315) 2022-09-22 10:25:38 +02:00
D8H 629567ad21 Fix tile maps with rectangular tiles (#4299) 2022-09-14 19:04:42 +02:00
D8H 7d09853c12 Fix tile maps layer filtering (#4249) 2022-08-30 14:31:28 +02:00
D8H cfa538ec3d Fix the collision mask of rotated tiles that were sometimes misplaced (#4181) 2022-08-05 18:10:06 +02:00
D8H 3e246e3cf0 Fix the loading of tile map atlases that was aborted when the image contains unused pixels at the right or bottom. (#4167) 2022-08-02 10:53:04 +02:00
D8H 4e5d268f63 Handle tile maps with invalid resources (#4140)
* Fix an uncatched exceptions when a tile map resource is not set.
* Show place-holders for tile map with invalid resources in the instances editor.
* Give a better default name to tile map collision mask objects.
* Add a border around the tile map collision mask objects in the instance editor.
2022-07-25 17:33:08 +02:00
D8H f871b64011 [TileMap] Collision mask object (#3313)
* The collision mask is read from the tile maps exported by Tiled 1.9+.
* Several collision masks can be used for instance to have platforms and ladders.
* Take a look to the wiki for more details https://wiki.gdevelop.io/gdevelop5/objects/tilemap
2022-07-13 15:12:12 +02:00