-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.js
More file actions
82 lines (72 loc) · 2.59 KB
/
Copy pathindex.js
File metadata and controls
82 lines (72 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// Third party imports
// Local imports
import { useMeshPointsColorStyle } from "./color";
import { useMeshPointsCommonStyle } from "./common";
import { useMeshPointsSizeStyle } from "./size";
import { useMeshPointsVertexAttributeStyle } from "./vertex";
import { useMeshPointsVisibilityStyle } from "./visibility";
// Local constants
function useMeshPointsColoringStyle() {
const meshPointsCommonStyle = useMeshPointsCommonStyle();
const meshPointsColorStyle = useMeshPointsColorStyle();
const meshPointsVertexAttributeStyle = useMeshPointsVertexAttributeStyle();
function meshPointsColoring(id) {
return meshPointsCommonStyle.meshPointsColoring(id);
}
function meshPointsActiveColoring(id) {
return meshPointsColoring(id).active;
}
async function setMeshPointsActiveColoring(id, type) {
await meshPointsCommonStyle.mutateMeshPointsStyle(id, {
coloring: { active: type },
});
if (type === "constant") {
return meshPointsColorStyle.setMeshPointsColor(id, meshPointsColorStyle.meshPointsColor(id));
}
if (type === "vertex") {
const name = meshPointsVertexAttributeStyle.meshPointsVertexAttributeName(id);
const { colorMap } = meshPointsVertexAttributeStyle.meshPointsVertexAttributeStoredConfig(
id,
name,
);
return Promise.all([
meshPointsVertexAttributeStyle.setMeshPointsVertexAttributeName(id, name),
meshPointsVertexAttributeStyle.setMeshPointsVertexAttributeColorMap(id, colorMap),
]);
}
throw new Error(`Unknown mesh points coloring type: ${type}`);
}
return {
meshPointsColoring,
meshPointsActiveColoring,
setMeshPointsActiveColoring,
...meshPointsColorStyle,
...meshPointsVertexAttributeStyle,
};
}
export function useMeshPointsStyle() {
const meshPointsCommonStyle = useMeshPointsCommonStyle();
const meshPointsVisibility = useMeshPointsVisibilityStyle();
const meshPointsSizeStyle = useMeshPointsSizeStyle();
const meshPointsColoringStyle = useMeshPointsColoringStyle();
function applyMeshPointsStyle(id) {
return Promise.all([
meshPointsVisibility.setMeshPointsVisibility(
id,
meshPointsVisibility.meshPointsVisibility(id),
),
meshPointsSizeStyle.setMeshPointsSize(id, meshPointsSizeStyle.meshPointsSize(id)),
meshPointsColoringStyle.setMeshPointsActiveColoring(
id,
meshPointsColoringStyle.meshPointsActiveColoring(id),
),
]);
}
return {
...meshPointsCommonStyle,
...meshPointsColoringStyle,
applyMeshPointsStyle,
...meshPointsVisibility,
...meshPointsSizeStyle,
};
}