@anov/3d 0.0.4-alpha25 → 0.0.4-alpha26
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/factory/3d.d.ts +2 -2
- package/dist/factory/3d.js +2 -2
- package/dist/factory/3d.js.map +1 -1
- package/dist/factory/regionData.d.ts +2 -0
- package/dist/factory/regionData.js +376 -59
- package/dist/factory/regionData.js.map +1 -1
- package/dist/factory/unit/circle.js +1 -1
- package/dist/factory/unit/circle.js.map +1 -1
- package/dist/factory/unit/cylinder.js +41 -6
- package/dist/factory/unit/cylinder.js.map +1 -1
- package/dist/factory/unit/poi copy.d.ts +15 -0
- package/dist/factory/unit/poi copy.js +144 -0
- package/dist/factory/unit/poi copy.js.map +1 -0
- package/dist/factory/utils/fontMesh.js +2 -2
- package/dist/factory/utils/fontMesh.js.map +1 -1
- package/package.json +2 -2
package/dist/factory/3d.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ export declare enum SceneStyle {
|
|
|
11
11
|
'tech' = 1
|
|
12
12
|
}
|
|
13
13
|
export declare enum SceneTag {
|
|
14
|
-
'overview' = "
|
|
15
|
-
'people-management' = "
|
|
14
|
+
'overview' = "Overview",
|
|
15
|
+
'people-management' = "Person"
|
|
16
16
|
}
|
|
17
17
|
declare class Factory3D {
|
|
18
18
|
position: Vector3;
|
package/dist/factory/3d.js
CHANGED
|
@@ -22,8 +22,8 @@ export var SceneStyle;
|
|
|
22
22
|
})(SceneStyle || (SceneStyle = {}));
|
|
23
23
|
export var SceneTag;
|
|
24
24
|
(function (SceneTag) {
|
|
25
|
-
SceneTag["overview"] = "
|
|
26
|
-
SceneTag["people-management"] = "
|
|
25
|
+
SceneTag["overview"] = "Overview";
|
|
26
|
+
SceneTag["people-management"] = "Person";
|
|
27
27
|
})(SceneTag || (SceneTag = {}));
|
|
28
28
|
var Factory3D = /*#__PURE__*/function () {
|
|
29
29
|
function Factory3D(option) {
|
package/dist/factory/3d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EquirectangularReflectionMapping","InteractionManager","ModelLoader","Vector3","lib","use","utils","Camera","finirMaterialV1","handleUnit","globalEvents","switchMaterial","debounce","load","rgbeLoader","RGBELoader","emitter","SceneStyle","SceneTag","Factory3D","option","overview","real","Map","globalEventsAgent","scene","cameraUtil","camera","controls","control","model","loadGLTF","gltf","group","clone","traverse","child","type","material","add","visible","style","tech","techModel","realModl","interactionManager","renderer","domElement","storeManagement","set","useframe","update","addEventListener","e","position","point","call","setPath","texture","mapping","boxSkeyTexture","background","environment","params","toggleState","endCallBack","speed","start","end","callback","tag","toggleSceneStyle","wall","wallMesh","forEach","mesh","cylinder","cylinderMesh","poi","reset","circle","remove","poiMesh","setVisible","eventKey","on","args","eventHandleFn","get","fn","eventName","handleFn","push"],"sources":["../../src/factory/3d.ts"],"sourcesContent":["import type { DataTexture, Group, Material, Object3D, OrbitControls, SceneControl } from '@anov/3d-core'\nimport { EquirectangularReflectionMapping, InteractionManager, ModelLoader, Vector3, lib, use, utils } from '@anov/3d-core'\nimport { Camera } from '@anov/3d-ability'\nimport { finirMaterialV1 } from './utils/finirMaterial'\nimport handleUnit from './unit'\nimport type WallManage from './unit/wall'\nimport type LineManage from './unit/line'\nimport type CylinderManage from './unit/cylinder'\nimport type PoiManage from './unit/poi'\nimport type CircleManage from './unit/circle'\nimport type AreaBoundingBoxManage from './unit/areaBoundingBox'\nimport { globalEvents } from './globalData'\nimport switchMaterial from './utils/switchMaterial'\nimport { debounce } from './utils'\n\ntype factory3dOption = {\n model?: string\n environment: string\n}\nconst load = new ModelLoader()\nconst rgbeLoader = new lib.RGBELoader()\nconst { emitter } = utils\n\nexport enum SceneStyle {\n 'real',\n 'tech',\n}\n\nexport enum SceneTag {\n 'overview' = 'overview',\n 'people-management' = 'people-management',\n}\n\nclass Factory3D {\n position: Vector3 = new Vector3(0, 0, 0)\n scene!: SceneControl\n control!: OrbitControls\n cameraUtil!: Camera\n\n public tag = SceneTag.overview\n public style: SceneStyle = SceneStyle.real\n private option: factory3dOption\n private wall!: WallManage\n private line!: LineManage\n private cylinder!: CylinderManage\n private poi!: PoiManage\n private circle!: CircleManage\n areaBoundingBox!: AreaBoundingBoxManage\n\n private realModl!: Group\n private techModel!: Group\n\n private eventHandleFn: Map<string, ((args?: any) => void)[]> = new Map()\n\n private toggleState = true\n private boxSkeyTexture!: DataTexture\n\n interactionManager!: InteractionManager\n\n constructor(option: factory3dOption) {\n this.option = option\n this.globalEventsAgent()\n }\n\n /**\n * render factory 3d scene\n */\n renderScene(scene: SceneControl) {\n this.scene = scene\n this.cameraUtil = new Camera(scene.camera!, scene.controls!)\n this.control = scene.controls!\n\n this.option.model && load.loadGLTF(this.option.model, false, true, './draco/', (gltf) => {\n const group = gltf.scene.clone()\n group.traverse((child) => {\n if (child.type === 'Mesh') {\n // @ts-ignore\n child.material = finirMaterialV1\n }\n })\n\n this.scene.add(gltf.scene)\n this.scene.add(group)\n\n gltf.scene.visible = SceneStyle.real === this.style\n group.visible = SceneStyle.tech === this.style\n\n this.techModel = group as Group\n this.realModl = gltf.scene as Group\n\n const interactionManager = new InteractionManager(\n this.scene.renderer,\n this.scene.camera,\n this.scene.renderer.domElement, // Modified By LM this.scene.cssRenderer.cssRenderer.domElement,\n )\n\n this.interactionManager = interactionManager\n\n utils.storeManagement.set('interactionManager', interactionManager)\n\n use.useframe(() => {\n interactionManager.update()\n })\n\n // interactionManager.add(gltf.scene)\n\n gltf.scene.addEventListener('click', (e) => {\n this.position = e.point\n })\n\n handleUnit.call(this)\n\n return gltf\n })\n\n rgbeLoader.setPath('./').load('quarry_01_1k.hdr', (texture) => {\n texture.mapping = EquirectangularReflectionMapping\n\n this.boxSkeyTexture = texture\n this.scene.scene.background = texture\n this.scene.scene.environment = texture\n })\n }\n\n /**\n * toggle SceneStyle\n * @param params\n */\n private toggleSceneStyle(params: SceneStyle) {\n if (this.style === params)\n return\n\n if (params === SceneStyle.tech)\n this.toggleState = false\n\n this.style = params\n\n const endCallBack = debounce(() => {\n this.realModl.visible = false\n this.toggleState = true\n })\n\n if (this.style === SceneStyle.tech) {\n this.realModl.traverse((child) => {\n if (child.type === 'Mesh') {\n switchMaterial(child as Object3D & { material: Material }, finirMaterialV1, {\n speed: 40,\n start: -500,\n end: 2000,\n callback: endCallBack,\n })\n }\n })\n }\n\n if (params === SceneStyle.real) {\n this.realModl.visible = SceneStyle.real === this.style\n this.scene.scene.background = this.boxSkeyTexture\n }\n else {\n this.scene.scene.background = null\n }\n\n this.techModel.visible = SceneStyle.tech === this.style\n }\n\n public toggleTag(tag: SceneTag) {\n if (this.toggleState === false)\n return\n switch (tag) {\n case SceneTag.overview:\n this.tag = SceneTag.overview\n this.toggleSceneStyle(SceneStyle.real)\n\n this.wall.wallMesh.forEach((mesh) => {\n mesh.visible = true\n })\n\n // this.line.lineMesh.forEach((mesh) => {\n // mesh.visible = false\n // })\n\n this.cylinder.cylinderMesh.forEach((mesh) => {\n mesh.visible = false\n })\n this.poi.reset()\n this.circle.remove()\n break\n case SceneTag['people-management']:\n this.tag = SceneTag['people-management']\n this.toggleSceneStyle(SceneStyle.tech)\n\n this.wall.wallMesh.forEach((mesh) => {\n mesh.visible = false\n })\n\n this.poi.poiMesh.forEach((mesh) => {\n mesh.visible = false\n })\n\n // this.line.lineMesh.forEach((mesh) => {\n // mesh.visible = true\n // })\n\n this.cylinder.cylinderMesh.forEach((mesh) => {\n mesh.visible = true\n })\n this.poi.setVisible(false)\n break\n }\n }\n\n private globalEventsAgent() {\n globalEvents.forEach((eventKey) => {\n emitter.on(eventKey, (args) => {\n this.eventHandleFn.get(eventKey)?.forEach((fn) => {\n fn(args)\n })\n })\n })\n }\n\n addEventListener(eventName: string, handleFn: (args?: any) => void) {\n if (this.eventHandleFn.get(eventName))\n this.eventHandleFn.get(eventName).push(handleFn)\n\n else\n this.eventHandleFn.set(eventName, [handleFn])\n }\n}\n\nexport default Factory3D"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["EquirectangularReflectionMapping","InteractionManager","ModelLoader","Vector3","lib","use","utils","Camera","finirMaterialV1","handleUnit","globalEvents","switchMaterial","debounce","load","rgbeLoader","RGBELoader","emitter","SceneStyle","SceneTag","Factory3D","option","overview","real","Map","globalEventsAgent","scene","cameraUtil","camera","controls","control","model","loadGLTF","gltf","group","clone","traverse","child","type","material","add","visible","style","tech","techModel","realModl","interactionManager","renderer","domElement","storeManagement","set","useframe","update","addEventListener","e","position","point","call","setPath","texture","mapping","boxSkeyTexture","background","environment","params","toggleState","endCallBack","speed","start","end","callback","tag","toggleSceneStyle","wall","wallMesh","forEach","mesh","cylinder","cylinderMesh","poi","reset","circle","remove","poiMesh","setVisible","eventKey","on","args","eventHandleFn","get","fn","eventName","handleFn","push"],"sources":["../../src/factory/3d.ts"],"sourcesContent":["import type { DataTexture, Group, Material, Object3D, OrbitControls, SceneControl } from '@anov/3d-core'\nimport { EquirectangularReflectionMapping, InteractionManager, ModelLoader, Vector3, lib, use, utils } from '@anov/3d-core'\nimport { Camera } from '@anov/3d-ability'\nimport { finirMaterialV1 } from './utils/finirMaterial'\nimport handleUnit from './unit'\nimport type WallManage from './unit/wall'\nimport type LineManage from './unit/line'\nimport type CylinderManage from './unit/cylinder'\nimport type PoiManage from './unit/poi'\nimport type CircleManage from './unit/circle'\nimport type AreaBoundingBoxManage from './unit/areaBoundingBox'\nimport { globalEvents } from './globalData'\nimport switchMaterial from './utils/switchMaterial'\nimport { debounce } from './utils'\n\ntype factory3dOption = {\n model?: string\n environment: string\n}\nconst load = new ModelLoader()\nconst rgbeLoader = new lib.RGBELoader()\nconst { emitter } = utils\n\nexport enum SceneStyle {\n 'real',\n 'tech',\n}\n\nexport enum SceneTag {\n 'overview' = 'Overview',\n 'people-management' = 'Person',\n}\n\nclass Factory3D {\n position: Vector3 = new Vector3(0, 0, 0)\n scene!: SceneControl\n control!: OrbitControls\n cameraUtil!: Camera\n\n public tag = SceneTag.overview\n public style: SceneStyle = SceneStyle.real\n private option: factory3dOption\n private wall!: WallManage\n private line!: LineManage\n private cylinder!: CylinderManage\n private poi!: PoiManage\n private circle!: CircleManage\n areaBoundingBox!: AreaBoundingBoxManage\n\n private realModl!: Group\n private techModel!: Group\n\n private eventHandleFn: Map<string, ((args?: any) => void)[]> = new Map()\n\n private toggleState = true\n private boxSkeyTexture!: DataTexture\n\n interactionManager!: InteractionManager\n\n constructor(option: factory3dOption) {\n this.option = option\n this.globalEventsAgent()\n }\n\n /**\n * render factory 3d scene\n */\n renderScene(scene: SceneControl) {\n this.scene = scene\n this.cameraUtil = new Camera(scene.camera!, scene.controls!)\n this.control = scene.controls!\n\n this.option.model && load.loadGLTF(this.option.model, false, true, './draco/', (gltf) => {\n const group = gltf.scene.clone()\n group.traverse((child) => {\n if (child.type === 'Mesh') {\n // @ts-ignore\n child.material = finirMaterialV1\n }\n })\n\n this.scene.add(gltf.scene)\n this.scene.add(group)\n\n gltf.scene.visible = SceneStyle.real === this.style\n group.visible = SceneStyle.tech === this.style\n\n this.techModel = group as Group\n this.realModl = gltf.scene as Group\n\n const interactionManager = new InteractionManager(\n this.scene.renderer,\n this.scene.camera,\n this.scene.renderer.domElement, // Modified By LM this.scene.cssRenderer.cssRenderer.domElement,\n )\n\n this.interactionManager = interactionManager\n\n utils.storeManagement.set('interactionManager', interactionManager)\n\n use.useframe(() => {\n interactionManager.update()\n })\n\n // interactionManager.add(gltf.scene)\n\n gltf.scene.addEventListener('click', (e) => {\n this.position = e.point\n })\n\n handleUnit.call(this)\n\n return gltf\n })\n\n rgbeLoader.setPath('./').load('quarry_01_1k.hdr', (texture) => {\n texture.mapping = EquirectangularReflectionMapping\n\n this.boxSkeyTexture = texture\n this.scene.scene.background = texture\n this.scene.scene.environment = texture\n })\n }\n\n /**\n * toggle SceneStyle\n * @param params\n */\n private toggleSceneStyle(params: SceneStyle) {\n if (this.style === params)\n return\n\n if (params === SceneStyle.tech)\n this.toggleState = false\n\n this.style = params\n\n const endCallBack = debounce(() => {\n this.realModl.visible = false\n this.toggleState = true\n })\n\n if (this.style === SceneStyle.tech) {\n this.realModl.traverse((child) => {\n if (child.type === 'Mesh') {\n switchMaterial(child as Object3D & { material: Material }, finirMaterialV1, {\n speed: 40,\n start: -500,\n end: 2000,\n callback: endCallBack,\n })\n }\n })\n }\n\n if (params === SceneStyle.real) {\n this.realModl.visible = SceneStyle.real === this.style\n this.scene.scene.background = this.boxSkeyTexture\n }\n else {\n this.scene.scene.background = null\n }\n\n this.techModel.visible = SceneStyle.tech === this.style\n }\n\n public toggleTag(tag: SceneTag) {\n if (this.toggleState === false)\n return\n switch (tag) {\n case SceneTag.overview:\n this.tag = SceneTag.overview\n this.toggleSceneStyle(SceneStyle.real)\n\n this.wall.wallMesh.forEach((mesh) => {\n mesh.visible = true\n })\n\n // this.line.lineMesh.forEach((mesh) => {\n // mesh.visible = false\n // })\n\n this.cylinder.cylinderMesh.forEach((mesh) => {\n mesh.visible = false\n })\n this.poi.reset()\n this.circle.remove()\n break\n case SceneTag['people-management']:\n this.tag = SceneTag['people-management']\n this.toggleSceneStyle(SceneStyle.tech)\n\n this.wall.wallMesh.forEach((mesh) => {\n mesh.visible = false\n })\n\n this.poi.poiMesh.forEach((mesh) => {\n mesh.visible = false\n })\n\n // this.line.lineMesh.forEach((mesh) => {\n // mesh.visible = true\n // })\n\n this.cylinder.cylinderMesh.forEach((mesh) => {\n mesh.visible = true\n })\n this.poi.setVisible(false)\n break\n }\n }\n\n private globalEventsAgent() {\n globalEvents.forEach((eventKey) => {\n emitter.on(eventKey, (args) => {\n this.eventHandleFn.get(eventKey)?.forEach((fn) => {\n fn(args)\n })\n })\n })\n }\n\n addEventListener(eventName: string, handleFn: (args?: any) => void) {\n if (this.eventHandleFn.get(eventName))\n this.eventHandleFn.get(eventName).push(handleFn)\n\n else\n this.eventHandleFn.set(eventName, [handleFn])\n }\n}\n\nexport default Factory3D"],"mappings":"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"}
|
|
@@ -10,9 +10,58 @@ export var regionMap = {
|
|
|
10
10
|
area: [[-483.562, 0, -225.624], [-145.997, 0, -225.624], [-145.997, 0, -59.401], [-483.562, 0, -59.401]],
|
|
11
11
|
poi: {
|
|
12
12
|
id: '1',
|
|
13
|
-
position: [-
|
|
14
|
-
content: '
|
|
15
|
-
}
|
|
13
|
+
position: [-314.01113070, 0.55000000, -146.54350582],
|
|
14
|
+
content: '通过直馏汽油和加氢石脑油,在催化剂存在的前提下,将原料的烷烃和环烷烃重构成为芳烃。并采用半再生固定床重整工艺,催化剂分段装填及两段混氢技术,装置采用了RIPP的粗汽油制氢技术。'
|
|
15
|
+
},
|
|
16
|
+
people: [{
|
|
17
|
+
id: '7',
|
|
18
|
+
name: '耿笑',
|
|
19
|
+
dep: '设备运维',
|
|
20
|
+
online: true,
|
|
21
|
+
position: [-352.00000000, 0.62500079, -177.20000000]
|
|
22
|
+
}, {
|
|
23
|
+
id: '2',
|
|
24
|
+
name: '李连贵',
|
|
25
|
+
dep: '工艺操作',
|
|
26
|
+
online: true,
|
|
27
|
+
position: [-275.70000000, 0.62500079, -137.10000000]
|
|
28
|
+
}, {
|
|
29
|
+
id: '8',
|
|
30
|
+
name: '吕萌',
|
|
31
|
+
dep: '质量检测',
|
|
32
|
+
online: true,
|
|
33
|
+
position: [-365.40000000, 0.62500079, -80.60000000]
|
|
34
|
+
}, {
|
|
35
|
+
id: '1',
|
|
36
|
+
name: '宋玉',
|
|
37
|
+
dep: '质量检测',
|
|
38
|
+
online: true,
|
|
39
|
+
position: [-436.90000000, 0.62500079, -121.50000000]
|
|
40
|
+
}, {
|
|
41
|
+
id: '5',
|
|
42
|
+
name: '王小雨',
|
|
43
|
+
dep: '运输装卸',
|
|
44
|
+
online: true,
|
|
45
|
+
position: [-238.70000000, 0.62500079, -205.10000000]
|
|
46
|
+
}, {
|
|
47
|
+
id: '6',
|
|
48
|
+
name: '张建国',
|
|
49
|
+
dep: '原料加工',
|
|
50
|
+
online: true,
|
|
51
|
+
position: [-436.50000000, 0.62500079, -182.30000000]
|
|
52
|
+
}, {
|
|
53
|
+
id: '3',
|
|
54
|
+
name: '张小萌',
|
|
55
|
+
dep: '生产技术',
|
|
56
|
+
online: true,
|
|
57
|
+
position: [-204.80000000, 0.62500079, -150.10000000]
|
|
58
|
+
}, {
|
|
59
|
+
id: '4',
|
|
60
|
+
name: '朱正',
|
|
61
|
+
dep: '设备运维',
|
|
62
|
+
online: true,
|
|
63
|
+
position: [-302.20000000, 0.62500079, -117.90000000]
|
|
64
|
+
}]
|
|
16
65
|
},
|
|
17
66
|
reduction: {
|
|
18
67
|
id: '2',
|
|
@@ -20,9 +69,52 @@ export var regionMap = {
|
|
|
20
69
|
area: [[-140.123, 0, -225.604], [206.547, 0, -225.624], [206.547, 0, -59.401], [-140.123, 0, -59.401]],
|
|
21
70
|
poi: {
|
|
22
71
|
id: '2',
|
|
23
|
-
position: [
|
|
24
|
-
content: '
|
|
25
|
-
}
|
|
72
|
+
position: [28.89784048, 0.55000000, -144.28157517],
|
|
73
|
+
content: '主要包括三个工序:原油的脱盐、脱水;常压蒸馏;减压蒸馏。从油田送往炼油厂的原油往往含盐(主要是氧化物)带水(溶于油或呈乳化状态),可导致设备的腐蚀,在设备内壁结垢和影响成品油的组成,需在加工前脱除。'
|
|
74
|
+
},
|
|
75
|
+
people: [{
|
|
76
|
+
id: '12',
|
|
77
|
+
name: '才新梁',
|
|
78
|
+
dep: '运输装卸',
|
|
79
|
+
online: true,
|
|
80
|
+
position: [26.50000000, 0.62500079, -155.00000000]
|
|
81
|
+
}, {
|
|
82
|
+
id: '13',
|
|
83
|
+
name: '何超盈',
|
|
84
|
+
dep: '生产技术',
|
|
85
|
+
online: true,
|
|
86
|
+
position: [198.50000000, 0.62500079, -169.20000000]
|
|
87
|
+
}, {
|
|
88
|
+
id: '11',
|
|
89
|
+
name: '李大为',
|
|
90
|
+
dep: '质量检测',
|
|
91
|
+
online: true,
|
|
92
|
+
position: [-79.80000000, 0.62500079, -218.20000000]
|
|
93
|
+
}, {
|
|
94
|
+
id: '15',
|
|
95
|
+
name: '孙建连',
|
|
96
|
+
dep: '工艺操作',
|
|
97
|
+
online: true,
|
|
98
|
+
position: [-19.50000000, 0.62500079, -174.60000000]
|
|
99
|
+
}, {
|
|
100
|
+
id: '9',
|
|
101
|
+
name: '孙强',
|
|
102
|
+
dep: '工艺操作',
|
|
103
|
+
online: true,
|
|
104
|
+
position: [-114.10000000, 0.62500079, -114.60000000]
|
|
105
|
+
}, {
|
|
106
|
+
id: '10',
|
|
107
|
+
name: '佟丽英',
|
|
108
|
+
dep: '运输装卸',
|
|
109
|
+
online: true,
|
|
110
|
+
position: [26.10000000, 0.62500079, -202.30000000]
|
|
111
|
+
}, {
|
|
112
|
+
id: '14',
|
|
113
|
+
name: '王超',
|
|
114
|
+
dep: '设备运维',
|
|
115
|
+
online: true,
|
|
116
|
+
position: [-14.90000000, 0.62500079, -116.90000000]
|
|
117
|
+
}]
|
|
26
118
|
},
|
|
27
119
|
crudeOil: {
|
|
28
120
|
id: '3',
|
|
@@ -30,9 +122,34 @@ export var regionMap = {
|
|
|
30
122
|
area: [[240.584, 0, -225.624], [475.523, 0, -225.624], [475.543, 0, -59.401], [240.584, 0, -59.401]],
|
|
31
123
|
poi: {
|
|
32
124
|
id: '3',
|
|
33
|
-
position: [
|
|
34
|
-
content: '
|
|
35
|
-
}
|
|
125
|
+
position: [359.58372139, 0.55000000, -144.28157517],
|
|
126
|
+
content: '原油罐区应靠近相应的加工装置区,并利用地形将液体物料自留输送,性质相近的液体物料储物罐宜布置较近。原油罐区的占地面积较大,原油罐区应注意火灾防范,存储量大一旦发生火灾,如不及时处置,扑救十分困难。'
|
|
127
|
+
},
|
|
128
|
+
people: [{
|
|
129
|
+
id: '19',
|
|
130
|
+
name: '牛小灵',
|
|
131
|
+
dep: '生产技术',
|
|
132
|
+
online: true,
|
|
133
|
+
position: [404.70000000, 0.62500079, -190.30000000]
|
|
134
|
+
}, {
|
|
135
|
+
id: '17',
|
|
136
|
+
name: '彭旭',
|
|
137
|
+
dep: '运输装卸',
|
|
138
|
+
online: true,
|
|
139
|
+
position: [294.10000000, 0.62500079, -125.90000000]
|
|
140
|
+
}, {
|
|
141
|
+
id: '16',
|
|
142
|
+
name: '宋麒麟',
|
|
143
|
+
dep: '设备运维',
|
|
144
|
+
online: true,
|
|
145
|
+
position: [445.70000000, 0.62500079, -119.20000000]
|
|
146
|
+
}, {
|
|
147
|
+
id: '18',
|
|
148
|
+
name: '赵佳慧',
|
|
149
|
+
dep: '生产技术',
|
|
150
|
+
online: true,
|
|
151
|
+
position: [344.50000000, 0.62500079, -127.10000000]
|
|
152
|
+
}]
|
|
36
153
|
},
|
|
37
154
|
catalyticCracking: {
|
|
38
155
|
id: '4',
|
|
@@ -40,9 +157,70 @@ export var regionMap = {
|
|
|
40
157
|
area: [[-483.562, 0, -49.812], [-145.997, 0, -49.812], [-145.997, 0, 115.799], [-483.562, 0, 115.799]],
|
|
41
158
|
poi: {
|
|
42
159
|
id: '4',
|
|
43
|
-
position: [-
|
|
44
|
-
content: '
|
|
45
|
-
}
|
|
160
|
+
position: [-322.57300372, 0.55000000, 31.81516361],
|
|
161
|
+
content: '该区域主要危险因素为高温,重点部位:1. 催化剂循环系统磨穿泄漏着火;2. 再生器及沉降器油气互串爆炸;3. 高位管线及设备泄漏着火。同时催化裂化工艺过程需注意对环境造成的影响,生产过程中烟气会带走较多热烈造成热能浪费和污染,'
|
|
162
|
+
},
|
|
163
|
+
people: [{
|
|
164
|
+
id: '20',
|
|
165
|
+
name: '李刚',
|
|
166
|
+
dep: '运输装卸',
|
|
167
|
+
online: true,
|
|
168
|
+
position: [-339.40000000, 0.62500079, -1.90000000]
|
|
169
|
+
}, {
|
|
170
|
+
id: '24',
|
|
171
|
+
name: '李天一',
|
|
172
|
+
dep: '工艺操作',
|
|
173
|
+
online: true,
|
|
174
|
+
position: [-394.80000000, 0.62500079, 16.80000000]
|
|
175
|
+
}, {
|
|
176
|
+
id: '26',
|
|
177
|
+
name: '吕方',
|
|
178
|
+
dep: '设备运维',
|
|
179
|
+
online: true,
|
|
180
|
+
position: [-363.10000000, 0.62500079, 73.30000000]
|
|
181
|
+
}, {
|
|
182
|
+
id: '29',
|
|
183
|
+
name: '路笑',
|
|
184
|
+
dep: '运输装卸',
|
|
185
|
+
online: true,
|
|
186
|
+
position: [-214.00000000, 0.62500079, 39.10000000]
|
|
187
|
+
}, {
|
|
188
|
+
id: '22',
|
|
189
|
+
name: '淼杉',
|
|
190
|
+
dep: '运输装卸',
|
|
191
|
+
online: true,
|
|
192
|
+
position: [-175.10000000, 0.62500079, -12.80000000]
|
|
193
|
+
}, {
|
|
194
|
+
id: '25',
|
|
195
|
+
name: '孙江',
|
|
196
|
+
dep: '运输装卸',
|
|
197
|
+
online: true,
|
|
198
|
+
position: [-175.80000000, 0.62500079, 8.90000000]
|
|
199
|
+
}, {
|
|
200
|
+
id: '27',
|
|
201
|
+
name: '王衣衣',
|
|
202
|
+
dep: '运输装卸',
|
|
203
|
+
online: true,
|
|
204
|
+
position: [-394.60000000, 0.62500079, -37.80000000]
|
|
205
|
+
}, {
|
|
206
|
+
id: '28',
|
|
207
|
+
name: '张含义',
|
|
208
|
+
dep: '质量检测',
|
|
209
|
+
online: true,
|
|
210
|
+
position: [-436.90000000, 0.62500079, 69.40000000]
|
|
211
|
+
}, {
|
|
212
|
+
id: '21',
|
|
213
|
+
name: '张山一',
|
|
214
|
+
dep: '生产技术',
|
|
215
|
+
online: true,
|
|
216
|
+
position: [-325.30000000, 0.62500079, 86.20000000]
|
|
217
|
+
}, {
|
|
218
|
+
id: '23',
|
|
219
|
+
name: '张时柳',
|
|
220
|
+
dep: '运输装卸',
|
|
221
|
+
online: true,
|
|
222
|
+
position: [-211.20000000, 0.62500079, 95.80000000]
|
|
223
|
+
}]
|
|
46
224
|
},
|
|
47
225
|
hydrocrackingUnit: {
|
|
48
226
|
id: '5',
|
|
@@ -50,44 +228,87 @@ export var regionMap = {
|
|
|
50
228
|
area: [[-483.562, 0, 124.634], [-145.997, 0, 124.634], [-145.997, 0, 218.589], [-483.562, 0, 218.589]],
|
|
51
229
|
poi: {
|
|
52
230
|
id: '5',
|
|
53
|
-
position: [-
|
|
54
|
-
content: '
|
|
55
|
-
}
|
|
231
|
+
position: [-307.04992341, 0.55000000, 168.90578924],
|
|
232
|
+
content: '该区域主要注意器材的腐蚀,腐蚀类型主要有:氢损伤(包括高温氢腐蚀、氢脆、氢致剥离)、高温H2+H2S腐蚀、连多硫酸腐蚀、Cr-Mo钢的回火脆性、高温S腐蚀、低温部位的H2S+H2O腐蚀、H2S+NH3+H2O腐蚀。'
|
|
233
|
+
},
|
|
234
|
+
people: [{
|
|
235
|
+
id: '30',
|
|
236
|
+
name: '李梦雅',
|
|
237
|
+
dep: '生产技术',
|
|
238
|
+
online: true,
|
|
239
|
+
position: [-203.90000000, 0.62500079, -4.70000000]
|
|
240
|
+
}, {
|
|
241
|
+
id: '31',
|
|
242
|
+
name: '张连营',
|
|
243
|
+
dep: '运输装卸',
|
|
244
|
+
online: true,
|
|
245
|
+
position: [-428.40000000, 0.62500079, 96.90000000]
|
|
246
|
+
}, {
|
|
247
|
+
id: '32',
|
|
248
|
+
name: '张子成',
|
|
249
|
+
dep: '运输装卸',
|
|
250
|
+
online: true,
|
|
251
|
+
position: [-408.30000000, 0.62500079, -37.20000000]
|
|
252
|
+
}]
|
|
56
253
|
},
|
|
57
254
|
cokingUnit: {
|
|
58
255
|
id: '6',
|
|
59
256
|
title: '焦化装置区',
|
|
60
257
|
area: [[-140.100, 0, -49.802], [316.508, 0, -49.802], [316.508, 0, 218.847], [-140.100, 0, 218.847]],
|
|
258
|
+
poi: {
|
|
259
|
+
id: '6',
|
|
260
|
+
position: [76.84192138, 0.55000332, 95.89826158],
|
|
261
|
+
content: '该区域采用的延迟焦化装置是厂区能耗大户,其中,其燃料油、循环水两者的能耗占整个装置能耗的54%左右,其中,燃料气主要用于原料的加热、升温;循环水、新鲜水、软化水主要用于装置机泵降温、焦炭塔冷却等等。'
|
|
262
|
+
},
|
|
61
263
|
people: [{
|
|
62
|
-
id: '
|
|
63
|
-
name: '
|
|
64
|
-
|
|
264
|
+
id: '38',
|
|
265
|
+
name: '毕贵元',
|
|
266
|
+
dep: '工艺操作',
|
|
267
|
+
online: true,
|
|
268
|
+
position: [247.30000000, 0.62500079, 166.20000000]
|
|
65
269
|
}, {
|
|
66
|
-
id: '
|
|
67
|
-
name: '
|
|
68
|
-
|
|
270
|
+
id: '39',
|
|
271
|
+
name: '何晴',
|
|
272
|
+
dep: '设备运维',
|
|
273
|
+
online: true,
|
|
274
|
+
position: [-83.70000000, 0.62500079, 177.50000000]
|
|
69
275
|
}, {
|
|
70
|
-
id: '
|
|
71
|
-
name: '
|
|
72
|
-
|
|
276
|
+
id: '33',
|
|
277
|
+
name: '杨东利',
|
|
278
|
+
dep: '工艺操作',
|
|
279
|
+
online: true,
|
|
280
|
+
position: [68.20000000, 0.62500079, 5.20000000]
|
|
73
281
|
}, {
|
|
74
|
-
id: '
|
|
75
|
-
name: '
|
|
76
|
-
|
|
282
|
+
id: '36',
|
|
283
|
+
name: '杨晓月',
|
|
284
|
+
dep: '质量检测',
|
|
285
|
+
online: true,
|
|
286
|
+
position: [258.00000000, 0.62500079, 99.00000000]
|
|
77
287
|
}, {
|
|
78
|
-
id: '
|
|
79
|
-
name: '
|
|
80
|
-
|
|
288
|
+
id: '40',
|
|
289
|
+
name: '杨一真',
|
|
290
|
+
dep: '质量检测',
|
|
291
|
+
online: true,
|
|
292
|
+
position: [107.90000000, 0.62500079, 95.30000000]
|
|
81
293
|
}, {
|
|
82
|
-
id: '
|
|
83
|
-
name: '
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
294
|
+
id: '37',
|
|
295
|
+
name: '张飞',
|
|
296
|
+
dep: '运输装卸',
|
|
297
|
+
online: true,
|
|
298
|
+
position: [-69.60000000, 0.62500079, 29.30000000]
|
|
299
|
+
}, {
|
|
300
|
+
id: '35',
|
|
301
|
+
name: '张一天',
|
|
302
|
+
dep: '运输装卸',
|
|
303
|
+
online: true,
|
|
304
|
+
position: [271.20000000, 0.62500079, 24.70000000]
|
|
305
|
+
}, {
|
|
306
|
+
id: '34',
|
|
307
|
+
name: '张泽宇',
|
|
308
|
+
dep: '设备运维',
|
|
309
|
+
online: true,
|
|
310
|
+
position: [175.00000000, 0.62500079, 74.60000000]
|
|
311
|
+
}]
|
|
91
312
|
},
|
|
92
313
|
administrative: {
|
|
93
314
|
id: '7',
|
|
@@ -95,34 +316,130 @@ export var regionMap = {
|
|
|
95
316
|
area: [[340.501, 0, -44.710], [482.570, 0, -44.710], [482.570, 0, 227.641], [340.501, 0, 227.641]],
|
|
96
317
|
maxHigh: 100,
|
|
97
318
|
people: [{
|
|
98
|
-
id: '
|
|
99
|
-
name: '
|
|
100
|
-
|
|
319
|
+
id: '49',
|
|
320
|
+
name: '毕古元',
|
|
321
|
+
dep: '运输装卸',
|
|
322
|
+
online: true,
|
|
323
|
+
position: [431.60000000, 0.62500079, 94.90000000]
|
|
324
|
+
}, {
|
|
325
|
+
id: '50',
|
|
326
|
+
name: '陈红',
|
|
327
|
+
dep: '设备运维',
|
|
328
|
+
online: true,
|
|
329
|
+
position: [374.20000000, 0.62500079, 14.80000000]
|
|
330
|
+
}, {
|
|
331
|
+
id: '58',
|
|
332
|
+
name: '陈静娴',
|
|
333
|
+
dep: '质量检测',
|
|
334
|
+
online: true,
|
|
335
|
+
position: [352.40000000, 0.62500079, 138.30000000]
|
|
336
|
+
}, {
|
|
337
|
+
id: '54',
|
|
338
|
+
name: '高红雷',
|
|
339
|
+
dep: '运输装卸',
|
|
340
|
+
online: true,
|
|
341
|
+
position: [435.20000000, 0.62500079, 172.90000000]
|
|
342
|
+
}, {
|
|
343
|
+
id: '57',
|
|
344
|
+
name: '葛强',
|
|
345
|
+
dep: '设备运维',
|
|
346
|
+
online: true,
|
|
347
|
+
position: [379.10000000, 0.62500079, 193.40000000]
|
|
348
|
+
}, {
|
|
349
|
+
id: '46',
|
|
350
|
+
name: '宫京',
|
|
351
|
+
dep: '运输装卸',
|
|
352
|
+
online: true,
|
|
353
|
+
position: [441.30000000, 0.62500079, 80.70000000]
|
|
354
|
+
}, {
|
|
355
|
+
id: '53',
|
|
356
|
+
name: '匡青一',
|
|
357
|
+
dep: '运输装卸',
|
|
358
|
+
online: true,
|
|
359
|
+
position: [379.10000000, 0.62500079, 173.80000000]
|
|
360
|
+
}, {
|
|
361
|
+
id: '55',
|
|
362
|
+
name: '李丽颖',
|
|
363
|
+
dep: '质量检测',
|
|
364
|
+
online: true,
|
|
365
|
+
position: [357.50000000, 0.62500079, 221.40000000]
|
|
366
|
+
}, {
|
|
367
|
+
id: '48',
|
|
368
|
+
name: '李同一',
|
|
369
|
+
dep: '工艺操作',
|
|
370
|
+
online: true,
|
|
371
|
+
position: [467.80000000, 0.62500079, 108.10000000]
|
|
372
|
+
}, {
|
|
373
|
+
id: '56',
|
|
374
|
+
name: '李晓阳',
|
|
375
|
+
dep: '运输装卸',
|
|
376
|
+
online: true,
|
|
377
|
+
position: [444.20000000, 0.62500079, 191.80000000]
|
|
378
|
+
}, {
|
|
379
|
+
id: '41',
|
|
380
|
+
name: '刘超',
|
|
381
|
+
dep: '运输装卸',
|
|
382
|
+
online: true,
|
|
383
|
+
position: [354.20000000, 0.62500079, -22.70000000]
|
|
384
|
+
}, {
|
|
385
|
+
id: '42',
|
|
386
|
+
name: '刘凤林',
|
|
387
|
+
dep: '工艺操作',
|
|
388
|
+
online: true,
|
|
389
|
+
position: [368.50000000, 0.62500079, 40.30000000]
|
|
390
|
+
}, {
|
|
391
|
+
id: '44',
|
|
392
|
+
name: '卢灵',
|
|
393
|
+
dep: '运输装卸',
|
|
394
|
+
online: true,
|
|
395
|
+
position: [368.00000000, 0.62500079, 79.90000000]
|
|
396
|
+
}, {
|
|
397
|
+
id: '45',
|
|
398
|
+
name: '苏丁',
|
|
399
|
+
dep: '质量检测',
|
|
400
|
+
online: true,
|
|
401
|
+
position: [440.30000000, 0.62500079, 72.90000000]
|
|
402
|
+
}, {
|
|
403
|
+
id: '50',
|
|
404
|
+
name: '王林缘',
|
|
405
|
+
dep: '工艺操作',
|
|
406
|
+
online: true,
|
|
407
|
+
position: [360.40000000, 0.62500079, 103.20000000]
|
|
101
408
|
}, {
|
|
102
|
-
id: '
|
|
103
|
-
name: '
|
|
104
|
-
|
|
409
|
+
id: '51',
|
|
410
|
+
name: '汪泉',
|
|
411
|
+
dep: '运输装卸',
|
|
412
|
+
online: true,
|
|
413
|
+
position: [394.30000000, 0.62500079, 142.00000000]
|
|
105
414
|
}, {
|
|
106
|
-
id: '
|
|
107
|
-
name: '
|
|
108
|
-
|
|
415
|
+
id: '43',
|
|
416
|
+
name: '徐刚',
|
|
417
|
+
dep: '运输装卸',
|
|
418
|
+
online: true,
|
|
419
|
+
position: [442.70000000, 0.62500079, -19.0000000]
|
|
109
420
|
}, {
|
|
110
|
-
id: '
|
|
111
|
-
name: '
|
|
112
|
-
|
|
421
|
+
id: '52',
|
|
422
|
+
name: '薛友',
|
|
423
|
+
dep: '质量检测',
|
|
424
|
+
online: true,
|
|
425
|
+
position: [444.40000000, 0.62500079, 147.80000000]
|
|
113
426
|
}, {
|
|
114
|
-
id: '
|
|
115
|
-
name: '
|
|
116
|
-
|
|
427
|
+
id: '60',
|
|
428
|
+
name: '章虎泉',
|
|
429
|
+
dep: '工艺操作',
|
|
430
|
+
online: true,
|
|
431
|
+
position: [467.80000000, 0.62500079, 21.90000000]
|
|
117
432
|
}, {
|
|
118
|
-
id: '
|
|
119
|
-
name: '
|
|
120
|
-
|
|
433
|
+
id: '47',
|
|
434
|
+
name: '张山峰',
|
|
435
|
+
dep: '设备运维',
|
|
436
|
+
online: true,
|
|
437
|
+
position: [459.90000000, 0.62500079, 90.10000000]
|
|
121
438
|
}],
|
|
122
439
|
poi: {
|
|
123
440
|
id: '7',
|
|
124
|
-
position: [
|
|
125
|
-
content: '
|
|
441
|
+
position: [404.24348058, 0.55000000, 85.00566808],
|
|
442
|
+
content: '提供对工厂办公人员的休息和休闲区域,包括食堂,休息室,员工宿舍,休闲楼等场地,且该区域需较远离生产区,保证员工休息质量。'
|
|
126
443
|
}
|
|
127
444
|
}
|
|
128
445
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["regionMap","reform","id","title","area","poi","position","content","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","people","name","administrative","maxHigh"],"sources":["../../src/factory/regionData.ts"],"sourcesContent":["/**\n * todo: 各个单元数据需要统一\n * 当前demo area可以用直线绘制\n */\n\nexport interface IPeople {\n id: string\n name: string\n position: Array<number>\n}\n\nexport interface IPoi {\n id: string\n position: Array<number>\n content?: string\n}\n\nexport type RegionMap = {\n [k: string]: {\n id: string\n title: string\n area: number[][]\n maxHigh?: number\n poi?: IPoi\n people?: Array<IPeople>\n }\n}\n\nexport const regionMap: RegionMap = {\n reform: {\n id: '1',\n title: '重整装置区',\n area: [\n [\n -483.562,\n 0,\n -225.624,\n ],\n [\n -145.997,\n 0,\n -225.624,\n ],\n [\n -145.997,\n 0,\n -59.401,\n ],\n [\n -483.562,\n 0,\n -59.401,\n ],\n ],\n poi: {\n id: '1',\n position: [-290.29, 36.38, -123.69],\n content: '重整装置区是化工厂中进行主要生产过程的核心区域。它包括各种生产设备和装置,按照特定的工艺流程进行操作。',\n },\n },\n reduction: {\n id: '2',\n title: '常减压装置区',\n area: [\n [-140.123, 0, -225.604],\n [206.547, 0, -225.624],\n [206.547, 0, -59.401],\n [-140.123, 0, -59.401],\n ],\n poi: {\n id: '2',\n position: [9.99, 40.33, -128.26],\n content: '常减压装置区是化工厂中进行主要生产过程的核心区域。它包括各种生产设备和装置,按照特定的工艺流程进行操作。',\n },\n },\n crudeOil: {\n id: '3',\n title: '原油装置区',\n area: [\n [240.584, 0, -225.624],\n [475.523, 0, -225.624],\n [475.543, 0, -59.401],\n [240.584, 0, -59.401],\n ],\n poi: {\n id: '3',\n position: [373.29, 13.84, -150.09],\n content: '原油装置区是化工厂中进行主要生产过程的核心区域。它包括各种生产设备和装置,按照特定的工艺流程进行操作。',\n },\n },\n catalyticCracking: {\n id: '4',\n title: '催化裂化装置区',\n area: [\n [\n -483.562,\n 0,\n -49.812,\n ],\n [\n -145.997,\n 0,\n -49.812,\n ],\n [\n -145.997,\n 0,\n 115.799,\n ],\n [\n -483.562,\n 0,\n 115.799,\n ],\n ],\n poi: {\n id: '4',\n position: [-294.28, 13.06, 37.12],\n content: '催化裂化装置区是化工厂中进行主要生产过程的核心区域。它包括各种生产设备和装置,按照特定的工艺流程进行操作。',\n\n },\n },\n hydrocrackingUnit: {\n id: '5',\n title: '加氢裂化装置区',\n area: [\n [-483.562, 0, 124.634],\n [-145.997, 0, 124.634],\n [-145.997, 0, 218.589],\n [\n -483.562, 0, 218.589,\n ],\n ],\n poi: {\n id: '5',\n position: [-325.49, 11.20, 150.00],\n content: '加氢裂化装置区是化工厂中进行主要生产过程的核心区域。它包括各种生产设备和装置,按照特定的工艺流程进行操作。',\n\n },\n },\n cokingUnit: {\n id: '6',\n title: '焦化装置区',\n area: [\n [-140.100, 0, -49.802],\n [316.508, 0, -49.802],\n [316.508, 0, 218.847],\n [-140.100, 0, 218.847],\n ],\n people: [{\n id: '61',\n name: '张三',\n position: [49.19, 12.21, 167.39],\n },\n {\n id: '62',\n name: '李四',\n position: [80.87, 18.85, 203.34],\n },\n {\n id: '63',\n name: '王五',\n position: [112.23, 12.23, 144.75],\n },\n {\n id: '64',\n name: '杨洪波',\n position: [-30.27, 19.68, 54.44],\n },\n {\n id: '65',\n name: '李红军',\n position: [-4.23, -0.00, 136.60],\n },\n {\n id: '66',\n name: '罗红军',\n position: [142.24, 11.12, 192.34],\n }],\n poi: {\n id: '6',\n position: [75.75, 12.39, 75.09],\n content: '焦化装置区是化工厂中进行主要生产过程的核心区域。它包括各种生产设备和装置,按照特定的工艺流程进行操作。',\n },\n },\n administrative: {\n id: '7',\n title: '办公区',\n area: [\n [340.501, 0, -44.710],\n [482.570, 0, -44.710],\n [482.570, 0, 227.641],\n [340.501, 0, 227.641],\n ],\n maxHigh: 100,\n people: [{\n id: '71',\n name: '张三',\n position: [387.74, 16.41, 33.22],\n },\n {\n id: '72',\n name: '李四',\n position: [368.38, 1.03, 79.71],\n },\n {\n id: '73',\n name: '王五',\n position: [423.63, 16.35, 67.64],\n },\n {\n id: '74',\n name: '杨洪波',\n position: [443.84, 16.07, 138.20],\n },\n {\n id: '75',\n name: '李斯',\n position: [420.59, 16.23, 199.18],\n },\n {\n id: '76',\n name: '罗红军',\n position: [383.85, 13.81, 197.60],\n }],\n poi: {\n id: '7',\n position: [358.37, 17.54, 72.47],\n content: '办公区是化工厂中进行主要生产过程的核心区域。它包括各种生产设备和装置,按照特定的工艺流程进行操作。',\n },\n },\n}\n\nexport default regionMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["regionMap","reform","id","title","area","poi","position","content","people","name","dep","online","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","maxHigh"],"sources":["../../src/factory/regionData.ts"],"sourcesContent":["/**\n * todo: 各个单元数据需要统一\n * 当前demo area可以用直线绘制\n */\n\nexport interface IPeople {\n id: string\n name: string\n dep?: string\n online?: boolean\n position: Array<number>\n}\n\nexport interface IPoi {\n id: string\n position: Array<number>\n content?: string\n}\n\nexport type RegionMap = {\n [k: string]: {\n id: string\n title: string\n area: number[][]\n maxHigh?: number\n poi?: IPoi\n people?: Array<IPeople>\n }\n}\n\nexport const regionMap: RegionMap = {\n reform: {\n id: '1',\n title: '重整装置区',\n area: [\n [\n -483.562,\n 0,\n -225.624,\n ],\n [\n -145.997,\n 0,\n -225.624,\n ],\n [\n -145.997,\n 0,\n -59.401,\n ],\n [\n -483.562,\n 0,\n -59.401,\n ],\n ],\n poi: {\n id: '1',\n position: [-314.01113070, 0.55000000, -146.54350582],\n content: '通过直馏汽油和加氢石脑油,在催化剂存在的前提下,将原料的烷烃和环烷烃重构成为芳烃。并采用半再生固定床重整工艺,催化剂分段装填及两段混氢技术,装置采用了RIPP的粗汽油制氢技术。',\n },\n people: [\n {\n id: '7',\n name: '耿笑',\n dep: '设备运维',\n online: true,\n position: [-352.00000000, 0.62500079, -177.20000000],\n },\n {\n id: '2',\n name: '李连贵',\n dep: '工艺操作',\n online: true,\n position: [-275.70000000, 0.62500079, -137.10000000],\n },\n {\n id: '8',\n name: '吕萌',\n dep: '质量检测',\n online: true,\n position: [-365.40000000, 0.62500079, -80.60000000],\n },\n {\n id: '1',\n name: '宋玉',\n dep: '质量检测',\n online: true,\n position: [-436.90000000, 0.62500079, -121.50000000],\n },\n {\n id: '5',\n name: '王小雨',\n dep: '运输装卸',\n online: true,\n position: [-238.70000000, 0.62500079, -205.10000000],\n },\n {\n id: '6',\n name: '张建国',\n dep: '原料加工',\n online: true,\n position: [-436.50000000, 0.62500079, -182.30000000],\n },\n {\n id: '3',\n name: '张小萌',\n dep: '生产技术',\n online: true,\n position: [-204.80000000, 0.62500079, -150.10000000],\n },\n {\n id: '4',\n name: '朱正',\n dep: '设备运维',\n online: true,\n position: [-302.20000000, 0.62500079, -117.90000000],\n },\n ],\n },\n reduction: {\n id: '2',\n title: '常减压装置区',\n area: [\n [-140.123, 0, -225.604],\n [206.547, 0, -225.624],\n [206.547, 0, -59.401],\n [-140.123, 0, -59.401],\n ],\n poi: {\n id: '2',\n position: [28.89784048, 0.55000000, -144.28157517],\n content: '主要包括三个工序:原油的脱盐、脱水;常压蒸馏;减压蒸馏。从油田送往炼油厂的原油往往含盐(主要是氧化物)带水(溶于油或呈乳化状态),可导致设备的腐蚀,在设备内壁结垢和影响成品油的组成,需在加工前脱除。',\n },\n people: [\n {\n id: '12',\n name: '才新梁',\n dep: '运输装卸',\n online: true,\n position: [26.50000000, 0.62500079, -155.00000000],\n },\n {\n id: '13',\n name: '何超盈',\n dep: '生产技术',\n online: true,\n position: [198.50000000, 0.62500079, -169.20000000],\n },\n {\n id: '11',\n name: '李大为',\n dep: '质量检测',\n online: true,\n position: [-79.80000000, 0.62500079, -218.20000000],\n },\n {\n id: '15',\n name: '孙建连',\n dep: '工艺操作',\n online: true,\n position: [-19.50000000, 0.62500079, -174.60000000],\n },\n {\n id: '9',\n name: '孙强',\n dep: '工艺操作',\n online: true,\n position: [-114.10000000, 0.62500079, -114.60000000],\n },\n {\n id: '10',\n name: '佟丽英',\n dep: '运输装卸',\n online: true,\n position: [26.10000000, 0.62500079, -202.30000000],\n },\n {\n id: '14',\n name: '王超',\n dep: '设备运维',\n online: true,\n position: [-14.90000000, 0.62500079, -116.90000000],\n },\n ],\n },\n crudeOil: {\n id: '3',\n title: '原油装置区',\n area: [\n [240.584, 0, -225.624],\n [475.523, 0, -225.624],\n [475.543, 0, -59.401],\n [240.584, 0, -59.401],\n ],\n poi: {\n id: '3',\n position: [359.58372139, 0.55000000, -144.28157517],\n content: '原油罐区应靠近相应的加工装置区,并利用地形将液体物料自留输送,性质相近的液体物料储物罐宜布置较近。原油罐区的占地面积较大,原油罐区应注意火灾防范,存储量大一旦发生火灾,如不及时处置,扑救十分困难。',\n },\n people: [\n {\n id: '19',\n name: '牛小灵',\n dep: '生产技术',\n online: true,\n position: [404.70000000, 0.62500079, -190.30000000],\n },\n {\n id: '17',\n name: '彭旭',\n dep: '运输装卸',\n online: true,\n position: [294.10000000, 0.62500079, -125.90000000],\n },\n {\n id: '16',\n name: '宋麒麟',\n dep: '设备运维',\n online: true,\n position: [445.70000000, 0.62500079, -119.20000000],\n },\n {\n id: '18',\n name: '赵佳慧',\n dep: '生产技术',\n online: true,\n position: [344.50000000, 0.62500079, -127.10000000],\n },\n ],\n },\n catalyticCracking: {\n id: '4',\n title: '催化裂化装置区',\n area: [\n [\n -483.562,\n 0,\n -49.812,\n ],\n [\n -145.997,\n 0,\n -49.812,\n ],\n [\n -145.997,\n 0,\n 115.799,\n ],\n [\n -483.562,\n 0,\n 115.799,\n ],\n ],\n poi: {\n id: '4',\n position: [-322.57300372, 0.55000000, 31.81516361],\n content: '该区域主要危险因素为高温,重点部位:1. 催化剂循环系统磨穿泄漏着火;2. 再生器及沉降器油气互串爆炸;3. 高位管线及设备泄漏着火。同时催化裂化工艺过程需注意对环境造成的影响,生产过程中烟气会带走较多热烈造成热能浪费和污染,',\n },\n people: [\n {\n id: '20',\n name: '李刚',\n dep: '运输装卸',\n online: true,\n position: [-339.40000000, 0.62500079, -1.90000000],\n },\n {\n id: '24',\n name: '李天一',\n dep: '工艺操作',\n online: true,\n position: [-394.80000000, 0.62500079, 16.80000000],\n },\n {\n id: '26',\n name: '吕方',\n dep: '设备运维',\n online: true,\n position: [-363.10000000, 0.62500079, 73.30000000],\n },\n {\n id: '29',\n name: '路笑',\n dep: '运输装卸',\n online: true,\n position: [-214.00000000, 0.62500079, 39.10000000],\n },\n {\n id: '22',\n name: '淼杉',\n dep: '运输装卸',\n online: true,\n position: [-175.10000000, 0.62500079, -12.80000000],\n },\n {\n id: '25',\n name: '孙江',\n dep: '运输装卸',\n online: true,\n position: [-175.80000000, 0.62500079, 8.90000000],\n },\n {\n id: '27',\n name: '王衣衣',\n dep: '运输装卸',\n online: true,\n position: [-394.60000000, 0.62500079, -37.80000000],\n },\n {\n id: '28',\n name: '张含义',\n dep: '质量检测',\n online: true,\n position: [-436.90000000, 0.62500079, 69.40000000],\n },\n {\n id: '21',\n name: '张山一',\n dep: '生产技术',\n online: true,\n position: [-325.30000000, 0.62500079, 86.20000000],\n },\n {\n id: '23',\n name: '张时柳',\n dep: '运输装卸',\n online: true,\n position: [-211.20000000, 0.62500079, 95.80000000],\n },\n ],\n },\n hydrocrackingUnit: {\n id: '5',\n title: '加氢裂化装置区',\n area: [\n [-483.562, 0, 124.634],\n [-145.997, 0, 124.634],\n [-145.997, 0, 218.589],\n [\n -483.562, 0, 218.589,\n ],\n ],\n poi: {\n id: '5',\n position: [-307.04992341, 0.55000000, 168.90578924],\n content: '该区域主要注意器材的腐蚀,腐蚀类型主要有:氢损伤(包括高温氢腐蚀、氢脆、氢致剥离)、高温H2+H2S腐蚀、连多硫酸腐蚀、Cr-Mo钢的回火脆性、高温S腐蚀、低温部位的H2S+H2O腐蚀、H2S+NH3+H2O腐蚀。',\n },\n people: [\n {\n id: '30',\n name: '李梦雅',\n dep: '生产技术',\n online: true,\n position: [-203.90000000, 0.62500079, -4.70000000],\n },\n {\n id: '31',\n name: '张连营',\n dep: '运输装卸',\n online: true,\n position: [-428.40000000, 0.62500079, 96.90000000],\n },\n {\n id: '32',\n name: '张子成',\n dep: '运输装卸',\n online: true,\n position: [-408.30000000, 0.62500079, -37.20000000],\n },\n ],\n },\n cokingUnit: {\n id: '6',\n title: '焦化装置区',\n area: [\n [-140.100, 0, -49.802],\n [316.508, 0, -49.802],\n [316.508, 0, 218.847],\n [-140.100, 0, 218.847],\n ],\n poi: {\n id: '6',\n position: [76.84192138, 0.55000332, 95.89826158],\n content: '该区域采用的延迟焦化装置是厂区能耗大户,其中,其燃料油、循环水两者的能耗占整个装置能耗的54%左右,其中,燃料气主要用于原料的加热、升温;循环水、新鲜水、软化水主要用于装置机泵降温、焦炭塔冷却等等。',\n },\n people: [\n {\n id: '38',\n name: '毕贵元',\n dep: '工艺操作',\n online: true,\n position: [247.30000000, 0.62500079, 166.20000000],\n },\n {\n id: '39',\n name: '何晴',\n dep: '设备运维',\n online: true,\n position: [-83.70000000, 0.62500079, 177.50000000],\n },\n {\n id: '33',\n name: '杨东利',\n dep: '工艺操作',\n online: true,\n position: [68.20000000, 0.62500079, 5.20000000],\n },\n {\n id: '36',\n name: '杨晓月',\n dep: '质量检测',\n online: true,\n position: [258.00000000, 0.62500079, 99.00000000],\n },\n {\n id: '40',\n name: '杨一真',\n dep: '质量检测',\n online: true,\n position: [107.90000000, 0.62500079, 95.30000000],\n },\n {\n id: '37',\n name: '张飞',\n dep: '运输装卸',\n online: true,\n position: [-69.60000000, 0.62500079, 29.30000000],\n },\n {\n id: '35',\n name: '张一天',\n dep: '运输装卸',\n online: true,\n position: [271.20000000, 0.62500079, 24.70000000],\n },\n {\n id: '34',\n name: '张泽宇',\n dep: '设备运维',\n online: true,\n position: [175.00000000, 0.62500079, 74.60000000],\n },\n ],\n },\n administrative: {\n id: '7',\n title: '办公区',\n area: [\n [340.501, 0, -44.710],\n [482.570, 0, -44.710],\n [482.570, 0, 227.641],\n [340.501, 0, 227.641],\n ],\n maxHigh: 100,\n people: [{\n id: '49',\n name: '毕古元',\n dep: '运输装卸',\n online: true,\n position: [431.60000000, 0.62500079, 94.90000000],\n },\n {\n id: '50',\n name: '陈红',\n dep: '设备运维',\n online: true,\n position: [374.20000000, 0.62500079, 14.80000000],\n },\n {\n id: '58',\n name: '陈静娴',\n dep: '质量检测',\n online: true,\n position: [352.40000000, 0.62500079, 138.30000000],\n },\n {\n id: '54',\n name: '高红雷',\n dep: '运输装卸',\n online: true,\n position: [435.20000000, 0.62500079, 172.90000000],\n },\n {\n id: '57',\n name: '葛强',\n dep: '设备运维',\n online: true,\n position: [379.10000000, 0.62500079, 193.40000000],\n },\n {\n id: '46',\n name: '宫京',\n dep: '运输装卸',\n online: true,\n position: [441.30000000, 0.62500079, 80.70000000],\n },\n {\n id: '53',\n name: '匡青一',\n dep: '运输装卸',\n online: true,\n position: [379.10000000, 0.62500079, 173.80000000],\n },\n {\n id: '55',\n name: '李丽颖',\n dep: '质量检测',\n online: true,\n position: [357.50000000, 0.62500079, 221.40000000],\n },\n {\n id: '48',\n name: '李同一',\n dep: '工艺操作',\n online: true,\n position: [467.80000000, 0.62500079, 108.10000000],\n },\n {\n id: '56',\n name: '李晓阳',\n dep: '运输装卸',\n online: true,\n position: [444.20000000, 0.62500079, 191.80000000],\n },\n {\n id: '41',\n name: '刘超',\n dep: '运输装卸',\n online: true,\n position: [354.20000000, 0.62500079, -22.70000000],\n },\n {\n id: '42',\n name: '刘凤林',\n dep: '工艺操作',\n online: true,\n position: [368.50000000, 0.62500079, 40.30000000],\n },\n {\n id: '44',\n name: '卢灵',\n dep: '运输装卸',\n online: true,\n position: [368.00000000, 0.62500079, 79.90000000],\n },\n {\n id: '45',\n name: '苏丁',\n dep: '质量检测',\n online: true,\n position: [440.30000000, 0.62500079, 72.90000000],\n },\n {\n id: '50',\n name: '王林缘',\n dep: '工艺操作',\n online: true,\n position: [360.40000000, 0.62500079, 103.20000000],\n },\n {\n id: '51',\n name: '汪泉',\n dep: '运输装卸',\n online: true,\n position: [394.30000000, 0.62500079, 142.00000000],\n },\n {\n id: '43',\n name: '徐刚',\n dep: '运输装卸',\n online: true,\n position: [442.70000000, 0.62500079, -19.0000000],\n },\n {\n id: '52',\n name: '薛友',\n dep: '质量检测',\n online: true,\n position: [444.40000000, 0.62500079, 147.80000000],\n },\n {\n id: '60',\n name: '章虎泉',\n dep: '工艺操作',\n online: true,\n position: [467.80000000, 0.62500079, 21.90000000],\n },\n {\n id: '47',\n name: '张山峰',\n dep: '设备运维',\n online: true,\n position: [459.90000000, 0.62500079, 90.10000000],\n },\n ],\n poi: {\n id: '7',\n position: [404.24348058, 0.55000000, 85.00566808],\n content: '提供对工厂办公人员的休息和休闲区域,包括食堂,休息室,员工宿舍,休闲楼等场地,且该区域需较远离生产区,保证员工休息质量。',\n },\n },\n}\n\nexport default regionMap"],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ var CircleManage = /*#__PURE__*/function () {
|
|
|
22
22
|
key: "generateCircle",
|
|
23
23
|
value: function generateCircle(belongTo) {
|
|
24
24
|
var _this = this;
|
|
25
|
-
var geometry = new SphereGeometry(
|
|
25
|
+
var geometry = new SphereGeometry(2, 32, 16);
|
|
26
26
|
var material = new MeshBasicMaterial({
|
|
27
27
|
color: 0xFED602
|
|
28
28
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Mesh","MeshBasicMaterial","SphereGeometry","Vector3","utils","EPoiType","Poi","regionMap","CircleManage","gobal","Map","scene","interactionManager","storeManagement","get","belongTo","geometry","material","color","circle","data","getData","forEach","people","mesh","clone","position","fromArray","add","bindEvent","circleMesh","set","id","removeFromParent","clear","visible","poi","skewing","addEventListener","peoplePoi","Base","create","name","copy","regionKey","Object","keys","find","key"],"sources":["../../../src/factory/unit/circle.ts"],"sourcesContent":["import { Mesh, MeshBasicMaterial, SphereGeometry, Vector3, utils } from '@anov/3d-core'\nimport type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { EPoiType, Poi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\n\nclass CircleManage {\n private scene: Scene\n readonly circleMesh: Map<string, Object3D> = new Map()\n private interactionManager\n private peoplePoi: Object3D\n\n constructor(gobal: Factory3D) {\n this.scene = gobal.scene.scene\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n generateCircle(belongTo: string) {\n const geometry = new SphereGeometry(
|
|
1
|
+
{"version":3,"names":["Mesh","MeshBasicMaterial","SphereGeometry","Vector3","utils","EPoiType","Poi","regionMap","CircleManage","gobal","Map","scene","interactionManager","storeManagement","get","belongTo","geometry","material","color","circle","data","getData","forEach","people","mesh","clone","position","fromArray","add","bindEvent","circleMesh","set","id","removeFromParent","clear","visible","poi","skewing","addEventListener","peoplePoi","Base","create","name","copy","regionKey","Object","keys","find","key"],"sources":["../../../src/factory/unit/circle.ts"],"sourcesContent":["import { Mesh, MeshBasicMaterial, SphereGeometry, Vector3, utils } from '@anov/3d-core'\nimport type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { EPoiType, Poi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\n\nclass CircleManage {\n private scene: Scene\n readonly circleMesh: Map<string, Object3D> = new Map()\n private interactionManager\n private peoplePoi: Object3D\n\n constructor(gobal: Factory3D) {\n this.scene = gobal.scene.scene\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n generateCircle(belongTo: string) {\n const geometry = new SphereGeometry(2, 32, 16)\n const material = new MeshBasicMaterial({ color: 0xFED602 })\n const circle = new Mesh(geometry, material)\n\n const data = this.getData(belongTo)\n data.forEach((people) => {\n const mesh = circle.clone()\n mesh.position.fromArray(people.position)\n this.scene.add(mesh)\n this.bindEvent(mesh, people)\n this.circleMesh.set(people.id, mesh)\n })\n }\n\n remove() {\n this.circleMesh.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this.circleMesh.clear()\n }\n\n setVisible(visible = true) {\n // 控制CYCLE的隐藏、显示\n this.circleMesh.forEach((poi) => {\n poi.visible = visible\n })\n }\n\n private bindEvent(mesh: Mesh, data) {\n this.interactionManager.add(mesh)\n const skewing = new Vector3(0, 1.5, -1.5) // 偏移量\n mesh.addEventListener('mouseover', () => {\n if (this.peoplePoi)\n return\n\n const poi = new Poi(EPoiType.Base)\n this.peoplePoi = poi.create(data.name)\n\n this.peoplePoi.position.copy(mesh.position.clone().add(skewing))\n this.scene.add(this.peoplePoi)\n })\n mesh.addEventListener('mouseout', () => {\n if (this.peoplePoi) {\n this.peoplePoi.removeFromParent()\n this.peoplePoi = null\n }\n })\n }\n\n private getData(belongTo) {\n const regionKey = Object.keys(regionMap).find((key: any) => {\n return regionMap[key].id === belongTo\n })\n\n return regionMap[regionKey] && regionMap[regionKey].people\n }\n}\n\nexport default CircleManage"],"mappings":"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"}
|
|
@@ -13,19 +13,54 @@ import { collisionDetection } from "../utils/areaBoundingBox";
|
|
|
13
13
|
import { lookAtOnYAxis } from "../utils";
|
|
14
14
|
var emitter = utils.emitter;
|
|
15
15
|
var cylinderData = [{
|
|
16
|
-
label: '
|
|
16
|
+
label: '8人',
|
|
17
|
+
id: '1',
|
|
18
|
+
belongTo: regionMap.reform.id,
|
|
19
|
+
color: new Color('#FED602').getHex(),
|
|
20
|
+
points: regionMap.reform.poi.position,
|
|
21
|
+
height: 80
|
|
22
|
+
}, {
|
|
23
|
+
label: '7人',
|
|
17
24
|
id: '2',
|
|
25
|
+
belongTo: regionMap.reduction.id,
|
|
26
|
+
color: new Color('#FED602').getHex(),
|
|
27
|
+
points: regionMap.reduction.poi.position,
|
|
28
|
+
height: 70
|
|
29
|
+
}, {
|
|
30
|
+
label: '4人',
|
|
31
|
+
id: '3',
|
|
32
|
+
belongTo: regionMap.crudeOil.id,
|
|
33
|
+
color: new Color('#FED602').getHex(),
|
|
34
|
+
points: regionMap.crudeOil.poi.position,
|
|
35
|
+
height: 40
|
|
36
|
+
}, {
|
|
37
|
+
label: '10人',
|
|
38
|
+
id: '4',
|
|
39
|
+
belongTo: regionMap.catalyticCracking.id,
|
|
40
|
+
color: new Color('#FED602').getHex(),
|
|
41
|
+
points: regionMap.catalyticCracking.poi.position,
|
|
42
|
+
height: 100
|
|
43
|
+
}, {
|
|
44
|
+
label: '3人',
|
|
45
|
+
id: '5',
|
|
46
|
+
belongTo: regionMap.hydrocrackingUnit.id,
|
|
47
|
+
color: new Color('#FED602').getHex(),
|
|
48
|
+
points: regionMap.hydrocrackingUnit.poi.position,
|
|
49
|
+
height: 30
|
|
50
|
+
}, {
|
|
51
|
+
label: '8人',
|
|
52
|
+
id: '6',
|
|
18
53
|
belongTo: regionMap.cokingUnit.id,
|
|
19
54
|
color: new Color('#FED602').getHex(),
|
|
20
|
-
points:
|
|
21
|
-
height:
|
|
55
|
+
points: regionMap.cokingUnit.poi.position,
|
|
56
|
+
height: 80
|
|
22
57
|
}, {
|
|
23
58
|
label: '20人',
|
|
24
|
-
id: '
|
|
59
|
+
id: '7',
|
|
25
60
|
belongTo: regionMap.administrative.id,
|
|
26
61
|
color: new Color('#FED602').getHex(),
|
|
27
|
-
points:
|
|
28
|
-
height:
|
|
62
|
+
points: regionMap.administrative.poi.position,
|
|
63
|
+
height: 150
|
|
29
64
|
}];
|
|
30
65
|
var CylinderManage = /*#__PURE__*/function () {
|
|
31
66
|
function CylinderManage(gobal, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BoxGeometry","Color","Group","Mesh","ShaderMaterial","Vector3","globalObjectManage","use","utils","createFontMesh","SceneStyle","regionMap","collisionDetection","lookAtOnYAxis","emitter","cylinderData","label","id","belongTo","cokingUnit","color","getHex","points","height","administrative","CylinderManage","gobal","options","Map","currentCameraPosition","control","object","position","box","areaBoundingBox","boundingBoxMap","get","currentoperate","iscollision","emit","cameraRemoveListener","scene","option","forEach","item","geometry","material","transparent","depthWrite","depthTest","uniforms","uHeight","value","uColor","vertexShader","fragmentShader","cylinder","group","visible","copy","fromArray","interactionManager","storeManagement","add","addEventListener","style","real","cameraUtil","set","target","then","currentGroup","cylinderMesh","cameraAddListener","font","mesh","center","useframe","camera","cameraListenerHandle","removeEventListener"],"sources":["../../../src/factory/unit/cylinder.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { BoxGeometry, Color, Group, Mesh, ShaderMaterial, Vector3, globalObjectManage, use, utils } from '@anov/3d-core'\nimport createFontMesh from '../utils/fontMesh'\nimport type Factory3D from '../3d'\nimport { SceneStyle } from '../3d'\nimport regionMap from '../regionData'\nimport { collisionDetection } from '../utils/areaBoundingBox'\n\nimport { lookAtOnYAxis } from '../utils'\n\nconst { emitter } = utils\n\nconst cylinderData = [\n {\n label: '10人',\n id: '2',\n belongTo: regionMap.cokingUnit.id,\n color: new Color('#FED602').getHex(),\n points: [79.88, 12.15, 170.00],\n height: 50,\n },\n\n {\n label: '20人',\n id: '3',\n belongTo: regionMap.administrative.id,\n color: new Color('#FED602').getHex(),\n points: [417.27, 0.03, 91.38],\n height: 100,\n },\n]\n\ntype CylinderManageOption = {\n visible?: boolean\n}\n\nclass CylinderManage {\n private scene: Scene\n readonly cylinderMesh: Map<string, Object3D> = new Map()\n private option: CylinderManageOption\n private gobal: Factory3D\n private currentoperate: string\n\n constructor(gobal: Factory3D, options?: CylinderManageOption) {\n this.scene = gobal.scene.scene\n this.gobal = gobal\n this.option = options || {}\n }\n\n generateCylinder() {\n cylinderData.forEach((item) => {\n const geometry = new BoxGeometry(10, item.height, 10)\n const material = new ShaderMaterial({\n transparent: true,\n depthWrite: false,\n depthTest: false,\n uniforms: {\n uHeight: {\n value: item.height,\n },\n uColor: {\n value: new Color(item.color),\n },\n },\n vertexShader: `\n uniform float uHeight;\n varying float vOpacity;\n void main() {\n vOpacity = (position.y + uHeight/2.0) / uHeight;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n }\n `,\n fragmentShader: `\n uniform vec3 uColor;\n varying float vOpacity;\n void main() {\n gl_FragColor = vec4(uColor,0.3+vOpacity/10.0*7.0);\n }\n `,\n })\n const cylinder = new Mesh(geometry, material)\n const group = new Group()\n\n group.visible = this.option?.visible ?? true\n cylinder.position.copy(new Vector3().fromArray([item.points[0], item.points[1] + item.height / 2, item.points[2]]))\n\n const interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n interactionManager.add(cylinder)\n\n cylinder.addEventListener('click', () => {\n if (this.gobal.style === SceneStyle.real)\n return\n\n if (group.visible === false)\n return\n\n this.gobal.cameraUtil.set({\n position: [item.points[0], item.points[1] + item.height / 2, item.points[2] + 100],\n target: [item.points[0], item.points[1] + item.height / 2, item.points[2]],\n }).then(() => {\n emitter.emit('peoplemanagement-camera-enter', item)\n const currentGroup = this.cylinderMesh.get(item.belongTo) as Group\n currentGroup.visible = false\n\n this.currentoperate = item.belongTo\n this.cameraAddListener()\n })\n })\n\n this.cylinderMesh.set(item.belongTo, group)\n group.add(cylinder)\n\n const font = createFontMesh(item.label, {\n position: new Vector3().fromArray([item.points[0], item.points[1] + item.height + 10, item.points[2]]),\n })\n\n font.then((mesh) => {\n mesh.geometry.center()\n\n group.add(mesh)\n\n use.useframe(() => {\n lookAtOnYAxis(mesh, globalObjectManage.camera.position)\n })\n this.scene.add(group)\n })\n })\n }\n\n private cameraListenerHandle = () => {\n const currentCameraPosition = this.gobal.control.object.position\n const box = this.gobal.areaBoundingBox.boundingBoxMap.get(this.currentoperate)\n const iscollision = collisionDetection(box, currentCameraPosition)\n\n if (!iscollision) {\n emitter.emit('peoplemanagement-camera-out', {\n belongTo: this.currentoperate,\n })\n\n this.cameraRemoveListener()\n }\n }\n\n private cameraAddListener() {\n this.gobal.control.addEventListener('change', this.cameraListenerHandle)\n }\n\n private cameraRemoveListener() {\n this.gobal.control.removeEventListener('change', this.cameraListenerHandle)\n }\n}\n\nexport default CylinderManage"],"mappings":";;;;;;;AACA,SAASA,WAAW,EAAEC,KAAK,EAAEC,KAAK,EAAEC,IAAI,EAAEC,cAAc,EAAEC,OAAO,EAAEC,kBAAkB,EAAEC,GAAG,EAAEC,KAAK,QAAQ,eAAe;AACxH,OAAOC,cAAc;AAErB,SAASC,UAAU;AACnB,OAAOC,SAAS;AAChB,SAASC,kBAAkB;AAE3B,SAASC,aAAa;AAEtB,IAAQC,OAAO,GAAKN,KAAK,CAAjBM,OAAO;AAEf,IAAMC,YAAY,GAAG,CACnB;EACEC,KAAK,EAAE,KAAK;EACZC,EAAE,EAAE,GAAG;EACPC,QAAQ,EAAEP,SAAS,CAACQ,UAAU,CAACF,EAAE;EACjCG,KAAK,EAAE,IAAInB,KAAK,CAAC,SAAS,CAAC,CAACoB,MAAM,EAAE;EACpCC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;EAC9BC,MAAM,EAAE;AACV,CAAC,EAED;EACEP,KAAK,EAAE,KAAK;EACZC,EAAE,EAAE,GAAG;EACPC,QAAQ,EAAEP,SAAS,CAACa,cAAc,CAACP,EAAE;EACrCG,KAAK,EAAE,IAAInB,KAAK,CAAC,SAAS,CAAC,CAACoB,MAAM,EAAE;EACpCC,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;EAC7BC,MAAM,EAAE;AACV,CAAC,CACF;AAAA,IAMKE,cAAc;EAOlB,wBAAYC,KAAgB,EAAEC,OAA8B,EAAE;IAAA;IAAA;IAAA;IAAA,sCALf,IAAIC,GAAG,EAAE;IAAA;IAAA;IAAA;IAAA,8CA2FzB,YAAM;MACnC,IAAMC,qBAAqB,GAAG,KAAI,CAACH,KAAK,CAACI,OAAO,CAACC,MAAM,CAACC,QAAQ;MAChE,IAAMC,GAAG,GAAG,KAAI,CAACP,KAAK,CAACQ,eAAe,CAACC,cAAc,CAACC,GAAG,CAAC,KAAI,CAACC,cAAc,CAAC;MAC9E,IAAMC,WAAW,GAAG1B,kBAAkB,CAACqB,GAAG,EAAEJ,qBAAqB,CAAC;MAElE,IAAI,CAACS,WAAW,EAAE;QAChBxB,OAAO,CAACyB,IAAI,CAAC,6BAA6B,EAAE;UAC1CrB,QAAQ,EAAE,KAAI,CAACmB;QACjB,CAAC,CAAC;QAEF,KAAI,CAACG,oBAAoB,EAAE;MAC7B;IACF,CAAC;IAjGC,IAAI,CAACC,KAAK,GAAGf,KAAK,CAACe,KAAK,CAACA,KAAK;IAC9B,IAAI,CAACf,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACgB,MAAM,GAAGf,OAAO,IAAI,CAAC,CAAC;EAC7B;EAAC;IAAA;IAAA,OAED,4BAAmB;MAAA;MACjBZ,YAAY,CAAC4B,OAAO,CAAC,UAACC,IAAI,EAAK;QAAA;QAC7B,IAAMC,QAAQ,GAAG,IAAI7C,WAAW,CAAC,EAAE,EAAE4C,IAAI,CAACrB,MAAM,EAAE,EAAE,CAAC;QACrD,IAAMuB,QAAQ,GAAG,IAAI1C,cAAc,CAAC;UAClC2C,WAAW,EAAE,IAAI;UACjBC,UAAU,EAAE,KAAK;UACjBC,SAAS,EAAE,KAAK;UAChBC,QAAQ,EAAE;YACRC,OAAO,EAAE;cACPC,KAAK,EAAER,IAAI,CAACrB;YACd,CAAC;YACD8B,MAAM,EAAE;cACND,KAAK,EAAE,IAAInD,KAAK,CAAC2C,IAAI,CAACxB,KAAK;YAC7B;UACF,CAAC;UACDkC,YAAY,2NAOX;UACDC,cAAc;QAOhB,CAAC,CAAC;QACF,IAAMC,QAAQ,GAAG,IAAIrD,IAAI,CAAC0C,QAAQ,EAAEC,QAAQ,CAAC;QAC7C,IAAMW,KAAK,GAAG,IAAIvD,KAAK,EAAE;QAEzBuD,KAAK,CAACC,OAAO,6CAAG,MAAI,CAAChB,MAAM,kDAAX,cAAagB,OAAO,yEAAI,IAAI;QAC5CF,QAAQ,CAACxB,QAAQ,CAAC2B,IAAI,CAAC,IAAItD,OAAO,EAAE,CAACuD,SAAS,CAAC,CAAChB,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,EAAEsB,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,GAAGsB,IAAI,CAACrB,MAAM,GAAG,CAAC,EAAEqB,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnH,IAAMuC,kBAAkB,GAAGrD,KAAK,CAACsD,eAAe,CAAC1B,GAAG,CAAqB,oBAAoB,CAAC;QAC9FyB,kBAAkB,CAACE,GAAG,CAACP,QAAQ,CAAC;QAEhCA,QAAQ,CAACQ,gBAAgB,CAAC,OAAO,EAAE,YAAM;UACvC,IAAI,MAAI,CAACtC,KAAK,CAACuC,KAAK,KAAKvD,UAAU,CAACwD,IAAI,EACtC;UAEF,IAAIT,KAAK,CAACC,OAAO,KAAK,KAAK,EACzB;UAEF,MAAI,CAAChC,KAAK,CAACyC,UAAU,CAACC,GAAG,CAAC;YACxBpC,QAAQ,EAAE,CAACY,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,EAAEsB,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,GAAGsB,IAAI,CAACrB,MAAM,GAAG,CAAC,EAAEqB,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAClF+C,MAAM,EAAE,CAACzB,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,EAAEsB,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,GAAGsB,IAAI,CAACrB,MAAM,GAAG,CAAC,EAAEqB,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC;UAC3E,CAAC,CAAC,CAACgD,IAAI,CAAC,YAAM;YACZxD,OAAO,CAACyB,IAAI,CAAC,+BAA+B,EAAEK,IAAI,CAAC;YACnD,IAAM2B,YAAY,GAAG,MAAI,CAACC,YAAY,CAACpC,GAAG,CAACQ,IAAI,CAAC1B,QAAQ,CAAU;YAClEqD,YAAY,CAACb,OAAO,GAAG,KAAK;YAE5B,MAAI,CAACrB,cAAc,GAAGO,IAAI,CAAC1B,QAAQ;YACnC,MAAI,CAACuD,iBAAiB,EAAE;UAC1B,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,MAAI,CAACD,YAAY,CAACJ,GAAG,CAACxB,IAAI,CAAC1B,QAAQ,EAAEuC,KAAK,CAAC;QAC3CA,KAAK,CAACM,GAAG,CAACP,QAAQ,CAAC;QAEnB,IAAMkB,IAAI,GAAGjE,cAAc,CAACmC,IAAI,CAAC5B,KAAK,EAAE;UACtCgB,QAAQ,EAAE,IAAI3B,OAAO,EAAE,CAACuD,SAAS,CAAC,CAAChB,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,EAAEsB,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,GAAGsB,IAAI,CAACrB,MAAM,GAAG,EAAE,EAAEqB,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,CAAC;QACvG,CAAC,CAAC;QAEFoD,IAAI,CAACJ,IAAI,CAAC,UAACK,IAAI,EAAK;UAClBA,IAAI,CAAC9B,QAAQ,CAAC+B,MAAM,EAAE;UAEtBnB,KAAK,CAACM,GAAG,CAACY,IAAI,CAAC;UAEfpE,GAAG,CAACsE,QAAQ,CAAC,YAAM;YACjBhE,aAAa,CAAC8D,IAAI,EAAErE,kBAAkB,CAACwE,MAAM,CAAC9C,QAAQ,CAAC;UACzD,CAAC,CAAC;UACF,MAAI,CAACS,KAAK,CAACsB,GAAG,CAACN,KAAK,CAAC;QACvB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAgBD,6BAA4B;MAC1B,IAAI,CAAC/B,KAAK,CAACI,OAAO,CAACkC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAACe,oBAAoB,CAAC;IAC1E;EAAC;IAAA;IAAA,OAED,gCAA+B;MAC7B,IAAI,CAACrD,KAAK,CAACI,OAAO,CAACkD,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAACD,oBAAoB,CAAC;IAC7E;EAAC;EAAA;AAAA;AAGH,eAAetD,cAAc"}
|
|
1
|
+
{"version":3,"names":["BoxGeometry","Color","Group","Mesh","ShaderMaterial","Vector3","globalObjectManage","use","utils","createFontMesh","SceneStyle","regionMap","collisionDetection","lookAtOnYAxis","emitter","cylinderData","label","id","belongTo","reform","color","getHex","points","poi","position","height","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","CylinderManage","gobal","options","Map","currentCameraPosition","control","object","box","areaBoundingBox","boundingBoxMap","get","currentoperate","iscollision","emit","cameraRemoveListener","scene","option","forEach","item","geometry","material","transparent","depthWrite","depthTest","uniforms","uHeight","value","uColor","vertexShader","fragmentShader","cylinder","group","visible","copy","fromArray","interactionManager","storeManagement","add","addEventListener","style","real","cameraUtil","set","target","then","currentGroup","cylinderMesh","cameraAddListener","font","mesh","center","useframe","camera","cameraListenerHandle","removeEventListener"],"sources":["../../../src/factory/unit/cylinder.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { BoxGeometry, Color, Group, Mesh, ShaderMaterial, Vector3, globalObjectManage, use, utils } from '@anov/3d-core'\nimport createFontMesh from '../utils/fontMesh'\nimport type Factory3D from '../3d'\nimport { SceneStyle } from '../3d'\nimport regionMap from '../regionData'\nimport { collisionDetection } from '../utils/areaBoundingBox'\n\nimport { lookAtOnYAxis } from '../utils'\n\nconst { emitter } = utils\n\nconst cylinderData = [\n {\n label: '8人',\n id: '1',\n belongTo: regionMap.reform.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.reform.poi.position,\n height: 80,\n },\n {\n label: '7人',\n id: '2',\n belongTo: regionMap.reduction.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.reduction.poi.position,\n height: 70,\n },\n {\n label: '4人',\n id: '3',\n belongTo: regionMap.crudeOil.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.crudeOil.poi.position,\n height: 40,\n },\n {\n label: '10人',\n id: '4',\n belongTo: regionMap.catalyticCracking.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.catalyticCracking.poi.position,\n height: 100,\n },\n {\n label: '3人',\n id: '5',\n belongTo: regionMap.hydrocrackingUnit.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.hydrocrackingUnit.poi.position,\n height: 30,\n },\n {\n label: '8人',\n id: '6',\n belongTo: regionMap.cokingUnit.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.cokingUnit.poi.position,\n height: 80,\n },\n {\n label: '20人',\n id: '7',\n belongTo: regionMap.administrative.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.administrative.poi.position,\n height: 150,\n },\n]\n\ntype CylinderManageOption = {\n visible?: boolean\n}\n\nclass CylinderManage {\n private scene: Scene\n readonly cylinderMesh: Map<string, Object3D> = new Map()\n private option: CylinderManageOption\n private gobal: Factory3D\n private currentoperate: string\n\n constructor(gobal: Factory3D, options?: CylinderManageOption) {\n this.scene = gobal.scene.scene\n this.gobal = gobal\n this.option = options || {}\n }\n\n generateCylinder() {\n cylinderData.forEach((item) => {\n const geometry = new BoxGeometry(10, item.height, 10)\n const material = new ShaderMaterial({\n transparent: true,\n depthWrite: false,\n depthTest: false,\n uniforms: {\n uHeight: {\n value: item.height,\n },\n uColor: {\n value: new Color(item.color),\n },\n },\n vertexShader: `\n uniform float uHeight;\n varying float vOpacity;\n void main() {\n vOpacity = (position.y + uHeight/2.0) / uHeight;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n }\n `,\n fragmentShader: `\n uniform vec3 uColor;\n varying float vOpacity;\n void main() {\n gl_FragColor = vec4(uColor,0.3+vOpacity/10.0*7.0);\n }\n `,\n })\n const cylinder = new Mesh(geometry, material)\n const group = new Group()\n\n group.visible = this.option?.visible ?? true\n cylinder.position.copy(new Vector3().fromArray([item.points[0], item.points[1] + item.height / 2, item.points[2]]))\n\n const interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n interactionManager.add(cylinder)\n\n cylinder.addEventListener('click', () => {\n if (this.gobal.style === SceneStyle.real)\n return\n\n if (group.visible === false)\n return\n\n this.gobal.cameraUtil.set({\n position: [item.points[0], item.points[1] + item.height / 2, item.points[2] + 100],\n target: [item.points[0], item.points[1] + item.height / 2, item.points[2]],\n }).then(() => {\n emitter.emit('peoplemanagement-camera-enter', item)\n const currentGroup = this.cylinderMesh.get(item.belongTo) as Group\n currentGroup.visible = false\n\n this.currentoperate = item.belongTo\n this.cameraAddListener()\n })\n })\n\n this.cylinderMesh.set(item.belongTo, group)\n group.add(cylinder)\n\n const font = createFontMesh(item.label, {\n position: new Vector3().fromArray([item.points[0], item.points[1] + item.height + 10, item.points[2]]),\n })\n\n font.then((mesh) => {\n mesh.geometry.center()\n\n group.add(mesh)\n\n use.useframe(() => {\n lookAtOnYAxis(mesh, globalObjectManage.camera.position)\n })\n this.scene.add(group)\n })\n })\n }\n\n private cameraListenerHandle = () => {\n const currentCameraPosition = this.gobal.control.object.position\n const box = this.gobal.areaBoundingBox.boundingBoxMap.get(this.currentoperate)\n const iscollision = collisionDetection(box, currentCameraPosition)\n\n if (!iscollision) {\n emitter.emit('peoplemanagement-camera-out', {\n belongTo: this.currentoperate,\n })\n\n this.cameraRemoveListener()\n }\n }\n\n private cameraAddListener() {\n this.gobal.control.addEventListener('change', this.cameraListenerHandle)\n }\n\n private cameraRemoveListener() {\n this.gobal.control.removeEventListener('change', this.cameraListenerHandle)\n }\n}\n\nexport default CylinderManage"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Object3D } from '@anov/3d-core';
|
|
2
|
+
declare class PoiManage {
|
|
3
|
+
private gobal;
|
|
4
|
+
private scene;
|
|
5
|
+
private dialogPoi;
|
|
6
|
+
readonly poiMesh: Map<string, Object3D>;
|
|
7
|
+
private wallManage;
|
|
8
|
+
private interactionManager;
|
|
9
|
+
constructor(gobal: any);
|
|
10
|
+
generatePoi(): void;
|
|
11
|
+
setVisible(visible?: boolean): void;
|
|
12
|
+
reset(): void;
|
|
13
|
+
private addDialogPanel;
|
|
14
|
+
}
|
|
15
|
+
export default PoiManage;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, catch: function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
3
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
5
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
6
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
7
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
8
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
9
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
10
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
11
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
12
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
13
|
+
import { Mesh, MeshBasicMaterial, PlaneGeometry, Vector3, utils } from '@anov/3d-core';
|
|
14
|
+
import { EPoiType, Poi } from '@anov/3d-ability';
|
|
15
|
+
import { regionMap } from "../regionData";
|
|
16
|
+
var PoiManage = /*#__PURE__*/function () {
|
|
17
|
+
function PoiManage(gobal) {
|
|
18
|
+
_classCallCheck(this, PoiManage);
|
|
19
|
+
_defineProperty(this, "gobal", void 0);
|
|
20
|
+
_defineProperty(this, "scene", void 0);
|
|
21
|
+
_defineProperty(this, "dialogPoi", void 0);
|
|
22
|
+
_defineProperty(this, "poiMesh", new Map());
|
|
23
|
+
_defineProperty(this, "wallManage", void 0);
|
|
24
|
+
_defineProperty(this, "interactionManager", void 0);
|
|
25
|
+
this.gobal = gobal;
|
|
26
|
+
this.scene = gobal.scene.scene;
|
|
27
|
+
this.wallManage = gobal.wall;
|
|
28
|
+
this.interactionManager = utils.storeManagement.get('interactionManager');
|
|
29
|
+
}
|
|
30
|
+
_createClass(PoiManage, [{
|
|
31
|
+
key: "generatePoi",
|
|
32
|
+
value: function generatePoi() {
|
|
33
|
+
var _this = this;
|
|
34
|
+
Object.keys(regionMap).forEach( /*#__PURE__*/function () {
|
|
35
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(key) {
|
|
36
|
+
var region, option, geometry, material, plane, poi, sprite, changeWallState;
|
|
37
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
38
|
+
while (1) switch (_context.prev = _context.next) {
|
|
39
|
+
case 0:
|
|
40
|
+
region = regionMap[key];
|
|
41
|
+
option = _objectSpread({
|
|
42
|
+
scale: 80
|
|
43
|
+
}, (region.id === '4' || region.id === '5') && {
|
|
44
|
+
width: 260,
|
|
45
|
+
height: 260,
|
|
46
|
+
img: './poi_big.png'
|
|
47
|
+
});
|
|
48
|
+
geometry = new PlaneGeometry(1, 1);
|
|
49
|
+
material = new MeshBasicMaterial({
|
|
50
|
+
color: 0xFFFF00,
|
|
51
|
+
side: THREE.DoubleSide
|
|
52
|
+
});
|
|
53
|
+
plane = new Mesh(geometry, material);
|
|
54
|
+
poi = new Poi(EPoiType.Line);
|
|
55
|
+
sprite = poi.create(region.title, option);
|
|
56
|
+
sprite.position.copy(new Vector3().fromArray(region.poi.position));
|
|
57
|
+
_this.scene.add(sprite);
|
|
58
|
+
_this.poiMesh.set(region.poi.id, sprite);
|
|
59
|
+
|
|
60
|
+
// 绑定事件
|
|
61
|
+
_this.interactionManager.add(sprite);
|
|
62
|
+
changeWallState = function changeWallState(show) {
|
|
63
|
+
var _this$dialogPoi;
|
|
64
|
+
if ((_this$dialogPoi = _this.dialogPoi) !== null && _this$dialogPoi !== void 0 && _this$dialogPoi.visible) return;
|
|
65
|
+
// 光墙
|
|
66
|
+
var wall = _this.wallManage.wallMesh.get(region.id);
|
|
67
|
+
wall.visible = show;
|
|
68
|
+
};
|
|
69
|
+
sprite.addEventListener('mouseover', function () {
|
|
70
|
+
changeWallState(true);
|
|
71
|
+
});
|
|
72
|
+
sprite.addEventListener('mouseout', function () {
|
|
73
|
+
changeWallState(false);
|
|
74
|
+
});
|
|
75
|
+
sprite.addEventListener('click', function (event) {
|
|
76
|
+
if (!sprite.visible) return;
|
|
77
|
+
_this.reset();
|
|
78
|
+
// 光墙
|
|
79
|
+
var wall = _this.wallManage.wallMesh.get(region.id);
|
|
80
|
+
wall.visible = true;
|
|
81
|
+
// 隐藏当前POI点
|
|
82
|
+
sprite.visible = false;
|
|
83
|
+
_this.addDialogPanel(region, event.point, sprite);
|
|
84
|
+
});
|
|
85
|
+
case 15:
|
|
86
|
+
case "end":
|
|
87
|
+
return _context.stop();
|
|
88
|
+
}
|
|
89
|
+
}, _callee);
|
|
90
|
+
}));
|
|
91
|
+
return function (_x) {
|
|
92
|
+
return _ref.apply(this, arguments);
|
|
93
|
+
};
|
|
94
|
+
}());
|
|
95
|
+
}
|
|
96
|
+
}, {
|
|
97
|
+
key: "setVisible",
|
|
98
|
+
value: function setVisible() {
|
|
99
|
+
var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
100
|
+
// 控制POI点的隐藏、显示
|
|
101
|
+
this.poiMesh.forEach(function (poi) {
|
|
102
|
+
poi.visible = visible;
|
|
103
|
+
});
|
|
104
|
+
// 移除面板
|
|
105
|
+
if (this.dialogPoi) this.dialogPoi.removeFromParent();
|
|
106
|
+
}
|
|
107
|
+
}, {
|
|
108
|
+
key: "reset",
|
|
109
|
+
value: function reset() {
|
|
110
|
+
var _this$wallManage;
|
|
111
|
+
// 控制POI点的隐藏、显示
|
|
112
|
+
this.setVisible(true);
|
|
113
|
+
// 控制光墙的隐藏、显示
|
|
114
|
+
(_this$wallManage = this.wallManage) === null || _this$wallManage === void 0 ? void 0 : _this$wallManage.wallMesh.forEach(function (wall) {
|
|
115
|
+
wall.visible = false;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}, {
|
|
119
|
+
key: "addDialogPanel",
|
|
120
|
+
value: function addDialogPanel(data, position) {
|
|
121
|
+
var _this2 = this;
|
|
122
|
+
// 添加面板
|
|
123
|
+
var poi = new Poi(EPoiType.Panel);
|
|
124
|
+
this.dialogPoi = poi.create({
|
|
125
|
+
title: data.title,
|
|
126
|
+
content: data.poi.content
|
|
127
|
+
}, {
|
|
128
|
+
print: true
|
|
129
|
+
});
|
|
130
|
+
this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)));
|
|
131
|
+
this.scene.add(this.dialogPoi);
|
|
132
|
+
this.interactionManager.add(this.dialogPoi);
|
|
133
|
+
this.dialogPoi.addEventListener('click', function (event) {
|
|
134
|
+
_this2.dialogPoi.remove();
|
|
135
|
+
_this2.dialogPoi.removeFromParent();
|
|
136
|
+
_this2.dialogPoi = null;
|
|
137
|
+
_this2.reset();
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}]);
|
|
141
|
+
return PoiManage;
|
|
142
|
+
}();
|
|
143
|
+
export default PoiManage;
|
|
144
|
+
//# sourceMappingURL=poi copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Mesh","MeshBasicMaterial","PlaneGeometry","Vector3","utils","EPoiType","Poi","regionMap","PoiManage","gobal","Map","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","option","scale","id","width","height","img","geometry","material","color","side","THREE","DoubleSide","plane","poi","Line","sprite","create","title","position","copy","fromArray","add","poiMesh","set","changeWallState","show","dialogPoi","visible","wallMesh","addEventListener","event","reset","addDialogPanel","point","removeFromParent","setVisible","data","Panel","content","print","clone","remove"],"sources":["../../../src/factory/unit/poi copy.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene, Sprite } from '@anov/3d-core'\nimport { Mesh, MeshBasicMaterial, PlaneGeometry, Vector3, utils } from '@anov/3d-core'\nimport { EPoiType, Poi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\nimport type WallManage from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n private wallManage: WallManage\n private interactionManager\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n generatePoi() {\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n const option = {\n scale: 80,\n ...((region.id === '4' || region.id === '5') && {\n width: 260,\n height: 260,\n img: './poi_big.png',\n }),\n }\n const geometry = new PlaneGeometry(1, 1)\n const material = new MeshBasicMaterial({ color: 0xFFFF00, side: THREE.DoubleSide })\n const plane = new Mesh(geometry, material)\n const poi = new Poi(EPoiType.Line)\n const sprite = poi.create(region.title, option) as Sprite\n sprite.position.copy(new Vector3().fromArray(region.poi.position))\n\n this.scene.add(sprite)\n this.poiMesh.set(region.poi.id, sprite)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n }\n\n sprite.addEventListener('mouseover', () => {\n changeWallState(true)\n })\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n this.addDialogPanel(region, event.point, sprite)\n })\n })\n }\n\n setVisible(visible = true) {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = visible\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n this.setVisible(true)\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n const poi = new Poi(EPoiType.Panel)\n this.dialogPoi = poi.create({ title: data.title, content: data.poi.content }, { print: true })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', (event) => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
|
|
@@ -26,11 +26,11 @@ var Font = /*#__PURE__*/function () {
|
|
|
26
26
|
var geometry = new TextGeometry(text, {
|
|
27
27
|
font: _this.font,
|
|
28
28
|
size: (_options$size = options.size) !== null && _options$size !== void 0 ? _options$size : 10,
|
|
29
|
-
height:
|
|
29
|
+
height: 1
|
|
30
30
|
});
|
|
31
31
|
var mesh = new Mesh(geometry, new MeshBasicMaterial({
|
|
32
32
|
depthTest: true,
|
|
33
|
-
color: new Color('#
|
|
33
|
+
color: new Color('#fff')
|
|
34
34
|
}));
|
|
35
35
|
mesh.position.copy(options.position);
|
|
36
36
|
res(mesh);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Color","Mesh","MeshBasicMaterial","lib","FontLoader","TextGeometry","Font","font","text","options","Promise","res","loader","load","geometry","size","height","mesh","depthTest","color","position","copy","createFontMesh","createText"],"sources":["../../../src/factory/utils/fontMesh.ts"],"sourcesContent":["import type { Vector3 } from '@anov/3d-core'\nimport { Color, Mesh, MeshBasicMaterial, lib } from '@anov/3d-core'\n\nconst { FontLoader, TextGeometry } = lib\n\ntype FontMeshOption = {\n position: Vector3\n color?: Color\n size?: number\n rotate?: number\n}\n\nclass Font {\n font: lib.Font | null\n\n constructor() {\n this.font = null\n }\n\n createText(text: string, options: FontMeshOption) {\n return new Promise((res) => {\n const loader = new FontLoader()\n loader.load('./font.json', (font) => {\n this.font = font\n\n const geometry = new TextGeometry(text, {\n font: this.font,\n size: options.size ?? 10,\n height:
|
|
1
|
+
{"version":3,"names":["Color","Mesh","MeshBasicMaterial","lib","FontLoader","TextGeometry","Font","font","text","options","Promise","res","loader","load","geometry","size","height","mesh","depthTest","color","position","copy","createFontMesh","createText"],"sources":["../../../src/factory/utils/fontMesh.ts"],"sourcesContent":["import type { Vector3 } from '@anov/3d-core'\nimport { Color, Mesh, MeshBasicMaterial, lib } from '@anov/3d-core'\n\nconst { FontLoader, TextGeometry } = lib\n\ntype FontMeshOption = {\n position: Vector3\n color?: Color\n size?: number\n rotate?: number\n}\n\nclass Font {\n font: lib.Font | null\n\n constructor() {\n this.font = null\n }\n\n createText(text: string, options: FontMeshOption) {\n return new Promise((res) => {\n const loader = new FontLoader()\n loader.load('./font.json', (font) => {\n this.font = font\n\n const geometry = new TextGeometry(text, {\n font: this.font,\n size: options.size ?? 10,\n height: 1,\n })\n\n const mesh = new Mesh(geometry, new MeshBasicMaterial({\n depthTest: true,\n color: new Color('#fff'),\n }))\n\n mesh.position.copy(options.position)\n res(mesh)\n })\n })\n }\n}\n\nconst font = new Font()\n\nconst createFontMesh = (text: string, options: FontMeshOption) => {\n return font.createText(text, options) as Promise<Mesh>\n}\n\nexport default createFontMesh\n"],"mappings":";;;;;;;AACA,SAASA,KAAK,EAAEC,IAAI,EAAEC,iBAAiB,EAAEC,GAAG,QAAQ,eAAe;AAEnE,IAAQC,UAAU,GAAmBD,GAAG,CAAhCC,UAAU;EAAEC,YAAY,GAAKF,GAAG,CAApBE,YAAY;AAAQ,IASlCC,IAAI;EAGR,gBAAc;IAAA;IAAA;IACZ,IAAI,CAACC,IAAI,GAAG,IAAI;EAClB;EAAC;IAAA;IAAA,OAED,oBAAWC,IAAY,EAAEC,OAAuB,EAAE;MAAA;MAChD,OAAO,IAAIC,OAAO,CAAC,UAACC,GAAG,EAAK;QAC1B,IAAMC,MAAM,GAAG,IAAIR,UAAU,EAAE;QAC/BQ,MAAM,CAACC,IAAI,CAAC,aAAa,EAAE,UAACN,IAAI,EAAK;UAAA;UACnC,KAAI,CAACA,IAAI,GAAGA,IAAI;UAEhB,IAAMO,QAAQ,GAAG,IAAIT,YAAY,CAACG,IAAI,EAAE;YACtCD,IAAI,EAAE,KAAI,CAACA,IAAI;YACfQ,IAAI,mBAAEN,OAAO,CAACM,IAAI,yDAAI,EAAE;YACxBC,MAAM,EAAE;UACV,CAAC,CAAC;UAEF,IAAMC,IAAI,GAAG,IAAIhB,IAAI,CAACa,QAAQ,EAAE,IAAIZ,iBAAiB,CAAC;YACpDgB,SAAS,EAAE,IAAI;YACfC,KAAK,EAAE,IAAInB,KAAK,CAAC,MAAM;UACzB,CAAC,CAAC,CAAC;UAEHiB,IAAI,CAACG,QAAQ,CAACC,IAAI,CAACZ,OAAO,CAACW,QAAQ,CAAC;UACpCT,GAAG,CAACM,IAAI,CAAC;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAGH,IAAMV,IAAI,GAAG,IAAID,IAAI,EAAE;AAEvB,IAAMgB,cAAc,GAAG,SAAjBA,cAAc,CAAId,IAAY,EAAEC,OAAuB,EAAK;EAChE,OAAOF,IAAI,CAACgB,UAAU,CAACf,IAAI,EAAEC,OAAO,CAAC;AACvC,CAAC;AAED,eAAea,cAAc"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anov/3d",
|
|
3
|
-
"version": "0.0.4-
|
|
3
|
+
"version": "0.0.4-alpha26",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@tweenjs/tween.js": "^21.0.0",
|
|
21
21
|
"localforage": "^1.10.0",
|
|
22
22
|
"uuid": "^9.0.1",
|
|
23
|
-
"@anov/3d-ability": "^0.0.4-
|
|
23
|
+
"@anov/3d-ability": "^0.0.4-alpha9",
|
|
24
24
|
"@anov/3d-core": "^0.0.4-alpha19"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|