Repository navigation
v0.93.0
Added
-
Dynamic planar reflections. A shared 2D/3D render-graph capture provides mirrored cameras, plane clipping, layer filtering and PBR reflection input for flat meshes. Details adds quality overrides, plane preview and capture diagnostics; project tiers, every-frame/fixed-rate/on-demand capture, per-camera ownership and device recovery share one implementation. A runnable example and WebGL2/WebGPU headless pixel checks are included. One visible surface per view; mobile device acceptance remains pending.
-
SUD OpenPaaS development export. An opt-in project platform preset exports a
main.jsdirectory for PinK's third-party builder. Its SDK profile bridgessud, package-file WASM loading, XHR, WebSocket and localStorage through the shared 2D/3D mini-game runtime. Headless checks exercise real exported 2D and 3D frames, including a WASM result withoutmodule; PinK packaging and Android/iOS acceptance remain pending. Login, ads, payment, WebGPU and EmscriptenGLX are not enabled by this initial integration.
The directory includes the initialmanifest.jsonemitted by the official web2sp converter. That converter produces a SUD project directory, not a binary.spfile; final package generation remains separate from directory export.
package-openpaasnow invokes PinK's official packer directly to generate encrypted, signed.spfiles and verify all payload files before replacing the output. Real 2D/3D examples pass export → package → verify → decrypt → payload comparison → headless rendering with independent test keys; authorized Hello PinK and device acceptance remain pending. Uploading is user-managed. -
Plugin filesystem operations. Editor plugins can read and write binary assets directly, list directories, inspect files, create folders, rename and delete in their own directory or the capability-gated project scope. Moves preserve asset UUID sidecars, deletion uses the OS trash, and project edits join the existing file journal. User-installed plugins outside the project are supported; generated plugin data no longer repeatedly reloads its producer. Addresses #99.
-
One-click LAN device preview. Scan Preview beside Play prepares the current scene for a phone browser, with a QR popover, tokenized local-network address, connected devices and advanced scene/interface settings. Scene and asset saves publish complete preview builds; compatible script changes retain the world through existing hot-swap APIs, with explicit reload reasons otherwise. Closing the project or stopping invalidates the session. The same Web runtime serves 2D and 3D; native/minigame device acceptance remains separate.
-
Budgeted particle scene collisions. Particles query existing 2D or 3D physics along their movement segments, with layer filtering, rotating per-emitter/App query budgets, camera-distance culling and explicit floor/skip fallback. Bounded collision events use the standard EventReader; collision-triggered sub-emitters support local storage and capped inheritance depth. Details adds live counters and transient hit normals. A side-by-side sample demonstrates both physics paths and project-owned contact counters; device and performance acceptance remain pending.
-
Reusable UI trees and color pickers. TreeView adapts arbitrary project records with stable IDs to the existing virtualized ListView. It supports expansion, selection, keyboard navigation, row and empty-state prefabs, and validated drop requests whose mutations remain project-owned. ColorPicker composes HSV/RGB/HEX and alpha editing with standard sliders and text inputs, per-control recent colors, and canonical RGBA change events for 2D UI, sprites and 3D materials. Both have UI Widgets presets and themed Inspectors; preview sample data never overwrites saved project data. Their Details panels use standard property alignment, shared override/reset feedback, concise manual links and folded editor-only previews. Recent-color capacity is disabled without losing its value when history is off; opaque color editing fixes alpha at 1.
-
UI tabs and tooltips. TabView connects ordinary Toggles to content pages, with ordered entity bindings, keyboard navigation and an editor preview that leaves the saved initial page untouched. Tooltip adds delayed hover, keyboard-focus and touch-long-press hints, screen-edge placement and project theme or prefab styling. Both are available in the UI Widgets palette.
-
3D swing/twist and six-axis joints. SwingTwistJoint3D adds an elliptical swing cone and twist limits; SixDOFJoint3D locks, limits or frees each translation/rotation axis. Both support live velocity motors. The existing Details controls expose degree-based authoring, and selected viewport gizmos show limits. The 3D Physics example includes a shoulder and carriage with reversible motors. Partial property searches keep only matching generic fields. Headless solver checks do not replace target-device acceptance.
Changed
- Mini-game packages for other vendors are lean. Douyin and the other mini-game vendors ship a lean engine entry. A package for Douyin, Kuaishou, Bilibili, QuickGame, Alipay, Huawei or a vendor of your own now carries only the subsystems its project uses, as a WeChat one already did — one sample project went from 4.23MB to 3.76MB, under the 4MB main-package cap it had just crossed.
- Planar reflections survive a driver that refuses float targets. Planar reflections fall back to an 8-bit capture on drivers that refuse a float one. Without that a planar reflection on such a driver showed nothing. The planar reflection diagnostics read the editor view. They report the capture the viewport actually drew instead of calling it inactive.
- The string table speaks XLIFF. The string table exports and imports XLIFF 1.2. It is the format translators and agencies work in: Export asks for the source language, the target languages (each with how many entries it still lacks) and whether to carry only the untranslated ones, and writes one file with a section per language; a plural entry is a unit per form, a
{name}placeholder is a tag translation tools leave alone, and importing merges by key, never overwrites with an empty translation, refuses a translation whose placeholders changed, and matchesja-JPto ajatable. - The viewport can preview the scene in another language. The viewport toolbar has a Preview language menu, shown when the project has a string table, that shows the scene's text in one language in the viewport and in Play, and says how many keys each language lacks; it is kept per project on this machine and does not change the editor's own language. The preview language menu appears once the string tables are indexed. Play starts in the preview language.
Fixed
- Faster 3D multi-selection. Selected mesh overlays snapshot WASM transform scalars once per instance and reuse world vertices, projection buffers and complete silhouette edges until their inputs change. Deselecting releases derived geometry. Multi-object Details resolves entities in one scene pass. The optimization preserves all selection outlines and adds no drawing limits.