|
@@ -32,26 +32,30 @@ class Label2D extends THREE.EventDispatcher {
|
|
|
|
|
|
this.elem.css({ position: 'absolute', 'z-index': 999 })
|
|
|
this.clickFun = o.clickFun;
|
|
|
- this.clickFun && this.elem.on('click', this.clickFun.bind(this,{...o,elem:this.elem}))
|
|
|
+ this.clickFun && this.elem.on('click', this.clickFun.bind(this, {
|
|
|
+ ...o,
|
|
|
+ elem: this.elem,
|
|
|
+ emissiveTexture: this.emissiveTexture
|
|
|
+ }))
|
|
|
|
|
|
{
|
|
|
let update = (e) => {
|
|
|
this.update(e)
|
|
|
}
|
|
|
- let updateShelter = ()=>{
|
|
|
- if (this.shelterByModel){
|
|
|
+ let updateShelter = () => {
|
|
|
+ if (this.shelterByModel) {
|
|
|
if (convertTool.ifShelter(this.position, this.pos2d, viewer.camera, viewer.model.children, 0.05)) {
|
|
|
this.sheltered = true
|
|
|
- this.elem.css('display', 'none');
|
|
|
- }else{
|
|
|
+ this.elem.css('display', 'none');
|
|
|
+ } else {
|
|
|
this.sheltered = false
|
|
|
this.update()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- viewer.addEventListener("view.changed", update)
|
|
|
- viewer.addEventListener("delayUpdate", updateShelter)
|
|
|
-
|
|
|
+ viewer.addEventListener("view.changed", update)
|
|
|
+ viewer.addEventListener("delayUpdate", updateShelter)
|
|
|
+
|
|
|
this.addEventListener('dispose', (e) => {
|
|
|
viewer.removeEventListener("view.changed", update)
|
|
|
viewer.removeEventListener("delayUpdate", updateShelter)
|
|
@@ -62,38 +66,38 @@ class Label2D extends THREE.EventDispatcher {
|
|
|
this.update()
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- update(e={}) {
|
|
|
+
|
|
|
+ update(e = {}) {
|
|
|
if (!this.position || !this.visible || this.sheltered) return
|
|
|
-
|
|
|
+
|
|
|
|
|
|
var p = convertTool.getPos2d(this.position, viewer.camera, $("#player")[0]);
|
|
|
this.pos2d = p.vector;
|
|
|
|
|
|
|
|
|
- if (this.pos2d.x>0) {
|
|
|
+ if (this.pos2d.x > 0) {
|
|
|
this.elem.addClass('right')
|
|
|
- } else{
|
|
|
+ } else {
|
|
|
this.elem.removeClass('right')
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
if (!p || !p.trueSide) {
|
|
|
this.elem.css('display', 'none'); return;
|
|
|
}
|
|
|
|
|
|
//判断label是否被模型遮挡,遮挡则消失(如果是漫游模式最好提前计算visiblePanos)
|
|
|
-
|
|
|
-
|
|
|
- /* if (e.changeSlightly) {//防卡: 画面要停止转动时才执行
|
|
|
- if (this.shelterByModel && convertTool.ifShelter(this.position, p.vector, viewer.camera, viewer.model.children, 0.05)) {
|
|
|
- this.sheltered = true
|
|
|
- this.elem.css('display', 'none'); return;
|
|
|
- } else {
|
|
|
- this.sheltered = false
|
|
|
- }
|
|
|
- } else {
|
|
|
- //console.log('!changeSlightly')
|
|
|
- } */
|
|
|
+
|
|
|
+
|
|
|
+ /* if (e.changeSlightly) {//防卡: 画面要停止转动时才执行
|
|
|
+ if (this.shelterByModel && convertTool.ifShelter(this.position, p.vector, viewer.camera, viewer.model.children, 0.05)) {
|
|
|
+ this.sheltered = true
|
|
|
+ this.elem.css('display', 'none'); return;
|
|
|
+ } else {
|
|
|
+ this.sheltered = false
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //console.log('!changeSlightly')
|
|
|
+ } */
|
|
|
|
|
|
|
|
|
this.elem.css({
|
|
@@ -102,7 +106,7 @@ class Label2D extends THREE.EventDispatcher {
|
|
|
})
|
|
|
|
|
|
this.elem.css('display', 'block');
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
setVisible(visi, reason, level = 0, type) {
|