@tresjs/core 5.9.0 → 5.9.2
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/template-compiler-options.d.mts +1 -1
- package/dist/template-compiler-options.mjs +2 -4
- package/dist/tres.d.ts +152 -172
- package/dist/tres.js +108 -166
- package/package.json +26 -26
package/dist/tres.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v5.9.
|
|
3
|
+
* version: v5.9.2
|
|
4
4
|
* (c) 2026
|
|
5
5
|
* description: Declarative ThreeJS using Vue Components
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
@@ -8,15 +8,13 @@
|
|
|
8
8
|
import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createRenderer, defineComponent, getCurrentInstance, h, isRef, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onUnmounted, openBlock, provide, reactive, readonly, ref, renderSlot, shallowRef, toValue, triggerRef, unref, useSlots, watch, watchEffect, withCtx } from "vue";
|
|
9
9
|
import * as THREE from "three";
|
|
10
10
|
import { ACESFilmicToneMapping, ArrowHelper, BufferAttribute, Color, DirectionalLightHelper, DoubleSide, HemisphereLightHelper, Layers, Material, MathUtils, Mesh, MeshBasicMaterial, PCFShadowMap, PCFSoftShadowMap, PerspectiveCamera, PointLightHelper, REVISION, Scene, SpotLightHelper, Vector3, WebGLRenderer } from "three";
|
|
11
|
-
import { createEventHook, createInjectionState, promiseTimeout, refDebounced, tryOnScopeDispose, unrefElement, useAsyncState, useDevicePixelRatio, useElementSize, useFps, useMemory, useRafFn, useTimeout, useWindowSize, whenever } from "@vueuse/core";
|
|
11
|
+
import { createEventHook, createInjectionState, promiseTimeout, refDebounced, tryOnScopeDispose, unrefElement, useAsyncState, useDevicePixelRatio, useElementSize, useFps, useIntervalFn, useMemory, useRafFn, useTimeout, useWindowSize, whenever } from "@vueuse/core";
|
|
12
12
|
import { camel, isEqual, isFunction, isNumber, isObject, isString, isUndefined } from "radashi";
|
|
13
13
|
import { forwardHtmlEvents, getVoidObject } from "@pmndrs/pointer-events";
|
|
14
14
|
import { setupDevtoolsPlugin } from "@vue/devtools-api";
|
|
15
15
|
import { RectAreaLightHelper } from "three/examples/jsm/helpers/RectAreaLightHelper.js";
|
|
16
|
-
|
|
17
16
|
//#region package.json
|
|
18
|
-
var version = "5.9.
|
|
19
|
-
|
|
17
|
+
var version = "5.9.2";
|
|
20
18
|
//#endregion
|
|
21
19
|
//#region src/utils/makeMap.ts
|
|
22
20
|
/**
|
|
@@ -32,16 +30,10 @@ function makeMap(str) {
|
|
|
32
30
|
for (const key of str.split(",")) map[key] = 1;
|
|
33
31
|
return (val) => val in map;
|
|
34
32
|
}
|
|
35
|
-
|
|
36
|
-
//#endregion
|
|
37
|
-
//#region src/utils/is/dom.ts
|
|
38
|
-
const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
|
|
39
|
-
const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
|
|
40
|
-
|
|
33
|
+
const isHTMLTag = /* #__PURE__ */ makeMap("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot");
|
|
41
34
|
//#endregion
|
|
42
35
|
//#region src/utils/is/util.ts
|
|
43
36
|
const createTypeGuard = (property) => (value) => isObject(value) && property in value && !!value[property];
|
|
44
|
-
|
|
45
37
|
//#endregion
|
|
46
38
|
//#region src/utils/is/three.ts
|
|
47
39
|
/**
|
|
@@ -205,7 +197,6 @@ const isScene = createTypeGuard("isScene");
|
|
|
205
197
|
* ```
|
|
206
198
|
*/
|
|
207
199
|
const isGroup = createTypeGuard("isGroup");
|
|
208
|
-
|
|
209
200
|
//#endregion
|
|
210
201
|
//#region src/utils/is/tres.ts
|
|
211
202
|
const isVectorLike = (value) => value !== null && typeof value === "object" && "set" in value && typeof value.set === "function";
|
|
@@ -291,7 +282,6 @@ const isWebGPURenderer = createTypeGuard("isRenderer");
|
|
|
291
282
|
* @see {@link isWebGPURenderer}
|
|
292
283
|
*/
|
|
293
284
|
const isWebGLRenderer = createTypeGuard("isWebGLRenderer");
|
|
294
|
-
|
|
295
285
|
//#endregion
|
|
296
286
|
//#region src/utils/array.ts
|
|
297
287
|
/**
|
|
@@ -308,7 +298,6 @@ const filterInPlace = (array, callbackFn) => {
|
|
|
308
298
|
array.length = i;
|
|
309
299
|
return array;
|
|
310
300
|
};
|
|
311
|
-
|
|
312
301
|
//#endregion
|
|
313
302
|
//#region src/utils/logger.ts
|
|
314
303
|
/**
|
|
@@ -317,7 +306,7 @@ const filterInPlace = (array, callbackFn) => {
|
|
|
317
306
|
*/
|
|
318
307
|
function resolveRuntimeMode() {
|
|
319
308
|
try {
|
|
320
|
-
const modeFromImportMeta = import.meta
|
|
309
|
+
const modeFromImportMeta = import.meta.env?.MODE;
|
|
321
310
|
if (modeFromImportMeta) return modeFromImportMeta;
|
|
322
311
|
} catch {}
|
|
323
312
|
return typeof process !== "undefined" && process.env && process.env.NODE_ENV ? process.env.NODE_ENV : "production";
|
|
@@ -350,11 +339,10 @@ function logWarning(...args) {
|
|
|
350
339
|
function logMessage(name, value) {
|
|
351
340
|
if (!isProd) console.log(`${logPrefix} - ${name}:`, value);
|
|
352
341
|
}
|
|
353
|
-
|
|
354
342
|
//#endregion
|
|
355
343
|
//#region src/utils/index.ts
|
|
356
344
|
function disposeMaterial(material) {
|
|
357
|
-
const hasMap = (material
|
|
345
|
+
const hasMap = (material) => "map" in material && !!material.map;
|
|
358
346
|
if (hasMap(material)) material.map.dispose();
|
|
359
347
|
material.dispose();
|
|
360
348
|
}
|
|
@@ -396,14 +384,14 @@ function attach(parent, child, type) {
|
|
|
396
384
|
const INDEX_REGEX = /-\d+$/;
|
|
397
385
|
if (isString(type)) {
|
|
398
386
|
if (INDEX_REGEX.test(type)) {
|
|
399
|
-
const { target
|
|
400
|
-
if (!Array.isArray(target
|
|
401
|
-
const previousAttach = target
|
|
387
|
+
const { target, key } = resolve(parent, type.replace(INDEX_REGEX, ""));
|
|
388
|
+
if (!Array.isArray(target[key])) {
|
|
389
|
+
const previousAttach = target[key];
|
|
402
390
|
const augmentedArray = [];
|
|
403
391
|
augmentedArray.__tresDetach = () => {
|
|
404
|
-
if (augmentedArray.every((v) => isUndefined(v))) target
|
|
392
|
+
if (augmentedArray.every((v) => isUndefined(v))) target[key] = previousAttach;
|
|
405
393
|
};
|
|
406
|
-
target
|
|
394
|
+
target[key] = augmentedArray;
|
|
407
395
|
}
|
|
408
396
|
}
|
|
409
397
|
const { target, key } = resolve(parent, type);
|
|
@@ -489,7 +477,6 @@ function doRemoveDeregister(node, context) {
|
|
|
489
477
|
if (isTresCamera(node)) context.camera.deregisterCamera(node);
|
|
490
478
|
invalidateInstance(node);
|
|
491
479
|
}
|
|
492
|
-
|
|
493
480
|
//#endregion
|
|
494
481
|
//#region src/composables/useLoader/index.ts
|
|
495
482
|
/**
|
|
@@ -499,8 +486,8 @@ function doRemoveDeregister(node, context) {
|
|
|
499
486
|
* @param options - Optional configuration for the loader
|
|
500
487
|
* @returns UseAsyncState composable with the loaded model
|
|
501
488
|
*/
|
|
502
|
-
function useLoader(Loader
|
|
503
|
-
const proto = new Loader
|
|
489
|
+
function useLoader(Loader, path, options) {
|
|
490
|
+
const proto = new Loader(options?.manager);
|
|
504
491
|
const progress = reactive({
|
|
505
492
|
loaded: 0,
|
|
506
493
|
total: 0,
|
|
@@ -508,10 +495,10 @@ function useLoader(Loader$1, path, options) {
|
|
|
508
495
|
});
|
|
509
496
|
if (options?.extensions) options.extensions(proto);
|
|
510
497
|
const initialPath = toValue(path);
|
|
511
|
-
const result = useAsyncState((path
|
|
512
|
-
const assetPath = path
|
|
513
|
-
proto.load(assetPath, (result
|
|
514
|
-
resolve
|
|
498
|
+
const result = useAsyncState((path) => new Promise((resolve, reject) => {
|
|
499
|
+
const assetPath = path || initialPath || "";
|
|
500
|
+
proto.load(assetPath, (result) => {
|
|
501
|
+
resolve(result);
|
|
515
502
|
}, (event) => {
|
|
516
503
|
progress.loaded = event.loaded;
|
|
517
504
|
progress.total = event.total;
|
|
@@ -537,16 +524,15 @@ function useLoader(Loader$1, path, options) {
|
|
|
537
524
|
});
|
|
538
525
|
return {
|
|
539
526
|
...result,
|
|
540
|
-
load: (path
|
|
541
|
-
result.execute(0, path
|
|
527
|
+
load: (path) => {
|
|
528
|
+
result.execute(0, path);
|
|
542
529
|
},
|
|
543
530
|
progress
|
|
544
531
|
};
|
|
545
532
|
}
|
|
546
|
-
|
|
547
533
|
//#endregion
|
|
548
|
-
//#region src/composables/useLoader/component.vue
|
|
549
|
-
var
|
|
534
|
+
//#region src/composables/useLoader/component.vue
|
|
535
|
+
var component_default = /* @__PURE__ */ defineComponent({
|
|
550
536
|
__name: "component",
|
|
551
537
|
props: {
|
|
552
538
|
loader: {
|
|
@@ -589,11 +575,6 @@ var component_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
589
575
|
};
|
|
590
576
|
}
|
|
591
577
|
});
|
|
592
|
-
|
|
593
|
-
//#endregion
|
|
594
|
-
//#region src/composables/useLoader/component.vue
|
|
595
|
-
var component_default = component_vue_vue_type_script_setup_true_lang_default;
|
|
596
|
-
|
|
597
578
|
//#endregion
|
|
598
579
|
//#region src/composables/useCamera/index.ts
|
|
599
580
|
/**
|
|
@@ -610,9 +591,10 @@ const useCameraManager = ({ sizes }) => {
|
|
|
610
591
|
* @param cameraOrUuid - The camera or its UUID to set as active
|
|
611
592
|
*/
|
|
612
593
|
const setActiveCamera = (cameraOrUuid) => {
|
|
613
|
-
const camera = isCamera(cameraOrUuid) ? cameraOrUuid : cameras.value.find((camera
|
|
594
|
+
const camera = isCamera(cameraOrUuid) ? cameraOrUuid : cameras.value.find((camera) => camera.uuid === cameraOrUuid);
|
|
614
595
|
if (!camera) return;
|
|
615
|
-
|
|
596
|
+
const otherCameras = cameras.value.filter(({ uuid }) => uuid !== camera.uuid);
|
|
597
|
+
cameras.value = [camera, ...otherCameras];
|
|
616
598
|
};
|
|
617
599
|
/**
|
|
618
600
|
* Register a camera
|
|
@@ -651,7 +633,6 @@ const useCameraManager = ({ sizes }) => {
|
|
|
651
633
|
setActiveCamera
|
|
652
634
|
};
|
|
653
635
|
};
|
|
654
|
-
|
|
655
636
|
//#endregion
|
|
656
637
|
//#region src/utils/graph.ts
|
|
657
638
|
function buildGraph(object) {
|
|
@@ -671,7 +652,6 @@ function buildGraph(object) {
|
|
|
671
652
|
});
|
|
672
653
|
return data;
|
|
673
654
|
}
|
|
674
|
-
|
|
675
655
|
//#endregion
|
|
676
656
|
//#region src/composables/useGraph/index.ts
|
|
677
657
|
const useGraph = (object) => {
|
|
@@ -681,7 +661,6 @@ const useGraph = (object) => {
|
|
|
681
661
|
return buildGraph(obj);
|
|
682
662
|
});
|
|
683
663
|
};
|
|
684
|
-
|
|
685
664
|
//#endregion
|
|
686
665
|
//#region src/utils/createPriorityEventHook.ts
|
|
687
666
|
function createPriorityEventHook() {
|
|
@@ -732,12 +711,10 @@ function createPriorityEventHook() {
|
|
|
732
711
|
}
|
|
733
712
|
};
|
|
734
713
|
}
|
|
735
|
-
|
|
736
714
|
//#endregion
|
|
737
715
|
//#region src/core/catalogue.ts
|
|
738
716
|
const catalogue = ref({});
|
|
739
717
|
const extend = (objects) => Object.assign(catalogue.value, objects);
|
|
740
|
-
|
|
741
718
|
//#endregion
|
|
742
719
|
//#region src/composables/useRenderer/pixelRatio.ts
|
|
743
720
|
const setPixelRatio = (renderer, systemDpr, userDpr) => {
|
|
@@ -750,11 +727,9 @@ const setPixelRatio = (renderer, systemDpr, userDpr) => {
|
|
|
750
727
|
else newDpr = systemDpr;
|
|
751
728
|
if (newDpr !== renderer.getPixelRatio?.()) renderer.setPixelRatio(newDpr);
|
|
752
729
|
};
|
|
753
|
-
|
|
754
730
|
//#endregion
|
|
755
731
|
//#region src/core/revision.ts
|
|
756
732
|
const revision = Number.parseInt(REVISION.replace("dev", ""));
|
|
757
|
-
|
|
758
733
|
//#endregion
|
|
759
734
|
//#region src/utils/createTimer.ts
|
|
760
735
|
/**
|
|
@@ -792,7 +767,6 @@ function createTimer() {
|
|
|
792
767
|
};
|
|
793
768
|
}
|
|
794
769
|
}
|
|
795
|
-
|
|
796
770
|
//#endregion
|
|
797
771
|
//#region src/composables/useCreateRafLoop/index.ts
|
|
798
772
|
/**
|
|
@@ -833,17 +807,16 @@ const useCreateRafLoop = (cycleFn, { fpsLimit } = {}) => {
|
|
|
833
807
|
onLoop: eventHooks.after.on
|
|
834
808
|
};
|
|
835
809
|
};
|
|
836
|
-
|
|
837
810
|
//#endregion
|
|
838
811
|
//#region src/utils/error.ts
|
|
839
812
|
var TresRendererError = class extends Error {
|
|
813
|
+
code;
|
|
840
814
|
name = "TresRendererError";
|
|
841
815
|
constructor(message, code, options) {
|
|
842
816
|
super(message, options);
|
|
843
817
|
this.code = code;
|
|
844
818
|
}
|
|
845
819
|
};
|
|
846
|
-
|
|
847
820
|
//#endregion
|
|
848
821
|
//#region src/composables/useRenderer/useRendererManager.ts
|
|
849
822
|
function useRendererManager({ scene, canvas, options, fpsLimit, contextParts: { sizes, camera } }) {
|
|
@@ -1013,7 +986,6 @@ Error details: ${rendererError.message}`, rendererError);
|
|
|
1013
986
|
error
|
|
1014
987
|
};
|
|
1015
988
|
}
|
|
1016
|
-
|
|
1017
989
|
//#endregion
|
|
1018
990
|
//#region src/composables/useSizes/index.ts
|
|
1019
991
|
function useSizes(windowSize, canvas, debounceMs = 10) {
|
|
@@ -1028,7 +1000,6 @@ function useSizes(windowSize, canvas, debounceMs = 10) {
|
|
|
1028
1000
|
aspectRatio: computed(() => debouncedReactiveWidth.value / debouncedReactiveHeight.value)
|
|
1029
1001
|
};
|
|
1030
1002
|
}
|
|
1031
|
-
|
|
1032
1003
|
//#endregion
|
|
1033
1004
|
//#region src/composables/useEventManager/index.ts
|
|
1034
1005
|
function useEventManager({ canvas, contextParts: { scene, camera, renderer } }) {
|
|
@@ -1041,7 +1012,6 @@ function useEventManager({ canvas, contextParts: { scene, camera, renderer } })
|
|
|
1041
1012
|
voidObject.addEventListener("click", pointerMissedEventHook.trigger);
|
|
1042
1013
|
return { onPointerMissed: pointerMissedEventHook.on };
|
|
1043
1014
|
}
|
|
1044
|
-
|
|
1045
1015
|
//#endregion
|
|
1046
1016
|
//#region src/composables/useTresContextProvider/index.ts
|
|
1047
1017
|
const INJECTION_KEY = "useTres";
|
|
@@ -1089,25 +1059,23 @@ const useTresContext = () => {
|
|
|
1089
1059
|
if (!ctx) throw new Error("useTresContext must be used together with useTresContextProvider.\n You probably tried to use it above or on the same level as a TresCanvas component.\n It should be used in child components of a TresCanvas instance.");
|
|
1090
1060
|
return ctx;
|
|
1091
1061
|
};
|
|
1092
|
-
|
|
1093
1062
|
//#endregion
|
|
1094
1063
|
//#region src/composables/useTres/index.ts
|
|
1095
1064
|
function useTres() {
|
|
1096
|
-
const { scene, renderer, camera, sizes, controls, extend
|
|
1065
|
+
const { scene, renderer, camera, sizes, controls, extend, events, isWebGPU } = useTresContext();
|
|
1097
1066
|
return {
|
|
1098
1067
|
scene,
|
|
1099
1068
|
renderer: renderer.instance,
|
|
1100
1069
|
camera: camera.activeCamera,
|
|
1101
1070
|
sizes,
|
|
1102
1071
|
controls,
|
|
1103
|
-
extend
|
|
1072
|
+
extend,
|
|
1104
1073
|
events,
|
|
1105
1074
|
isWebGPU,
|
|
1106
1075
|
invalidate: renderer.invalidate,
|
|
1107
1076
|
advance: renderer.advance
|
|
1108
1077
|
};
|
|
1109
1078
|
}
|
|
1110
|
-
|
|
1111
1079
|
//#endregion
|
|
1112
1080
|
//#region src/composables/useLoop/index.ts
|
|
1113
1081
|
/**
|
|
@@ -1140,7 +1108,6 @@ const useLoop = () => {
|
|
|
1140
1108
|
render
|
|
1141
1109
|
};
|
|
1142
1110
|
};
|
|
1143
|
-
|
|
1144
1111
|
//#endregion
|
|
1145
1112
|
//#region src/utils/primitive/createRetargetingProxy.ts
|
|
1146
1113
|
function createRetargetingProxy(target, getters = {}, setters = {}) {
|
|
@@ -1165,7 +1132,6 @@ function createRetargetingProxy(target, getters = {}, setters = {}) {
|
|
|
1165
1132
|
});
|
|
1166
1133
|
return proxy;
|
|
1167
1134
|
}
|
|
1168
|
-
|
|
1169
1135
|
//#endregion
|
|
1170
1136
|
//#region src/utils/pointerEvents.ts
|
|
1171
1137
|
const supportedPointerEvents = [
|
|
@@ -1199,7 +1165,6 @@ const pointerEventsMapVueToThree = {
|
|
|
1199
1165
|
onWheel: "wheel"
|
|
1200
1166
|
};
|
|
1201
1167
|
const isSupportedPointerEvent = (event) => supportedPointerEvents.includes(event);
|
|
1202
|
-
|
|
1203
1168
|
//#endregion
|
|
1204
1169
|
//#region src/core/nodeOps.ts
|
|
1205
1170
|
const textNodeSymbol = Symbol("tresTextNode");
|
|
@@ -1269,12 +1234,12 @@ const nodeOps = ({ context, options = { primitivePrefix: "" } }) => {
|
|
|
1269
1234
|
if (!child) return;
|
|
1270
1235
|
parent = parent || scene;
|
|
1271
1236
|
if (isTextNode(child) || isCommentNode(child)) {
|
|
1272
|
-
const parentInstance
|
|
1273
|
-
child.__tres.parent = parentInstance
|
|
1274
|
-
if (parentInstance
|
|
1275
|
-
const insertIndex = anchor ? parentInstance
|
|
1276
|
-
if (insertIndex >= 0) parentInstance
|
|
1277
|
-
else parentInstance
|
|
1237
|
+
const parentInstance = parent.__tres ? parent : prepareTresInstance(parent, {}, context);
|
|
1238
|
+
child.__tres.parent = parentInstance;
|
|
1239
|
+
if (parentInstance.__tres.objects) {
|
|
1240
|
+
const insertIndex = anchor ? parentInstance.__tres.objects.findIndex((obj) => obj === anchor) : -1;
|
|
1241
|
+
if (insertIndex >= 0) parentInstance.__tres.objects.splice(insertIndex, 0, child);
|
|
1242
|
+
else parentInstance.__tres.objects.push(child);
|
|
1278
1243
|
}
|
|
1279
1244
|
return;
|
|
1280
1245
|
}
|
|
@@ -1309,8 +1274,10 @@ const nodeOps = ({ context, options = { primitivePrefix: "" } }) => {
|
|
|
1309
1274
|
}
|
|
1310
1275
|
dispose = isUndefined(dispose) ? "default" : dispose;
|
|
1311
1276
|
const userDispose = node.__tres?.dispose;
|
|
1312
|
-
if (!isUndefined(userDispose))
|
|
1313
|
-
|
|
1277
|
+
if (!isUndefined(userDispose)) {
|
|
1278
|
+
if (userDispose === null) dispose = false;
|
|
1279
|
+
else dispose = userDispose;
|
|
1280
|
+
}
|
|
1314
1281
|
const isPrimitive = node.__tres?.primitive;
|
|
1315
1282
|
const shouldDispose = dispose === "default" ? !isPrimitive : !!dispose;
|
|
1316
1283
|
if (node.__tres && "objects" in node.__tres) [...node.__tres.objects].forEach((obj) => remove(obj, dispose));
|
|
@@ -1355,12 +1322,12 @@ const nodeOps = ({ context, options = { primitivePrefix: "" } }) => {
|
|
|
1355
1322
|
if (instanceName && prevArgs.length && !isEqual(prevArgs, args)) {
|
|
1356
1323
|
const newInstance = new catalogue.value[instanceName](...nextValue);
|
|
1357
1324
|
const descriptors = Object.getOwnPropertyDescriptors(newInstance);
|
|
1358
|
-
Object.entries(descriptors).forEach(([key
|
|
1325
|
+
Object.entries(descriptors).forEach(([key, descriptor]) => {
|
|
1359
1326
|
if (!descriptor.writable && !descriptor.set) return;
|
|
1360
|
-
if (key
|
|
1361
|
-
prevNode[key
|
|
1327
|
+
if (key in prevNode) try {
|
|
1328
|
+
prevNode[key] = newInstance[key];
|
|
1362
1329
|
} catch (e) {
|
|
1363
|
-
console.warn(`Could not set property ${key
|
|
1330
|
+
console.warn(`Could not set property ${key} on ${instanceName}:`, e);
|
|
1364
1331
|
}
|
|
1365
1332
|
});
|
|
1366
1333
|
root = prevNode;
|
|
@@ -1387,19 +1354,23 @@ const nodeOps = ({ context, options = { primitivePrefix: "" } }) => {
|
|
|
1387
1354
|
let value = nextValue;
|
|
1388
1355
|
if (value === "") value = true;
|
|
1389
1356
|
if (isFunction(target)) {
|
|
1390
|
-
if (!isSupportedPointerEvent(prop))
|
|
1391
|
-
|
|
1357
|
+
if (!isSupportedPointerEvent(prop)) {
|
|
1358
|
+
if (Array.isArray(value)) node[finalKey](...value);
|
|
1359
|
+
else node[finalKey](value);
|
|
1360
|
+
}
|
|
1392
1361
|
if (finalKey.startsWith("on") && isFunction(value)) root[finalKey] = value;
|
|
1393
1362
|
return;
|
|
1394
1363
|
}
|
|
1395
1364
|
if (isLayers(target) && isLayers(value)) target.mask = value.mask;
|
|
1396
1365
|
else if (isColor(target) && isColorRepresentation(value)) target.set(value);
|
|
1397
1366
|
else if (isCopyable(target) && isClassInstance(value) && target.constructor === value.constructor) target.copy(value);
|
|
1398
|
-
else if (isVectorLike(target) && Array.isArray(value))
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
else target
|
|
1402
|
-
|
|
1367
|
+
else if (isVectorLike(target) && Array.isArray(value)) {
|
|
1368
|
+
if ("fromArray" in target && typeof target.fromArray === "function") target.fromArray(value);
|
|
1369
|
+
else target.set(...value);
|
|
1370
|
+
} else if (isVectorLike(target) && typeof value === "number") {
|
|
1371
|
+
if ("setScalar" in target && typeof target.setScalar === "function") target.setScalar(value);
|
|
1372
|
+
else target.set(value);
|
|
1373
|
+
} else root[finalKey] = value;
|
|
1403
1374
|
if (isTresCamera(node)) node.updateProjectionMatrix();
|
|
1404
1375
|
invalidateInstance(node);
|
|
1405
1376
|
}
|
|
@@ -1431,7 +1402,6 @@ const nodeOps = ({ context, options = { primitivePrefix: "" } }) => {
|
|
|
1431
1402
|
insertStaticContent: noop
|
|
1432
1403
|
};
|
|
1433
1404
|
};
|
|
1434
|
-
|
|
1435
1405
|
//#endregion
|
|
1436
1406
|
//#region src/core/roots.ts
|
|
1437
1407
|
const _roots = /* @__PURE__ */ new Map();
|
|
@@ -1440,7 +1410,6 @@ const setRoot = (canvas, root) => {
|
|
|
1440
1410
|
_roots.set(canvas, root);
|
|
1441
1411
|
};
|
|
1442
1412
|
const deleteRoot = (canvas) => _roots.delete(canvas);
|
|
1443
|
-
|
|
1444
1413
|
//#endregion
|
|
1445
1414
|
//#region src/devtools/DevtoolsMessenger.ts
|
|
1446
1415
|
const QUEUEABLE_MESSAGE_TYPES = ["asset-load"];
|
|
@@ -1512,7 +1481,6 @@ var DevtoolsMessenger = class {
|
|
|
1512
1481
|
this.messageQueue = [];
|
|
1513
1482
|
}
|
|
1514
1483
|
};
|
|
1515
|
-
|
|
1516
1484
|
//#endregion
|
|
1517
1485
|
//#region src/devtools/utils.ts
|
|
1518
1486
|
/**
|
|
@@ -1531,7 +1499,6 @@ function toastMessage(message, type) {
|
|
|
1531
1499
|
function __VUE_DEVTOOLS_TOAST__(tresMessage, type) {
|
|
1532
1500
|
throw new Error(tresMessage + type);
|
|
1533
1501
|
}
|
|
1534
|
-
|
|
1535
1502
|
//#endregion
|
|
1536
1503
|
//#region src/utils/perf.ts
|
|
1537
1504
|
function calculateMemoryUsage(object) {
|
|
@@ -1556,7 +1523,6 @@ function boundedPush(arr, value, max) {
|
|
|
1556
1523
|
function bytesToKB(bytes) {
|
|
1557
1524
|
return (bytes / 1024).toFixed(2);
|
|
1558
1525
|
}
|
|
1559
|
-
|
|
1560
1526
|
//#endregion
|
|
1561
1527
|
//#region src/devtools/setupDevtools.ts
|
|
1562
1528
|
function setupTresDevtools(ctx) {
|
|
@@ -1576,7 +1542,7 @@ function setupTresDevtools(ctx) {
|
|
|
1576
1542
|
};
|
|
1577
1543
|
const updateInterval = 100;
|
|
1578
1544
|
const fps = useFps({ every: updateInterval });
|
|
1579
|
-
const { isSupported, memory } = useMemory({
|
|
1545
|
+
const { isSupported, memory } = useMemory({ scheduler: (cb) => useIntervalFn(cb, updateInterval) });
|
|
1580
1546
|
const maxFrames = 160;
|
|
1581
1547
|
let lastUpdateTime = performance.now();
|
|
1582
1548
|
let accumulatedTime = 0;
|
|
@@ -1607,7 +1573,6 @@ function setupTresDevtools(ctx) {
|
|
|
1607
1573
|
pause();
|
|
1608
1574
|
});
|
|
1609
1575
|
}
|
|
1610
|
-
|
|
1611
1576
|
//#endregion
|
|
1612
1577
|
//#region src/utils/three.ts
|
|
1613
1578
|
/**
|
|
@@ -1624,7 +1589,6 @@ const getObjectByUuid = (node, uuid) => {
|
|
|
1624
1589
|
if (found) return found;
|
|
1625
1590
|
}
|
|
1626
1591
|
};
|
|
1627
|
-
|
|
1628
1592
|
//#endregion
|
|
1629
1593
|
//#region src/devtools/highlight.ts
|
|
1630
1594
|
var HightlightMesh = class extends THREE.Mesh {
|
|
@@ -1640,7 +1604,6 @@ var HightlightMesh = class extends THREE.Mesh {
|
|
|
1640
1604
|
this.scale.set(scaleFactor, scaleFactor, scaleFactor);
|
|
1641
1605
|
}
|
|
1642
1606
|
};
|
|
1643
|
-
|
|
1644
1607
|
//#endregion
|
|
1645
1608
|
//#region src/devtools/inspectorHandlers.ts
|
|
1646
1609
|
/**
|
|
@@ -1754,14 +1717,16 @@ function buildContextGraph(object, node, visited = /* @__PURE__ */ new WeakSet()
|
|
|
1754
1717
|
});
|
|
1755
1718
|
if (value.value && typeof value.value === "object") buildContextGraph(value.value, childNode, visited, depth + 1, maxDepth, uuid, chainedKey);
|
|
1756
1719
|
else childNode.label = `${key}: ${JSON.stringify(value.value)}`;
|
|
1757
|
-
} else if (value && typeof value === "object" && !Array.isArray(value))
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1720
|
+
} else if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
1721
|
+
if (Object.keys(value).length > 0) {
|
|
1722
|
+
if (visited.has(value)) childNode.tags.push({
|
|
1723
|
+
label: "Circular",
|
|
1724
|
+
textColor: 16711680,
|
|
1725
|
+
backgroundColor: 16773360
|
|
1726
|
+
});
|
|
1727
|
+
else buildContextGraph(value, childNode, visited, depth + 1, maxDepth, uuid, chainedKey);
|
|
1728
|
+
} else childNode.label = `${key}: {}`;
|
|
1729
|
+
} else if (Array.isArray(value)) {
|
|
1765
1730
|
childNode.label = `${key}: Array(${value.length})`;
|
|
1766
1731
|
childNode.tags.push({
|
|
1767
1732
|
label: `length: ${value.length}`,
|
|
@@ -1778,7 +1743,7 @@ function buildContextGraph(object, node, visited = /* @__PURE__ */ new WeakSet()
|
|
|
1778
1743
|
* @returns A function that handles inspector tree payload updates
|
|
1779
1744
|
*/
|
|
1780
1745
|
const inspectorTreeHandler = (tres) => (payload) => {
|
|
1781
|
-
if (payload.inspectorId ===
|
|
1746
|
+
if (payload.inspectorId === "tres:inspector") {
|
|
1782
1747
|
const root = createNode(tres.scene.value);
|
|
1783
1748
|
buildGraph$1(tres.scene.value, root, payload.filter);
|
|
1784
1749
|
const rootContext = {
|
|
@@ -1800,7 +1765,7 @@ const inspectorTreeHandler = (tres) => (payload) => {
|
|
|
1800
1765
|
* @returns A function that handles inspector state payload updates
|
|
1801
1766
|
*/
|
|
1802
1767
|
const inspectorStateHandler = (tres, { highlightMesh, prevInstance }) => (payload) => {
|
|
1803
|
-
if (payload.inspectorId !==
|
|
1768
|
+
if (payload.inspectorId !== "tres:inspector") return;
|
|
1804
1769
|
const highlightMaterial = new MeshBasicMaterial({
|
|
1805
1770
|
color: 11003607,
|
|
1806
1771
|
transparent: true,
|
|
@@ -1862,9 +1827,9 @@ const inspectorStateHandler = (tres, { highlightMesh, prevInstance }) => (payloa
|
|
|
1862
1827
|
const match = payload.nodeId.match(/^context-([^-]+(?:-[^-]+)*)-(.+)$/);
|
|
1863
1828
|
const chainedKey = match ? match[2] : "context";
|
|
1864
1829
|
if (!chainedKey || chainedKey === "context") {
|
|
1865
|
-
payload.state = { object: Object.entries(tres).filter(([key]) => !key.startsWith("_") && key !== "parent").map(([key, value
|
|
1830
|
+
payload.state = { object: Object.entries(tres).filter(([key]) => !key.startsWith("_") && key !== "parent").map(([key, value]) => ({
|
|
1866
1831
|
key,
|
|
1867
|
-
value: isRef(value
|
|
1832
|
+
value: isRef(value) ? value.value : value,
|
|
1868
1833
|
editable: false
|
|
1869
1834
|
})) };
|
|
1870
1835
|
return;
|
|
@@ -1921,7 +1886,7 @@ const editSceneObject = (scene, objectUuid, propertyPath, value) => {
|
|
|
1921
1886
|
* @returns A function that handles inspector state edit payload updates
|
|
1922
1887
|
*/
|
|
1923
1888
|
const inspectorEditStateHandler = (tres) => (payload) => {
|
|
1924
|
-
if (payload.inspectorId ===
|
|
1889
|
+
if (payload.inspectorId === "tres:inspector") {
|
|
1925
1890
|
if (payload.nodeId.includes("scene")) {
|
|
1926
1891
|
const match = payload.nodeId.match(/^scene-(.+)$/);
|
|
1927
1892
|
const uuid = match ? match[1] : null;
|
|
@@ -1930,7 +1895,6 @@ const inspectorEditStateHandler = (tres) => (payload) => {
|
|
|
1930
1895
|
}
|
|
1931
1896
|
}
|
|
1932
1897
|
};
|
|
1933
|
-
|
|
1934
1898
|
//#endregion
|
|
1935
1899
|
//#region src/devtools/plugin.ts
|
|
1936
1900
|
const INSPECTOR_ID = "tres:inspector";
|
|
@@ -1968,10 +1932,9 @@ function registerTresDevtools(app, tres) {
|
|
|
1968
1932
|
api.on.editInspectorState(inspectorEditStateHandler(tres));
|
|
1969
1933
|
});
|
|
1970
1934
|
}
|
|
1971
|
-
|
|
1972
1935
|
//#endregion
|
|
1973
|
-
//#region src/components/Context.vue
|
|
1974
|
-
var
|
|
1936
|
+
//#region src/components/Context.vue
|
|
1937
|
+
var Context_default = /* @__PURE__ */ defineComponent({
|
|
1975
1938
|
__name: "Context",
|
|
1976
1939
|
props: {
|
|
1977
1940
|
camera: {
|
|
@@ -2115,14 +2078,14 @@ var Context_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
2115
2078
|
const scene = shallowRef(new Scene());
|
|
2116
2079
|
const instance = getCurrentInstance();
|
|
2117
2080
|
extend(THREE);
|
|
2118
|
-
const createInternalComponent = (context
|
|
2081
|
+
const createInternalComponent = (context, hmrTick) => defineComponent({ setup() {
|
|
2119
2082
|
const ctx = getCurrentInstance()?.appContext;
|
|
2120
2083
|
if (ctx) ctx.app = instance?.appContext.app;
|
|
2121
2084
|
const provides = {};
|
|
2122
|
-
function mergeProvides(currentInstance
|
|
2123
|
-
if (!currentInstance
|
|
2124
|
-
if (currentInstance
|
|
2125
|
-
if (currentInstance
|
|
2085
|
+
function mergeProvides(currentInstance) {
|
|
2086
|
+
if (!currentInstance) return;
|
|
2087
|
+
if (currentInstance.parent) mergeProvides(currentInstance.parent);
|
|
2088
|
+
if (currentInstance.provides) Object.assign(provides, currentInstance.provides);
|
|
2126
2089
|
}
|
|
2127
2090
|
if (instance?.parent && props.enableProvideBridge) {
|
|
2128
2091
|
mergeProvides(instance.parent);
|
|
@@ -2130,42 +2093,42 @@ var Context_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
2130
2093
|
provide(key, provides[key]);
|
|
2131
2094
|
});
|
|
2132
2095
|
}
|
|
2133
|
-
provide(INJECTION_KEY, context
|
|
2096
|
+
provide(INJECTION_KEY, context);
|
|
2134
2097
|
provide("extend", extend);
|
|
2135
|
-
if (typeof window !== "undefined" && ctx?.app) registerTresDevtools(ctx?.app, context
|
|
2098
|
+
if (typeof window !== "undefined" && ctx?.app) registerTresDevtools(ctx?.app, context);
|
|
2136
2099
|
return () => {
|
|
2137
2100
|
hmrTick.value;
|
|
2138
2101
|
return h(Fragment, null, slots.default?.() ?? []);
|
|
2139
2102
|
};
|
|
2140
2103
|
} });
|
|
2141
|
-
const mountCustomRenderer = (context
|
|
2104
|
+
const mountCustomRenderer = (context) => {
|
|
2142
2105
|
const canvas = props.canvas;
|
|
2143
2106
|
if (getRoot(canvas)) return;
|
|
2144
2107
|
const hmrTick = ref(0);
|
|
2145
|
-
const internalComponent = createInternalComponent(context
|
|
2146
|
-
const renderer
|
|
2147
|
-
context
|
|
2108
|
+
const internalComponent = createInternalComponent(context, hmrTick);
|
|
2109
|
+
const renderer = createRenderer(nodeOps({
|
|
2110
|
+
context,
|
|
2148
2111
|
options: props.customRendererOptions
|
|
2149
2112
|
}));
|
|
2150
|
-
renderer
|
|
2113
|
+
renderer.render(h(internalComponent), scene.value);
|
|
2151
2114
|
setRoot(canvas, {
|
|
2152
|
-
renderer
|
|
2115
|
+
renderer,
|
|
2153
2116
|
internalComponent,
|
|
2154
2117
|
hmrTick,
|
|
2155
|
-
context
|
|
2118
|
+
context
|
|
2156
2119
|
});
|
|
2157
2120
|
};
|
|
2158
|
-
const dispose = (context
|
|
2159
|
-
disposeObject3D(context
|
|
2121
|
+
const dispose = (context, force = false) => {
|
|
2122
|
+
disposeObject3D(context.scene.value);
|
|
2160
2123
|
if (force) {
|
|
2161
|
-
context
|
|
2162
|
-
if (context
|
|
2163
|
-
context
|
|
2164
|
-
context
|
|
2124
|
+
context.renderer.instance.dispose();
|
|
2125
|
+
if (context.renderer.instance instanceof WebGLRenderer) {
|
|
2126
|
+
context.renderer.instance.renderLists.dispose();
|
|
2127
|
+
context.renderer.instance.forceContextLoss();
|
|
2165
2128
|
}
|
|
2166
2129
|
}
|
|
2167
2130
|
scene.value.__tres = {
|
|
2168
|
-
root: context
|
|
2131
|
+
root: context,
|
|
2169
2132
|
objects: [],
|
|
2170
2133
|
isUnmounting: true
|
|
2171
2134
|
};
|
|
@@ -2197,14 +2160,14 @@ var Context_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
2197
2160
|
const { camera, renderer } = context.value;
|
|
2198
2161
|
const { registerCamera, cameras, activeCamera, deregisterCamera } = camera;
|
|
2199
2162
|
const addDefaultCamera = () => {
|
|
2200
|
-
const camera
|
|
2201
|
-
camera
|
|
2202
|
-
camera
|
|
2203
|
-
registerCamera(camera
|
|
2163
|
+
const camera = new PerspectiveCamera(45, window.innerWidth / window.innerHeight, .1, 1e3);
|
|
2164
|
+
camera.position.set(3, 3, 3);
|
|
2165
|
+
camera.lookAt(0, 0, 0);
|
|
2166
|
+
registerCamera(camera);
|
|
2204
2167
|
const unwatch = watchEffect(() => {
|
|
2205
2168
|
if (cameras.value.length >= 2) {
|
|
2206
|
-
camera
|
|
2207
|
-
deregisterCamera(camera
|
|
2169
|
+
camera.removeFromParent();
|
|
2170
|
+
deregisterCamera(camera);
|
|
2208
2171
|
unwatch?.();
|
|
2209
2172
|
}
|
|
2210
2173
|
});
|
|
@@ -2257,15 +2220,12 @@ var Context_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
2257
2220
|
return () => {};
|
|
2258
2221
|
}
|
|
2259
2222
|
});
|
|
2260
|
-
|
|
2261
|
-
//#endregion
|
|
2262
|
-
//#region src/components/Context.vue
|
|
2263
|
-
var Context_default = Context_vue_vue_type_script_setup_true_lang_default;
|
|
2264
|
-
|
|
2265
2223
|
//#endregion
|
|
2266
2224
|
//#region src/components/TresCanvas.vue?vue&type=script&setup=true&lang.ts
|
|
2267
2225
|
const _hoisted_1 = ["data-scene", "data-tres"];
|
|
2268
|
-
|
|
2226
|
+
//#endregion
|
|
2227
|
+
//#region src/components/TresCanvas.vue
|
|
2228
|
+
var TresCanvas_default = /* @__PURE__ */ defineComponent({
|
|
2269
2229
|
__name: "TresCanvas",
|
|
2270
2230
|
props: {
|
|
2271
2231
|
camera: {
|
|
@@ -2476,11 +2436,6 @@ var TresCanvas_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
2476
2436
|
};
|
|
2477
2437
|
}
|
|
2478
2438
|
});
|
|
2479
|
-
|
|
2480
|
-
//#endregion
|
|
2481
|
-
//#region src/components/TresCanvas.vue
|
|
2482
|
-
var TresCanvas_default = TresCanvas_vue_vue_type_script_setup_true_lang_default;
|
|
2483
|
-
|
|
2484
2439
|
//#endregion
|
|
2485
2440
|
//#region src/utils/normalize.ts
|
|
2486
2441
|
function normalizeVectorFlexibleParam(value) {
|
|
@@ -2501,7 +2456,6 @@ function normalizeColor(value) {
|
|
|
2501
2456
|
if (Array.isArray(value)) return new Color(...value);
|
|
2502
2457
|
return new Color(value);
|
|
2503
2458
|
}
|
|
2504
|
-
|
|
2505
2459
|
//#endregion
|
|
2506
2460
|
//#region src/utils/template-compiler-options.ts
|
|
2507
2461
|
const whitelist = [
|
|
@@ -2512,11 +2466,9 @@ const whitelist = [
|
|
|
2512
2466
|
"TresPortal"
|
|
2513
2467
|
];
|
|
2514
2468
|
const templateCompilerOptions = { template: { compilerOptions: { isCustomElement: (tag) => (/^Tres[A-Z]/.test(tag) || tag.startsWith("tres-")) && !whitelist.includes(tag) || tag === "primitive" } } };
|
|
2515
|
-
var template_compiler_options_default = templateCompilerOptions;
|
|
2516
|
-
|
|
2517
2469
|
//#endregion
|
|
2518
|
-
//#region src/components/TresPortal.vue
|
|
2519
|
-
var
|
|
2470
|
+
//#region src/components/TresPortal.vue
|
|
2471
|
+
var TresPortal_default = /* @__PURE__ */ defineComponent({
|
|
2520
2472
|
__name: "TresPortal",
|
|
2521
2473
|
props: {
|
|
2522
2474
|
to: {
|
|
@@ -2537,21 +2489,16 @@ var TresPortal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
2537
2489
|
};
|
|
2538
2490
|
}
|
|
2539
2491
|
});
|
|
2540
|
-
|
|
2541
|
-
//#endregion
|
|
2542
|
-
//#region src/components/TresPortal.vue
|
|
2543
|
-
var TresPortal_default = TresPortal_vue_vue_type_script_setup_true_lang_default;
|
|
2544
|
-
|
|
2545
2492
|
//#endregion
|
|
2546
2493
|
//#region src/directives/vDistanceTo.ts
|
|
2547
2494
|
let arrowHelper = null;
|
|
2548
2495
|
const vDistanceTo = {
|
|
2549
2496
|
updated: (el, binding) => {
|
|
2550
|
-
const extractBindingPosition = (binding
|
|
2551
|
-
let observer
|
|
2552
|
-
if (binding
|
|
2553
|
-
if (Array.isArray(binding
|
|
2554
|
-
return observer
|
|
2497
|
+
const extractBindingPosition = (binding) => {
|
|
2498
|
+
let observer = binding.value;
|
|
2499
|
+
if (binding.value && isMesh(binding.value)) observer = binding.value.position;
|
|
2500
|
+
if (Array.isArray(binding.value)) observer = new Vector3(...observer);
|
|
2501
|
+
return observer;
|
|
2555
2502
|
};
|
|
2556
2503
|
const observer = extractBindingPosition(binding);
|
|
2557
2504
|
if (!observer) {
|
|
@@ -2577,7 +2524,6 @@ const vDistanceTo = {
|
|
|
2577
2524
|
if (el.parent) el.parent.remove(arrowHelper);
|
|
2578
2525
|
}
|
|
2579
2526
|
};
|
|
2580
|
-
|
|
2581
2527
|
//#endregion
|
|
2582
2528
|
//#region src/directives/vLightHelper.ts
|
|
2583
2529
|
let CurrentHelper;
|
|
@@ -2613,7 +2559,6 @@ const vLightHelper = {
|
|
|
2613
2559
|
if (el.parent) el.parent.remove(currentInstance);
|
|
2614
2560
|
}
|
|
2615
2561
|
};
|
|
2616
|
-
|
|
2617
2562
|
//#endregion
|
|
2618
2563
|
//#region src/directives/vLog.ts
|
|
2619
2564
|
const vLog = { mounted: (el, binding) => {
|
|
@@ -2623,13 +2568,10 @@ const vLog = { mounted: (el, binding) => {
|
|
|
2623
2568
|
}
|
|
2624
2569
|
console.log("v-log", el);
|
|
2625
2570
|
} };
|
|
2626
|
-
|
|
2627
2571
|
//#endregion
|
|
2628
2572
|
//#region src/index.ts
|
|
2629
2573
|
const plugin = { install(app) {
|
|
2630
2574
|
app.component("TresCanvas", TresCanvas_default);
|
|
2631
2575
|
} };
|
|
2632
|
-
var src_default = plugin;
|
|
2633
|
-
|
|
2634
2576
|
//#endregion
|
|
2635
|
-
export { DevtoolsMessenger, INJECTION_KEY, TresCanvas_default as TresCanvas, Context_default as TresCanvasContext, TresPortal_default as TresPortal, TresRendererError, component_default as UseLoader, buildGraph, catalogue, createTimer,
|
|
2577
|
+
export { DevtoolsMessenger, INJECTION_KEY, TresCanvas_default as TresCanvas, Context_default as TresCanvasContext, TresPortal_default as TresPortal, TresRendererError, component_default as UseLoader, buildGraph, catalogue, createTimer, plugin as default, disposeObject3D as dispose, extend, isBufferGeometry, isCamera, isClassInstance, isColor, isColorRepresentation, isCopyable, isFog, isGroup, isLayers, isLight, isMaterial, isMesh, isObject3D, isOrthographicCamera, isPerspectiveCamera, isProd, isScene, isTresCamera, isTresInstance, isTresObject, isTresPrimitive, isVectorLike, isWebGLRenderer, isWebGPURenderer, logError, logMessage, logWarning, normalizeColor, normalizeVectorFlexibleParam, registerTresDevtools, templateCompilerOptions, useCameraManager, useGraph, useLoader, useLoop, useRendererManager, useTres, useTresContext, useTresContextProvider, vDistanceTo, vLightHelper, vLog };
|