Commit Graph

115 Commits

Author SHA1 Message Date
DuckieTM 6a7443b602 🆙 mask filter 2026-06-05 21:01:54 +02:00
duckietm 746e2c8289 🆙 Small alphablend fix 2026-06-05 17:22:48 +02:00
duckietm 20f6af232e 🆙 Update to Pixi.js 8.19.0 and alphablend is now fixed 2026-06-05 16:30:22 +02:00
medievalshell b127501c52 fix: restore room-background Z transparency after branding offsetZ change
FurnitureBrandedImageVisualization now adds offsetZ to the branded layer (z-index for the MPU/billboard editor). The room background uses offsetZ as an inverse depth push (the 'play with Z to hide floor/walls' trick); its getLayerZOffset subtracted offsetZ assuming the parent did not add it, so the two cancelled out and the effect was lost. Cancel the parent's +offsetZ for the branded layer to restore the original net (base - offsetZ).
2026-05-29 00:45:05 +02:00
medievalshell 9ece87240e feat: branding furni image position + scale (MPU background editor)
Renderer support for the in-client image position editor:
- FurnitureBrandedImageVisualization applies offsetX/Y to the branded image
  layer only (offsetZ stays as z-index/depth), so the image can be moved
  without shifting the furni frame
- new `scale` branding key + FURNITURE_BRANDING_SCALE: zooms the image via a
  real per-sprite scale (RoomObjectSprite.scale, default 1, applied in
  RoomSpriteCanvas) — NOT by writing the read-only width/height
