viral-viewer-2 5.4.8 → 5.4.9
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BufferGeometry, InstancedMesh, Material, Mesh } from "three";
|
|
2
2
|
export declare class ViralInstancedMesh extends InstancedMesh {
|
|
3
|
-
private
|
|
4
|
-
|
|
3
|
+
private _originMesh;
|
|
4
|
+
private _isOrigin;
|
|
5
5
|
overrideMeshes: Mesh<BufferGeometry, Material>[];
|
|
6
6
|
/**
|
|
7
7
|
*
|
|
@@ -10,7 +10,7 @@ export declare class ViralInstancedMesh extends InstancedMesh {
|
|
|
10
10
|
* @param count number of instance in mesh
|
|
11
11
|
* @param _host share the same logic with parent, when we push temp mesh into scene, we must binding original viral instanced mesh to host to recall/ reprogress later
|
|
12
12
|
*/
|
|
13
|
-
constructor(geometry: BufferGeometry, materials: Material[] | Material, count: number
|
|
13
|
+
constructor(geometry: BufferGeometry, materials: Material[] | Material, count: number);
|
|
14
14
|
hideAts(indexs: number[]): void;
|
|
15
15
|
isolateAts(indexs: number[]): void;
|
|
16
16
|
overrideMaterialAts(indexs: number[], material: Material): void;
|
|
@@ -10,53 +10,55 @@ class ViralInstancedMesh extends three_1.InstancedMesh {
|
|
|
10
10
|
* @param count number of instance in mesh
|
|
11
11
|
* @param _host share the same logic with parent, when we push temp mesh into scene, we must binding original viral instanced mesh to host to recall/ reprogress later
|
|
12
12
|
*/
|
|
13
|
-
constructor(geometry, materials, count
|
|
13
|
+
constructor(geometry, materials, count) {
|
|
14
14
|
super(geometry, materials, count);
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
15
|
+
this._originMesh = null;
|
|
16
|
+
this._isOrigin = true;
|
|
17
17
|
this.overrideMeshes = [];
|
|
18
|
-
if (_host)
|
|
19
|
-
this.host = _host;
|
|
20
18
|
//before change anything, keep original mesh
|
|
21
19
|
}
|
|
22
20
|
hideAts(indexs) {
|
|
23
|
-
|
|
21
|
+
//check if current mesh is origin or not
|
|
22
|
+
//if this is origin, cop to temp attributes first
|
|
23
|
+
if (this._isOrigin) {
|
|
24
|
+
this._originMesh = this.clone();
|
|
25
|
+
this._originMesh.instanceColor = this.instanceColor;
|
|
26
|
+
this._originMesh.instanceMatrix = this.instanceMatrix;
|
|
27
|
+
this._isOrigin = false;
|
|
28
|
+
}
|
|
24
29
|
if (indexs.length > 0) {
|
|
25
|
-
let numberRemain = this.count - indexs.length;
|
|
26
|
-
this.tempInstancedMesh = new ViralInstancedMesh(this.geometry, this.material, numberRemain, this);
|
|
27
|
-
this.tempInstancedMesh.instanceColor = this.instanceColor;
|
|
28
|
-
this.tempInstancedMesh.instanceMatrix = this.instanceMatrix;
|
|
29
30
|
if (this.instanceColor != null) {
|
|
30
|
-
//get original instance color then remove later
|
|
31
31
|
let instanceColorArray = Array.from(this.instanceColor.array);
|
|
32
32
|
for (let index = 0; index < indexs.length; index++) {
|
|
33
33
|
const removedIndex = indexs[index] * this.instanceColor.itemSize -
|
|
34
34
|
index * this.instanceColor.itemSize;
|
|
35
35
|
instanceColorArray.splice(removedIndex, this.instanceColor.itemSize);
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
// update instance color
|
|
38
|
+
this.instanceColor = new three_1.InstancedBufferAttribute(new Float32Array(instanceColorArray), this.instanceColor.itemSize);
|
|
38
39
|
}
|
|
39
40
|
if (this.instanceMatrix != null) {
|
|
40
|
-
//get original instance matrix then remove later
|
|
41
41
|
let instanceMatrixArray = Array.from(this.instanceMatrix.array);
|
|
42
42
|
for (let index = 0; index < indexs.length; index++) {
|
|
43
43
|
const removedIndex = indexs[index] * this.instanceMatrix.itemSize -
|
|
44
44
|
index * this.instanceMatrix.itemSize;
|
|
45
45
|
instanceMatrixArray.splice(removedIndex, this.instanceMatrix.itemSize);
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
// update instance matrix
|
|
48
|
+
this.instanceMatrix = new three_1.InstancedBufferAttribute(new Float32Array(instanceMatrixArray), this.instanceMatrix.itemSize);
|
|
48
49
|
}
|
|
49
|
-
//final, remove main from parent and add tempmesh
|
|
50
|
-
(_a = this.parent) === null || _a === void 0 ? void 0 : _a.add(this.tempInstancedMesh);
|
|
51
|
-
this.removeFromParent();
|
|
52
50
|
}
|
|
53
51
|
}
|
|
54
52
|
isolateAts(indexs) {
|
|
55
|
-
|
|
53
|
+
//check if current mesh is origin or not
|
|
54
|
+
//if this is origin, cop to temp attributes first
|
|
55
|
+
if (this._isOrigin) {
|
|
56
|
+
this._originMesh = this.clone();
|
|
57
|
+
this._originMesh.instanceColor = this.instanceColor;
|
|
58
|
+
this._originMesh.instanceMatrix = this.instanceMatrix;
|
|
59
|
+
this._isOrigin = false;
|
|
60
|
+
}
|
|
56
61
|
if (indexs.length > 0) {
|
|
57
|
-
this.tempInstancedMesh = new ViralInstancedMesh(this.geometry, this.material, indexs.length, this);
|
|
58
|
-
this.tempInstancedMesh.instanceColor = this.instanceColor;
|
|
59
|
-
this.tempInstancedMesh.instanceMatrix = this.instanceMatrix;
|
|
60
62
|
if (this.instanceColor != null) {
|
|
61
63
|
let isolateInstanceColorArray = [];
|
|
62
64
|
//get original instance color then remove later
|
|
@@ -65,7 +67,7 @@ class ViralInstancedMesh extends three_1.InstancedMesh {
|
|
|
65
67
|
const startIndex = indexs[index] * this.instanceColor.itemSize;
|
|
66
68
|
isolateInstanceColorArray = isolateInstanceColorArray.concat(instanceColorArray.slice(startIndex, startIndex + this.instanceColor.itemSize));
|
|
67
69
|
}
|
|
68
|
-
this.
|
|
70
|
+
this.instanceColor = new three_1.InstancedBufferAttribute(new Float32Array(isolateInstanceColorArray), this.instanceColor.itemSize);
|
|
69
71
|
}
|
|
70
72
|
if (this.instanceMatrix != null) {
|
|
71
73
|
let isolateInstanceMatrixArray = [];
|
|
@@ -75,11 +77,8 @@ class ViralInstancedMesh extends three_1.InstancedMesh {
|
|
|
75
77
|
const startIndex = indexs[index] * this.instanceMatrix.itemSize;
|
|
76
78
|
isolateInstanceMatrixArray = isolateInstanceMatrixArray.concat(instanceMatrixArray.slice(startIndex, startIndex + this.instanceMatrix.itemSize));
|
|
77
79
|
}
|
|
78
|
-
this.
|
|
80
|
+
this.instanceMatrix = new three_1.InstancedBufferAttribute(new Float32Array(isolateInstanceMatrixArray), this.instanceMatrix.itemSize);
|
|
79
81
|
}
|
|
80
|
-
//final, remove main from parent and add tempmesh
|
|
81
|
-
(_a = this.parent) === null || _a === void 0 ? void 0 : _a.add(this.tempInstancedMesh);
|
|
82
|
-
this.removeFromParent();
|
|
83
82
|
}
|
|
84
83
|
}
|
|
85
84
|
overrideMaterialAts(indexs, material) {
|
|
@@ -96,7 +95,6 @@ class ViralInstancedMesh extends three_1.InstancedMesh {
|
|
|
96
95
|
this.hideAts(indexs);
|
|
97
96
|
}
|
|
98
97
|
reverseToOriginal() {
|
|
99
|
-
var _a;
|
|
100
98
|
if (this.overrideMeshes.length > 0) {
|
|
101
99
|
for (let index = 0; index < this.overrideMeshes.length; index++) {
|
|
102
100
|
const mesh = this.overrideMeshes[index];
|
|
@@ -106,14 +104,11 @@ class ViralInstancedMesh extends three_1.InstancedMesh {
|
|
|
106
104
|
}
|
|
107
105
|
this.overrideMeshes = [];
|
|
108
106
|
}
|
|
109
|
-
if (this.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
this.
|
|
114
|
-
this.tempInstancedMesh.geometry.dispose();
|
|
115
|
-
this.tempInstancedMesh.dispose();
|
|
116
|
-
this.tempInstancedMesh = null;
|
|
107
|
+
if (!this._isOrigin && this._originMesh) {
|
|
108
|
+
this.instanceColor = this._originMesh.instanceColor;
|
|
109
|
+
this.instanceMatrix = this._originMesh.instanceMatrix;
|
|
110
|
+
this._isOrigin = true;
|
|
111
|
+
this._originMesh.dispose();
|
|
117
112
|
}
|
|
118
113
|
}
|
|
119
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viral-instanced-mesh.js","sourceRoot":"","sources":["../../../src/components/custom-objects/viral-instanced-mesh.ts"],"names":[],"mappings":";;;AAAA,iCAOe;AAEf,MAAa,kBAAmB,SAAQ,qBAAa;IAInD;;;;;;OAMG;IACH,YACE,QAAwB,EACxB,SAAgC,EAChC,KAAa
|
|
1
|
+
{"version":3,"file":"viral-instanced-mesh.js","sourceRoot":"","sources":["../../../src/components/custom-objects/viral-instanced-mesh.ts"],"names":[],"mappings":"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"}
|