@eturnity/eturnity_3d 7.20.1 → 7.24.0
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/package.json +2 -2
- package/src/EventManager/EventManager.js +48 -0
- package/src/Item/Item.js +12 -0
- package/src/Layer/Layer.js +119 -0
- package/src/Overlay/AirTeamOverlay.js +605 -0
- package/src/Overlay/ImageOverlay.js +309 -0
- package/src/Overlay/Overlay.js +255 -0
- package/src/Overlay/OverlayFactory.js +19 -0
- package/src/Overlay/OverlayLayer.js +36 -0
- package/src/components/ThreeCanvasViewer.vue +17 -6
- package/src/config.js +120 -17
- package/src/helper/UpdateRoofModuleFieldRelations.js +65 -25
- package/src/helper/cameraMixin.js +25 -0
- package/src/helper/materialMixin.js +14 -1
- package/src/helper/projectedMaterial.js +662 -0
- package/src/helper/render/base.js +5 -5
- package/src/helper/render/clear.js +0 -17
- package/src/helper/render/edge.js +2 -0
- package/src/helper/render/geometryHandler.js +60 -31
- package/src/helper/render/imageOverlay.js +25 -144
- package/src/helper/render/index.js +2 -0
- package/src/helper/render/mergedGeometry.js +11 -2
- package/src/helper/render/obstacle.js +2 -1
- package/src/helper/render/overlay.js +41 -0
- package/src/helper/render/projectionMaterial.js +17 -19
- package/src/helper/render/roof.js +49 -52
- package/src/helper/render/texture.js +25 -0
- package/src/helper/render/tile.js +84 -24
- package/src/helper/render/tileProjection.js +23 -14
- package/src/helper/renderMixin.js +22 -8
- package/src/helper/threeMixin.js +5 -2
- package/src/store/hydrateData.js +23 -11
- package/src/store/nodesEdgesCreation.js +78 -4
- package/src/store/three-d-module.js +1 -1
- package/dist/css/app.58568098.css +0 -1
- package/dist/img/reneSola_Virtus_2_JC320S_24_Bbw.85a0cb6d.png +0 -0
- package/dist/index.html +0 -15
- package/dist/js/app-legacy.aa792c98.js +0 -2
- package/dist/js/app-legacy.aa792c98.js.map +0 -1
- package/dist/js/chunk-vendors-legacy.9bb3863d.js +0 -41
- package/dist/js/chunk-vendors-legacy.9bb3863d.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eturnity/eturnity_3d",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "7.
|
|
4
|
+
"version": "7.24.0",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
7
7
|
"src"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"prettier": "prettier --write \"**/*.{js,vue}\""
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@eturnity/eturnity_maths": "7.
|
|
18
|
+
"@eturnity/eturnity_maths": "7.24.0",
|
|
19
19
|
"@originjs/vite-plugin-commonjs": "1.0.3",
|
|
20
20
|
"core-js": "2.6.12",
|
|
21
21
|
"cors": "2.8.5",
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export default class EventManager {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.listeners = {}
|
|
4
|
+
this.availableEvents = []
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
// Add an event listener
|
|
8
|
+
addEventListener(events, callback) {
|
|
9
|
+
let eventList = events.split(' ')
|
|
10
|
+
eventList.forEach((event) => {
|
|
11
|
+
if (!this.listeners[event]) {
|
|
12
|
+
this.listeners[event] = []
|
|
13
|
+
}
|
|
14
|
+
this.listeners[event].push(callback)
|
|
15
|
+
})
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Remove an event listener
|
|
19
|
+
removeEventListener(events, callback) {
|
|
20
|
+
let eventList = events.split(' ')
|
|
21
|
+
eventList.forEach((event) => {
|
|
22
|
+
if (this.listeners[event]) {
|
|
23
|
+
this.listeners[event] = this.listeners[event].filter(
|
|
24
|
+
(listener) => listener !== callback
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Dispatch an event and bubble it up to parent components
|
|
31
|
+
emit(event, eventData) {
|
|
32
|
+
//Check if event is available
|
|
33
|
+
if (!this.availableEvents.includes(event)) {
|
|
34
|
+
console.error(
|
|
35
|
+
event,
|
|
36
|
+
' not available. Available events:',
|
|
37
|
+
this.availableEvents
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
// Check if the event has listeners
|
|
41
|
+
if (this.listeners[event]) {
|
|
42
|
+
// Execute each listener callback
|
|
43
|
+
this.listeners[event].forEach((callback) => {
|
|
44
|
+
callback(eventData)
|
|
45
|
+
})
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
package/src/Item/Item.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import EventManager from '../EventManager/EventManager'
|
|
2
|
+
|
|
3
|
+
export default class LayerManager extends EventManager {
|
|
4
|
+
constructor() {
|
|
5
|
+
super()
|
|
6
|
+
this.items = []
|
|
7
|
+
this.selectedItemsIds = []
|
|
8
|
+
this.itemsIds = []
|
|
9
|
+
this.availableEvents.push(
|
|
10
|
+
'selected-items-updated',
|
|
11
|
+
'items-updated',
|
|
12
|
+
'item-updated',
|
|
13
|
+
'item-added',
|
|
14
|
+
'item-removed',
|
|
15
|
+
'item-selected'
|
|
16
|
+
)
|
|
17
|
+
}
|
|
18
|
+
findById(id) {
|
|
19
|
+
return this.items.find((item) => item.id == id)
|
|
20
|
+
}
|
|
21
|
+
getItems() {
|
|
22
|
+
return this.items
|
|
23
|
+
}
|
|
24
|
+
getReadyItems() {
|
|
25
|
+
return this.items.filter((item) => item.isReady)
|
|
26
|
+
}
|
|
27
|
+
getItemsIds() {
|
|
28
|
+
return this.itemsIds
|
|
29
|
+
}
|
|
30
|
+
getSelectedItemsIds() {
|
|
31
|
+
return this.selectedItemsIds
|
|
32
|
+
}
|
|
33
|
+
getSelectedItems() {
|
|
34
|
+
return this.items.filter((item) => this.selectedItemsIds.includes(item.id))
|
|
35
|
+
}
|
|
36
|
+
setItems(items) {
|
|
37
|
+
this.items = items
|
|
38
|
+
this.itemsIds = items.map((i) => i.id)
|
|
39
|
+
const newSelectedItemsIds = this.selectedItemsIds.filter((id) =>
|
|
40
|
+
this.itemsIds.includes(id)
|
|
41
|
+
)
|
|
42
|
+
this.selectItemsIds(newSelectedItemsIds)
|
|
43
|
+
this.emit('items-updated', [...this.items])
|
|
44
|
+
}
|
|
45
|
+
selectItemsIds(ids) {
|
|
46
|
+
this.selectedItemsIds = ids
|
|
47
|
+
this.items.forEach(
|
|
48
|
+
(item) => (item.isSelected = this.selectedItemsIds.includes(item.id))
|
|
49
|
+
)
|
|
50
|
+
this.emit('selected-items-updated', this.selectedItemsIds)
|
|
51
|
+
}
|
|
52
|
+
selectItems(items) {
|
|
53
|
+
const selectedItemsIds = items.map((item) => item.id)
|
|
54
|
+
this.selectItemsIds(selectedItemsIds)
|
|
55
|
+
}
|
|
56
|
+
deselectItems() {
|
|
57
|
+
this.selectItems([])
|
|
58
|
+
}
|
|
59
|
+
toggleSelectionById(id) {
|
|
60
|
+
let newSelectedItems = this.getSelectedItems()
|
|
61
|
+
if (this.selectedItemsIds.includes(id)) {
|
|
62
|
+
newSelectedItems = newSelectedItems.filter((item) => item.id != id)
|
|
63
|
+
} else {
|
|
64
|
+
let item = this.findById(id)
|
|
65
|
+
if (item) {
|
|
66
|
+
newSelectedItems.push(item)
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
this.selectItems(newSelectedItems)
|
|
70
|
+
}
|
|
71
|
+
addOrUpdateItem(item) {
|
|
72
|
+
const id = item.id
|
|
73
|
+
const existingItemWithSameId = this.items.find((i) => i.id == id)
|
|
74
|
+
if (existingItemWithSameId) {
|
|
75
|
+
if (item.version > existingItemWithSameId.version) {
|
|
76
|
+
this.removeItemById(id)
|
|
77
|
+
} else {
|
|
78
|
+
return existingItemWithSameId
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
let newItems = [...this.items]
|
|
82
|
+
newItems.push(item)
|
|
83
|
+
this.setItems(newItems)
|
|
84
|
+
this.emit('item-added', item)
|
|
85
|
+
return item
|
|
86
|
+
}
|
|
87
|
+
removeItemById(id) {
|
|
88
|
+
this.setItems(this.items.filter((item) => item.id != id))
|
|
89
|
+
this.emit('item-removed')
|
|
90
|
+
}
|
|
91
|
+
removeSelectedItems() {
|
|
92
|
+
this.setItems(this.items.filter((item) => !item.isSelected))
|
|
93
|
+
this.emit('item-removed')
|
|
94
|
+
}
|
|
95
|
+
removeAllItems() {
|
|
96
|
+
this.setItems([])
|
|
97
|
+
this.emit('item-removed')
|
|
98
|
+
}
|
|
99
|
+
dispatchActionToAllItems(actionName, params) {
|
|
100
|
+
return this.getItems().map((item) => {
|
|
101
|
+
if (
|
|
102
|
+
typeof item[actionName] === 'function' &&
|
|
103
|
+
item.actionsAvailable.includes(actionName)
|
|
104
|
+
) {
|
|
105
|
+
return item[actionName](params)
|
|
106
|
+
}
|
|
107
|
+
})
|
|
108
|
+
}
|
|
109
|
+
dispatchActionToItemById(id, actionName, params) {
|
|
110
|
+
const item = this.findById(id)
|
|
111
|
+
if (
|
|
112
|
+
typeof item[actionName] === 'function' &&
|
|
113
|
+
item.actionsAvailable.includes(actionName)
|
|
114
|
+
) {
|
|
115
|
+
return item[actionName](params)
|
|
116
|
+
}
|
|
117
|
+
return
|
|
118
|
+
}
|
|
119
|
+
}
|