- AssetManager loads external raster images (png/jpg/…) via a CORS <img> +
  Texture.from instead of Assets.load (which didn't load cross-origin images);
  branding image download failures are now surfaced instead of swallowed
2026-05-28 15:29:42 +02:00
duckietm b7688f9d2b 🆕 Added Pickup furni to the floorplan 2026-05-27 09:41:18 +02:00
simoleo89 2504aea85f fix(room): guard RoomPreviewer.updatePreviewModel against null _planeParser
After dispose() nulls out the internal _planeParser /
_backgroundSprite refs, any further updatePreviewModel call
crashed with 'this._planeParser is null'. React 19 StrictMode
in dev double-mounts effects (setup, cleanup, setup again),
which can briefly leave a consumer holding a stale reference
to a disposed previewer between the two setup runs. Bail
silently in that window instead of crashing the editor.
2026-05-24 21:14:53 +02:00
simoleo89 28a41ba543 fix(room): applyFloorModelLocally also rebuilds the furniture stacking map
The first cut updated wallGeometry + RoomMapData (so the
visualization rebuilt) but NOT the FurnitureStackingHeightMap.
The stacking map is what governs whether the room treats a
tile as 'a room tile you can stack furni on' vs. 'blocked'.
Without rebuilding it, every newly-painted tile in the live
preview looks walkable but rejects furniture placement -
user reported exactly that.

Mirror the structure of onRoomHeightMapEvent: build a fresh
FurnitureStackingHeightMap from the parsed floor (height +
isRoomTile from FloorHeightMapMessageParser.TILE_BLOCKED),
default stackingBlocked=false, then setFurnitureStackingHeightMap
+ refreshTileObjectMap so the room object map picks up the
new tile set.
2026-05-24 21:14:52 +02:00
simoleo89 afd0a4fa16 feat(room): RoomMessageHandler.applyFloorModelLocally for live floor preview
Adds a public method that rebuilds the active room's floor
geometry from an in-memory model string + wallHeight without
touching the server. Same pipeline as the wire-driven
onRoomModelEvent (FloorHeightMapMessageParser ->
_planeParser -> wallGeometry), but instead of going through
RoomEngine.createRoomInstance (which is a no-op on a room
that already exists) it routes the resulting RoomMapData
through the room object's ObjectRoomMapUpdateMessage channel
- the same mechanism RoomPreviewer.updateRoomPlanes uses for
its iso preview. Result: the visualization rebuilds in place
and existing furniture/avatars are preserved.

Refactor: extracted the parser->planeParser->wallGeometry-
>RoomMapData work from onRoomModelEvent into a private
_rebuildFloorGeometry(parser) helper so the wire handler and
the new public method share an implementation.

Intended use: tools that need a live in-room preview of a
floor edit before committing it server-side (e.g. the React
floor-plan editor's live-preview mode). The wire
UpdateFloorPropertiesMessageComposer remains the source of
truth - call applyFloorModelLocally only for transient
client-side preview.
2026-05-24 21:14:52 +02:00
simoleo89 820f791e66 Merge remote-tracking branch 'origin/main' into feat/react19-event-bus 2026-05-18 20:26:17 +02:00
duckietm b6a26fbd84 🆙 Small fix landscape's where a bit offset 2026-05-12 11:48:06 +02:00
simoleo89 5ea3201e31 Align with Pixi v8: Filter[] union, WebGLRenderer narrow, ImageLike
Four sites where Pixi v8's stricter typing tripped tsgo:

- AvatarImage: container.filters is typed as 'readonly Filter[] | null'
  in v8 (no longer a single-Filter union). The old fallback branch
  'else container.filters = [container.filters, …]' tried to treat a
  readonly array as a single Filter; collapsed to the array-spread
  path which now covers both undefined and non-empty cases. Added
  Filter to the pixi.js import.
- FurnitureBadgeDisplayVisualization.updateSprite() had a 4-arg
  override (sprite, asset, scale, layerId) of the parent's 2-arg
  signature (scale, layerId). The sprite/asset were never used from
  the parameters — the body only mutated 'sprite'. Refactored to
  fetch the sprite via this.getSprite(layerId) inside the override
  body so the signature matches the base.
- ExtendedSprite: 'renderer.gl' / 'glRenderTarget.resolveTargetFramebuffer'
  exist only on WebGLRenderer / GlRenderTarget (not the WebGPU
  variants). The runtime check 'renderer.type === RendererType.WEBGL'
  guarantees this; cast at the boundary to satisfy the typechecker.
- TextureUtils.generateImage: Pixi v8's Extractor.image() returns the
  union ImageLike (HTMLCanvasElement | HTMLImageElement); the public
  signature promises HTMLImageElement. Cast at return — the Pixi
  default backend returns HTMLImageElement here.
2026-05-11 21:09:59 +02:00
simoleo89 ddb7222b66 chore: bump TypeScript pins to ^6.0.3 across all 12 workspaces + thumbmarkjs 1.9 + add CLAUDE.md
Each workspace package was still pinning `typescript: ~5.5.x` or
`~5.8.2` in its own devDependencies even though the root bumped to 6.0.3
in 60b1143. The pins were dead (yarn 1 hoists from root) but they're
misleading when reading a single package.json. Bring them all to
`^6.0.3` to match the root.

Other:
- @thumbmarkjs/thumbmarkjs 1.8.1 → 1.9.0 (root + communication package)
- yarn.lock regenerated from a clean install (vitest 4 hoisting was
  flaking on the patch vite bump; reverted vite to ^8.0.10)

Adds CLAUDE.md at the repo root: short project context for future
sessions — stack, the 12-workspace layout, the React-friendly v2.1.0
additions (`subscribe()`, `subscribeMessage()`, snapshot getters), build
scripts, and known gotchas (`SessionDataManager.getUserData` does NOT
exist; sendChat* expects 3 args; dispatchEvent is sync).
2026-05-10 21:29:50 +02:00
Lorenzune f7fc502685 Improve mobile room interaction handling 2026-05-07 21:21:48 +02:00
Lorenzune 5fc4564467 Merge remote-tracking branch 'duckie/main' into merge-duckie-main-2026-05-06
# Conflicts:
#	packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts
#	packages/communication/src/messages/parser/user/data/UserProfileParser.ts
#	packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts
#	packages/session/src/handler/RoomUsersHandler.ts
2026-05-06 04:23:13 +02:00
duckietm 151a3db2f4 🆙 Fix BlackHoles 2026-05-04 12:53:18 +02:00
duckietm 6ab93ee146 🆙 Fixed the Door not visable when window is on wall 2026-05-04 12:01:45 +02:00
duckietm 43dc054fed 🆙 Floorplan fix 2026-04-30 07:57:31 +02:00
duckietm 853204a5b8 🆕 Effect selection in user dropdown 2026-04-29 13:23:30 +02:00
Lorenzune 9abec36f02 Merge remote-tracking branch 'duckie/main' into duckie-live-merge-2026-04-21 2026-04-25 13:34:15 +02:00
duckietm e1cc87afa3 🆙 Fix background clipping 2026-04-24 13:55:18 +02:00
Lorenzune 7fa8eff751 Merge latest duckie renderer main 2026-04-21 11:53:28 +02:00
Lorenzune 1dede2c098 Merge remote-tracking branch 'duckie-temp/main' into duckie-merge-2026-04-21
# Conflicts:
#	packages/communication/src/NitroMessages.ts
#	packages/communication/src/messages/incoming/IncomingHeader.ts
#	packages/communication/src/messages/outgoing/OutgoingHeader.ts
2026-04-21 11:20:02 +02:00
Lorenzune 7bf552824f Sync renderer safety push 2026-04-21 08:57:35 +02:00
duckietm bbedf2e5fe 🆙 Merge Dev to Prod 2026-04-14 11:57:23 +02:00
duckietm 79d51246ec 🆙 Added username to send badge 2026-04-08 14:08:00 +02:00
Lorenzune 5b69407ecb Merge remote-tracking branch 'origin/main' into merge/duckietm-main-20260407 2026-04-07 15:27:01 +02:00
Lorenzune aacdfe3eae feat/wired-improvements-apr04 2026-04-04 15:58:57 +02:00
DuckieTM dd30606a73 🆙 Redone the userwalk flood detection 2026-04-04 08:47:52 +02:00
Lorenzune 3718e7cf3d feat: tag stack walk helpers for widget support 2026-04-03 13:00:05 +02:00
Lorenzune 24f1d1278a feat: add room control rendering support 2026-04-03 12:09:16 +02:00
Lorenzune ba52f538de Merge remote-tracking branch 'origin/main' 2026-04-03 12:04:39 +02:00
duckietm 5b3c4ad090 🆙 Small updates 2026-04-03 11:43:58 +02:00
duckietm d63be7dd62 🆙 more optimization mem. 2026-04-03 10:48:13 +02:00
Lorenzune cdc53833ed Merge remote-tracking branch 'origin/main' into feature/checkpoint-20260403 2026-04-03 05:25:28 +02:00
Lorenzune c75f1b1258 chore: checkpoint current work 2026-04-03 05:22:24 +02:00
duckietm fd74fd323b 🆙 Some minor mem tweaks 2026-03-31 16:03:21 +02:00
duckietm 44cb722f54 📝 Fixed some memory problems
RenderTexture leak in IsometricImageFurniVisualization, every direction change or thumbnail update leaked a GPU RenderTexture.
Image object leak in FurnitureDynamicThumbnailVisualization, now clears callbacks and src after use.
Image object leak in FurnitureBadgeDisplayVisualization, image objects never cleaned up
2026-03-31 15:20:28 +02:00
duckietm 2138d3a820 🆙 fix some metrics 2026-03-31 14:54:42 +02:00
duckietm 8f1436a81c 🆙 Fix Youtube TV's 2026-03-31 11:41:42 +02:00
Lorenzune 99c4acea38 Expose room, user and furni metadata for wired tools
- parse extra room snapshot data such as hotel time, room item limit and group context

- expose richer furni metadata including flags, dimensions and teleport targets

- expose richer user metadata including room-entry fields and ids needed by inspection tools

- keep session and room engine models aligned with the new wired monitor/inspection flow
2026-03-27 09:37:14 +01:00
Lorenzune 296df767ba Improve wired movement rendering and follow sync 2026-03-25 03:26:27 +01:00
Lorenzune 9962ec8037 Adjust room walking after wired movements 2026-03-24 02:11:54 +01:00
Lorenzune 38a79d4f80 feat: support wired movement packets and room sync 2026-03-22 16:48:51 +01:00
Lorenzune 10b3d64ee0 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	packages/communication/src/NitroMessages.ts
2026-03-21 14:49:08 +01:00
Lorenzune fd61704375 fix(room): support wired click-user controls 2026-03-21 14:27:57 +01:00
DuckieTM ef42c6862d Merge pull request #7 from simoleo89/feature/floorplan-realtime-preview-v2
feat(floorplan): add real-time preview support to FloorplanEditor
2026-03-21 08:46:26 +01:00
duckietm 4e41e9db5c 🆙 Stage 2 reconnect 2026-03-20 17:10:56 +01:00
duckietm 958693fe2e 🆙 Stage 1 reconnect 2026-03-20 16:06:03 +01:00
simoleo89 d45381716f feat(floorplan): add real-time preview support to FloorplanEditor
- Add getMapData() method to expose current floor map state
- Enables real-time preview in the UI floor plan editor
2026-03-20 14:19:35 +01:00