@tresjs/core 5.9.1 → 5.9.3
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 -173
- package/dist/tres.js +113 -167
- package/package.json +25 -25
package/dist/tres.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v5.9.
|
|
3
|
+
* version: v5.9.3
|
|
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.3";
|
|
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,19 +807,22 @@ 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
|
|
822
|
+
/**
|
|
823
|
+
* Three.js revision where `WebGPURenderer` removed `PCFSoftShadowMap`.
|
|
824
|
+
*/
|
|
825
|
+
const WEBGPU_PCF_SOFT_REMOVED_REVISION = 186;
|
|
849
826
|
function useRendererManager({ scene, canvas, options, fpsLimit, contextParts: { sizes, camera } }) {
|
|
850
827
|
const getRenderer = () => {
|
|
851
828
|
if (isFunction(options.renderer)) return options.renderer({
|
|
@@ -990,7 +967,7 @@ Error details: ${rendererError.message}`, rendererError);
|
|
|
990
967
|
});
|
|
991
968
|
watchEffect(() => {
|
|
992
969
|
if (!isInitialized.value) return;
|
|
993
|
-
const fallback = isWebGPURenderer(renderer) ? PCFSoftShadowMap : PCFShadowMap;
|
|
970
|
+
const fallback = isWebGPURenderer(renderer) && revision < WEBGPU_PCF_SOFT_REMOVED_REVISION ? PCFSoftShadowMap : PCFShadowMap;
|
|
994
971
|
renderer.shadowMap.type = options.shadowMapType ?? fallback;
|
|
995
972
|
forceMaterialUpdate();
|
|
996
973
|
});
|
|
@@ -1013,7 +990,6 @@ Error details: ${rendererError.message}`, rendererError);
|
|
|
1013
990
|
error
|
|
1014
991
|
};
|
|
1015
992
|
}
|
|
1016
|
-
|
|
1017
993
|
//#endregion
|
|
1018
994
|
//#region src/composables/useSizes/index.ts
|
|
1019
995
|
function useSizes(windowSize, canvas, debounceMs = 10) {
|
|
@@ -1028,7 +1004,6 @@ function useSizes(windowSize, canvas, debounceMs = 10) {
|
|
|
1028
1004
|
aspectRatio: computed(() => debouncedReactiveWidth.value / debouncedReactiveHeight.value)
|
|
1029
1005
|
};
|
|
1030
1006
|
}
|
|
1031
|
-
|
|
1032
1007
|
//#endregion
|
|
1033
1008
|
//#region src/composables/useEventManager/index.ts
|
|
1034
1009
|
function useEventManager({ canvas, contextParts: { scene, camera, renderer } }) {
|
|
@@ -1041,7 +1016,6 @@ function useEventManager({ canvas, contextParts: { scene, camera, renderer } })
|
|
|
1041
1016
|
voidObject.addEventListener("click", pointerMissedEventHook.trigger);
|
|
1042
1017
|
return { onPointerMissed: pointerMissedEventHook.on };
|
|
1043
1018
|
}
|
|
1044
|
-
|
|
1045
1019
|
//#endregion
|
|
1046
1020
|
//#region src/composables/useTresContextProvider/index.ts
|
|
1047
1021
|
const INJECTION_KEY = "useTres";
|
|
@@ -1089,25 +1063,23 @@ const useTresContext = () => {
|
|
|
1089
1063
|
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
1064
|
return ctx;
|
|
1091
1065
|
};
|
|
1092
|
-
|
|
1093
1066
|
//#endregion
|
|
1094
1067
|
//#region src/composables/useTres/index.ts
|
|
1095
1068
|
function useTres() {
|
|
1096
|
-
const { scene, renderer, camera, sizes, controls, extend
|
|
1069
|
+
const { scene, renderer, camera, sizes, controls, extend, events, isWebGPU } = useTresContext();
|
|
1097
1070
|
return {
|
|
1098
1071
|
scene,
|
|
1099
1072
|
renderer: renderer.instance,
|
|
1100
1073
|
camera: camera.activeCamera,
|
|
1101
1074
|
sizes,
|
|
1102
1075
|
controls,
|
|
1103
|
-
extend
|
|
1076
|
+
extend,
|
|
1104
1077
|
events,
|
|
1105
1078
|
isWebGPU,
|
|
1106
1079
|
invalidate: renderer.invalidate,
|
|
1107
1080
|
advance: renderer.advance
|
|
1108
1081
|
};
|
|
1109
1082
|
}
|
|
1110
|
-
|
|
1111
1083
|
//#endregion
|
|
1112
1084
|
//#region src/composables/useLoop/index.ts
|
|
1113
1085
|
/**
|
|
@@ -1140,7 +1112,6 @@ const useLoop = () => {
|
|
|
1140
1112
|
render
|
|
1141
1113
|
};
|
|
1142
1114
|
};
|
|
1143
|
-
|
|
1144
1115
|
//#endregion
|
|
1145
1116
|
//#region src/utils/primitive/createRetargetingProxy.ts
|
|
1146
1117
|
function createRetargetingProxy(target, getters = {}, setters = {}) {
|
|
@@ -1165,7 +1136,6 @@ function createRetargetingProxy(target, getters = {}, setters = {}) {
|
|
|
1165
1136
|
});
|
|
1166
1137
|
return proxy;
|
|
1167
1138
|
}
|
|
1168
|
-
|
|
1169
1139
|
//#endregion
|
|
1170
1140
|
//#region src/utils/pointerEvents.ts
|
|
1171
1141
|
const supportedPointerEvents = [
|
|
@@ -1199,7 +1169,6 @@ const pointerEventsMapVueToThree = {
|
|
|
1199
1169
|
onWheel: "wheel"
|
|
1200
1170
|
};
|
|
1201
1171
|
const isSupportedPointerEvent = (event) => supportedPointerEvents.includes(event);
|
|
1202
|
-
|
|
1203
1172
|
//#endregion
|
|
1204
1173
|
//#region src/core/nodeOps.ts
|
|
1205
1174
|
const textNodeSymbol = Symbol("tresTextNode");
|
|
@@ -1269,12 +1238,12 @@ const nodeOps = ({ context, options = { primitivePrefix: "" } }) => {
|
|
|
1269
1238
|
if (!child) return;
|
|
1270
1239
|
parent = parent || scene;
|
|
1271
1240
|
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
|
|
1241
|
+
const parentInstance = parent.__tres ? parent : prepareTresInstance(parent, {}, context);
|
|
1242
|
+
child.__tres.parent = parentInstance;
|
|
1243
|
+
if (parentInstance.__tres.objects) {
|
|
1244
|
+
const insertIndex = anchor ? parentInstance.__tres.objects.findIndex((obj) => obj === anchor) : -1;
|
|
1245
|
+
if (insertIndex >= 0) parentInstance.__tres.objects.splice(insertIndex, 0, child);
|
|
1246
|
+
else parentInstance.__tres.objects.push(child);
|
|
1278
1247
|
}
|
|
1279
1248
|
return;
|
|
1280
1249
|
}
|
|
@@ -1309,8 +1278,10 @@ const nodeOps = ({ context, options = { primitivePrefix: "" } }) => {
|
|
|
1309
1278
|
}
|
|
1310
1279
|
dispose = isUndefined(dispose) ? "default" : dispose;
|
|
1311
1280
|
const userDispose = node.__tres?.dispose;
|
|
1312
|
-
if (!isUndefined(userDispose))
|
|
1313
|
-
|
|
1281
|
+
if (!isUndefined(userDispose)) {
|
|
1282
|
+
if (userDispose === null) dispose = false;
|
|
1283
|
+
else dispose = userDispose;
|
|
1284
|
+
}
|
|
1314
1285
|
const isPrimitive = node.__tres?.primitive;
|
|
1315
1286
|
const shouldDispose = dispose === "default" ? !isPrimitive : !!dispose;
|
|
1316
1287
|
if (node.__tres && "objects" in node.__tres) [...node.__tres.objects].forEach((obj) => remove(obj, dispose));
|
|
@@ -1355,12 +1326,12 @@ const nodeOps = ({ context, options = { primitivePrefix: "" } }) => {
|
|
|
1355
1326
|
if (instanceName && prevArgs.length && !isEqual(prevArgs, args)) {
|
|
1356
1327
|
const newInstance = new catalogue.value[instanceName](...nextValue);
|
|
1357
1328
|
const descriptors = Object.getOwnPropertyDescriptors(newInstance);
|
|
1358
|
-
Object.entries(descriptors).forEach(([key
|
|
1329
|
+
Object.entries(descriptors).forEach(([key, descriptor]) => {
|
|
1359
1330
|
if (!descriptor.writable && !descriptor.set) return;
|
|
1360
|
-
if (key
|
|
1361
|
-
prevNode[key
|
|
1331
|
+
if (key in prevNode) try {
|
|
1332
|
+
prevNode[key] = newInstance[key];
|
|
1362
1333
|
} catch (e) {
|
|
1363
|
-
console.warn(`Could not set property ${key
|
|
1334
|
+
console.warn(`Could not set property ${key} on ${instanceName}:`, e);
|
|
1364
1335
|
}
|
|
1365
1336
|
});
|
|
1366
1337
|
root = prevNode;
|
|
@@ -1387,19 +1358,23 @@ const nodeOps = ({ context, options = { primitivePrefix: "" } }) => {
|
|
|
1387
1358
|
let value = nextValue;
|
|
1388
1359
|
if (value === "") value = true;
|
|
1389
1360
|
if (isFunction(target)) {
|
|
1390
|
-
if (!isSupportedPointerEvent(prop))
|
|
1391
|
-
|
|
1361
|
+
if (!isSupportedPointerEvent(prop)) {
|
|
1362
|
+
if (Array.isArray(value)) node[finalKey](...value);
|
|
1363
|
+
else node[finalKey](value);
|
|
1364
|
+
}
|
|
1392
1365
|
if (finalKey.startsWith("on") && isFunction(value)) root[finalKey] = value;
|
|
1393
1366
|
return;
|
|
1394
1367
|
}
|
|
1395
1368
|
if (isLayers(target) && isLayers(value)) target.mask = value.mask;
|
|
1396
1369
|
else if (isColor(target) && isColorRepresentation(value)) target.set(value);
|
|
1397
1370
|
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
|
-
|
|
1371
|
+
else if (isVectorLike(target) && Array.isArray(value)) {
|
|
1372
|
+
if ("fromArray" in target && typeof target.fromArray === "function") target.fromArray(value);
|
|
1373
|
+
else target.set(...value);
|
|
1374
|
+
} else if (isVectorLike(target) && typeof value === "number") {
|
|
1375
|
+
if ("setScalar" in target && typeof target.setScalar === "function") target.setScalar(value);
|
|
1376
|
+
else target.set(value);
|
|
1377
|
+
} else root[finalKey] = value;
|
|
1403
1378
|
if (isTresCamera(node)) node.updateProjectionMatrix();
|
|
1404
1379
|
invalidateInstance(node);
|
|
1405
1380
|
}
|
|
@@ -1431,7 +1406,6 @@ const nodeOps = ({ context, options = { primitivePrefix: "" } }) => {
|
|
|
1431
1406
|
insertStaticContent: noop
|
|
1432
1407
|
};
|
|
1433
1408
|
};
|
|
1434
|
-
|
|
1435
1409
|
//#endregion
|
|
1436
1410
|
//#region src/core/roots.ts
|
|
1437
1411
|
const _roots = /* @__PURE__ */ new Map();
|
|
@@ -1440,7 +1414,6 @@ const setRoot = (canvas, root) => {
|
|
|
1440
1414
|
_roots.set(canvas, root);
|
|
1441
1415
|
};
|
|
1442
1416
|
const deleteRoot = (canvas) => _roots.delete(canvas);
|
|
1443
|
-
|
|
1444
1417
|
//#endregion
|
|
1445
1418
|
//#region src/devtools/DevtoolsMessenger.ts
|
|
1446
1419
|
const QUEUEABLE_MESSAGE_TYPES = ["asset-load"];
|
|
@@ -1512,7 +1485,6 @@ var DevtoolsMessenger = class {
|
|
|
1512
1485
|
this.messageQueue = [];
|
|
1513
1486
|
}
|
|
1514
1487
|
};
|
|
1515
|
-
|
|
1516
1488
|
//#endregion
|
|
1517
1489
|
//#region src/devtools/utils.ts
|
|
1518
1490
|
/**
|
|
@@ -1531,7 +1503,6 @@ function toastMessage(message, type) {
|
|
|
1531
1503
|
function __VUE_DEVTOOLS_TOAST__(tresMessage, type) {
|
|
1532
1504
|
throw new Error(tresMessage + type);
|
|
1533
1505
|
}
|
|
1534
|
-
|
|
1535
1506
|
//#endregion
|
|
1536
1507
|
//#region src/utils/perf.ts
|
|
1537
1508
|
function calculateMemoryUsage(object) {
|
|
@@ -1556,7 +1527,6 @@ function boundedPush(arr, value, max) {
|
|
|
1556
1527
|
function bytesToKB(bytes) {
|
|
1557
1528
|
return (bytes / 1024).toFixed(2);
|
|
1558
1529
|
}
|
|
1559
|
-
|
|
1560
1530
|
//#endregion
|
|
1561
1531
|
//#region src/devtools/setupDevtools.ts
|
|
1562
1532
|
function setupTresDevtools(ctx) {
|
|
@@ -1576,7 +1546,7 @@ function setupTresDevtools(ctx) {
|
|
|
1576
1546
|
};
|
|
1577
1547
|
const updateInterval = 100;
|
|
1578
1548
|
const fps = useFps({ every: updateInterval });
|
|
1579
|
-
const { isSupported, memory } = useMemory({
|
|
1549
|
+
const { isSupported, memory } = useMemory({ scheduler: (cb) => useIntervalFn(cb, updateInterval) });
|
|
1580
1550
|
const maxFrames = 160;
|
|
1581
1551
|
let lastUpdateTime = performance.now();
|
|
1582
1552
|
let accumulatedTime = 0;
|
|
@@ -1607,7 +1577,6 @@ function setupTresDevtools(ctx) {
|
|
|
1607
1577
|
pause();
|
|
1608
1578
|
});
|
|
1609
1579
|
}
|
|
1610
|
-
|
|
1611
1580
|
//#endregion
|
|
1612
1581
|
//#region src/utils/three.ts
|
|
1613
1582
|
/**
|
|
@@ -1624,7 +1593,6 @@ const getObjectByUuid = (node, uuid) => {
|
|
|
1624
1593
|
if (found) return found;
|
|
1625
1594
|
}
|
|
1626
1595
|
};
|
|
1627
|
-
|
|
1628
1596
|
//#endregion
|
|
1629
1597
|
//#region src/devtools/highlight.ts
|
|
1630
1598
|
var HightlightMesh = class extends THREE.Mesh {
|
|
@@ -1640,7 +1608,6 @@ var HightlightMesh = class extends THREE.Mesh {
|
|
|
1640
1608
|
this.scale.set(scaleFactor, scaleFactor, scaleFactor);
|
|
1641
1609
|
}
|
|
1642
1610
|
};
|
|
1643
|
-
|
|
1644
1611
|
//#endregion
|
|
1645
1612
|
//#region src/devtools/inspectorHandlers.ts
|
|
1646
1613
|
/**
|
|
@@ -1754,14 +1721,16 @@ function buildContextGraph(object, node, visited = /* @__PURE__ */ new WeakSet()
|
|
|
1754
1721
|
});
|
|
1755
1722
|
if (value.value && typeof value.value === "object") buildContextGraph(value.value, childNode, visited, depth + 1, maxDepth, uuid, chainedKey);
|
|
1756
1723
|
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
|
-
|
|
1724
|
+
} else if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
1725
|
+
if (Object.keys(value).length > 0) {
|
|
1726
|
+
if (visited.has(value)) childNode.tags.push({
|
|
1727
|
+
label: "Circular",
|
|
1728
|
+
textColor: 16711680,
|
|
1729
|
+
backgroundColor: 16773360
|
|
1730
|
+
});
|
|
1731
|
+
else buildContextGraph(value, childNode, visited, depth + 1, maxDepth, uuid, chainedKey);
|
|
1732
|
+
} else childNode.label = `${key}: {}`;
|
|
1733
|
+
} else if (Array.isArray(value)) {
|
|
1765
1734
|
childNode.label = `${key}: Array(${value.length})`;
|
|
1766
1735
|
childNode.tags.push({
|
|
1767
1736
|
label: `length: ${value.length}`,
|
|
@@ -1778,7 +1747,7 @@ function buildContextGraph(object, node, visited = /* @__PURE__ */ new WeakSet()
|
|
|
1778
1747
|
* @returns A function that handles inspector tree payload updates
|
|
1779
1748
|
*/
|
|
1780
1749
|
const inspectorTreeHandler = (tres) => (payload) => {
|
|
1781
|
-
if (payload.inspectorId ===
|
|
1750
|
+
if (payload.inspectorId === "tres:inspector") {
|
|
1782
1751
|
const root = createNode(tres.scene.value);
|
|
1783
1752
|
buildGraph$1(tres.scene.value, root, payload.filter);
|
|
1784
1753
|
const rootContext = {
|
|
@@ -1800,7 +1769,7 @@ const inspectorTreeHandler = (tres) => (payload) => {
|
|
|
1800
1769
|
* @returns A function that handles inspector state payload updates
|
|
1801
1770
|
*/
|
|
1802
1771
|
const inspectorStateHandler = (tres, { highlightMesh, prevInstance }) => (payload) => {
|
|
1803
|
-
if (payload.inspectorId !==
|
|
1772
|
+
if (payload.inspectorId !== "tres:inspector") return;
|
|
1804
1773
|
const highlightMaterial = new MeshBasicMaterial({
|
|
1805
1774
|
color: 11003607,
|
|
1806
1775
|
transparent: true,
|
|
@@ -1862,9 +1831,9 @@ const inspectorStateHandler = (tres, { highlightMesh, prevInstance }) => (payloa
|
|
|
1862
1831
|
const match = payload.nodeId.match(/^context-([^-]+(?:-[^-]+)*)-(.+)$/);
|
|
1863
1832
|
const chainedKey = match ? match[2] : "context";
|
|
1864
1833
|
if (!chainedKey || chainedKey === "context") {
|
|
1865
|
-
payload.state = { object: Object.entries(tres).filter(([key]) => !key.startsWith("_") && key !== "parent").map(([key, value
|
|
1834
|
+
payload.state = { object: Object.entries(tres).filter(([key]) => !key.startsWith("_") && key !== "parent").map(([key, value]) => ({
|
|
1866
1835
|
key,
|
|
1867
|
-
value: isRef(value
|
|
1836
|
+
value: isRef(value) ? value.value : value,
|
|
1868
1837
|
editable: false
|
|
1869
1838
|
})) };
|
|
1870
1839
|
return;
|
|
@@ -1921,7 +1890,7 @@ const editSceneObject = (scene, objectUuid, propertyPath, value) => {
|
|
|
1921
1890
|
* @returns A function that handles inspector state edit payload updates
|
|
1922
1891
|
*/
|
|
1923
1892
|
const inspectorEditStateHandler = (tres) => (payload) => {
|
|
1924
|
-
if (payload.inspectorId ===
|
|
1893
|
+
if (payload.inspectorId === "tres:inspector") {
|
|
1925
1894
|
if (payload.nodeId.includes("scene")) {
|
|
1926
1895
|
const match = payload.nodeId.match(/^scene-(.+)$/);
|
|
1927
1896
|
const uuid = match ? match[1] : null;
|
|
@@ -1930,7 +1899,6 @@ const inspectorEditStateHandler = (tres) => (payload) => {
|
|
|
1930
1899
|
}
|
|
1931
1900
|
}
|
|
1932
1901
|
};
|
|
1933
|
-
|
|
1934
1902
|
//#endregion
|
|
1935
1903
|
//#region src/devtools/plugin.ts
|
|
1936
1904
|
const INSPECTOR_ID = "tres:inspector";
|
|
@@ -1968,10 +1936,9 @@ function registerTresDevtools(app, tres) {
|
|
|
1968
1936
|
api.on.editInspectorState(inspectorEditStateHandler(tres));
|
|
1969
1937
|
});
|
|
1970
1938
|
}
|
|
1971
|
-
|
|
1972
1939
|
//#endregion
|
|
1973
|
-
//#region src/components/Context.vue
|
|
1974
|
-
var
|
|
1940
|
+
//#region src/components/Context.vue
|
|
1941
|
+
var Context_default = /* @__PURE__ */ defineComponent({
|
|
1975
1942
|
__name: "Context",
|
|
1976
1943
|
props: {
|
|
1977
1944
|
camera: {
|
|
@@ -2115,14 +2082,14 @@ var Context_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
2115
2082
|
const scene = shallowRef(new Scene());
|
|
2116
2083
|
const instance = getCurrentInstance();
|
|
2117
2084
|
extend(THREE);
|
|
2118
|
-
const createInternalComponent = (context
|
|
2085
|
+
const createInternalComponent = (context, hmrTick) => defineComponent({ setup() {
|
|
2119
2086
|
const ctx = getCurrentInstance()?.appContext;
|
|
2120
2087
|
if (ctx) ctx.app = instance?.appContext.app;
|
|
2121
2088
|
const provides = {};
|
|
2122
|
-
function mergeProvides(currentInstance
|
|
2123
|
-
if (!currentInstance
|
|
2124
|
-
if (currentInstance
|
|
2125
|
-
if (currentInstance
|
|
2089
|
+
function mergeProvides(currentInstance) {
|
|
2090
|
+
if (!currentInstance) return;
|
|
2091
|
+
if (currentInstance.parent) mergeProvides(currentInstance.parent);
|
|
2092
|
+
if (currentInstance.provides) Object.assign(provides, currentInstance.provides);
|
|
2126
2093
|
}
|
|
2127
2094
|
if (instance?.parent && props.enableProvideBridge) {
|
|
2128
2095
|
mergeProvides(instance.parent);
|
|
@@ -2130,42 +2097,42 @@ var Context_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
2130
2097
|
provide(key, provides[key]);
|
|
2131
2098
|
});
|
|
2132
2099
|
}
|
|
2133
|
-
provide(INJECTION_KEY, context
|
|
2100
|
+
provide(INJECTION_KEY, context);
|
|
2134
2101
|
provide("extend", extend);
|
|
2135
|
-
if (typeof window !== "undefined" && ctx?.app) registerTresDevtools(ctx?.app, context
|
|
2102
|
+
if (typeof window !== "undefined" && ctx?.app) registerTresDevtools(ctx?.app, context);
|
|
2136
2103
|
return () => {
|
|
2137
2104
|
hmrTick.value;
|
|
2138
2105
|
return h(Fragment, null, slots.default?.() ?? []);
|
|
2139
2106
|
};
|
|
2140
2107
|
} });
|
|
2141
|
-
const mountCustomRenderer = (context
|
|
2108
|
+
const mountCustomRenderer = (context) => {
|
|
2142
2109
|
const canvas = props.canvas;
|
|
2143
2110
|
if (getRoot(canvas)) return;
|
|
2144
2111
|
const hmrTick = ref(0);
|
|
2145
|
-
const internalComponent = createInternalComponent(context
|
|
2146
|
-
const renderer
|
|
2147
|
-
context
|
|
2112
|
+
const internalComponent = createInternalComponent(context, hmrTick);
|
|
2113
|
+
const renderer = createRenderer(nodeOps({
|
|
2114
|
+
context,
|
|
2148
2115
|
options: props.customRendererOptions
|
|
2149
2116
|
}));
|
|
2150
|
-
renderer
|
|
2117
|
+
renderer.render(h(internalComponent), scene.value);
|
|
2151
2118
|
setRoot(canvas, {
|
|
2152
|
-
renderer
|
|
2119
|
+
renderer,
|
|
2153
2120
|
internalComponent,
|
|
2154
2121
|
hmrTick,
|
|
2155
|
-
context
|
|
2122
|
+
context
|
|
2156
2123
|
});
|
|
2157
2124
|
};
|
|
2158
|
-
const dispose = (context
|
|
2159
|
-
disposeObject3D(context
|
|
2125
|
+
const dispose = (context, force = false) => {
|
|
2126
|
+
disposeObject3D(context.scene.value);
|
|
2160
2127
|
if (force) {
|
|
2161
|
-
context
|
|
2162
|
-
if (context
|
|
2163
|
-
context
|
|
2164
|
-
context
|
|
2128
|
+
context.renderer.instance.dispose();
|
|
2129
|
+
if (context.renderer.instance instanceof WebGLRenderer) {
|
|
2130
|
+
context.renderer.instance.renderLists.dispose();
|
|
2131
|
+
context.renderer.instance.forceContextLoss();
|
|
2165
2132
|
}
|
|
2166
2133
|
}
|
|
2167
2134
|
scene.value.__tres = {
|
|
2168
|
-
root: context
|
|
2135
|
+
root: context,
|
|
2169
2136
|
objects: [],
|
|
2170
2137
|
isUnmounting: true
|
|
2171
2138
|
};
|
|
@@ -2197,14 +2164,14 @@ var Context_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
2197
2164
|
const { camera, renderer } = context.value;
|
|
2198
2165
|
const { registerCamera, cameras, activeCamera, deregisterCamera } = camera;
|
|
2199
2166
|
const addDefaultCamera = () => {
|
|
2200
|
-
const camera
|
|
2201
|
-
camera
|
|
2202
|
-
camera
|
|
2203
|
-
registerCamera(camera
|
|
2167
|
+
const camera = new PerspectiveCamera(45, window.innerWidth / window.innerHeight, .1, 1e3);
|
|
2168
|
+
camera.position.set(3, 3, 3);
|
|
2169
|
+
camera.lookAt(0, 0, 0);
|
|
2170
|
+
registerCamera(camera);
|
|
2204
2171
|
const unwatch = watchEffect(() => {
|
|
2205
2172
|
if (cameras.value.length >= 2) {
|
|
2206
|
-
camera
|
|
2207
|
-
deregisterCamera(camera
|
|
2173
|
+
camera.removeFromParent();
|
|
2174
|
+
deregisterCamera(camera);
|
|
2208
2175
|
unwatch?.();
|
|
2209
2176
|
}
|
|
2210
2177
|
});
|
|
@@ -2257,15 +2224,12 @@ var Context_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
2257
2224
|
return () => {};
|
|
2258
2225
|
}
|
|
2259
2226
|
});
|
|
2260
|
-
|
|
2261
|
-
//#endregion
|
|
2262
|
-
//#region src/components/Context.vue
|
|
2263
|
-
var Context_default = Context_vue_vue_type_script_setup_true_lang_default;
|
|
2264
|
-
|
|
2265
2227
|
//#endregion
|
|
2266
2228
|
//#region src/components/TresCanvas.vue?vue&type=script&setup=true&lang.ts
|
|
2267
2229
|
const _hoisted_1 = ["data-scene", "data-tres"];
|
|
2268
|
-
|
|
2230
|
+
//#endregion
|
|
2231
|
+
//#region src/components/TresCanvas.vue
|
|
2232
|
+
var TresCanvas_default = /* @__PURE__ */ defineComponent({
|
|
2269
2233
|
__name: "TresCanvas",
|
|
2270
2234
|
props: {
|
|
2271
2235
|
camera: {
|
|
@@ -2476,11 +2440,6 @@ var TresCanvas_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
2476
2440
|
};
|
|
2477
2441
|
}
|
|
2478
2442
|
});
|
|
2479
|
-
|
|
2480
|
-
//#endregion
|
|
2481
|
-
//#region src/components/TresCanvas.vue
|
|
2482
|
-
var TresCanvas_default = TresCanvas_vue_vue_type_script_setup_true_lang_default;
|
|
2483
|
-
|
|
2484
2443
|
//#endregion
|
|
2485
2444
|
//#region src/utils/normalize.ts
|
|
2486
2445
|
function normalizeVectorFlexibleParam(value) {
|
|
@@ -2501,7 +2460,6 @@ function normalizeColor(value) {
|
|
|
2501
2460
|
if (Array.isArray(value)) return new Color(...value);
|
|
2502
2461
|
return new Color(value);
|
|
2503
2462
|
}
|
|
2504
|
-
|
|
2505
2463
|
//#endregion
|
|
2506
2464
|
//#region src/utils/template-compiler-options.ts
|
|
2507
2465
|
const whitelist = [
|
|
@@ -2512,11 +2470,9 @@ const whitelist = [
|
|
|
2512
2470
|
"TresPortal"
|
|
2513
2471
|
];
|
|
2514
2472
|
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
2473
|
//#endregion
|
|
2518
|
-
//#region src/components/TresPortal.vue
|
|
2519
|
-
var
|
|
2474
|
+
//#region src/components/TresPortal.vue
|
|
2475
|
+
var TresPortal_default = /* @__PURE__ */ defineComponent({
|
|
2520
2476
|
__name: "TresPortal",
|
|
2521
2477
|
props: {
|
|
2522
2478
|
to: {
|
|
@@ -2537,21 +2493,16 @@ var TresPortal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
2537
2493
|
};
|
|
2538
2494
|
}
|
|
2539
2495
|
});
|
|
2540
|
-
|
|
2541
|
-
//#endregion
|
|
2542
|
-
//#region src/components/TresPortal.vue
|
|
2543
|
-
var TresPortal_default = TresPortal_vue_vue_type_script_setup_true_lang_default;
|
|
2544
|
-
|
|
2545
2496
|
//#endregion
|
|
2546
2497
|
//#region src/directives/vDistanceTo.ts
|
|
2547
2498
|
let arrowHelper = null;
|
|
2548
2499
|
const vDistanceTo = {
|
|
2549
2500
|
updated: (el, binding) => {
|
|
2550
|
-
const extractBindingPosition = (binding
|
|
2551
|
-
let observer
|
|
2552
|
-
if (binding
|
|
2553
|
-
if (Array.isArray(binding
|
|
2554
|
-
return observer
|
|
2501
|
+
const extractBindingPosition = (binding) => {
|
|
2502
|
+
let observer = binding.value;
|
|
2503
|
+
if (binding.value && isMesh(binding.value)) observer = binding.value.position;
|
|
2504
|
+
if (Array.isArray(binding.value)) observer = new Vector3(...observer);
|
|
2505
|
+
return observer;
|
|
2555
2506
|
};
|
|
2556
2507
|
const observer = extractBindingPosition(binding);
|
|
2557
2508
|
if (!observer) {
|
|
@@ -2577,7 +2528,6 @@ const vDistanceTo = {
|
|
|
2577
2528
|
if (el.parent) el.parent.remove(arrowHelper);
|
|
2578
2529
|
}
|
|
2579
2530
|
};
|
|
2580
|
-
|
|
2581
2531
|
//#endregion
|
|
2582
2532
|
//#region src/directives/vLightHelper.ts
|
|
2583
2533
|
let CurrentHelper;
|
|
@@ -2613,7 +2563,6 @@ const vLightHelper = {
|
|
|
2613
2563
|
if (el.parent) el.parent.remove(currentInstance);
|
|
2614
2564
|
}
|
|
2615
2565
|
};
|
|
2616
|
-
|
|
2617
2566
|
//#endregion
|
|
2618
2567
|
//#region src/directives/vLog.ts
|
|
2619
2568
|
const vLog = { mounted: (el, binding) => {
|
|
@@ -2623,13 +2572,10 @@ const vLog = { mounted: (el, binding) => {
|
|
|
2623
2572
|
}
|
|
2624
2573
|
console.log("v-log", el);
|
|
2625
2574
|
} };
|
|
2626
|
-
|
|
2627
2575
|
//#endregion
|
|
2628
2576
|
//#region src/index.ts
|
|
2629
2577
|
const plugin = { install(app) {
|
|
2630
2578
|
app.component("TresCanvas", TresCanvas_default);
|
|
2631
2579
|
} };
|
|
2632
|
-
var src_default = plugin;
|
|
2633
|
-
|
|
2634
2580
|
//#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,
|
|
2581
|
+
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 };
|