@3driseai/3drise-viewer 0.1.33 → 0.1.35
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/animationsV2/ClipsRuntime.d.ts +9 -0
- package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
- package/dist/animationsV2/ClipsRuntime.js +42 -1
- package/dist/animationsV2/animationLive.d.ts +7 -0
- package/dist/animationsV2/animationLive.d.ts.map +1 -0
- package/dist/animationsV2/animationLive.js +26 -0
- package/dist/animationsV2/appliers.d.ts +8 -0
- package/dist/animationsV2/appliers.d.ts.map +1 -1
- package/dist/animationsV2/appliers.js +61 -0
- package/dist/animationsV2/index.d.ts +1 -0
- package/dist/animationsV2/index.d.ts.map +1 -1
- package/dist/animationsV2/index.js +1 -0
- package/dist/animationsV2/sequenceUtils.d.ts +1 -0
- package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
- package/dist/animationsV2/sequenceUtils.js +7 -4
- package/dist/animationsV2/types.d.ts +4 -0
- package/dist/animationsV2/types.d.ts.map +1 -1
- package/dist/components/AnimatedObject.d.ts.map +1 -1
- package/dist/components/AnimatedObject.js +2 -0
- package/dist/components/CreatedObject.d.ts.map +1 -1
- package/dist/components/CreatedObject.js +4 -1
- package/dist/components/GroupMaterialContext.d.ts +25 -0
- package/dist/components/GroupMaterialContext.d.ts.map +1 -0
- package/dist/components/GroupMaterialContext.js +21 -0
- package/dist/components/LightObject.js +3 -3
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +13 -2
- package/dist/components/ProjectLoader.d.ts.map +1 -1
- package/dist/components/ProjectLoader.js +2 -0
- package/dist/components/candle/Candle.js +1 -1
- package/dist/components/effects/HarmonicShellEffect.d.ts.map +1 -1
- package/dist/components/effects/HarmonicShellEffect.js +6 -0
- package/dist/components/fluorescentTube/FluorescentTube.js +1 -1
- package/dist/components/ledArray/LedArray.js +1 -1
- package/dist/components/lightBulb/LightBulb.js +1 -1
- package/dist/components/spotBeam/SpotBeam.js +1 -1
- package/dist/hooks/useContinuousEffects.d.ts.map +1 -1
- package/dist/hooks/useContinuousEffects.js +34 -2
- package/dist/hooks/useLightShadow.d.ts +1 -1
- package/dist/hooks/useLightShadow.d.ts.map +1 -1
- package/dist/hooks/useLightShadow.js +10 -6
- package/dist/hooks/useMaterialApplication.d.ts.map +1 -1
- package/dist/hooks/useMaterialApplication.js +2 -1
- package/dist/hooks/useMaterialUniforms.d.ts +2 -8
- package/dist/hooks/useMaterialUniforms.d.ts.map +1 -1
- package/dist/hooks/useMaterialUniforms.js +18 -6
- package/dist/operations/catalogue/physicalHeld.d.ts.map +1 -1
- package/dist/operations/catalogue/physicalHeld.js +6 -0
- package/dist/operations/index.d.ts +1 -1
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/index.js +1 -1
- package/dist/operations/objectEffects.d.ts +15 -1
- package/dist/operations/objectEffects.d.ts.map +1 -1
- package/dist/operations/objectEffects.js +49 -1
- package/dist/operations/runtime.d.ts +9 -3
- package/dist/operations/runtime.d.ts.map +1 -1
- package/dist/operations/runtime.js +67 -19
- package/dist/operations/types.d.ts +5 -0
- package/dist/operations/types.d.ts.map +1 -1
- package/dist/triggers/readiness.js +1 -1
- package/dist/utils/cdnUrls.d.ts +10 -0
- package/dist/utils/cdnUrls.d.ts.map +1 -0
- package/dist/utils/cdnUrls.js +18 -0
- package/package.json +2 -2
|
@@ -387,12 +387,54 @@ function warmRoots(t) {
|
|
|
387
387
|
});
|
|
388
388
|
return out;
|
|
389
389
|
}
|
|
390
|
+
// Material properties that pick a different shader program (three's program cache key, roughly).
|
|
391
|
+
const PROGRAM_TEXTURES = [
|
|
392
|
+
'map', 'normalMap', 'roughnessMap', 'metalnessMap', 'emissiveMap', 'aoMap', 'envMap', 'alphaMap', 'bumpMap',
|
|
393
|
+
'displacementMap', 'lightMap', 'specularMap', 'clearcoatMap', 'clearcoatNormalMap', 'clearcoatRoughnessMap',
|
|
394
|
+
'transmissionMap', 'thicknessMap', 'sheenColorMap', 'sheenRoughnessMap', 'iridescenceMap', 'iridescenceThicknessMap',
|
|
395
|
+
'anisotropyMap', 'specularIntensityMap', 'specularColorMap', 'gradientMap', 'matcap',
|
|
396
|
+
];
|
|
397
|
+
const PROGRAM_FLAGS = ['vertexColors', 'flatShading', 'wireframe', 'transparent', 'fog', 'toneMapped', 'dithering', 'premultipliedAlpha'];
|
|
398
|
+
const PROGRAM_AMOUNTS = ['clearcoat', 'transmission', 'sheen', 'iridescence', 'anisotropy', 'dispersion', 'alphaTest', 'alphaHash'];
|
|
399
|
+
/**
|
|
400
|
+
* What decides the shaders an effect builds on a primitive object: its meshes' materials and
|
|
401
|
+
* geometry layout. Two primitives with the same key get the same programs from the same effect,
|
|
402
|
+
* so a group's 90 boxes and cylinders are warmed once per key, not once each. Anything that
|
|
403
|
+
* isn't a primitive (a model, text, …) is its own key: warmed on its own, as before.
|
|
404
|
+
*/
|
|
405
|
+
function programKey(t) {
|
|
406
|
+
if (t.userData?.objectType !== 'mesh')
|
|
407
|
+
return `own:${t.uuid}`;
|
|
408
|
+
const parts = [];
|
|
409
|
+
t.traverse((c) => {
|
|
410
|
+
if (!c.isMesh || c.userData?.__opFxHelper)
|
|
411
|
+
return;
|
|
412
|
+
const g = c.geometry;
|
|
413
|
+
const geo = g ? `${Object.keys(g.attributes ?? {}).sort().join('+')}${g.index ? '|i' : ''}${Object.keys(g.morphAttributes ?? {}).length ? '|m' : ''}` : '';
|
|
414
|
+
const mesh = `${c.isSkinnedMesh ? 's' : ''}${c.isInstancedMesh ? 'n' : ''}${c.receiveShadow ? 'r' : ''}${c.castShadow ? 'c' : ''}`;
|
|
415
|
+
const mats = Array.isArray(c.material) ? c.material : c.material ? [c.material] : [];
|
|
416
|
+
for (const m of mats) {
|
|
417
|
+
const tex = PROGRAM_TEXTURES.filter(k => m[k]).join(',');
|
|
418
|
+
const flags = PROGRAM_FLAGS.filter(k => m[k]).join(',');
|
|
419
|
+
const amounts = PROGRAM_AMOUNTS.filter(k => Number(m[k]) > 0).join(',');
|
|
420
|
+
const custom = typeof m.customProgramCacheKey === 'function' ? m.customProgramCacheKey() : '';
|
|
421
|
+
parts.push([m.type, m.side, tex, flags, amounts, JSON.stringify(m.defines ?? null), custom, geo, mesh].join(';'));
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
return parts.sort().join('/');
|
|
425
|
+
}
|
|
390
426
|
/**
|
|
391
427
|
* Warm an operation on these targets: build and compile everything its first real play
|
|
392
428
|
* needs — shaders (in the background), and the CPU work it caches (surface samples,
|
|
393
|
-
* geometry) — showing nothing, then take it off again. Queued, one at a time; each
|
|
394
|
-
* (operation,
|
|
395
|
-
*
|
|
429
|
+
* geometry) — showing nothing, then take it off again. Queued, one job at a time; each
|
|
430
|
+
* (operation, its shaders, parameters) once. Targets with no meshes yet (a model still
|
|
431
|
+
* loading) are skipped and warmed when it has landed.
|
|
432
|
+
*
|
|
433
|
+
* A group's members are warmed one per programKey: members that would build the same
|
|
434
|
+
* shaders share one warm. The others do their own CPU prep (surface samples) at their first
|
|
435
|
+
* play — a few ms each for a primitive — instead of all of it under the loading cover.
|
|
436
|
+
* Within a job the chosen roots are applied together and taken off together (one wait,
|
|
437
|
+
* not one per root): it is the same operation on different objects.
|
|
396
438
|
*/
|
|
397
439
|
export function warmEffectOn(def, targets, params, self) {
|
|
398
440
|
if (!isWarmable(def))
|
|
@@ -403,32 +445,38 @@ export function warmEffectOn(def, targets, params, self) {
|
|
|
403
445
|
if (!ctx)
|
|
404
446
|
return;
|
|
405
447
|
const roots = targets.flatMap(warmRoots);
|
|
448
|
+
const picked = [];
|
|
406
449
|
for (const t of def.multi ? roots : roots.slice(0, 1)) {
|
|
407
450
|
if (!t.parent)
|
|
408
451
|
continue; // left the scene meanwhile
|
|
409
452
|
const { count, sig } = meshSignature(t);
|
|
410
453
|
if (!count)
|
|
411
454
|
continue; // nothing to warm yet (a model still loading)
|
|
412
|
-
const
|
|
455
|
+
const pk = programKey(t);
|
|
456
|
+
const k = `${def.value}:${pk.startsWith('own:') ? `${pk}:${sig}` : pk}:${paramsKey}`;
|
|
413
457
|
if (warmed.has(k) || isOperationOn(def.value, t))
|
|
414
458
|
continue;
|
|
415
459
|
warmed.add(k);
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
await finished(def.revert(t, { ...params, duration: 0.001 }, ctx), { duration: 0 });
|
|
460
|
+
picked.push(t);
|
|
461
|
+
}
|
|
462
|
+
if (!picked.length)
|
|
463
|
+
return;
|
|
464
|
+
const t0 = performance.now();
|
|
465
|
+
// a warm-only run: stages and compiles everything, animates nothing…
|
|
466
|
+
const runs = [];
|
|
467
|
+
warmMode.on = true;
|
|
468
|
+
try {
|
|
469
|
+
for (const t of picked)
|
|
470
|
+
runs.push(def.apply(t, params, ctx));
|
|
471
|
+
}
|
|
472
|
+
finally {
|
|
473
|
+
warmMode.on = false;
|
|
431
474
|
}
|
|
475
|
+
noteWork(`warm ${def.value}`, performance.now() - t0);
|
|
476
|
+
await Promise.all(runs.map(r => finished(r, { duration: 0 })));
|
|
477
|
+
// …then quietly take it off again, unless something started it meanwhile
|
|
478
|
+
await Promise.all(picked.filter(t => !isOperationOn(def.value, t))
|
|
479
|
+
.map(t => finished(def.revert(t, { ...params, duration: 0.001 }, ctx), { duration: 0 })));
|
|
432
480
|
};
|
|
433
481
|
warmQueue = warmQueue.then(job, job);
|
|
434
482
|
return warmQueue;
|
|
@@ -131,6 +131,11 @@ export interface OperationDefinition {
|
|
|
131
131
|
apply: (target: Object3D, params: OperationParams, ctx: OperationContext) => void | Promise<void>;
|
|
132
132
|
/** No revert = one-way (applies only). */
|
|
133
133
|
revert?: (target: Object3D, params: OperationParams, ctx: OperationContext) => void | Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* A parameter changed while it runs (a timeline track easing its speed): take the new params
|
|
136
|
+
* now, without replaying anything. Absent = the change is picked up on its next pass.
|
|
137
|
+
*/
|
|
138
|
+
live?: (target: Object3D, params: OperationParams) => void;
|
|
134
139
|
/**
|
|
135
140
|
* A motion that repeats for as long as the effect is on (float, sway, rotate…).
|
|
136
141
|
* Played as an object effect it follows the same playback as everything else:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/operations/types.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEhH,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,GAAG,CAC3B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3H;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACnH;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;AACrE,+GAA+G;GAC7G;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CACvH,GAAG;IACA;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACvC,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,UAAU,GAAI,MAAM,kBAAkB,EAAE,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OACyB,CAAC;AAEjH,oDAAoD;AACpD,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,MAAM,EAAuE,CAAC;AAE3H,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAElE,iHAAiH;AACjH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElE,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC3B,2DAA2D;IAC3D,aAAa,EAAE,CAAC,EAAE,EAAE;QAAE,QAAQ,CAAC,EAAE,YAAY,CAAA;KAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzH,+CAA+C;IAC/C,UAAU,EAAE,MAAM;QAAE,QAAQ,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1E;;;OAGG;IACH,WAAW,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtG,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChI,gBAAgB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC7F;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,cAAc,CAAC;IACtB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,wEAAwE;IACxE,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,qDAAqD;IACrD,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/D;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,4FAA4F;IAC5F,OAAO,EAAE,gBAAgB,CAAC;IAC1B,oCAAoC;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,+BAA+B;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAA;KAAE,CAAC;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C;;;;OAIG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,mFAAmF;IACnF,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,0CAA0C;IAC1C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpG;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,6BAA6B,EAAE,UAAU,GAAG,SAAS,CAAC;IAC3F;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;CACvC;AAED,uCAAuC;AACvC,eAAO,MAAM,eAAe,GAAI,KAAK,mBAAmB,KAAG,mBAA0B,CAAC;AAEtF,eAAO,MAAM,YAAY,eAAe,CAAC;AAEzC,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAIrG,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/operations/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
import { useSyncExternalStore } from 'react';
|
|
25
25
|
const TIMEOUT_MS = 15000;
|
|
26
26
|
const COMPILE_TIMEOUT_MS = 5000;
|
|
27
|
-
const BAKE_TIMEOUT_MS =
|
|
27
|
+
const BAKE_TIMEOUT_MS = 5000;
|
|
28
28
|
const log = (...a) => console.info('[3drise] scene', ...a);
|
|
29
29
|
class SceneReadiness {
|
|
30
30
|
status = 'idle';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { toCdn } from '@3driseai/3drise-core';
|
|
2
|
+
export { toCdn };
|
|
3
|
+
/**
|
|
4
|
+
* Route three.js asset loads through the CDN. DefaultLoadingManager covers every loader
|
|
5
|
+
* created without its own manager (viewer, useLoader/useTexture); core's manager covers
|
|
6
|
+
* loadAssets/loadGLTF. Idempotent. Called from ProjectLoader rather than at module load
|
|
7
|
+
* so bundlers can't tree-shake it away.
|
|
8
|
+
*/
|
|
9
|
+
export declare const installCdnUrls: () => void;
|
|
10
|
+
//# sourceMappingURL=cdnUrls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdnUrls.d.ts","sourceRoot":"","sources":["../../src/utils/cdnUrls.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGpF,OAAO,EAAE,KAAK,EAAE,CAAC;AAIjB;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,IAKjC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DefaultLoadingManager } from 'three';
|
|
2
|
+
import { loadingManager as coreLoadingManager, toCdn } from '@3driseai/3drise-core';
|
|
3
|
+
// toCdn lives in core (utils/cdnUrls.ts) — the one place the origin/CDN hosts are defined.
|
|
4
|
+
export { toCdn };
|
|
5
|
+
let installed = false;
|
|
6
|
+
/**
|
|
7
|
+
* Route three.js asset loads through the CDN. DefaultLoadingManager covers every loader
|
|
8
|
+
* created without its own manager (viewer, useLoader/useTexture); core's manager covers
|
|
9
|
+
* loadAssets/loadGLTF. Idempotent. Called from ProjectLoader rather than at module load
|
|
10
|
+
* so bundlers can't tree-shake it away.
|
|
11
|
+
*/
|
|
12
|
+
export const installCdnUrls = () => {
|
|
13
|
+
if (installed)
|
|
14
|
+
return;
|
|
15
|
+
installed = true;
|
|
16
|
+
DefaultLoadingManager.setURLModifier(toCdn);
|
|
17
|
+
coreLoadingManager.setURLModifier(toCdn);
|
|
18
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@3driseai/3drise-viewer",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.35",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -39,6 +39,6 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@3driseai/3drise-common": "^1.0.1",
|
|
42
|
-
"@3driseai/3drise-core": "^1.0.
|
|
42
|
+
"@3driseai/3drise-core": "^1.0.27"
|
|
43
43
|
}
|
|
44
44
|
}
|