@3driseai/3drise-core 1.0.21 → 1.0.22
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/dist/autoAnimate/composer.d.ts +6 -0
- package/dist/autoAnimate/composer.d.ts.map +1 -1
- package/dist/autoAnimate/composer.js +4 -3
- package/dist/autoAnimate/describeScene.js +1 -1
- package/dist/catalog/catalogInfo.d.ts +22 -0
- package/dist/catalog/catalogInfo.d.ts.map +1 -0
- package/dist/catalog/catalogInfo.js +204 -0
- package/dist/catalog/index.d.ts +3 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +2 -0
- package/dist/catalog/objectCatalog.d.ts +33 -0
- package/dist/catalog/objectCatalog.d.ts.map +1 -0
- package/dist/catalog/objectCatalog.js +99 -0
- package/dist/data/allMaterials.js +2 -2
- package/dist/data/environmentDefaults.d.ts +10 -0
- package/dist/data/environmentDefaults.d.ts.map +1 -0
- package/dist/data/environmentDefaults.js +126 -0
- package/dist/data/gridsDefaults.d.ts +2 -0
- package/dist/data/gridsDefaults.d.ts.map +1 -1
- package/dist/data/gridsDefaults.js +57 -0
- package/dist/data/index.d.ts +4 -0
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +4 -0
- package/dist/data/landDefaults.d.ts +26 -0
- package/dist/data/landDefaults.d.ts.map +1 -0
- package/dist/data/landDefaults.js +76 -0
- package/dist/data/spaceDefaults.d.ts +10 -0
- package/dist/data/spaceDefaults.d.ts.map +1 -0
- package/dist/data/spaceDefaults.js +46 -0
- package/dist/data/textDefaults.d.ts +16 -0
- package/dist/data/textDefaults.d.ts.map +1 -0
- package/dist/data/textDefaults.js +199 -0
- package/dist/environment/oceanConfigs.d.ts +5 -4
- package/dist/environment/oceanConfigs.d.ts.map +1 -1
- package/dist/environment/oceanConfigs.js +2 -2
- package/dist/environment/terrainConfigs.d.ts +78 -0
- package/dist/environment/terrainConfigs.d.ts.map +1 -1
- package/dist/environment/terrainConfigs.js +72 -2
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/properties/registry.d.ts +10 -1
- package/dist/properties/registry.d.ts.map +1 -1
- package/dist/properties/registry.js +60 -9
- package/dist/properties/tables/environmentProperties.d.ts +9 -0
- package/dist/properties/tables/environmentProperties.d.ts.map +1 -0
- package/dist/properties/tables/environmentProperties.js +127 -0
- package/dist/properties/tables/gridProperties.d.ts.map +1 -1
- package/dist/properties/tables/gridProperties.js +117 -93
- package/dist/properties/tables/index.d.ts +4 -0
- package/dist/properties/tables/index.d.ts.map +1 -1
- package/dist/properties/tables/index.js +4 -0
- package/dist/properties/tables/landProperties.d.ts +5 -0
- package/dist/properties/tables/landProperties.d.ts.map +1 -0
- package/dist/properties/tables/landProperties.js +24 -0
- package/dist/properties/tables/optionalProperties.d.ts +1 -2
- package/dist/properties/tables/optionalProperties.d.ts.map +1 -1
- package/dist/properties/tables/optionalProperties.js +21 -0
- package/dist/properties/tables/spaceProperties.d.ts +8 -0
- package/dist/properties/tables/spaceProperties.d.ts.map +1 -0
- package/dist/properties/tables/spaceProperties.js +42 -0
- package/dist/properties/tables/textProperties.d.ts +4 -0
- package/dist/properties/tables/textProperties.d.ts.map +1 -0
- package/dist/properties/tables/textProperties.js +361 -0
- package/dist/properties/types.d.ts +1 -1
- package/dist/properties/types.d.ts.map +1 -1
- package/dist/services/MaterialRegistry.d.ts.map +1 -1
- package/dist/services/MaterialRegistry.js +2 -0
- package/dist/services/SkySystemManager.d.ts +22 -0
- package/dist/services/SkySystemManager.d.ts.map +1 -1
- package/dist/services/SkySystemManager.js +50 -18
- package/dist/services/TextureResolver.d.ts.map +1 -1
- package/dist/services/TextureResolver.js +22 -0
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/shaders/SkyboxMaterial.js +3 -3
- package/dist/shaders/StarsMaterial.d.ts +5 -0
- package/dist/shaders/StarsMaterial.d.ts.map +1 -1
- package/dist/shaders/StarsMaterial.js +59 -57
- package/dist/types/actions.d.ts +6 -5
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/commands.d.ts +61 -0
- package/dist/types/commands.d.ts.map +1 -0
- package/dist/types/commands.js +1 -0
- package/dist/types/environment.d.ts +34 -1
- package/dist/types/environment.d.ts.map +1 -1
- package/dist/types/environment.js +15 -0
- package/dist/types/environmentObjects.d.ts +152 -0
- package/dist/types/environmentObjects.d.ts.map +1 -0
- package/dist/types/environmentObjects.js +10 -0
- package/dist/types/index.d.ts +5 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/landObjects.d.ts +15 -0
- package/dist/types/landObjects.d.ts.map +1 -0
- package/dist/types/landObjects.js +1 -0
- package/dist/types/objectSettings.d.ts +187 -16
- package/dist/types/objectSettings.d.ts.map +1 -1
- package/dist/types/objectsConfigs.d.ts +0 -3
- package/dist/types/objectsConfigs.d.ts.map +1 -1
- package/dist/types/scene3d.d.ts +8 -5
- package/dist/types/scene3d.d.ts.map +1 -1
- package/dist/types/spaceObjects.d.ts +65 -0
- package/dist/types/spaceObjects.d.ts.map +1 -0
- package/dist/types/spaceObjects.js +11 -0
- package/dist/types/textObjects.d.ts +352 -0
- package/dist/types/textObjects.d.ts.map +1 -0
- package/dist/types/textObjects.js +14 -0
- package/dist/types/types.d.ts +3 -6
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/users.d.ts +3 -1
- package/dist/types/users.d.ts.map +1 -1
- package/dist/types/users.js +2 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +4 -0
- package/dist/ui/uiBindings.d.ts +45 -0
- package/dist/ui/uiBindings.d.ts.map +1 -0
- package/dist/ui/uiBindings.js +172 -0
- package/dist/ui/uiKeys.d.ts +14 -0
- package/dist/ui/uiKeys.d.ts.map +1 -0
- package/dist/ui/uiKeys.js +22 -0
- package/dist/ui/uiSanitize.d.ts +18 -0
- package/dist/ui/uiSanitize.d.ts.map +1 -0
- package/dist/ui/uiSanitize.js +251 -0
- package/dist/ui/uiSpec.d.ts +116 -0
- package/dist/ui/uiSpec.d.ts.map +1 -0
- package/dist/ui/uiSpec.js +173 -0
- package/dist/utils/environmentMigration.d.ts +3 -0
- package/dist/utils/environmentMigration.d.ts.map +1 -0
- package/dist/utils/environmentMigration.js +50 -0
- package/dist/utils/generativeAnimatable.d.ts +1 -1
- package/dist/utils/generativeAnimatable.d.ts.map +1 -1
- package/dist/utils/generativeAnimatable.js +12 -0
- package/dist/utils/getAnimatableProperties.d.ts +1 -1
- package/dist/utils/getAnimatableProperties.d.ts.map +1 -1
- package/dist/utils/getAnimatableProperties.js +1 -1
- package/dist/utils/gridMigration.d.ts +3 -0
- package/dist/utils/gridMigration.d.ts.map +1 -0
- package/dist/utils/gridMigration.js +34 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -0
- package/dist/utils/objectEffects.d.ts +24 -2
- package/dist/utils/objectEffects.d.ts.map +1 -1
- package/dist/utils/objectEffects.js +29 -2
- package/dist/utils/objectMigration.d.ts +9 -0
- package/dist/utils/objectMigration.d.ts.map +1 -0
- package/dist/utils/objectMigration.js +12 -0
- package/dist/utils/skyPhase.d.ts +61 -0
- package/dist/utils/skyPhase.d.ts.map +1 -0
- package/dist/utils/skyPhase.js +93 -0
- package/dist/utils/spaceMigration.d.ts +3 -0
- package/dist/utils/spaceMigration.d.ts.map +1 -0
- package/dist/utils/spaceMigration.js +46 -0
- package/dist/utils/sunUtils.d.ts +26 -1
- package/dist/utils/sunUtils.d.ts.map +1 -1
- package/dist/utils/sunUtils.js +37 -6
- package/package.json +1 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
|
+
import { sunDirectionFromAngles } from '../utils/sunUtils.js';
|
|
3
|
+
import { SKY_PHASE_ELEVATIONS } from '../utils/skyPhase.js';
|
|
2
4
|
const SUNRISE = 6;
|
|
3
5
|
const SUNSET = 21;
|
|
4
6
|
const MAX_ELEVATION = 42;
|
|
@@ -9,6 +11,11 @@ const HORIZON_OFFSET = 5;
|
|
|
9
11
|
const MAX_NIGHT_DEPTH = 21;
|
|
10
12
|
/** Real seconds between playback write-backs to the host. */
|
|
11
13
|
const SYNC_INTERVAL_SECONDS = 0.25;
|
|
14
|
+
const DEFAULT_MOON_PHASE = 0.5;
|
|
15
|
+
const wrap01 = (v) => ((v % 1) + 1) % 1;
|
|
16
|
+
const wrap24 = (h) => ((h % 24) + 24) % 24;
|
|
17
|
+
/** Lit fraction of the moon's disc for a phase in 0..1. */
|
|
18
|
+
export const moonIlluminationForPhase = (phase) => (1 - Math.cos(2 * Math.PI * phase)) / 2;
|
|
12
19
|
export class SkySystemManager {
|
|
13
20
|
static instance = null;
|
|
14
21
|
timeInHours = 12;
|
|
@@ -20,6 +27,9 @@ export class SkySystemManager {
|
|
|
20
27
|
sunElevation = 37;
|
|
21
28
|
sunAzimuth = 270;
|
|
22
29
|
sunDirection = new THREE.Vector3(0, 1, 0);
|
|
30
|
+
moonPhase = DEFAULT_MOON_PHASE;
|
|
31
|
+
moonElevation = 0;
|
|
32
|
+
moonDirection = new THREE.Vector3(0, -1, 0);
|
|
23
33
|
enabled = false;
|
|
24
34
|
timescale = 60;
|
|
25
35
|
autoAnimate = false;
|
|
@@ -38,7 +48,7 @@ export class SkySystemManager {
|
|
|
38
48
|
* otherwise double-tick it and stomp its settings. */
|
|
39
49
|
driver = null;
|
|
40
50
|
constructor() {
|
|
41
|
-
this.
|
|
51
|
+
this.recalculateState();
|
|
42
52
|
}
|
|
43
53
|
static getInstance() {
|
|
44
54
|
if (!SkySystemManager.instance) {
|
|
@@ -67,6 +77,9 @@ export class SkySystemManager {
|
|
|
67
77
|
return this.driver !== null;
|
|
68
78
|
}
|
|
69
79
|
setTimeSettings(settings) {
|
|
80
|
+
const moonPhase = wrap01(settings.moonPhase ?? DEFAULT_MOON_PHASE);
|
|
81
|
+
const phaseChanged = moonPhase !== this.moonPhase;
|
|
82
|
+
this.moonPhase = moonPhase;
|
|
70
83
|
this.enabled = settings.enabled;
|
|
71
84
|
this.timescale = settings.timescale;
|
|
72
85
|
this.autoAnimate = settings.autoAnimate;
|
|
@@ -94,6 +107,9 @@ export class SkySystemManager {
|
|
|
94
107
|
this.syncAccumulator = 0;
|
|
95
108
|
this.recalculateState();
|
|
96
109
|
}
|
|
110
|
+
else if (phaseChanged) {
|
|
111
|
+
this.recalculateState();
|
|
112
|
+
}
|
|
97
113
|
}
|
|
98
114
|
setOnTimeSync(callback) {
|
|
99
115
|
this.onTimeSync = callback;
|
|
@@ -139,14 +155,16 @@ export class SkySystemManager {
|
|
|
139
155
|
elapsedTime: this.elapsedTime,
|
|
140
156
|
autoAnimate: this.autoAnimate,
|
|
141
157
|
advancing: this.isAdvancing(),
|
|
158
|
+
moonDirection: this.moonDirection,
|
|
159
|
+
moonElevation: this.moonElevation,
|
|
160
|
+
moonPhase: this.moonPhase,
|
|
161
|
+
moonIllumination: moonIlluminationForPhase(this.moonPhase),
|
|
142
162
|
};
|
|
143
163
|
}
|
|
144
164
|
getStateByTime(timeOfDay) {
|
|
145
165
|
const state = this.calculateTimeState(timeOfDay);
|
|
146
|
-
const
|
|
147
|
-
const
|
|
148
|
-
const distance = 0.5;
|
|
149
|
-
const sunDirection = new THREE.Vector3(distance * Math.cos(el) * Math.sin(az), distance * Math.sin(el), distance * Math.cos(el) * Math.cos(az)).normalize();
|
|
166
|
+
const sunDirection = sunDirectionFromAngles(state.sunElevation, this.transformAzimuth(state.sunAzimuth), new THREE.Vector3());
|
|
167
|
+
const moon = this.calculateMoon(timeOfDay, new THREE.Vector3());
|
|
150
168
|
return {
|
|
151
169
|
timeInHours: timeOfDay,
|
|
152
170
|
normalizedTime: state.normalizedTime,
|
|
@@ -159,6 +177,10 @@ export class SkySystemManager {
|
|
|
159
177
|
elapsedTime: this.elapsedTime,
|
|
160
178
|
autoAnimate: this.autoAnimate,
|
|
161
179
|
advancing: this.isAdvancing(),
|
|
180
|
+
moonDirection: moon.direction,
|
|
181
|
+
moonElevation: moon.elevation,
|
|
182
|
+
moonPhase: this.moonPhase,
|
|
183
|
+
moonIllumination: moonIlluminationForPhase(this.moonPhase),
|
|
162
184
|
};
|
|
163
185
|
}
|
|
164
186
|
getTime() {
|
|
@@ -240,6 +262,18 @@ export class SkySystemManager {
|
|
|
240
262
|
this.sunElevation = state.sunElevation;
|
|
241
263
|
this.sunAzimuth = state.sunAzimuth;
|
|
242
264
|
this.updateSunDirection();
|
|
265
|
+
this.moonElevation = this.calculateMoon(this.timeInHours, this.moonDirection).elevation;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* The moon runs the sun's own daily arc, `moonPhase` of a day behind it:
|
|
269
|
+
* a new moon rides with the sun, a full moon is 12 h behind — rising at
|
|
270
|
+
* sunset, highest at midnight, setting at sunrise — which is where the real
|
|
271
|
+
* one is. Same curve, same convention, so the two can never cross wrongly.
|
|
272
|
+
*/
|
|
273
|
+
calculateMoon(timeInHours, out) {
|
|
274
|
+
const m = this.calculateTimeState(wrap24(timeInHours - this.moonPhase * 24));
|
|
275
|
+
sunDirectionFromAngles(m.sunElevation, this.transformAzimuth(m.sunAzimuth), out);
|
|
276
|
+
return { elevation: m.sunElevation, direction: out };
|
|
243
277
|
}
|
|
244
278
|
/**
|
|
245
279
|
* Sun elevation and azimuth for a given hour.
|
|
@@ -277,14 +311,14 @@ export class SkySystemManager {
|
|
|
277
311
|
sunElevation = -HORIZON_OFFSET - Math.cos(Math.PI * (normalizedTime - 0.5)) * MAX_NIGHT_DEPTH;
|
|
278
312
|
sunAzimuth = 360 + 180 * normalizedTime;
|
|
279
313
|
}
|
|
314
|
+
// Labels follow the sun's height (skyPhase), the same keys the atmosphere
|
|
315
|
+
// and the stars turn on, so the label never says Midday under a red sky.
|
|
280
316
|
let timeOfDay = 'Nighttime';
|
|
281
|
-
if (
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
else
|
|
287
|
-
timeOfDay = 'Sunset';
|
|
317
|
+
if (sunElevation >= SKY_PHASE_ELEVATIONS.day)
|
|
318
|
+
timeOfDay = 'Midday';
|
|
319
|
+
else if (sunElevation > SKY_PHASE_ELEVATIONS.twilight) {
|
|
320
|
+
const morning = isDaytime ? normalizedTime < 0.5 : timeInHours < 12;
|
|
321
|
+
timeOfDay = morning ? 'Sunrise' : 'Sunset';
|
|
288
322
|
}
|
|
289
323
|
return { normalizedTime, isDaytime, timeOfDay, sunElevation, sunAzimuth };
|
|
290
324
|
}
|
|
@@ -295,13 +329,11 @@ export class SkySystemManager {
|
|
|
295
329
|
const wrapped = (((270 - rawAzimuth) % 360) + 360) % 360;
|
|
296
330
|
return wrapped - 180;
|
|
297
331
|
}
|
|
332
|
+
/** Same convention as the Preetham sky (sunUtils), so the direction this
|
|
333
|
+
* publishes is exactly where SkyController draws the disc for the same
|
|
334
|
+
* elevation/azimuth. */
|
|
298
335
|
updateSunDirection() {
|
|
299
|
-
|
|
300
|
-
const az = THREE.MathUtils.degToRad(this.transformAzimuth(this.sunAzimuth));
|
|
301
|
-
const distance = 0.5;
|
|
302
|
-
this.sunDirection
|
|
303
|
-
.set(distance * Math.cos(el) * Math.sin(az), distance * Math.sin(el), distance * Math.cos(el) * Math.cos(az))
|
|
304
|
-
.normalize();
|
|
336
|
+
sunDirectionFromAngles(this.sunElevation, this.transformAzimuth(this.sunAzimuth), this.sunDirection);
|
|
305
337
|
}
|
|
306
338
|
}
|
|
307
339
|
export const skySystemManager = SkySystemManager.getInstance();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureResolver.d.ts","sourceRoot":"","sources":["../../src/services/TextureResolver.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"TextureResolver.d.ts","sourceRoot":"","sources":["../../src/services/TextureResolver.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AAKhD,cAAM,sBAAsB;IAExB,OAAO,CAAC,KAAK,CAAa;IAC1B;;;OAGG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe5C;;OAEG;IACH,YAAY,CAAC,IAAI,GAAE,MAAiB,GAAG,OAAO;IAG9C;;;;;;;;;;OAUG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAoDnG;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAG9B;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAG3C;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOxB;;OAEG;IACH,QAAQ,IAAI;QACA,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,EAAE,CAAC;KACxB;CAMZ;AAED,eAAO,MAAM,eAAe,EAAE,sBAAqD,CAAC;AAEpF,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
import { loadTextureAsync } from '../utils/loadingManager.js';
|
|
14
14
|
import { NoiseGenerator } from './NoiseGenerator.js';
|
|
15
15
|
import MaterialRegistryAPI from '../services/MaterialRegistry.js';
|
|
16
|
+
import { SRGBColorSpace } from "three";
|
|
17
|
+
/** Texture slots that hold colour (sRGB) data; the rest (normal, roughness…) are linear. */
|
|
18
|
+
const SRGB_TEXTURE_KEYS = new Set(['map', 'emissiveMap', 'specularColorMap', 'sheenColorMap']);
|
|
16
19
|
class TextureResolverService {
|
|
17
20
|
// Cache: URL string → loaded Texture
|
|
18
21
|
cache = new Map();
|
|
@@ -87,6 +90,25 @@ class TextureResolverService {
|
|
|
87
90
|
}
|
|
88
91
|
// Wait for all texture loads to complete
|
|
89
92
|
await Promise.all(texturePromises);
|
|
93
|
+
// Per-material texture state on a copy (the loaded texture is cached and shared):
|
|
94
|
+
// tiling from settings.textureRepeat ([x, y] or a number), and sRGB for colour maps.
|
|
95
|
+
const rep = settings.textureRepeat;
|
|
96
|
+
const repeat = Array.isArray(rep) && rep.length === 2 ? rep : typeof rep === 'number' ? [rep, rep] : null;
|
|
97
|
+
for (const key of textureKeys) {
|
|
98
|
+
const tex = resolved[key];
|
|
99
|
+
if (!tex || !tex.isTexture || typeof settings[key] !== 'string')
|
|
100
|
+
continue;
|
|
101
|
+
const srgb = SRGB_TEXTURE_KEYS.has(key);
|
|
102
|
+
if (!repeat && !srgb)
|
|
103
|
+
continue;
|
|
104
|
+
const copy = tex.clone();
|
|
105
|
+
if (srgb)
|
|
106
|
+
copy.colorSpace = SRGBColorSpace;
|
|
107
|
+
if (repeat)
|
|
108
|
+
copy.repeat.set(Number(repeat[0]) || 1, Number(repeat[1]) || 1);
|
|
109
|
+
copy.needsUpdate = true;
|
|
110
|
+
resolved[key] = copy;
|
|
111
|
+
}
|
|
90
112
|
return resolved;
|
|
91
113
|
}
|
|
92
114
|
/**
|
package/dist/services/index.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export { PositionsCreator } from './PositionsCreator';
|
|
|
12
12
|
export * from './NoiseGenerator';
|
|
13
13
|
export { TextureResolverService, textureResolver } from './TextureResolver';
|
|
14
14
|
export { UniformConverter, UniformProcessor, uniformConverter } from './UniformConverter';
|
|
15
|
-
export { SkySystemManager, skySystemManager } from './SkySystemManager';
|
|
15
|
+
export { SkySystemManager, skySystemManager, moonIlluminationForPhase } from './SkySystemManager';
|
|
16
16
|
export { CubeCameraManager, cubeCameraManager } from './CubeCameraManager';
|
|
17
17
|
export { default as SceneStore } from './SceneStore';
|
|
18
18
|
export { default as SceneActions } from './SceneActions';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,GAAG,MAAM,oBAAoB,CAAC;AAE5H,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtF,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,GAAG,MAAM,oBAAoB,CAAC;AAE5H,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtF,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/services/index.js
CHANGED
|
@@ -9,7 +9,7 @@ export { PositionsCreator } from './PositionsCreator.js';
|
|
|
9
9
|
export * from './NoiseGenerator.js';
|
|
10
10
|
export { TextureResolverService, textureResolver } from './TextureResolver.js';
|
|
11
11
|
export { UniformConverter, UniformProcessor, uniformConverter } from './UniformConverter.js';
|
|
12
|
-
export { SkySystemManager, skySystemManager } from './SkySystemManager.js';
|
|
12
|
+
export { SkySystemManager, skySystemManager, moonIlluminationForPhase } from './SkySystemManager.js';
|
|
13
13
|
export { CubeCameraManager, cubeCameraManager } from './CubeCameraManager.js';
|
|
14
14
|
export { default as SceneStore } from './SceneStore.js';
|
|
15
15
|
export { default as SceneActions } from './SceneActions.js';
|
|
@@ -34,13 +34,13 @@ const fragmentShader = /*glsl*/ `
|
|
|
34
34
|
// Sky gradient from horizon to zenith
|
|
35
35
|
vec3 skyColor = mix(uSkyColorLow, uSkyColorHigh, clamp(direction.y * 0.5 + 0.5, 0.0, 1.0));
|
|
36
36
|
|
|
37
|
-
//
|
|
37
|
+
// Sun direction from azimuth and elevation, same convention as core sunUtils
|
|
38
38
|
float azimuth = radians(uSunAzimuth);
|
|
39
39
|
float elevation = radians(uSunElevation);
|
|
40
40
|
vec3 sunDirection = normalize(vec3(
|
|
41
|
-
cos(elevation) *
|
|
41
|
+
cos(elevation) * cos(azimuth),
|
|
42
42
|
sin(elevation),
|
|
43
|
-
cos(elevation) *
|
|
43
|
+
cos(elevation) * sin(azimuth)
|
|
44
44
|
));
|
|
45
45
|
|
|
46
46
|
// Sun disc with intensity falloff
|
|
@@ -15,6 +15,10 @@ export interface StarsMaterialUniforms {
|
|
|
15
15
|
colorMix: {
|
|
16
16
|
value: number;
|
|
17
17
|
};
|
|
18
|
+
/** Multiplier on every star's sprite size. */
|
|
19
|
+
sizeScale: {
|
|
20
|
+
value: number;
|
|
21
|
+
};
|
|
18
22
|
}
|
|
19
23
|
declare global {
|
|
20
24
|
namespace JSX {
|
|
@@ -29,6 +33,7 @@ declare const StarsMaterial: import("@react-three/fiber").ConstructorRepresentat
|
|
|
29
33
|
uColor: THREE.Color;
|
|
30
34
|
targetColor: THREE.Color;
|
|
31
35
|
colorMix: number;
|
|
36
|
+
sizeScale: number;
|
|
32
37
|
}> & {
|
|
33
38
|
key: string;
|
|
34
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StarsMaterial.d.ts","sourceRoot":"","sources":["../../src/shaders/StarsMaterial.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE;QACF,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE;QACJ,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;KACtB,CAAC;IACF,WAAW,EAAE;QACT,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,GAAG,CAAC;QACV,UAAU,iBAAiB;YACvB,aAAa,EAAE,GAAG,CAAC;SACtB;KACJ;CACJ;
|
|
1
|
+
{"version":3,"file":"StarsMaterial.d.ts","sourceRoot":"","sources":["../../src/shaders/StarsMaterial.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE;QACF,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE;QACJ,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;KACtB,CAAC;IACF,WAAW,EAAE;QACT,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,8CAA8C;IAC9C,SAAS,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,GAAG,CAAC;QACV,UAAU,iBAAiB;YACvB,aAAa,EAAE,GAAG,CAAC;SACtB;KACJ;CACJ;AAgED,QAAA,MAAM,aAAa;;;;;;;;;CAOa,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -2,64 +2,65 @@ import { extend } from "@react-three/fiber";
|
|
|
2
2
|
import { shaderMaterial } from "@react-three/drei";
|
|
3
3
|
import * as THREE from "three";
|
|
4
4
|
// Vertex shader with twinkling effect
|
|
5
|
-
const vertexShader = /*glsl*/ `
|
|
6
|
-
attribute float size;
|
|
7
|
-
attribute vec3 color;
|
|
8
|
-
attribute float phase;
|
|
9
|
-
attribute float freq;
|
|
10
|
-
|
|
11
|
-
varying vec3 vColor;
|
|
12
|
-
varying float vDepth;
|
|
13
|
-
|
|
14
|
-
uniform float time;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
pos
|
|
28
|
-
|
|
29
|
-
|
|
5
|
+
const vertexShader = /*glsl*/ `
|
|
6
|
+
attribute float size;
|
|
7
|
+
attribute vec3 color;
|
|
8
|
+
attribute float phase;
|
|
9
|
+
attribute float freq;
|
|
10
|
+
|
|
11
|
+
varying vec3 vColor;
|
|
12
|
+
varying float vDepth;
|
|
13
|
+
|
|
14
|
+
uniform float time;
|
|
15
|
+
uniform float sizeScale;
|
|
16
|
+
|
|
17
|
+
void main() {
|
|
18
|
+
vColor = color;
|
|
19
|
+
vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);
|
|
20
|
+
vDepth = mvPosition.z;
|
|
21
|
+
|
|
22
|
+
// Twinkling effect based on time, frequency, and phase
|
|
23
|
+
float twinkle = sin(time * freq + phase) * 0.2 + 0.8;
|
|
24
|
+
gl_PointSize = size * twinkle * sizeScale;
|
|
25
|
+
|
|
26
|
+
// Position stars at far depth to appear behind everything
|
|
27
|
+
vec4 pos = projectionMatrix * mvPosition;
|
|
28
|
+
pos.z = pos.w * 0.999999;
|
|
29
|
+
gl_Position = pos;
|
|
30
|
+
}
|
|
30
31
|
`;
|
|
31
32
|
// Fragment shader with star glow effect and color transitions
|
|
32
|
-
const fragmentShader = /*glsl*/ `
|
|
33
|
-
varying vec3 vColor;
|
|
34
|
-
varying float vDepth;
|
|
35
|
-
|
|
36
|
-
uniform float opacity;
|
|
37
|
-
uniform vec3 uColor;
|
|
38
|
-
uniform vec3 targetColor;
|
|
39
|
-
uniform float colorMix;
|
|
40
|
-
|
|
41
|
-
void main() {
|
|
42
|
-
// Calculate distance from center of point
|
|
43
|
-
vec2 center = gl_PointCoord - vec2(0.5);
|
|
44
|
-
float dist = length(center) * 2.0;
|
|
45
|
-
|
|
46
|
-
// Core brightness with sharp center
|
|
47
|
-
float core = (1.0 - smoothstep(0.0, 0.2, dist)) * 0.8;
|
|
48
|
-
|
|
49
|
-
// Soft glow around core
|
|
50
|
-
float glow = (1.0 - smoothstep(0.2, 0.5, dist)) * 0.1;
|
|
51
|
-
|
|
52
|
-
float brightness = core + glow;
|
|
53
|
-
|
|
54
|
-
// Interpolate between base color and target color
|
|
55
|
-
vec3 transitionColor = mix(uColor, targetColor, colorMix);
|
|
56
|
-
|
|
57
|
-
// Mix white with interpolated color for realistic appearance
|
|
58
|
-
vec3 finalColor = mix(vec3(1.0), transitionColor * vColor, 0.8) * 0.6;
|
|
59
|
-
|
|
60
|
-
// Apply global opacity for fade in/out transitions
|
|
61
|
-
gl_FragColor = vec4(finalColor, brightness * opacity);
|
|
62
|
-
}
|
|
33
|
+
const fragmentShader = /*glsl*/ `
|
|
34
|
+
varying vec3 vColor;
|
|
35
|
+
varying float vDepth;
|
|
36
|
+
|
|
37
|
+
uniform float opacity;
|
|
38
|
+
uniform vec3 uColor;
|
|
39
|
+
uniform vec3 targetColor;
|
|
40
|
+
uniform float colorMix;
|
|
41
|
+
|
|
42
|
+
void main() {
|
|
43
|
+
// Calculate distance from center of point
|
|
44
|
+
vec2 center = gl_PointCoord - vec2(0.5);
|
|
45
|
+
float dist = length(center) * 2.0;
|
|
46
|
+
|
|
47
|
+
// Core brightness with sharp center
|
|
48
|
+
float core = (1.0 - smoothstep(0.0, 0.2, dist)) * 0.8;
|
|
49
|
+
|
|
50
|
+
// Soft glow around core
|
|
51
|
+
float glow = (1.0 - smoothstep(0.2, 0.5, dist)) * 0.1;
|
|
52
|
+
|
|
53
|
+
float brightness = core + glow;
|
|
54
|
+
|
|
55
|
+
// Interpolate between base color and target color
|
|
56
|
+
vec3 transitionColor = mix(uColor, targetColor, colorMix);
|
|
57
|
+
|
|
58
|
+
// Mix white with interpolated color for realistic appearance
|
|
59
|
+
vec3 finalColor = mix(vec3(1.0), transitionColor * vColor, 0.8) * 0.6;
|
|
60
|
+
|
|
61
|
+
// Apply global opacity for fade in/out transitions
|
|
62
|
+
gl_FragColor = vec4(finalColor, brightness * opacity);
|
|
63
|
+
}
|
|
63
64
|
`;
|
|
64
65
|
// Create the shader material with uniforms
|
|
65
66
|
const StarsMaterial = shaderMaterial({
|
|
@@ -67,7 +68,8 @@ const StarsMaterial = shaderMaterial({
|
|
|
67
68
|
opacity: 1.0,
|
|
68
69
|
uColor: new THREE.Color(1.0, 1.0, 1.0),
|
|
69
70
|
targetColor: new THREE.Color(1.0, 1.0, 1.0),
|
|
70
|
-
colorMix: 0.0
|
|
71
|
+
colorMix: 0.0,
|
|
72
|
+
sizeScale: 1.0
|
|
71
73
|
}, vertexShader, fragmentShader);
|
|
72
74
|
// Extend the material for use in React Three Fiber
|
|
73
75
|
extend({ StarsMaterial });
|
package/dist/types/actions.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SceneCommand } from './commands';
|
|
2
2
|
/**
|
|
3
3
|
* Action Types
|
|
4
4
|
* Defines the structure for UI actions that can trigger animations, toggle elements, or load projects
|
|
@@ -54,13 +54,14 @@ export interface ActionSequence {
|
|
|
54
54
|
*/
|
|
55
55
|
key?: string;
|
|
56
56
|
description?: string;
|
|
57
|
+
/** The changes (patches): what elements ARE while the action is applied. */
|
|
57
58
|
targets: ActionTarget[];
|
|
58
59
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
60
|
+
* What HAPPENS when it is applied, in order (triggers engine): effects, effect clips and
|
|
61
|
+
* other actions are switched on with it and off again on revert; animations run their
|
|
62
|
+
* command on apply and stop on revert. Patches are applied first.
|
|
62
63
|
*/
|
|
63
|
-
|
|
64
|
+
commands: SceneCommand[];
|
|
64
65
|
assetId?: string | null;
|
|
65
66
|
/** Runtime only */
|
|
66
67
|
isDirty?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/types/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/types/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;AAE1L,MAAM,WAAW,MAAM;IACnB,wCAAwC;IACxC,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wEAAwE;IACxE,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,UAAU,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AACF;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB;;;;OAIG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mBAAmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AACD,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { EffectClipUse, OperationEffect } from './objectSettings';
|
|
2
|
+
/** Switch something on / off: an action, an effect clip, a held effect. */
|
|
3
|
+
export type SceneStateCommand = 'apply' | 'revert' | 'toggle';
|
|
4
|
+
/** Drive a timeline: an animation clip or sequence. */
|
|
5
|
+
export type ScenePlaybackCommand = 'play' | 'pause' | 'stop' | 'toggle';
|
|
6
|
+
export interface ScenePlayOptions {
|
|
7
|
+
/** Seconds from the start. */
|
|
8
|
+
from?: number;
|
|
9
|
+
speed?: number;
|
|
10
|
+
reverse?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type SceneCommand =
|
|
13
|
+
/** `trigger`: toggle when the operation can be undone, else play it (an interaction's click). */
|
|
14
|
+
{
|
|
15
|
+
id: string;
|
|
16
|
+
kind: 'effect';
|
|
17
|
+
effect: OperationEffect;
|
|
18
|
+
command: 'trigger' | SceneStateCommand;
|
|
19
|
+
} | {
|
|
20
|
+
id: string;
|
|
21
|
+
kind: 'effectClip';
|
|
22
|
+
use: EffectClipUse;
|
|
23
|
+
command: SceneStateCommand;
|
|
24
|
+
}
|
|
25
|
+
/** `ref`: ActionSequence id. */
|
|
26
|
+
| {
|
|
27
|
+
id: string;
|
|
28
|
+
kind: 'action';
|
|
29
|
+
ref: string;
|
|
30
|
+
command: SceneStateCommand;
|
|
31
|
+
}
|
|
32
|
+
/** `ref`: AnimationClip id. */
|
|
33
|
+
| {
|
|
34
|
+
id: string;
|
|
35
|
+
kind: 'animationClip';
|
|
36
|
+
ref: string;
|
|
37
|
+
command: ScenePlaybackCommand;
|
|
38
|
+
options?: ScenePlayOptions;
|
|
39
|
+
}
|
|
40
|
+
/** `ref`: AnimationSequence id. */
|
|
41
|
+
| {
|
|
42
|
+
id: string;
|
|
43
|
+
kind: 'animationSequence';
|
|
44
|
+
ref: string;
|
|
45
|
+
command: ScenePlaybackCommand;
|
|
46
|
+
options?: ScenePlayOptions;
|
|
47
|
+
};
|
|
48
|
+
export type SceneCommandKind = SceneCommand['kind'];
|
|
49
|
+
/** A stored list of commands (versioned, so an older viewer can tell it is newer than it knows). */
|
|
50
|
+
export interface SceneCommandList {
|
|
51
|
+
v: 1;
|
|
52
|
+
commands: SceneCommand[];
|
|
53
|
+
}
|
|
54
|
+
/** What fired a command. */
|
|
55
|
+
export type TriggerHost = 'interaction' | 'action' | 'sequence' | 'clip' | 'code' | 'agent' | 'studio';
|
|
56
|
+
export interface TriggerSource {
|
|
57
|
+
host: TriggerHost;
|
|
58
|
+
/** The interaction (`<objectId>:<event>`), action, sequence, clip… id; for code, the caller's name. */
|
|
59
|
+
id: string;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/types/commands.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEvE,2EAA2E;AAC3E,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9D,uDAAuD;AACvD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC7B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,YAAY;AACpB,iGAAiG;AAC/F;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,SAAS,GAAG,iBAAiB,CAAA;CAAE,GAC/F;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE;AACpF,gCAAgC;GAC9B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE;AACzE,+BAA+B;GAC7B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAE;AAC/G,mCAAmC;GACjC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAExH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAEpD,oGAAoG;AACpG,MAAM,WAAW,gBAAgB;IAC7B,CAAC,EAAE,CAAC,CAAC;IACL,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC5B;AAED,4BAA4B;AAC5B,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvG,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,uGAAuG;IACvG,EAAE,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -2,7 +2,14 @@ import type { MaterialSettings } from "./materials";
|
|
|
2
2
|
import type { CustomHandlers } from "./handlerSettings";
|
|
3
3
|
import type { GridSettings } from "./scene3d";
|
|
4
4
|
import type { MouseMoveInteraction, MouseMoveInteractions, ObjectAnimations } from "./objectSettings";
|
|
5
|
+
/** Scene id of the sky. It is the sky mesh's id too, so findById('3drise-sky')
|
|
6
|
+
* reaches the mesh, its uniforms and the live handle the controllers drive. */
|
|
7
|
+
export declare const SKY_ID = "3drise-sky";
|
|
5
8
|
export interface SkySettings {
|
|
9
|
+
/** Always SKY_ID. Optional so an older save (which has none) still types. */
|
|
10
|
+
id?: string;
|
|
11
|
+
/** Discriminator the animation / mouse-move panels and the registry key off. */
|
|
12
|
+
type?: 'sky';
|
|
6
13
|
visible: boolean;
|
|
7
14
|
turbidity: number;
|
|
8
15
|
rayleigh: number;
|
|
@@ -10,9 +17,35 @@ export interface SkySettings {
|
|
|
10
17
|
mieDirectionalG: number;
|
|
11
18
|
elevation: number;
|
|
12
19
|
azimuth: number;
|
|
13
|
-
|
|
20
|
+
/** Per-domain keyframes; the `sky` domain drives the six Preetham / sun knobs. */
|
|
21
|
+
animations?: ObjectAnimations;
|
|
22
|
+
/** Per-domain pointer bindings; same `sky` domain. */
|
|
23
|
+
mouseMove?: MouseMoveInteractions;
|
|
14
24
|
sunSystem: any;
|
|
25
|
+
/** Built-in night sky (SkyStars). Absent = on. */
|
|
26
|
+
stars?: SkyStarsSettings;
|
|
27
|
+
}
|
|
28
|
+
/** The built-in night sky (viewer SkyStars). Every field optional: an older save
|
|
29
|
+
* fills in from SKY_STARS_DEFAULTS (normalizeSkyStars). */
|
|
30
|
+
export interface SkyStarsSettings {
|
|
31
|
+
visible?: boolean;
|
|
32
|
+
/** Multiplier on star brightness, default 1. */
|
|
33
|
+
brightness?: number;
|
|
34
|
+
/** Number of stars (structural: rebuilds the dome). */
|
|
35
|
+
count?: number;
|
|
36
|
+
/** Point size multiplier. */
|
|
37
|
+
size?: number;
|
|
38
|
+
/** Twinkle depth, 0 = steady. */
|
|
39
|
+
twinkle?: number;
|
|
40
|
+
/** Fraction of the stars gathered into a Milky Way band, 0 = none (structural). */
|
|
41
|
+
milkyWay?: number;
|
|
42
|
+
/** Colour spread: 0 = all white, 1 = full blue / orange temperature range. */
|
|
43
|
+
warmth?: number;
|
|
15
44
|
}
|
|
45
|
+
export declare const SKY_STARS_DEFAULTS: Required<SkyStarsSettings>;
|
|
46
|
+
/** Merge a saved stars block over the defaults — absent block = default stars (they
|
|
47
|
+
* were always on before the block existed). */
|
|
48
|
+
export declare const normalizeSkyStars: (stars?: SkyStarsSettings | null) => Required<SkyStarsSettings>;
|
|
16
49
|
export interface MoonSettings {
|
|
17
50
|
visible: boolean;
|
|
18
51
|
position: [number, number, number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/types/environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtG,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/types/environment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/** Scene id of the sky. It is the sky mesh's id too, so findById('3drise-sky')
|
|
2
|
+
* reaches the mesh, its uniforms and the live handle the controllers drive. */
|
|
3
|
+
export const SKY_ID = '3drise-sky';
|
|
4
|
+
export const SKY_STARS_DEFAULTS = {
|
|
5
|
+
visible: true,
|
|
6
|
+
brightness: 1,
|
|
7
|
+
count: 4000,
|
|
8
|
+
size: 1,
|
|
9
|
+
twinkle: 0.5,
|
|
10
|
+
milkyWay: 0,
|
|
11
|
+
warmth: 0.5,
|
|
12
|
+
};
|
|
13
|
+
/** Merge a saved stars block over the defaults — absent block = default stars (they
|
|
14
|
+
* were always on before the block existed). */
|
|
15
|
+
export const normalizeSkyStars = (stars) => ({ ...SKY_STARS_DEFAULTS, ...(stars ?? {}) });
|
|
1
16
|
export const defaultMoonSettings = {
|
|
2
17
|
visible: true,
|
|
3
18
|
position: [0, 5, 0],
|