|
|
|
@ -1,4 +1,4 @@ |
|
|
|
var Map_QM, renderFrame = -1, pathCameraState, stats, stateTime, isJUZ = false, hasLine = false, dir = false, iot = true, shopTime, debug = false; //dir--自定义地图大小适应不同版本的地图大小
|
|
|
|
var Map_QM, renderFrame = -1, pathCameraState, stats, stateTime, isJUZ = false, hasLine = false, dir = false, iot = false, shopTime, debug = false; //dir--自定义地图大小适应不同版本的地图大小
|
|
|
|
//basePath 基础路径 graphPath最佳路径 ftPath 扶梯路径 dtPath 电梯路径
|
|
|
|
|
|
|
|
var typeObj = [{ ft: 0, type: 0, code: 'ft', name: '扶梯' }, { upft: 1, type: 1, code: 'upft', name: '上扶梯' }, { downft: 2, type: 2, code: 'downft', name: '下扶梯' }, { mys: 3, type: 3, code: 'mys', name: '母婴室' }, { xsj: 4, type: 4, code: 'xsj', name: '洗手间' }, |
|
|
|
@ -843,7 +843,7 @@ QMUtil = function () { |
|
|
|
} else { |
|
|
|
//不是横线时 根据斜率计算点位
|
|
|
|
x = point.x + 5; |
|
|
|
y = parseInt(gradient * (x - point.x) + point.y); |
|
|
|
y = gradient * (x - point.x) + point.y; |
|
|
|
} |
|
|
|
|
|
|
|
return Map_QM.util.pointXY(point, new Map_QM.util.Point(x, y), wallWidth / 2); |
|
|
|
@ -866,8 +866,8 @@ QMUtil = function () { |
|
|
|
let x1 = (-B + Math.sqrt(Math.pow(B, 2) - 4 * A * C)) / (2 * A); |
|
|
|
let x2 = (-B - Math.sqrt(Math.pow(B, 2) - 4 * A * C)) / (2 * A); |
|
|
|
|
|
|
|
result.push(new Map_QM.util.Point(parseInt(x1), parseInt(k * x1 + b))); |
|
|
|
result.push(new Map_QM.util.Point(parseInt(x2), parseInt(k * x2 + b))); |
|
|
|
result.push(new Map_QM.util.Point(x1, k * x1 + b)); |
|
|
|
result.push(new Map_QM.util.Point(x2, k * x2 + b)); |
|
|
|
return result; |
|
|
|
} |
|
|
|
//计算两条直线的相交点
|
|
|
|
@ -1226,7 +1226,6 @@ MainMap_QM = function (callBack, options) { |
|
|
|
|
|
|
|
if (document.getElementById('moveFloorBG')) { |
|
|
|
this.moveFloorbg = new THREE.CSS2DObject(document.getElementById('moveFloorBG')); |
|
|
|
this.scene.add(this.moveFloorbg); |
|
|
|
} |
|
|
|
this.man_3d; |
|
|
|
this.man_2d; |
|
|
|
@ -1389,14 +1388,14 @@ MainMap_QM.prototype = { |
|
|
|
initOptions: function (options) { |
|
|
|
//初始化参数
|
|
|
|
if (this.util.allMap[this.util.selectBuild].playSpeed) { |
|
|
|
this.util.options.mapScale = this.util.allMap[this.util.selectBuild].hasOwnProperty("scale") ? parseInt(this.util.allMap[this.util.selectBuild].scale) : 18; |
|
|
|
this.util.options.playSpeed = this.util.allMap[this.util.selectBuild].hasOwnProperty("playSpeed") ? parseInt(this.util.allMap[this.util.selectBuild].playSpeed) : 6; |
|
|
|
this.util.options.collision = this.util.allMap[this.util.selectBuild].hasOwnProperty("collision") ? this.util.allMap[this.util.selectBuild].collision : true; |
|
|
|
this.util.options.navColor = this.util.allMap[this.util.selectBuild].hasOwnProperty("navColor") ? this.util.allMap[this.util.selectBuild].navColor : 0xEE6A50; |
|
|
|
this.util.options.aRadius = this.util.allMap[this.util.selectBuild].hasOwnProperty("aRadius") ? parseInt(this.util.allMap[this.util.selectBuild].aRadius) : 2; |
|
|
|
this.util.options.boxShop = this.util.allMap[this.util.selectBuild].hasOwnProperty("boxShop") ? this.util.allMap[this.util.selectBuild].boxShop.split(",") : []; |
|
|
|
this.util.options.shopStyle = this.util.allMap[this.util.selectBuild].hasOwnProperty("shopStyle") ? this.util.allMap[this.util.selectBuild].shopStyle : "shopName"; |
|
|
|
this.util.options.modelIcon = this.util.allMap[this.util.selectBuild].hasOwnProperty("modelIcon") ? this.util.allMap[this.util.selectBuild].modelIcon : true; |
|
|
|
this.util.allMap[this.util.selectBuild].hasOwnProperty("scale") && (this.util.options.mapScale = parseInt(this.util.allMap[this.util.selectBuild].scale)); |
|
|
|
this.util.allMap[this.util.selectBuild].hasOwnProperty("playSpeed") && (this.util.options.playSpeed = parseInt(this.util.allMap[this.util.selectBuild].playSpeed)); |
|
|
|
this.util.allMap[this.util.selectBuild].hasOwnProperty("collision") && (this.util.options.collision = this.util.allMap[this.util.selectBuild].collision); |
|
|
|
this.util.allMap[this.util.selectBuild].hasOwnProperty("navColor") && (this.util.options.navColor = this.util.allMap[this.util.selectBuild].navColor); |
|
|
|
this.util.allMap[this.util.selectBuild].hasOwnProperty("aRadius") && (this.util.options.aRadius = parseInt(this.util.allMap[this.util.selectBuild].aRadius)); |
|
|
|
this.util.allMap[this.util.selectBuild].hasOwnProperty("boxShop") && (this.util.options.boxShop = this.util.allMap[this.util.selectBuild].boxShop.split(",")); |
|
|
|
this.util.allMap[this.util.selectBuild].hasOwnProperty("shopStyle") && (this.util.options.shopStyle = this.util.allMap[this.util.selectBuild].shopStyle); |
|
|
|
this.util.allMap[this.util.selectBuild].hasOwnProperty("modelIcon") && (this.util.options.modelIcon = this.util.allMap[this.util.selectBuild].modelIcon); |
|
|
|
|
|
|
|
this.hemiLight.color = new THREE.Color(this.util.allMap[this.util.selectBuild].s_col || "#fffff0"); |
|
|
|
this.hemiLight.groundColor = new THREE.Color(this.util.allMap[this.util.selectBuild].g_col || "#ffffff"); |
|
|
|
@ -1659,6 +1658,9 @@ MainMap_QM.prototype = { |
|
|
|
this.buildObj = new THREE.Group(); |
|
|
|
this.sceneGap.add(this.buildObj); |
|
|
|
this.CSSObject = new THREE.Object3D(); |
|
|
|
if(this.moveFloorbg){ |
|
|
|
this.CSSObject.add(this.moveFloorbg); |
|
|
|
} |
|
|
|
this.buildObj.add(this.CSSObject); |
|
|
|
this.buildObj.add(this.dtLineGroup); |
|
|
|
this.initGuide(); |
|
|
|
@ -2164,13 +2166,13 @@ MainMap_QM.prototype = { |
|
|
|
for (let i = 0; i < Map_QM.mapArr[t].length; i++) { |
|
|
|
Map_QM.mapArr[t][i].allObj.visible = t == build ? true : false; |
|
|
|
Map_QM.mapArr[t][i].labelObj.traverse((obj) => { |
|
|
|
obj.visible = false; |
|
|
|
obj.element && (obj.element.style.visibility = "hidden"); |
|
|
|
}); |
|
|
|
Map_QM.mapArr[t][i].tagObj.traverse((obj) => { |
|
|
|
obj.visible = false; |
|
|
|
obj.element && (obj.element.style.visibility = "hidden"); |
|
|
|
}); |
|
|
|
Map_QM.mapArr[t][i].showTagObj.traverse((obj) => { |
|
|
|
obj.visible = false; |
|
|
|
obj.element && (obj.element.style.visibility = "hidden"); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -2179,15 +2181,14 @@ MainMap_QM.prototype = { |
|
|
|
} else { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
for (let i = 0; i < Map_QM.mapArr[build].length; i++) { |
|
|
|
if (i == fIndex || (i == midIndex && Map_QM.util.options.overlap) || (i == endIndex && Map_QM.util.options.overlap)) { |
|
|
|
Map_QM.mapArr[build][i].allObj.visible = true; |
|
|
|
Map_QM.mapArr[build][i].labelObj.traverse((obj) => { |
|
|
|
obj.visible = true; |
|
|
|
obj.element && (obj.element.style.visibility = "visible") |
|
|
|
}); |
|
|
|
Map_QM.mapArr[build][i].showTagObj.traverse((obj) => { |
|
|
|
obj.visible = true; |
|
|
|
obj.element && (obj.element.style.visibility = "visible"); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
Map_QM.mapArr[build][i].allObj.visible = false; |
|
|
|
@ -2519,7 +2520,7 @@ MainMap_QM.prototype = { |
|
|
|
*/ |
|
|
|
changeStateShopPro: function (isShow = false) { |
|
|
|
Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].tagObj.traverse((obj) => { |
|
|
|
obj.visible = isShow; |
|
|
|
obj.element && (obj.element.style.visibility = isShow?"visible":"hidden"); |
|
|
|
}); |
|
|
|
}, |
|
|
|
/** |
|
|
|
@ -2623,7 +2624,11 @@ MainMap_QM.prototype = { |
|
|
|
drawToLine: function (startPoint, endPoint, dash = 50, color = 0x2269dd, ctrlPoint1 = null, ctrlPoint2 = null) { |
|
|
|
let curve = new THREE.CubicBezierCurve3(startPoint, ctrlPoint1, ctrlPoint2, endPoint); |
|
|
|
let points = curve.getPoints(dash); |
|
|
|
let flyLine = createFlyCurve(points, false); |
|
|
|
let colorChange=[]; |
|
|
|
for(let i=1; i<7; i+=2){ |
|
|
|
colorChange.push(parseInt("0x"+color.slice(i,i+2))/255); |
|
|
|
} |
|
|
|
let flyLine = createFlyCurve(points,new THREE.Vector3( colorChange[0], colorChange[1], colorChange[2] ), false); |
|
|
|
flyLine.userData.type = "toLine"; |
|
|
|
return flyLine; |
|
|
|
}, |
|
|
|
@ -2818,7 +2823,7 @@ MainMap_QM.prototype = { |
|
|
|
*/ |
|
|
|
startRender: function () { |
|
|
|
Map_QM.cancelRender(); |
|
|
|
renderFrame = requestAnimationFrame(Map_QM.startRender); |
|
|
|
|
|
|
|
let T = Map_QM.util._clock.getDelta(); |
|
|
|
Map_QM.util.timeObj.timeS = Map_QM.util.timeObj.timeS + T; |
|
|
|
// requestAnimationFrame默认调用render函数60次,通过时间判断,降低renderer.render执行频率
|
|
|
|
@ -2844,7 +2849,7 @@ MainMap_QM.prototype = { |
|
|
|
Map_QM.labelRenderer.render(Map_QM.scene, Map_QM.camera); |
|
|
|
if(Map_QM.mapArr[Map_QM.util.selectBuild] && Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor]){ |
|
|
|
Map_QM.labelRenderer.renderObject( Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj, Map_QM.camera ); |
|
|
|
Map_QM.labelRenderer.renderObject( Map_QM.CSSObject, Map_QM.camera ); |
|
|
|
Map_QM.labelRenderer.renderObject( Map_QM.CSSObject, Map_QM.camera); |
|
|
|
} |
|
|
|
for (let item of Map_QM.mixers) { |
|
|
|
item.update(T); |
|
|
|
@ -2859,6 +2864,7 @@ MainMap_QM.prototype = { |
|
|
|
//timeS置0
|
|
|
|
Map_QM.util.timeObj.timeS = 0; |
|
|
|
} |
|
|
|
renderFrame = requestAnimationFrame(Map_QM.startRender); |
|
|
|
}, |
|
|
|
/** |
|
|
|
* @api {方法} cancelRender() 取消地图渲染 |
|
|
|
@ -3207,6 +3213,7 @@ MainMap_QM.prototype = { |
|
|
|
Map_QM.labelRenderer.render(Map_QM.scene, Map_QM.camera); |
|
|
|
Map_QM.labelRenderer.renderObject( Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj, Map_QM.camera ); |
|
|
|
Map_QM.labelRenderer.zOrder( Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj ); |
|
|
|
Map_QM.collLabel(); |
|
|
|
if (Map_QM.callBackLoadOver) { |
|
|
|
let floorData = []; |
|
|
|
for (let i = 0; i < Map_QM.util.allMap.length; i++) { |
|
|
|
@ -3230,7 +3237,7 @@ MainMap_QM.prototype = { |
|
|
|
type: "changeFloorOver", |
|
|
|
data: Map_QM.selectFloor |
|
|
|
}); |
|
|
|
Map_QM.collLabel(); |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
autoChangeEleAngle: function () { |
|
|
|
@ -3293,6 +3300,7 @@ MainMap_QM.prototype = { |
|
|
|
controlsChock: function () { |
|
|
|
Map_QM.autoChangeEleAngle(); |
|
|
|
Map_QM.collLabel(); |
|
|
|
|
|
|
|
/** |
|
|
|
* @api {事件} MapAngleChange 地图的方向改变 |
|
|
|
* @apiGroup 地图事件 |
|
|
|
@ -3411,7 +3419,6 @@ MainMap_QM.prototype = { |
|
|
|
if (!Map_QM || !Map_QM.util.options.collision) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
clearTimeout(Map_QM.util.timeObj.collTime); |
|
|
|
Map_QM.util.timeObj.collTime = setTimeout(() => { |
|
|
|
clearTimeout(Map_QM.util.timeObj.collTime); |
|
|
|
@ -4708,7 +4715,6 @@ MainMap_QM.prototype = { |
|
|
|
Map_QM.moveFloorbg.element.style.height = (floorArr.length * add) + "px"; |
|
|
|
Map_QM.moveFloorbg.position.set(x0, y0, 80); |
|
|
|
Map_QM.moveFloorbg.applyMatrix4(Map_QM.mapArr[parseInt(Map_QM.forShopArr[Map_QM.util._indexPathFloor].build)][pathFloor].allObj.matrix); |
|
|
|
Map_QM.moveFloorbg.applyMatrix4(Map_QM.sceneGap.matrix); |
|
|
|
let floorBox = document.getElementById('floorBox'); |
|
|
|
while (floorBox.hasChildNodes()) { |
|
|
|
floorBox.removeChild(floorBox.firstChild); |
|
|
|
@ -5198,7 +5204,7 @@ FloorMap_QM.prototype = { |
|
|
|
obj.rotateY(Map_QM.util.modelArr[i].list[t].rot.y); |
|
|
|
obj.rotateZ(Map_QM.util.modelArr[i].list[t].rot.z); |
|
|
|
sopce.allObj.add(obj); |
|
|
|
} showTagObj |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|