babylon.quarks-editor 0.24.1 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,19 @@ All notable changes to the `babylon.quarks-editor` package are documented here.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
5
  and the project follows the `quarks.core` 0.x version line.
6
6
 
7
+ ## [0.26.0] — 2026-10-21
8
+
9
+ ### Added
10
+
11
+ - Renderer module: rim mode "Fade (faces fade, edges stay)".
12
+
13
+ ## [0.25.0] — 2026-10-20
14
+
15
+ ### Added
16
+
17
+ - Renderer module: "Beam (end set in code)" render mode. The beam's end is a runtime property
18
+ (`ParticleSystem.beamEnd`), so in the editor a beam has no length and draws nothing.
19
+
7
20
  ## [0.24.1] — 2026-10-20
8
21
 
9
22
  ### Fixed
@@ -373,6 +373,7 @@ export function RendererModule({ binding, textureOptions, geometryOptions, resol
373
373
  { value: RenderMode.VerticalBillBoard, label: 'Vertical billboard' },
374
374
  { value: RenderMode.Trail, label: 'Trail' },
375
375
  { value: RenderMode.Mesh, label: 'Mesh' },
376
+ { value: RenderMode.Beam, label: 'Beam (end set in code)' },
376
377
  ], onChange: (mode) => binding.apply((s) => (s.renderMode = mode)) }) }), system.renderMode === RenderMode.Trail && (_jsxs(_Fragment, { children: [_jsx(Row, { label: "Trail length", children: _jsx(NumberField, { value: readScalar(system.rendererEmitterSettings.startLength).value, min: 1, step: 1, onChange: (v) => binding.apply((s) => {
377
378
  s.rendererEmitterSettings.startLength =
378
379
  new ConstantValue(Math.round(v));
@@ -538,6 +539,7 @@ export function RendererModule({ binding, textureOptions, geometryOptions, resol
538
539
  return (_jsxs(_Fragment, { children: [_jsx(Row, { label: "Rim mode", children: _jsx(SelectField, { value: rim.mode, options: [
539
540
  { value: 'add', label: 'Add (glow)' },
540
541
  { value: 'mix', label: 'Mix (outline)' },
542
+ { value: 'fade', label: 'Fade (faces fade, edges stay)' },
541
543
  ], onChange: (mode) => patchRim({ mode }) }) }), _jsx(Row, { label: "Rim color", children: _jsx("div", { style: { display: 'flex', gap: 6 }, children: [0, 1, 2].map((channel) => (_jsx(NumberField, { value: rim.color[channel], min: 0, step: 0.05, onChange: (v) => setChannel(channel, v) }, channel))) }) }), _jsx(Row, { label: "Rim power", children: _jsx(NumberField, { value: rim.power, min: 0.01, step: 0.25, onChange: (power) => patchRim({ power }) }) }), _jsx(Row, { label: "Rim strength", children: _jsx(NumberField, { value: rim.strength, min: 0, step: 0.05, onChange: (strength) => patchRim({ strength }) }) })] }));
542
544
  })(), _jsx(Row, { label: "Render order", children: _jsx(NumberField, { value: system.renderOrder, step: 1, onChange: (v) => binding.apply((s) => (s.renderOrder = Math.round(v))) }) }), _jsx(Row, { label: "Rendering group", children: _jsx(NumberField, { value: system.renderingGroupId, step: 1, min: 0, onChange: (v) => binding.apply((s) => (s.renderingGroupId = Math.max(0, Math.round(v)))) }) }), _jsx(Row, { label: "Layer mask", children: _jsx(NumberField, { value: system.layers.mask, min: 0, step: 1, onChange: (v) => binding.apply((s) => (s.layers.mask = Math.max(0, Math.floor(v)))) }) }), _jsxs(Row, { label: "Max particles", children: [_jsx(CheckboxField, { value: system.maxParticles !== undefined, onChange: (v) => binding.apply((s) => (s.maxParticles = v ? 1000 : undefined)) }), system.maxParticles !== undefined && (_jsx(NumberField, { value: system.maxParticles, min: 1, step: 10, onChange: (v) => binding.apply((s) => (s.maxParticles = Math.max(1, Math.floor(v)))) }))] }), system.renderMode !== RenderMode.Mesh && system.renderMode !== RenderMode.Trail && (_jsx(Row, { label: "Pivot", children: _jsx("div", { style: { display: 'flex', gap: 6 }, children: ['x', 'y', 'z'].map((axis) => (_jsx(NumberField, { value: system.pivot?.[axis] ?? 0, step: 0.05, onChange: (v) => binding.apply((s) => {
543
545
  const next = (s.pivot ?? new Vector3()).clone();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babylon.quarks-editor",
3
- "version": "0.24.1",
3
+ "version": "0.26.0",
4
4
  "description": "Shuriken-style effect editor for babylon.quarks: headless edit-model core + React module-stack UI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -940,6 +940,7 @@ export function RendererModule({
940
940
  {value: RenderMode.VerticalBillBoard, label: 'Vertical billboard'},
941
941
  {value: RenderMode.Trail, label: 'Trail'},
942
942
  {value: RenderMode.Mesh, label: 'Mesh'},
943
+ {value: RenderMode.Beam, label: 'Beam (end set in code)'},
943
944
  ]}
944
945
  onChange={(mode) => binding.apply((s) => (s.renderMode = mode))}
945
946
  />
@@ -1297,6 +1298,7 @@ export function RendererModule({
1297
1298
  options={[
1298
1299
  {value: 'add', label: 'Add (glow)'},
1299
1300
  {value: 'mix', label: 'Mix (outline)'},
1301
+ {value: 'fade', label: 'Fade (faces fade, edges stay)'},
1300
1302
  ]}
1301
1303
  onChange={(mode) => patchRim({mode})}
1302
1304
  />