新版三维车站客流管理代码修改(未实装)
This commit is contained in:
parent
e4e19cd224
commit
9434928436
@ -91,3 +91,43 @@ export function gousuo3dAction(group, data) {
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
// 存储数据
|
||||
export function saveStationManagerData(data) {
|
||||
return request({
|
||||
url: `/api/pfp`,
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
// 更新数据
|
||||
export function updateStationManagerData(id,data) {
|
||||
return request({
|
||||
url: `/api/pfp/${id}`,
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
// 查询数据列表
|
||||
export function getStationManagerDataList() {
|
||||
const datad = request({
|
||||
url: `/api/pfp/list`,
|
||||
method: 'get'
|
||||
});
|
||||
return datad.then();
|
||||
}
|
||||
// 查询数据
|
||||
export function getStationManagerData(id) {
|
||||
const datad = request({
|
||||
url: `/api/pfp/${id}`,
|
||||
method: 'get'
|
||||
});
|
||||
return datad.then();
|
||||
}
|
||||
// 删除数据
|
||||
export function deleteStationManagerData(id) {
|
||||
return request({
|
||||
url: `/api/pfp/${id}`,
|
||||
method: 'delete',
|
||||
});
|
||||
}
|
||||
|
280
src/jlmap3d/jl3dstationmanager/connect/silumationConnect.js
Normal file
280
src/jlmap3d/jl3dstationmanager/connect/silumationConnect.js
Normal file
@ -0,0 +1,280 @@
|
||||
import StompClient from '@/utils/sock';
|
||||
import { getBaseUrl } from '@/utils/baseUrl'
|
||||
import { getToken } from '@/utils/auth';
|
||||
import store from '@/store/index';
|
||||
|
||||
// 定于仿真socket接口
|
||||
export function silumationConnect(deviceaction,toptrain,downtrain,routegroup,passerStation,passerAi,sockStationPass,jl3d) {
|
||||
const scope = this;
|
||||
this.teststomp = new StompClient();
|
||||
let start = true;
|
||||
let topic = '/user/queue/simulation/jl3d/'+routegroup;
|
||||
let header = {'X-Token': getToken() };
|
||||
socketon(topic);
|
||||
|
||||
function socketon(topic) {
|
||||
try {
|
||||
scope.teststomp.subscribe(topic, callback, header);
|
||||
} catch (error) {
|
||||
console.error('websocket订阅失败');
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
this.socketoff = function(topic) {
|
||||
scope.teststomp.unsubscribe(topic);
|
||||
};
|
||||
|
||||
// 仿真socket接口回调函数
|
||||
function callback(Response) {
|
||||
const data = JSON.parse(Response.body);
|
||||
if(data.type == "PFV"){
|
||||
|
||||
for(let i=0;i<passerStation.stationlist.length;i++){
|
||||
if(passerStation.stationlist[i].code == data.body){
|
||||
jl3d.changestation(passerStation.stationlist[i].name);
|
||||
updateValue(passerStation.stationlist[i].name);
|
||||
i = passerStation.stationlist.length;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// /** 站台客流当前人数信息 */
|
||||
// if(data.type == "STAND_PFI"){
|
||||
//
|
||||
// let newStandData = data.body;
|
||||
// let count = 0;
|
||||
// for(let j=0;j<passerStation.stationlist.length;j++){
|
||||
// count = 0;
|
||||
//
|
||||
// for(let i=0;i<newStandData.length;i++){
|
||||
//
|
||||
//
|
||||
// if(passerStation.stationlist[j].topstand == newStandData[i].standCode){
|
||||
//
|
||||
// passerStation.stationlist[j].topspeed = newStandData[i].to;
|
||||
// passerStation.stationlist[j].toppassers = newStandData[i].num;
|
||||
// count++;
|
||||
// }
|
||||
// if(passerStation.stationlist[j].downstand == newStandData[i].standCode){
|
||||
//
|
||||
// passerStation.stationlist[j].downspeed = newStandData[i].to;
|
||||
// passerStation.stationlist[j].downpassers = newStandData[i].num;
|
||||
// count++;
|
||||
// }
|
||||
//
|
||||
// if(count == 2){
|
||||
// i = newStandData.length;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// jl3d.updateNowStationData();
|
||||
//
|
||||
// if(start){
|
||||
// start = false;
|
||||
// jl3d.initTrafficStart();
|
||||
// }
|
||||
//
|
||||
// // jl3d.allStationData = data.body;
|
||||
// }
|
||||
|
||||
// if(data.type == "TRAIN_PFI_BL"){
|
||||
//
|
||||
// if(toptrain.nowcode == data.body.code && topswitch == true){
|
||||
//
|
||||
// //根据上下车人数创建人
|
||||
// jl3d.updateNowLeaveData("top",data.body.out);
|
||||
// setTimeout(function(){
|
||||
// passerAi.passerout("top","start",data.body.in)
|
||||
// }, 5000);
|
||||
//
|
||||
// }
|
||||
// if(downtrain.nowcode == data.body.code && downswitch == true){
|
||||
// //根据上下车人数创建人
|
||||
// jl3d.updateNowLeaveData("down",data.body.out);
|
||||
// setTimeout(function(){
|
||||
// passerAi.passerout("down","start",data.body.in);
|
||||
// }, 5000);
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
if(data.type == "DeviceCtrl_3D"){
|
||||
if(data.body.type == "PSD"){
|
||||
|
||||
if(data.body.code == passerStation.nowStation.toppsd){
|
||||
if(data.body.open == 0){
|
||||
|
||||
passerAi.passerout("top","end");
|
||||
deviceaction.top.action.reset();
|
||||
deviceaction.top.action.time =deviceaction.top.action._clip.duration;
|
||||
deviceaction.top.action.timeScale = -1;
|
||||
deviceaction.top.action.play();
|
||||
|
||||
}else{
|
||||
|
||||
deviceaction.top.action.reset();
|
||||
deviceaction.top.action.time = 0;
|
||||
deviceaction.top.action.timeScale = 1;
|
||||
deviceaction.top.action.play();
|
||||
}
|
||||
}
|
||||
if(data.body.code == passerStation.nowStation.downpsd){
|
||||
if(data.body.open == 0){
|
||||
|
||||
deviceaction.down.action.reset();
|
||||
deviceaction.down.action.time = deviceaction.down.action._clip.duration;
|
||||
deviceaction.down.action.timeScale = -1;
|
||||
deviceaction.down.action.play();
|
||||
passerAi.passerout("down","end");
|
||||
}else{
|
||||
|
||||
deviceaction.down.action.reset();
|
||||
deviceaction.down.action.time = 0;
|
||||
deviceaction.down.action.timeScale = 1;
|
||||
deviceaction.down.action.play();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if(data.body.type == "TRAIN_DOOR"){
|
||||
|
||||
if(toptrain.nowcode == data.body.code){
|
||||
|
||||
if(data.body.open == "0"){
|
||||
closetraindoor(toptrain,data.body.doorCode,"top");
|
||||
|
||||
}else{
|
||||
opentraindoor(toptrain,data.body.doorCode,"top");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(downtrain.nowcode == data.body.code){
|
||||
|
||||
if(data.body.open == "0"){
|
||||
closetraindoor(downtrain,data.body.doorCode,"down");
|
||||
|
||||
}else{
|
||||
opentraindoor(downtrain,data.body.doorCode,"down");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if(data.type == "TrainRun_3D"){
|
||||
|
||||
for(let i=0,leni = data.body.length;i<leni;i++){
|
||||
if(data.body[i].section == passerStation.nowStation.topsection){
|
||||
if(toptrain.nowcode != data.body[i].code){
|
||||
toptrain.nowcode = data.body[i].code;
|
||||
sockStationPass.topswitch = true;
|
||||
}
|
||||
toptrain.position.copy(toptrain.curve.getPointAt(data.body[i].offset));
|
||||
|
||||
|
||||
}else{
|
||||
if(downtrain.nowcode == data.body[i].code){
|
||||
sockStationPass.topswitch = false
|
||||
toptrain.position.x -= 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(data.body[i].section == passerStation.nowStation.downsection){
|
||||
if(downtrain.nowcode != data.body[i].code){
|
||||
downtrain.nowcode = data.body[i].code;
|
||||
sockStationPass.downswitch = true;
|
||||
}
|
||||
downtrain.position.copy(downtrain.curve.getPointAt(data.body[i].offset));
|
||||
|
||||
}else{
|
||||
if(downtrain.nowcode == data.body[i].code){
|
||||
sockStationPass.downswitch = false;
|
||||
downtrain.position.x += 1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(data.type == 'Device_Load_Destroy_3D'){
|
||||
start = true;
|
||||
toptrain.nowcode = null;
|
||||
downtrain.nowcode = null;
|
||||
console.log("仿真重开=====================");
|
||||
}
|
||||
|
||||
|
||||
if(data.type == 'Simulation_Over') {
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.reload();
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
let actions;
|
||||
|
||||
function opentraindoor(train,doorcode,direct){
|
||||
// console.log(train);
|
||||
if(direct == "top"){
|
||||
// if(doorcode == "1"){
|
||||
// actions = train.action.down;
|
||||
// }
|
||||
//
|
||||
// if(doorcode == "2"){
|
||||
actions = train.action.top;
|
||||
// }
|
||||
}else{
|
||||
// if(doorcode == "1"){
|
||||
actions = train.action.top;
|
||||
// }
|
||||
//
|
||||
// if(doorcode == "2"){
|
||||
// actions = train.action.down;
|
||||
// }
|
||||
}
|
||||
|
||||
for(let an=actions.length-1;an>=0;an--){
|
||||
actions[an].reset();
|
||||
actions[an].time = 0;
|
||||
actions[an].timeScale = 1;
|
||||
actions[an].play();
|
||||
}
|
||||
}
|
||||
function closetraindoor(train,doorcode,direct){
|
||||
|
||||
if(direct == "top"){
|
||||
// if(doorcode == "1"){
|
||||
// actions = train.action.down;
|
||||
// }
|
||||
// if(doorcode == "2"){
|
||||
actions = train.action.top;
|
||||
// }
|
||||
toptrain.nowcode = null;
|
||||
}else{
|
||||
// if(doorcode == "1"){
|
||||
actions = train.action.top;
|
||||
// }
|
||||
// if(doorcode == "2"){
|
||||
// actions = train.action.down;
|
||||
// }
|
||||
downtrain.nowcode = null;
|
||||
}
|
||||
|
||||
for(let an=actions.length-1;an>=0;an--){
|
||||
actions[an].reset();
|
||||
actions[an].time = actions[an]._clip.duration;
|
||||
actions[an].timeScale = -1;
|
||||
actions[an].play();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
283
src/jlmap3d/jl3dstationmanager/connect/stationConnect.js
Normal file
283
src/jlmap3d/jl3dstationmanager/connect/stationConnect.js
Normal file
@ -0,0 +1,283 @@
|
||||
import StompClient from '@/utils/sock';
|
||||
import { getBaseUrl } from '@/utils/baseUrl'
|
||||
import { getToken } from '@/utils/auth';
|
||||
import store from '@/store/index';
|
||||
|
||||
// 定于仿真socket接口
|
||||
export function stationConnect(deviceaction,toptrain,downtrain,routegroup,passerStation,passerAi,jl3d) {
|
||||
const scope = this;
|
||||
this.teststomp = new StompClient();
|
||||
let start = true;
|
||||
let topic = '/user/queue/simulation/passenger/'+routegroup;
|
||||
let header = {'X-Token': getToken() };
|
||||
this.topswitch = false;
|
||||
this.downswitch = false;
|
||||
socketon(topic);
|
||||
|
||||
function socketon(topic) {
|
||||
try {
|
||||
scope.teststomp.subscribe(topic, callback, header);
|
||||
} catch (error) {
|
||||
console.error('websocket订阅失败');
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
this.socketoff = function(topic) {
|
||||
scope.teststomp.unsubscribe(topic);
|
||||
};
|
||||
|
||||
// 仿真socket接口回调函数
|
||||
function callback(Response) {
|
||||
const data = JSON.parse(Response.body);
|
||||
|
||||
// if(data.type == "PFV"){
|
||||
//
|
||||
// for(let i=0;i<passerStation.stationlist.length;i++){
|
||||
// if(passerStation.stationlist[i].code == data.body){
|
||||
// jl3d.changestation(passerStation.stationlist[i].name);
|
||||
// updateValue(passerStation.stationlist[i].name);
|
||||
// i = passerStation.stationlist.length;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
/** 站台客流当前人数信息 */
|
||||
if(data.type == "STAND_PFI"){
|
||||
|
||||
let newStandData = data.body;
|
||||
let count = 0;
|
||||
for(let j=0;j<passerStation.stationlist.length;j++){
|
||||
count = 0;
|
||||
|
||||
for(let i=0;i<newStandData.length;i++){
|
||||
|
||||
|
||||
if(passerStation.stationlist[j].topstand == newStandData[i].standCode){
|
||||
|
||||
passerStation.stationlist[j].topspeed = newStandData[i].to;
|
||||
passerStation.stationlist[j].toppassers = newStandData[i].num;
|
||||
count++;
|
||||
}
|
||||
if(passerStation.stationlist[j].downstand == newStandData[i].standCode){
|
||||
|
||||
passerStation.stationlist[j].downspeed = newStandData[i].to;
|
||||
passerStation.stationlist[j].downpassers = newStandData[i].num;
|
||||
count++;
|
||||
}
|
||||
|
||||
if(count == 2){
|
||||
i = newStandData.length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
jl3d.updateNowStationData();
|
||||
|
||||
if(start){
|
||||
start = false;
|
||||
jl3d.initTrafficStart();
|
||||
}
|
||||
|
||||
// jl3d.allStationData = data.body;
|
||||
}
|
||||
|
||||
if(data.type == "TRAIN_PFI_BL"){
|
||||
|
||||
if(toptrain.nowcode == data.body.code && scope.topswitch == true){
|
||||
|
||||
//根据上下车人数创建人
|
||||
jl3d.updateNowLeaveData("top",data.body.out);
|
||||
setTimeout(function(){
|
||||
passerAi.passerout("top","start",data.body.in)
|
||||
}, 5000);
|
||||
|
||||
}
|
||||
if(downtrain.nowcode == data.body.code && scope.downswitch == true){
|
||||
//根据上下车人数创建人
|
||||
jl3d.updateNowLeaveData("down",data.body.out);
|
||||
setTimeout(function(){
|
||||
passerAi.passerout("down","start",data.body.in);
|
||||
}, 5000);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// if(data.type == "DeviceCtrl_3D"){
|
||||
// if(data.body.type == "PSD"){
|
||||
//
|
||||
// if(data.body.code == passerStation.nowStation.toppsd){
|
||||
// if(data.body.open == 0){
|
||||
//
|
||||
// passerAi.passerout("top","end");
|
||||
// deviceaction.top.action.reset();
|
||||
// deviceaction.top.action.time =deviceaction.top.action._clip.duration;
|
||||
// deviceaction.top.action.timeScale = -1;
|
||||
// deviceaction.top.action.play();
|
||||
//
|
||||
// }else{
|
||||
//
|
||||
// deviceaction.top.action.reset();
|
||||
// deviceaction.top.action.time = 0;
|
||||
// deviceaction.top.action.timeScale = 1;
|
||||
// deviceaction.top.action.play();
|
||||
// }
|
||||
// }
|
||||
// if(data.body.code == passerStation.nowStation.downpsd){
|
||||
// if(data.body.open == 0){
|
||||
//
|
||||
// deviceaction.down.action.reset();
|
||||
// deviceaction.down.action.time = deviceaction.down.action._clip.duration;
|
||||
// deviceaction.down.action.timeScale = -1;
|
||||
// deviceaction.down.action.play();
|
||||
// passerAi.passerout("down","end");
|
||||
// }else{
|
||||
//
|
||||
// deviceaction.down.action.reset();
|
||||
// deviceaction.down.action.time = 0;
|
||||
// deviceaction.down.action.timeScale = 1;
|
||||
// deviceaction.down.action.play();
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if(data.body.type == "TRAIN_DOOR"){
|
||||
//
|
||||
// if(toptrain.nowcode == data.body.code){
|
||||
//
|
||||
// if(data.body.open == "0"){
|
||||
// closetraindoor(toptrain,data.body.doorCode,"top");
|
||||
//
|
||||
// }else{
|
||||
// opentraindoor(toptrain,data.body.doorCode,"top");
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// if(downtrain.nowcode == data.body.code){
|
||||
//
|
||||
// if(data.body.open == "0"){
|
||||
// closetraindoor(downtrain,data.body.doorCode,"down");
|
||||
//
|
||||
// }else{
|
||||
// opentraindoor(downtrain,data.body.doorCode,"down");
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if(data.type == "TrainRun_3D"){
|
||||
//
|
||||
// for(let i=0,leni = data.body.length;i<leni;i++){
|
||||
// if(data.body[i].section == passerStation.nowStation.topsection){
|
||||
// if(toptrain.nowcode != data.body[i].code){
|
||||
// toptrain.nowcode = data.body[i].code;
|
||||
// topswitch = true;
|
||||
// }
|
||||
// toptrain.position.copy(toptrain.curve.getPointAt(data.body[i].offset));
|
||||
//
|
||||
//
|
||||
// }else{
|
||||
// if(downtrain.nowcode == data.body[i].code){
|
||||
// topswitch = false
|
||||
// toptrain.position.x -= 1;
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// if(data.body[i].section == passerStation.nowStation.downsection){
|
||||
// if(downtrain.nowcode != data.body[i].code){
|
||||
// downtrain.nowcode = data.body[i].code;
|
||||
// downswitch = true;
|
||||
// }
|
||||
// downtrain.position.copy(downtrain.curve.getPointAt(data.body[i].offset));
|
||||
//
|
||||
// }else{
|
||||
// if(downtrain.nowcode == data.body[i].code){
|
||||
// downswitch = false;
|
||||
// downtrain.position.x += 1;
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// if(data.type == 'Device_Load_Destroy_3D'){
|
||||
// start = true;
|
||||
// toptrain.nowcode = null;
|
||||
// downtrain.nowcode = null;
|
||||
// console.log("仿真重开=====================");
|
||||
// }
|
||||
//
|
||||
//
|
||||
// if(data.type == 'Simulation_Over') {
|
||||
// store.dispatch('LogOut').then(() => {
|
||||
// location.reload();
|
||||
// });
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
let actions;
|
||||
|
||||
function opentraindoor(train,doorcode,direct){
|
||||
// console.log(train);
|
||||
if(direct == "top"){
|
||||
// if(doorcode == "1"){
|
||||
// actions = train.action.down;
|
||||
// }
|
||||
//
|
||||
// if(doorcode == "2"){
|
||||
actions = train.action.top;
|
||||
// }
|
||||
}else{
|
||||
// if(doorcode == "1"){
|
||||
actions = train.action.top;
|
||||
// }
|
||||
//
|
||||
// if(doorcode == "2"){
|
||||
// actions = train.action.down;
|
||||
// }
|
||||
}
|
||||
|
||||
for(let an=actions.length-1;an>=0;an--){
|
||||
actions[an].reset();
|
||||
actions[an].time = 0;
|
||||
actions[an].timeScale = 1;
|
||||
actions[an].play();
|
||||
}
|
||||
}
|
||||
function closetraindoor(train,doorcode,direct){
|
||||
|
||||
if(direct == "top"){
|
||||
// if(doorcode == "1"){
|
||||
// actions = train.action.down;
|
||||
// }
|
||||
// if(doorcode == "2"){
|
||||
actions = train.action.top;
|
||||
// }
|
||||
toptrain.nowcode = null;
|
||||
}else{
|
||||
// if(doorcode == "1"){
|
||||
actions = train.action.top;
|
||||
// }
|
||||
// if(doorcode == "2"){
|
||||
// actions = train.action.down;
|
||||
// }
|
||||
downtrain.nowcode = null;
|
||||
}
|
||||
|
||||
for(let an=actions.length-1;an>=0;an--){
|
||||
actions[an].reset();
|
||||
actions[an].time = actions[an]._clip.duration;
|
||||
actions[an].timeScale = -1;
|
||||
actions[an].play();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -13,7 +13,7 @@
|
||||
// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish
|
||||
// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move
|
||||
|
||||
THREE.StationManagerControls = function ( object, domElement ,camera,scene,transformControl) {
|
||||
THREE.StationManagerControls = function ( object, domElement ,regionManager,scene,transformControl) {
|
||||
this.object = object;
|
||||
this.selectRegion = null;
|
||||
this.planeMesh = [];
|
||||
@ -22,7 +22,7 @@ THREE.StationManagerControls = function ( object, domElement ,camera,scene,trans
|
||||
trainlisttest : null
|
||||
};
|
||||
|
||||
|
||||
let camera = object;
|
||||
|
||||
this.animateswitch = null;
|
||||
this.scene = null;
|
||||
@ -31,6 +31,7 @@ THREE.StationManagerControls = function ( object, domElement ,camera,scene,trans
|
||||
//画线:Orbit 绘图:Draw
|
||||
this.controlMode = "Orbit";
|
||||
this.drawColor = 0x2894FF;
|
||||
this.drawRegion = "";
|
||||
this.drawSwitch = false;
|
||||
this.drawGroup = new THREE.Group();
|
||||
scene.add(this.drawGroup);
|
||||
@ -816,29 +817,25 @@ THREE.StationManagerControls = function ( object, domElement ,camera,scene,trans
|
||||
for(let k in scope.planeMesh){
|
||||
intersects = raycaster.intersectObject( scope.planeMesh[k] );
|
||||
if(intersects[0]){
|
||||
var geometry = new THREE.PlaneGeometry( 1, 1, 1 );
|
||||
var material = new THREE.MeshBasicMaterial( {color: scope.drawColor, side: THREE.DoubleSide} );
|
||||
drawMesh = new THREE.Mesh( geometry, material );
|
||||
drawMesh.renderOrder = 8;
|
||||
// drawMesh.rotation.x = Math.PI/2;
|
||||
scope.drawGroup.add( drawMesh );
|
||||
drawMesh.underFloor = k;
|
||||
// var geometry = new THREE.PlaneGeometry( 1, 1, 1 );
|
||||
// var material = new THREE.MeshBasicMaterial( {color: scope.drawColor, side: THREE.DoubleSide} );
|
||||
|
||||
drawStartPoint = intersects[0].point;
|
||||
drawMesh = regionManager.creatRegion(scope.drawRegion,scope.drawColor,drawStartPoint,k);
|
||||
|
||||
state = "Draw";
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
|
||||
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
|
||||
raycaster.setFromCamera( mouse, camera );
|
||||
intersects = raycaster.intersectObjects( scope.drawGroup.children );
|
||||
console.log(scope.drawGroup);
|
||||
console.log(intersects);
|
||||
intersects = raycaster.intersectObjects( scope.drawGroup.children,true );
|
||||
|
||||
if(intersects[0]){
|
||||
scope.selectRegion = intersects[0].object;
|
||||
transformControl.attach(scope.selectRegion);
|
||||
console.log(intersects[0]);
|
||||
transformControl.attach(scope.selectRegion.parent);
|
||||
jl3dStationManagerUpdateSelectModel(scope.selectRegion.parent);
|
||||
}else{
|
||||
|
||||
}
|
||||
@ -897,34 +894,34 @@ THREE.StationManagerControls = function ( object, domElement ,camera,scene,trans
|
||||
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
|
||||
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
|
||||
raycaster.setFromCamera( mouse, camera );
|
||||
for(let k in scope.planeMesh){
|
||||
intersects = raycaster.intersectObject( scope.planeMesh[k] );
|
||||
if(intersects[0]){
|
||||
drawEndPoint = intersects[0].point;
|
||||
let points = [
|
||||
|
||||
new THREE.Vector3(drawStartPoint.x,drawStartPoint.y,drawStartPoint.z),
|
||||
new THREE.Vector3(drawEndPoint.x,drawStartPoint.y,drawStartPoint.z),
|
||||
new THREE.Vector3(drawStartPoint.x,drawStartPoint.y,drawEndPoint.z),
|
||||
new THREE.Vector3(drawEndPoint.x,drawStartPoint.y,drawEndPoint.z)
|
||||
];
|
||||
for(let i=0;i<drawMesh.geometry.vertices.length;i++){
|
||||
drawMesh.geometry.vertices[i].set(points[i].x,points[i].y,points[i].z);
|
||||
}
|
||||
|
||||
|
||||
// drawMesh.geometry.vertices = points;
|
||||
drawMesh.geometry.verticesNeedUpdate = true;
|
||||
drawMesh.geometry.computeBoundingBox();
|
||||
drawMesh.geometry.center();
|
||||
drawMesh.position.set(
|
||||
(drawStartPoint.x+drawEndPoint.x)/2,
|
||||
drawStartPoint.y+0.1,
|
||||
(drawStartPoint.z+drawEndPoint.z)/2
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
// for(let k in scope.planeMesh){
|
||||
// intersects = raycaster.intersectObject( scope.planeMesh[k] );
|
||||
// if(intersects[0]){
|
||||
// drawEndPoint = intersects[0].point;
|
||||
// let points = [
|
||||
//
|
||||
// new THREE.Vector3(drawStartPoint.x,drawStartPoint.y,drawStartPoint.z),
|
||||
// new THREE.Vector3(drawEndPoint.x,drawStartPoint.y,drawStartPoint.z),
|
||||
// new THREE.Vector3(drawStartPoint.x,drawStartPoint.y,drawEndPoint.z),
|
||||
// new THREE.Vector3(drawEndPoint.x,drawStartPoint.y,drawEndPoint.z)
|
||||
// ];
|
||||
// for(let i=0;i<drawMesh.geometry.vertices.length;i++){
|
||||
// drawMesh.geometry.vertices[i].set(points[i].x,points[i].y,points[i].z);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// // drawMesh.geometry.vertices = points;
|
||||
// drawMesh.geometry.verticesNeedUpdate = true;
|
||||
// drawMesh.geometry.computeBoundingBox();
|
||||
// drawMesh.geometry.center();
|
||||
// drawMesh.position.set(
|
||||
// (drawStartPoint.x+drawEndPoint.x)/2,
|
||||
// drawStartPoint.y+0.1,
|
||||
// (drawStartPoint.z+drawEndPoint.z)/2
|
||||
// );
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
@ -16,7 +16,7 @@ import { getPublishMapVersion, getPublishMapDetail,getPublish3dMapDetail} from '
|
||||
//cctv站台对象
|
||||
import { PasserStation } from '@/jlmap3d/jl3dstationmanager/model/passerstation.js';
|
||||
//cctv检票机对象
|
||||
import { PasserCheckDoor } from '@/jlmap3d/jl3dstationmanager/model/passercheckdoor.js';
|
||||
import { checkRegion } from '@/jlmap3d/jl3dstationmanager/model/region/checkRegion.js';
|
||||
//cctv列车对象
|
||||
import { PasserTrain } from '@/jlmap3d/jl3dstationmanager/model/passertrain.js';
|
||||
//cctv行人对象
|
||||
@ -24,10 +24,11 @@ import { PasserHuman } from '@/jlmap3d/jl3dstationmanager/model/passerhuman.js';
|
||||
//cctv行人ai
|
||||
import { PasserAi } from '@/jlmap3d/jl3dstationmanager/passerai/passerai.js';
|
||||
//行人寻路相关工具
|
||||
import { ZoneManager } from '@/jlmap3d/jl3dstationmanager/model/zonemanager.js';
|
||||
import { regionManager } from '@/jlmap3d/jl3dstationmanager/model/regionManager.js';
|
||||
import { PathFinder } from '@/jlmap3d/jl3dstationmanager/passerai/pathfinder.js';
|
||||
//cctv通信工具
|
||||
import { PassflowConnect } from '@/jlmap3d/jl3dtrafficplan/connect/stationconnect.js';
|
||||
//车站仿真
|
||||
import { silumationConnect } from '@/jlmap3d/jl3dstationmanager/connect/silumationConnect.js';
|
||||
import { stationConnect } from '@/jlmap3d/jl3dstationmanager/connect/stationConnect.js';
|
||||
|
||||
import StompClient from '@/utils/sock';
|
||||
import store from '@/store/index';
|
||||
@ -47,7 +48,7 @@ let mixers = [];
|
||||
let monitor;
|
||||
|
||||
//寻路相关对象
|
||||
let passerZone = new ZoneManager();
|
||||
let sceneRegion = new regionManager();
|
||||
let pathFinder = new PathFinder();
|
||||
let path;
|
||||
|
||||
@ -59,7 +60,7 @@ let passerWebWork = new Worker(JL3D_LOCAL_STATIC+"/workertest/trafficplan/traffi
|
||||
//老版本临时ai控制
|
||||
let olddataai = false;
|
||||
|
||||
export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
export function Jl3dStationManager(dom,skinCode,routegroup,initCode) {
|
||||
|
||||
// let stats = new Stats();
|
||||
// dom.appendChild( stats.dom );
|
||||
@ -133,7 +134,7 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
} );
|
||||
scene.add(transformControl);
|
||||
|
||||
let controls = new THREE.StationManagerControls(camerass, dom,camerass,scene,transformControl);
|
||||
let controls = new THREE.StationManagerControls(camerass, dom,sceneRegion,scene,transformControl);
|
||||
// controls.maxPolarAngle = Math.PI / 2;
|
||||
// controls.minPolarangle = Math.PI / 5;
|
||||
// controls.maxDistance = 800;
|
||||
@ -142,6 +143,7 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
controls.target.set( 1, 0, 0 );
|
||||
controls.controlMode = "Orbit";
|
||||
controls.update();
|
||||
sceneRegion.initRegionManager(controls);
|
||||
this.selectmodel = null;
|
||||
|
||||
|
||||
@ -160,7 +162,7 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
|
||||
let passerHuman = new PasserHuman();
|
||||
|
||||
let passerAi = new PasserAi(passerZone,pathFinder);
|
||||
let passerAi = new PasserAi(sceneRegion,pathFinder);
|
||||
|
||||
this.anime = null;
|
||||
|
||||
@ -168,21 +170,19 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
// let loadingInstance = Loading.service({ fullscreen: true });
|
||||
|
||||
let stationlist = [];
|
||||
let socktest = null;
|
||||
let sockStation = null;
|
||||
let sockStationPass = null;
|
||||
let passerStation = new PasserStation();
|
||||
let passerCheckDoor = new PasserCheckDoor();
|
||||
let passerCheckDoor = new checkRegion();
|
||||
let passerTrain = new PasserTrain();
|
||||
|
||||
// document.addEventListener( "mousedown", onselect, false );
|
||||
|
||||
console.log(skinCode);
|
||||
getPublish3dMapDetail(skinCode).then(netdata3d => {
|
||||
console.log("1");
|
||||
passerStation.loadMaterial(netdata3d);
|
||||
this.modelmanager.loadpromise(Staticmodel, scope.mixers,"2").then(function (data) {
|
||||
// console.log(scope.modelmanager.station.mesh.getObjectByName("top"));
|
||||
// let testtop = scope.modelmanager.station.mesh.getObjectByName("down");
|
||||
// for(let i=0;i<testtop.children.length;i++){
|
||||
// console.log(testtop.children[i].matrixWorld.elements[12]);
|
||||
// console.log(testtop.children[i].matrixWorld.elements);
|
||||
// }
|
||||
// console.log(scope.modelmanager.station.mesh.getObjectByName("down"));
|
||||
console.log("2");
|
||||
passerStation.initStationAnimation(scope.modelmanager.station.mesh,mixers,deviceaction,scene);
|
||||
passerCheckDoor.initCheckDoorInAnimation(scope.modelmanager.zhajiin.mesh,mixers,deviceaction,scene);
|
||||
passerCheckDoor.initCheckDoorOutAnimation(scope.modelmanager.zhajiout.mesh,mixers,deviceaction,scene);
|
||||
@ -190,12 +190,38 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
passerTrain.initTrain(scope.modelmanager.train.mesh,mixers,deviceaction,scene);
|
||||
|
||||
scene.add(scope.modelmanager.section.mesh);
|
||||
|
||||
scene.add(scope.modelmanager.futi.mesh);
|
||||
monitor = scope.modelmanager.monitor.mesh;
|
||||
scene.add(monitor);
|
||||
console.log("animate");
|
||||
|
||||
getPublishMapDetail(skinCode).then(netdata => {
|
||||
console.log("3");
|
||||
passerHuman.initHumans(scope.modelmanager.man1.mesh,scope.modelmanager.man2.mesh);
|
||||
scene.add(humanlist);
|
||||
scene.add(topWaitPassers);
|
||||
scene.add(downWaitPassers);
|
||||
scene.add(outStationPassers);
|
||||
|
||||
passerStation.initStationList(netdata.data.stationList,netdata.data.stationStandList,netdata.data.psdList);
|
||||
sockStationPass = new stationConnect(deviceaction,passerTrain.toptrain,passerTrain.downtrain,routegroup,passerStation,passerAi,scope);
|
||||
sockStation = new silumationConnect(deviceaction,passerTrain.toptrain,passerTrain.downtrain,routegroup,passerStation,passerAi,sockStationPass,scope);
|
||||
|
||||
|
||||
|
||||
store.dispatch('app/animationsClose');
|
||||
|
||||
let checkobject = setInterval(function(){
|
||||
|
||||
clearInterval(checkobject);
|
||||
//进站控制
|
||||
startWorker();
|
||||
passerWebWork.postMessage(["on"]);
|
||||
},1000);
|
||||
});
|
||||
|
||||
animate();
|
||||
})
|
||||
});
|
||||
|
||||
this.initTrafficStart = function(){
|
||||
passerStation.initCodeStation(initCode);
|
||||
@ -239,7 +265,7 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
scope.humanInSpeed = passerStation.nowStation.topspeed+passerStation.nowStation.downspeed;
|
||||
passerHuman.speed = scope.humanInSpeed;
|
||||
passerWebWork.postMessage(["changespeed",scope.humanInSpeed/30]);
|
||||
}
|
||||
};
|
||||
|
||||
this.updateNowLeaveData = function(direct,outNum){
|
||||
if(direct == "top"){
|
||||
@ -248,8 +274,8 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
for(let i=0;i<waitForCreatOutTop.length;i++){
|
||||
for(let j=0;j<waitForCreatOutTop[i];j++){
|
||||
setTimeout(function(){
|
||||
// console.log(passerZone.list["standtop"].doorpoints[i]);
|
||||
passerHuman.newHumanCreate(outStationPassers,passerZone.list["standtop"].doorpoints[i],5,"top",i);
|
||||
// console.log(sceneRegion.list["standtop"].doorpoints[i]);
|
||||
passerHuman.newHumanCreate(outStationPassers,sceneRegion.list["standtop"].doorpoints[i],5,"top",i);
|
||||
}, Math.random()*1000*j);
|
||||
}
|
||||
}
|
||||
@ -258,8 +284,8 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
for(let i=0;i<waitForCreatOutDown.length;i++){
|
||||
for(let j=0;j<waitForCreatOutDown[i];j++){
|
||||
setTimeout(function(){
|
||||
// console.log(passerZone.list["standdown"].doorpoints[i]);
|
||||
passerHuman.newHumanCreate(outStationPassers,passerZone.list["standdown"].doorpoints[i],5,"down",i);
|
||||
// console.log(sceneRegion.list["standdown"].doorpoints[i]);
|
||||
passerHuman.newHumanCreate(outStationPassers,sceneRegion.list["standdown"].doorpoints[i],5,"down",i);
|
||||
}, Math.random()*1000*j);
|
||||
}
|
||||
}
|
||||
@ -354,7 +380,7 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
|
||||
passerHuman.moveAnimateUpdate(humanlist,topWaitPassers,downWaitPassers,outStationPassers,passerHuman);
|
||||
passerAi.aiUpdate(humanlist,topWaitPassers,downWaitPassers,outStationPassers,passerHuman,passerCheckDoor,deviceaction);
|
||||
// passerZone.zoneActionCheck(humanlist,passerHuman,passerCheckDoor,deviceaction);
|
||||
// sceneRegion.zoneActionCheck(humanlist,passerHuman,passerCheckDoor,deviceaction);
|
||||
delta = clock.getDelta();
|
||||
|
||||
for(let i=mixers.length-1;i>=0;i--){
|
||||
@ -396,9 +422,9 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
//1--top
|
||||
//2-- down
|
||||
if(direct == 1){
|
||||
passerHuman.newHumanCreate(humanlist,passerZone.getzoneposition("enter1"),0,waitForCreatIn[0].overGoal);
|
||||
passerHuman.newHumanCreate(humanlist,sceneRegion.getzoneposition("enter1"),0,waitForCreatIn[0].overGoal);
|
||||
}else{
|
||||
passerHuman.newHumanCreate(humanlist,passerZone.getzoneposition("enter2"),0,waitForCreatIn[0].overGoal);
|
||||
passerHuman.newHumanCreate(humanlist,sceneRegion.getzoneposition("enter2"),0,waitForCreatIn[0].overGoal);
|
||||
}
|
||||
waitForCreatIn.shift();
|
||||
}
|
||||
@ -426,32 +452,41 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
this.changeDrawType = function(drawType){
|
||||
console.log(drawType);
|
||||
controls.drawSwitch = true;
|
||||
if(drawType == "stationRegion"){
|
||||
if(drawType == "startRegion"){
|
||||
controls.drawColor = 0x2894FF;
|
||||
controls.drawRegion = "startRegion";
|
||||
}
|
||||
if(drawType == "securityRegion"){
|
||||
controls.drawColor = 0xFF0000;
|
||||
controls.drawRegion = "securityRegion";
|
||||
}
|
||||
if(drawType == "checkRegion"){
|
||||
controls.drawColor = 0x9F35FF;
|
||||
controls.drawRegion = "checkRegion";
|
||||
}
|
||||
if(drawType == "standRegion"){
|
||||
controls.drawColor = 0x00EC00;
|
||||
controls.drawRegion = "standRegion";
|
||||
}
|
||||
if(drawType == "ticketRegion"){
|
||||
controls.drawColor = 0x00FFFF;
|
||||
controls.drawRegion = "ticketRegion";
|
||||
}
|
||||
if(drawType == "elevatorRegion"){
|
||||
controls.drawColor = 0xFFFF37;
|
||||
controls.drawRegion = "elevatorRegion";
|
||||
}
|
||||
if(drawType == "stairsRegion"){
|
||||
controls.drawColor = 0xFF5809;
|
||||
controls.drawRegion = "stairsRegion";
|
||||
}
|
||||
if(drawType == "escalatorRegion"){
|
||||
controls.drawColor = 0x5CADAD;
|
||||
controls.drawRegion = "escalatorRegion";
|
||||
}
|
||||
if(drawType == "unaccessRegion"){
|
||||
controls.drawColor = 0x272727;
|
||||
controls.drawRegion = "unaccessRegion";
|
||||
}
|
||||
}
|
||||
|
||||
@ -479,6 +514,25 @@ export function Jl3dStationManager(dom,skinCode,routegroup,viewMap,initCode) {
|
||||
controls.deleteRegion();
|
||||
}
|
||||
|
||||
this.saveAllData = function(){
|
||||
let data1 = sceneRegion.saveRegionData();
|
||||
let newSaveData = {
|
||||
name:"4",
|
||||
regionData:JSON.stringify(data1),
|
||||
sceneConfig:JSON.stringify([]),
|
||||
simulationConfig:JSON.stringify([]),
|
||||
};
|
||||
console.log(newSaveData);
|
||||
// newSaveData.regionData.push();
|
||||
|
||||
return newSaveData;
|
||||
|
||||
}
|
||||
|
||||
this.loadData = function(data){
|
||||
let regionData = JSON.parse(data.regionData);
|
||||
sceneRegion.loadRegionData(regionData);
|
||||
};
|
||||
|
||||
//循环渲染函数
|
||||
function animate() {
|
||||
|
@ -75,6 +75,14 @@ export function ModelManager(){
|
||||
action:null
|
||||
};
|
||||
|
||||
this.futi = {
|
||||
code:null,
|
||||
screenDoorOpenStatus:"01",
|
||||
animations:null,
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
|
||||
//读取模型
|
||||
this.loadpromise = function (data,mixers,loadmode){
|
||||
mode = loadmode;
|
||||
@ -107,6 +115,10 @@ export function ModelManager(){
|
||||
if(data[i].type == "seat"){
|
||||
initlist.push(fbxpromise(data[i],mixers,scope.seat));
|
||||
}
|
||||
|
||||
if(data[i].type == "cctvFuti"){
|
||||
initlist.push(fbxpromise(data[i],mixers,scope.futi));
|
||||
}
|
||||
}
|
||||
//promise按顺序加载
|
||||
return new Promise(function(resolve, reject){
|
||||
|
@ -17,8 +17,8 @@ var Staticmodel = [
|
||||
name: "车站",
|
||||
deviceType: "cctvStation",
|
||||
type: "cctvStation",
|
||||
url: BASE_ASSET_API + "/MODEL/2021-02-20/1296-89217.FBX"
|
||||
//未分拆上下层模型 /MODEL/2021-01-27/323-88925.FBX
|
||||
url: BASE_ASSET_API + "/MODEL/2021-03-11/1344-16880.FBX"
|
||||
//2021.3.11/MODEL/2021-02-20/1296-89217.FBX
|
||||
//最早模型 /MODEL/2020-11-23/79-95086.FBX
|
||||
},{
|
||||
id: "4",
|
||||
@ -50,6 +50,13 @@ var Staticmodel = [
|
||||
deviceType: "cctvSection",
|
||||
type: "cctvSection",
|
||||
url: BASE_ASSET_API + "/MODEL/2020-07-20/45-36330.FBX"
|
||||
},
|
||||
{
|
||||
id: "9",
|
||||
name: "电扶梯",
|
||||
deviceType: "cctvFuti",
|
||||
type: "cctvFuti",
|
||||
url: BASE_ASSET_API + "/MODEL/2021-03-11/1345-1782.FBX"
|
||||
}
|
||||
|
||||
|
||||
|
@ -7,18 +7,60 @@ export function PasserHuman() {
|
||||
let originanima2 = null;
|
||||
//初始化人物模型动画
|
||||
this.initHumans = function(object1,object2,mixers,deviceaction,scene){
|
||||
originhuman1 = object1;
|
||||
originhuman1 = creatHuman();
|
||||
originhuman1.progress = 1;
|
||||
// scene.add(originhuman1);
|
||||
originhuman2 = object2;
|
||||
|
||||
let mixer1 = new THREE.AnimationMixer( originhuman1 );
|
||||
let mixer2 = new THREE.AnimationMixer( originhuman2 );
|
||||
originanima1 = originhuman1.animations[ 0 ];
|
||||
originanima2 = originhuman2.animations[ 0 ];
|
||||
originhuman1.remove(originhuman1.children[2]);
|
||||
originhuman2 = creatHuman();
|
||||
//
|
||||
// let mixer1 = new THREE.AnimationMixer( originhuman1 );
|
||||
// let mixer2 = new THREE.AnimationMixer( originhuman2 );
|
||||
// originanima1 = originhuman1.animations[ 0 ];
|
||||
// originanima2 = originhuman2.animations[ 0 ];
|
||||
// originhuman1.remove(originhuman1.children[2]);
|
||||
|
||||
}
|
||||
|
||||
function creatHuman(){
|
||||
let human = new THREE.Group();
|
||||
var geometry = new THREE.CircleBufferGeometry( 0.5, 32 );
|
||||
var material = new THREE.MeshBasicMaterial( { color: 0x0000E3 } );
|
||||
let humanHead = new THREE.Mesh( geometry, material );
|
||||
humanHead.rotation.x = -Math.PI/2;
|
||||
humanHead.position.y = 0.01;
|
||||
human.add(humanHead);
|
||||
|
||||
var geometry = new THREE.CircleBufferGeometry( 1.5, 32 );
|
||||
var material = new THREE.MeshBasicMaterial( {
|
||||
color: 0xCECEFF,
|
||||
opacity: 0.3,
|
||||
transparent: true, } );
|
||||
let humanBody = new THREE.Mesh( geometry, material );
|
||||
humanBody.rotation.x = -Math.PI/2;
|
||||
human.add(humanBody);
|
||||
|
||||
|
||||
var geom = new THREE.Geometry();
|
||||
var v1 = new THREE.Vector3(0.3,-0.6,0);
|
||||
var v2 = new THREE.Vector3(-0.3,-0.6,0);
|
||||
var v3 = new THREE.Vector3(0,-1.3,0);
|
||||
|
||||
|
||||
geom.vertices.push(v1);
|
||||
geom.vertices.push(v2);
|
||||
geom.vertices.push(v3);
|
||||
|
||||
geom.faces.push(new THREE.Face3(0, 1, 2));
|
||||
geom.computeFaceNormals();
|
||||
|
||||
var material = new THREE.MeshBasicMaterial( { color: 0x0000E3 } );
|
||||
var humanDirect= new THREE.Mesh(geom, material);
|
||||
humanDirect.rotation.x = -Math.PI/2;
|
||||
humanDirect.position.y = 0.01;
|
||||
human.add(humanDirect);
|
||||
return human;
|
||||
}
|
||||
|
||||
|
||||
//创建新的进站乘客
|
||||
this.newInHuman= function(humanlist,position){
|
||||
if(scope.humanWaitIn.length != 0){
|
||||
@ -47,18 +89,18 @@ export function PasserHuman() {
|
||||
let mantype = Math.floor(Math.random()*(3-1+1))+1;
|
||||
|
||||
if(mantype == 1){
|
||||
newhuman = THREE.SkeletonUtils.clone( originhuman1 );
|
||||
// newhuman = THREE.SkeletonUtils.clone( originhuman1 );
|
||||
newhuman = originhuman1.clone( );
|
||||
newhuman.animations = [];
|
||||
// newhuman.animations = [];
|
||||
// newhuman.animations.push(originanima1.clone());
|
||||
}else{
|
||||
newhuman = THREE.SkeletonUtils.clone( originhuman2 );
|
||||
// newhuman = THREE.SkeletonUtils.clone( originhuman2 );
|
||||
newhuman = originhuman2.clone( );
|
||||
newhuman.animations = [];
|
||||
// newhuman.animations = [];
|
||||
// newhuman.animations.push(originanima2.clone());
|
||||
}
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newhuman );
|
||||
// let mixer = new THREE.AnimationMixer( newhuman );
|
||||
newhuman.position.copy(position);
|
||||
|
||||
if(overGoal){
|
||||
|
@ -41,20 +41,22 @@ export function PasserStation() {
|
||||
let mixer = new THREE.AnimationMixer( object ,mixers ,deviceaction ,scene);
|
||||
|
||||
let newclip = object.animations[ 0 ];
|
||||
for(let j=0;j<object.children.length;j++){
|
||||
let standfloor = object.getObjectByName("1CENG");
|
||||
console.log(object);
|
||||
for(let j=0;j<standfloor.children.length;j++){
|
||||
|
||||
if(object.children[j].name == "top"){
|
||||
if(standfloor.children[j].name == "top"){
|
||||
// let geometry = new THREE.BoxBufferGeometry( 50, 50, 50 );
|
||||
// let material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
|
||||
// let cube = new THREE.Mesh( geometry, material );
|
||||
// cube.position.copy(object.children[j].position);
|
||||
// scene.add( cube );
|
||||
object.children[j].animations = [];
|
||||
object.children[j].animations.push(newclip.clone());
|
||||
standfloor.children[j].animations = [];
|
||||
standfloor.children[j].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( object.children[j] );
|
||||
let mixer = new THREE.AnimationMixer( standfloor.children[j] );
|
||||
|
||||
let action =mixer.clipAction( object.children[j].animations[0])
|
||||
let action =mixer.clipAction( standfloor.children[j].animations[0])
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
// action.play();
|
||||
@ -64,16 +66,16 @@ export function PasserStation() {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[j].name] = device;
|
||||
deviceaction[standfloor.children[j].name] = device;
|
||||
}
|
||||
if(object.children[j].name == "down"){
|
||||
object.children[j].animations = [];
|
||||
object.children[j].animations.push(newclip.clone());
|
||||
if(standfloor.children[j].name == "down"){
|
||||
standfloor.children[j].animations = [];
|
||||
standfloor.children[j].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( object.children[j] );
|
||||
let mixer = new THREE.AnimationMixer( standfloor.children[j] );
|
||||
|
||||
|
||||
let action =mixer.clipAction( object.children[j].animations[0])
|
||||
let action =mixer.clipAction( standfloor.children[j].animations[0])
|
||||
// action.play();
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
@ -83,7 +85,7 @@ export function PasserStation() {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[j].name] = device;
|
||||
deviceaction[standfloor.children[j].name] = device;
|
||||
}
|
||||
}
|
||||
object.traverse( function ( child ) {
|
||||
@ -94,8 +96,8 @@ export function PasserStation() {
|
||||
|
||||
} );
|
||||
scope.stationMesh = object;
|
||||
scope.top = object.getObjectByName("1");
|
||||
scope.down = object.getObjectByName("2");
|
||||
scope.top = object.getObjectByName("1CENG");
|
||||
scope.down = object.getObjectByName("2CENG");
|
||||
originTopPosition.copy(scope.top.position);
|
||||
originDownPosition.copy(scope.down.position);
|
||||
scope.topfloor = object.getObjectByName("1floor");
|
||||
@ -170,7 +172,23 @@ export function PasserStation() {
|
||||
//加载线路车站名贴图
|
||||
this.loadMaterial = function(netdata3d){
|
||||
Materialload(scope,JSON.parse(netdata3d.data.assets).stationTextureList[0]);
|
||||
};
|
||||
|
||||
this.initCodeStation = function(initCode){
|
||||
for(let i=0,leni=scope.stationlist.length;i<leni;i++){
|
||||
// console.log(scope.stationlist[i]);
|
||||
if(scope.stationlist[i].downstand == initCode || scope.stationlist[i].topstand == initCode){
|
||||
scope.nowStation = scope.stationlist[i];
|
||||
|
||||
if(scope.stationtexture["stationlist"]){
|
||||
scope.stationMesh.getObjectByName("zhantaiming").material.map = scope.stationtexture[scope.nowStation.code];
|
||||
scope.stationMesh.getObjectByName("zhantaiming").material.map.needsUpdate = true;
|
||||
}
|
||||
updatestationlist(scope.stationlist,scope.stationlist[i].name);
|
||||
i=leni;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.apartPosition = function(drawGroup){
|
||||
// scope.down.position.y = scope.top.position.y;
|
||||
@ -178,12 +196,13 @@ export function PasserStation() {
|
||||
scope.down.position.z -= 75;
|
||||
if(drawGroup.children.length>0){
|
||||
for(let i=0;i<drawGroup.children.length;i++){
|
||||
// drawGroup.children[i].position.y = scope.top.position.y;
|
||||
if(drawGroup.children[i].underFloor == "1floor"){
|
||||
drawGroup.children[i].position.z += 75;
|
||||
for(let j=0;j<drawGroup.children[i].children.length;j++){
|
||||
if(drawGroup.children[i].children[j].underFloor == "1floor"){
|
||||
drawGroup.children[i].children[j].position.z += 75;
|
||||
}
|
||||
if(drawGroup.children[i].children[j].underFloor == "2floor"){
|
||||
drawGroup.children[i].children[j].position.z -= 75;
|
||||
}
|
||||
if(drawGroup.children[i].underFloor == "2floor"){
|
||||
drawGroup.children[i].position.z -= 75;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -195,17 +214,19 @@ export function PasserStation() {
|
||||
if(drawGroup.children.length>0){
|
||||
for(let i=0;i<drawGroup.children.length;i++){
|
||||
|
||||
if(drawGroup.children[i].underFloor == "1floor"){
|
||||
drawGroup.children[i].position.z -= 75;
|
||||
for(let j=0;j<drawGroup.children[i].children.length;j++){
|
||||
if(drawGroup.children[i].children[j].underFloor == "1floor"){
|
||||
drawGroup.children[i].children[j].position.z -= 75;
|
||||
// drawGroup.children[i].position.y = scope.top.position.y;
|
||||
}
|
||||
if(drawGroup.children[i].underFloor == "2floor"){
|
||||
drawGroup.children[i].position.z += 75;
|
||||
if(drawGroup.children[i].children[j].underFloor == "2floor"){
|
||||
drawGroup.children[i].children[j].position.z += 75;
|
||||
// drawGroup.children[i].position.y = scope.down.position.y;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//更换场景车站
|
||||
this.changestation = function(stationname){
|
||||
|
@ -1,5 +1,84 @@
|
||||
export function PasserCheckDoor(data) {
|
||||
export function checkRegion(data) {
|
||||
var scope = this;
|
||||
|
||||
this.group = new THREE.Group();
|
||||
|
||||
this.creatCheckRegion = function(regionType,regionColor,pos,underFloor){
|
||||
let newRegion = creatRegion(regionColor);
|
||||
newRegion.regionType = regionType;
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.status = "1";
|
||||
//连接设备
|
||||
newRegion.connectDevice = "*";
|
||||
newRegion.position.set(
|
||||
pos.x,
|
||||
pos.y+0.1,
|
||||
pos.z
|
||||
);
|
||||
newRegion.underFloor = underFloor;
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
};
|
||||
|
||||
this.loadRegionData = function(regionData){
|
||||
if(regionData.length>0){
|
||||
for(let i=0;i<regionData.length;i++){
|
||||
let newRegion = creatRegion(0x9F35FF);
|
||||
newRegion.regionType = "checkRegion";
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.name = regionData[i].name;
|
||||
|
||||
newRegion.connectDevice = regionData[i].connectDevice;
|
||||
newRegion.status = regionData[i].status;
|
||||
newRegion.underFloor = regionData[i].underFloor;
|
||||
|
||||
newRegion.position.set(
|
||||
regionData[i].pos.x,
|
||||
regionData[i].pos.y,
|
||||
regionData[i].pos.z
|
||||
);
|
||||
newRegion.rotation.set(
|
||||
regionData[i].rot.x,
|
||||
regionData[i].rot.y,
|
||||
regionData[i].rot.z
|
||||
);
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function creatRegion(color){
|
||||
let region = new THREE.Group();
|
||||
var geometry = new THREE.PlaneBufferGeometry( 2, 2, 4 );
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
let regionHead = new THREE.Mesh( geometry, material );
|
||||
regionHead.rotation.x = -Math.PI/2;
|
||||
regionHead.position.y = 0.01;
|
||||
region.add(regionHead);
|
||||
|
||||
var geom = new THREE.Geometry();
|
||||
var v1 = new THREE.Vector3(1,-1,0);
|
||||
var v2 = new THREE.Vector3(-1,-1,0);
|
||||
var v3 = new THREE.Vector3(0,-2,0);
|
||||
|
||||
|
||||
geom.vertices.push(v1);
|
||||
geom.vertices.push(v2);
|
||||
geom.vertices.push(v3);
|
||||
|
||||
geom.faces.push(new THREE.Face3(0, 1, 2));
|
||||
geom.computeFaceNormals();
|
||||
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
var regionDirect= new THREE.Mesh(geom, material);
|
||||
regionDirect.rotation.x = -Math.PI/2;
|
||||
regionDirect.position.y = 0.01;
|
||||
region.add(regionDirect);
|
||||
return region;
|
||||
|
||||
}
|
||||
|
||||
//入口闸机组
|
||||
this.zhajiin = [];
|
||||
//出口闸机组
|
@ -0,0 +1,83 @@
|
||||
//电梯区域
|
||||
export function elevatorRegion() {
|
||||
let scope = this;
|
||||
this.list = [];
|
||||
|
||||
this.group = new THREE.Group();
|
||||
|
||||
this.creatElevatorRegion = function(regionType,regionColor,pos,underFloor){
|
||||
let newRegion = creatRegion(regionColor);
|
||||
newRegion.regionType = regionType;
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.status = "1";
|
||||
//连接设备
|
||||
newRegion.connectDevice = "*";
|
||||
newRegion.position.set(
|
||||
pos.x,
|
||||
pos.y+0.1,
|
||||
pos.z
|
||||
);
|
||||
newRegion.underFloor = underFloor;
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
};
|
||||
|
||||
this.loadRegionData = function(regionData){
|
||||
if(regionData.length>0){
|
||||
for(let i=0;i<regionData.length;i++){
|
||||
let newRegion = creatRegion(0xFFFF37);
|
||||
newRegion.regionType = "elevatorRegion";
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.name = regionData[i].name;
|
||||
|
||||
newRegion.connectDevice = regionData[i].connectDevice;
|
||||
newRegion.status = regionData[i].status;
|
||||
newRegion.underFloor = regionData[i].underFloor;
|
||||
|
||||
newRegion.position.set(
|
||||
regionData[i].pos.x,
|
||||
regionData[i].pos.y,
|
||||
regionData[i].pos.z
|
||||
);
|
||||
newRegion.rotation.set(
|
||||
regionData[i].rot.x,
|
||||
regionData[i].rot.y,
|
||||
regionData[i].rot.z
|
||||
);
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function creatRegion(color){
|
||||
let region = new THREE.Group();
|
||||
var geometry = new THREE.PlaneBufferGeometry( 2, 2, 4 );
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
let regionHead = new THREE.Mesh( geometry, material );
|
||||
regionHead.rotation.x = -Math.PI/2;
|
||||
regionHead.position.y = 0.01;
|
||||
region.add(regionHead);
|
||||
|
||||
var geom = new THREE.Geometry();
|
||||
var v1 = new THREE.Vector3(1,-1,0);
|
||||
var v2 = new THREE.Vector3(-1,-1,0);
|
||||
var v3 = new THREE.Vector3(0,-2,0);
|
||||
|
||||
|
||||
geom.vertices.push(v1);
|
||||
geom.vertices.push(v2);
|
||||
geom.vertices.push(v3);
|
||||
|
||||
geom.faces.push(new THREE.Face3(0, 1, 2));
|
||||
geom.computeFaceNormals();
|
||||
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
var regionDirect= new THREE.Mesh(geom, material);
|
||||
regionDirect.rotation.x = -Math.PI/2;
|
||||
regionDirect.position.y = 0.01;
|
||||
region.add(regionDirect);
|
||||
return region;
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,83 @@
|
||||
//扶梯区域
|
||||
export function escalatorRegion() {
|
||||
let scope = this;
|
||||
this.list = [];
|
||||
|
||||
this.group = new THREE.Group();
|
||||
|
||||
this.creatEscalatorRegion = function(regionType,regionColor,pos,underFloor){
|
||||
let newRegion = creatRegion(regionColor);
|
||||
newRegion.regionType = regionType;
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.status = "1";
|
||||
//连接设备
|
||||
newRegion.connectDevice = "*";
|
||||
newRegion.position.set(
|
||||
pos.x,
|
||||
pos.y+0.1,
|
||||
pos.z
|
||||
);
|
||||
newRegion.underFloor = underFloor;
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
};
|
||||
|
||||
this.loadRegionData = function(regionData){
|
||||
if(regionData.length>0){
|
||||
for(let i=0;i<regionData.length;i++){
|
||||
let newRegion = creatRegion(0x5CADAD);
|
||||
newRegion.regionType = "escalatorRegion";
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.name = regionData[i].name;
|
||||
|
||||
newRegion.connectDevice = regionData[i].connectDevice;
|
||||
newRegion.status = regionData[i].status;
|
||||
newRegion.underFloor = regionData[i].underFloor;
|
||||
|
||||
newRegion.position.set(
|
||||
regionData[i].pos.x,
|
||||
regionData[i].pos.y,
|
||||
regionData[i].pos.z
|
||||
);
|
||||
newRegion.rotation.set(
|
||||
regionData[i].rot.x,
|
||||
regionData[i].rot.y,
|
||||
regionData[i].rot.z
|
||||
);
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function creatRegion(color){
|
||||
let region = new THREE.Group();
|
||||
var geometry = new THREE.PlaneBufferGeometry( 2, 2, 4 );
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
let regionHead = new THREE.Mesh( geometry, material );
|
||||
regionHead.rotation.x = -Math.PI/2;
|
||||
regionHead.position.y = 0.01;
|
||||
region.add(regionHead);
|
||||
|
||||
var geom = new THREE.Geometry();
|
||||
var v1 = new THREE.Vector3(1,-1,0);
|
||||
var v2 = new THREE.Vector3(-1,-1,0);
|
||||
var v3 = new THREE.Vector3(0,-2,0);
|
||||
|
||||
|
||||
geom.vertices.push(v1);
|
||||
geom.vertices.push(v2);
|
||||
geom.vertices.push(v3);
|
||||
|
||||
geom.faces.push(new THREE.Face3(0, 1, 2));
|
||||
geom.computeFaceNormals();
|
||||
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
var regionDirect= new THREE.Mesh(geom, material);
|
||||
regionDirect.rotation.x = -Math.PI/2;
|
||||
regionDirect.position.y = 0.01;
|
||||
region.add(regionDirect);
|
||||
return region;
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,89 @@
|
||||
//安检区域
|
||||
export function securityRegion() {
|
||||
let scope = this;
|
||||
this.list = [];
|
||||
|
||||
this.group = new THREE.Group();
|
||||
|
||||
this.creatSecurityRegion = function(regionType,regionColor,pos,underFloor){
|
||||
let newRegion = creatRegion(regionColor);
|
||||
newRegion.regionType = regionType;
|
||||
newRegion.deviceType = "region";
|
||||
//连接设备
|
||||
newRegion.connectDevice = "*";
|
||||
|
||||
//停留时间
|
||||
newRegion.stayTime = "1";
|
||||
//区域状态
|
||||
newRegion.status = "1";
|
||||
|
||||
newRegion.position.set(
|
||||
pos.x,
|
||||
pos.y+0.1,
|
||||
pos.z
|
||||
);
|
||||
newRegion.underFloor = underFloor;
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
};
|
||||
|
||||
this.loadRegionData = function(regionData){
|
||||
if(regionData.length>0){
|
||||
for(let i=0;i<regionData.length;i++){
|
||||
let newRegion = creatRegion(0xFF0000);
|
||||
newRegion.regionType = "securityRegion";
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.name = regionData[i].name;
|
||||
|
||||
newRegion.connectDevice = regionData[i].connectDevice;
|
||||
newRegion.stayTime = regionData[i].stayTime;
|
||||
newRegion.status = regionData[i].status;
|
||||
newRegion.underFloor = regionData[i].underFloor;
|
||||
|
||||
newRegion.position.set(
|
||||
regionData[i].pos.x,
|
||||
regionData[i].pos.y,
|
||||
regionData[i].pos.z
|
||||
);
|
||||
newRegion.rotation.set(
|
||||
regionData[i].rot.x,
|
||||
regionData[i].rot.y,
|
||||
regionData[i].rot.z
|
||||
);
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function creatRegion(color){
|
||||
let region = new THREE.Group();
|
||||
var geometry = new THREE.PlaneBufferGeometry( 2, 2, 4 );
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
let regionHead = new THREE.Mesh( geometry, material );
|
||||
regionHead.rotation.x = -Math.PI/2;
|
||||
regionHead.position.y = 0.01;
|
||||
region.add(regionHead);
|
||||
|
||||
var geom = new THREE.Geometry();
|
||||
var v1 = new THREE.Vector3(1,-1,0);
|
||||
var v2 = new THREE.Vector3(-1,-1,0);
|
||||
var v3 = new THREE.Vector3(0,-2,0);
|
||||
|
||||
|
||||
geom.vertices.push(v1);
|
||||
geom.vertices.push(v2);
|
||||
geom.vertices.push(v3);
|
||||
|
||||
geom.faces.push(new THREE.Face3(0, 1, 2));
|
||||
geom.computeFaceNormals();
|
||||
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
var regionDirect= new THREE.Mesh(geom, material);
|
||||
regionDirect.rotation.x = -Math.PI/2;
|
||||
regionDirect.position.y = 0.01;
|
||||
region.add(regionDirect);
|
||||
return region;
|
||||
|
||||
}
|
||||
}
|
83
src/jlmap3d/jl3dstationmanager/model/region/stairsRegion.js
Normal file
83
src/jlmap3d/jl3dstationmanager/model/region/stairsRegion.js
Normal file
@ -0,0 +1,83 @@
|
||||
//楼梯区域
|
||||
export function stairsRegion() {
|
||||
let scope = this;
|
||||
this.list = [];
|
||||
|
||||
this.group = new THREE.Group();
|
||||
|
||||
this.creatStairsRegion = function(regionType,regionColor,pos,underFloor){
|
||||
let newRegion = creatRegion(regionColor);
|
||||
newRegion.regionType = regionType;
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.status = "1";
|
||||
//连接设备
|
||||
newRegion.connectDevice = "*";
|
||||
newRegion.position.set(
|
||||
pos.x,
|
||||
pos.y+0.1,
|
||||
pos.z
|
||||
);
|
||||
newRegion.underFloor = underFloor;
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
};
|
||||
|
||||
this.loadRegionData = function(regionData){
|
||||
if(regionData.length>0){
|
||||
for(let i=0;i<regionData.length;i++){
|
||||
let newRegion = creatRegion(0xFF5809);
|
||||
newRegion.regionType = "stairsRegion";
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.name = regionData[i].name;
|
||||
|
||||
newRegion.connectDevice = regionData[i].connectDevice;
|
||||
newRegion.status = regionData[i].status;
|
||||
newRegion.underFloor = regionData[i].underFloor;
|
||||
|
||||
newRegion.position.set(
|
||||
regionData[i].pos.x,
|
||||
regionData[i].pos.y,
|
||||
regionData[i].pos.z
|
||||
);
|
||||
newRegion.rotation.set(
|
||||
regionData[i].rot.x,
|
||||
regionData[i].rot.y,
|
||||
regionData[i].rot.z
|
||||
);
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function creatRegion(color){
|
||||
let region = new THREE.Group();
|
||||
var geometry = new THREE.PlaneBufferGeometry( 2, 2, 4 );
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
let regionHead = new THREE.Mesh( geometry, material );
|
||||
regionHead.rotation.x = -Math.PI/2;
|
||||
regionHead.position.y = 0.01;
|
||||
region.add(regionHead);
|
||||
|
||||
var geom = new THREE.Geometry();
|
||||
var v1 = new THREE.Vector3(1,-1,0);
|
||||
var v2 = new THREE.Vector3(-1,-1,0);
|
||||
var v3 = new THREE.Vector3(0,-2,0);
|
||||
|
||||
|
||||
geom.vertices.push(v1);
|
||||
geom.vertices.push(v2);
|
||||
geom.vertices.push(v3);
|
||||
|
||||
geom.faces.push(new THREE.Face3(0, 1, 2));
|
||||
geom.computeFaceNormals();
|
||||
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
var regionDirect= new THREE.Mesh(geom, material);
|
||||
regionDirect.rotation.x = -Math.PI/2;
|
||||
regionDirect.position.y = 0.01;
|
||||
region.add(regionDirect);
|
||||
return region;
|
||||
|
||||
}
|
||||
}
|
87
src/jlmap3d/jl3dstationmanager/model/region/standRegion.js
Normal file
87
src/jlmap3d/jl3dstationmanager/model/region/standRegion.js
Normal file
@ -0,0 +1,87 @@
|
||||
//站台区域
|
||||
export function standRegion() {
|
||||
let scope = this;
|
||||
this.list = [];
|
||||
|
||||
this.group = new THREE.Group();
|
||||
|
||||
this.creatStandRegion = function(regionType,regionColor,pos,underFloor){
|
||||
let newRegion = creatRegion(regionColor);
|
||||
newRegion.regionType = regionType;
|
||||
newRegion.deviceType = "region";
|
||||
//区域状态
|
||||
newRegion.status = "1";
|
||||
//连接设备
|
||||
newRegion.connectDevice = "*";
|
||||
//区域方向
|
||||
newRegion.direction = "1";
|
||||
|
||||
newRegion.position.set(
|
||||
pos.x,
|
||||
pos.y+0.1,
|
||||
pos.z
|
||||
);
|
||||
newRegion.underFloor = underFloor;
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
};
|
||||
|
||||
this.loadRegionData = function(regionData){
|
||||
if(regionData.length>0){
|
||||
for(let i=0;i<regionData.length;i++){
|
||||
let newRegion = creatRegion(0x00EC00);
|
||||
newRegion.regionType = "standRegion";
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.name = regionData[i].name;
|
||||
|
||||
newRegion.direction = regionData[i].direction;
|
||||
newRegion.status = regionData[i].status;
|
||||
newRegion.underFloor = regionData[i].underFloor;
|
||||
|
||||
newRegion.position.set(
|
||||
regionData[i].pos.x,
|
||||
regionData[i].pos.y,
|
||||
regionData[i].pos.z
|
||||
);
|
||||
newRegion.rotation.set(
|
||||
regionData[i].rot.x,
|
||||
regionData[i].rot.y,
|
||||
regionData[i].rot.z
|
||||
);
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function creatRegion(color){
|
||||
let region = new THREE.Group();
|
||||
var geometry = new THREE.PlaneBufferGeometry( 2, 2, 4 );
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
let regionHead = new THREE.Mesh( geometry, material );
|
||||
regionHead.rotation.x = -Math.PI/2;
|
||||
regionHead.position.y = 0.01;
|
||||
region.add(regionHead);
|
||||
|
||||
var geom = new THREE.Geometry();
|
||||
var v1 = new THREE.Vector3(1,-1,0);
|
||||
var v2 = new THREE.Vector3(-1,-1,0);
|
||||
var v3 = new THREE.Vector3(0,-2,0);
|
||||
|
||||
|
||||
geom.vertices.push(v1);
|
||||
geom.vertices.push(v2);
|
||||
geom.vertices.push(v3);
|
||||
|
||||
geom.faces.push(new THREE.Face3(0, 1, 2));
|
||||
geom.computeFaceNormals();
|
||||
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
var regionDirect= new THREE.Mesh(geom, material);
|
||||
regionDirect.rotation.x = -Math.PI/2;
|
||||
regionDirect.position.y = 0.01;
|
||||
region.add(regionDirect);
|
||||
return region;
|
||||
|
||||
}
|
||||
}
|
95
src/jlmap3d/jl3dstationmanager/model/region/startRegion.js
Normal file
95
src/jlmap3d/jl3dstationmanager/model/region/startRegion.js
Normal file
@ -0,0 +1,95 @@
|
||||
//入口区域
|
||||
export function startRegion() {
|
||||
let scope = this;
|
||||
this.list = [];
|
||||
|
||||
this.group = new THREE.Group();
|
||||
|
||||
this.creatStartRegion = function(regionType,regionColor,pos,underFloor){
|
||||
let newRegion = creatRegion(regionColor);
|
||||
newRegion.regionType = regionType;
|
||||
newRegion.deviceType = "region";
|
||||
|
||||
//入口乘客比例
|
||||
newRegion.startWeight = "%";
|
||||
//出口乘客比例
|
||||
newRegion.endWeight = "%";
|
||||
|
||||
//目标权重
|
||||
newRegion.targetWeight = "%";
|
||||
//区域状态
|
||||
newRegion.status = "1";
|
||||
|
||||
newRegion.position.set(
|
||||
pos.x,
|
||||
pos.y+0.1,
|
||||
pos.z
|
||||
);
|
||||
newRegion.underFloor = underFloor;
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
};
|
||||
|
||||
this.loadRegionData = function(regionData){
|
||||
if(regionData.length>0){
|
||||
for(let i=0;i<regionData.length;i++){
|
||||
let newRegion = creatRegion(0x2894FF);
|
||||
newRegion.regionType = "startRegion";
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.name = regionData[i].name;
|
||||
//入口乘客比例
|
||||
newRegion.startWeight = regionData[i].startWeight;
|
||||
//出口乘客比例
|
||||
newRegion.endWeight = regionData[i].endWeight;
|
||||
//目标权重
|
||||
newRegion.targetWeight = regionData[i].targetWeight;
|
||||
//区域状态
|
||||
newRegion.status = regionData[i].status;
|
||||
newRegion.underFloor = regionData[i].underFloor;
|
||||
|
||||
newRegion.position.set(
|
||||
regionData[i].pos.x,
|
||||
regionData[i].pos.y,
|
||||
regionData[i].pos.z
|
||||
);
|
||||
newRegion.rotation.set(
|
||||
regionData[i].rot.x,
|
||||
regionData[i].rot.y,
|
||||
regionData[i].rot.z
|
||||
);
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function creatRegion(color){
|
||||
let region = new THREE.Group();
|
||||
var geometry = new THREE.PlaneBufferGeometry( 2, 2, 4 );
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
let regionHead = new THREE.Mesh( geometry, material );
|
||||
regionHead.rotation.x = -Math.PI/2;
|
||||
regionHead.position.y = 0.01;
|
||||
region.add(regionHead);
|
||||
|
||||
var geom = new THREE.Geometry();
|
||||
var v1 = new THREE.Vector3(1,-1,0);
|
||||
var v2 = new THREE.Vector3(-1,-1,0);
|
||||
var v3 = new THREE.Vector3(0,-2,0);
|
||||
|
||||
geom.vertices.push(v1);
|
||||
geom.vertices.push(v2);
|
||||
geom.vertices.push(v3);
|
||||
|
||||
geom.faces.push(new THREE.Face3(0, 1, 2));
|
||||
geom.computeFaceNormals();
|
||||
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
var regionDirect= new THREE.Mesh(geom, material);
|
||||
regionDirect.rotation.x = -Math.PI/2;
|
||||
regionDirect.position.y = 0.01;
|
||||
region.add(regionDirect);
|
||||
return region;
|
||||
|
||||
}
|
||||
}
|
91
src/jlmap3d/jl3dstationmanager/model/region/ticketRegion.js
Normal file
91
src/jlmap3d/jl3dstationmanager/model/region/ticketRegion.js
Normal file
@ -0,0 +1,91 @@
|
||||
//售票区域
|
||||
export function ticketRegion() {
|
||||
let scope = this;
|
||||
this.list = [];
|
||||
|
||||
this.group = new THREE.Group();
|
||||
|
||||
this.creatTicketRegion = function(regionType,regionColor,pos,underFloor){
|
||||
let newRegion = creatRegion(regionColor);
|
||||
newRegion.regionType = regionType;
|
||||
newRegion.deviceType = "region";
|
||||
|
||||
//停留时间
|
||||
newRegion.stayTime = 0;
|
||||
//区域状态
|
||||
newRegion.status = "1";
|
||||
//连接设备
|
||||
newRegion.connectDevice = "*";
|
||||
//运行状态
|
||||
newRegion.runType = "auto";
|
||||
newRegion.position.set(
|
||||
pos.x,
|
||||
pos.y+0.1,
|
||||
pos.z
|
||||
);
|
||||
newRegion.underFloor = underFloor;
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
};
|
||||
|
||||
this.loadRegionData = function(regionData){
|
||||
if(regionData.length>0){
|
||||
for(let i=0;i<regionData.length;i++){
|
||||
let newRegion = creatRegion(0x00FFFF);
|
||||
newRegion.regionType = "ticketRegion";
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.name = regionData[i].name;
|
||||
|
||||
newRegion.runType = regionData[i].runType;
|
||||
newRegion.connectDevice = regionData[i].connectDevice;
|
||||
newRegion.stayTime = regionData[i].stayTime;
|
||||
newRegion.status = regionData[i].status;
|
||||
newRegion.underFloor = regionData[i].underFloor;
|
||||
|
||||
newRegion.position.set(
|
||||
regionData[i].pos.x,
|
||||
regionData[i].pos.y,
|
||||
regionData[i].pos.z
|
||||
);
|
||||
newRegion.rotation.set(
|
||||
regionData[i].rot.x,
|
||||
regionData[i].rot.y,
|
||||
regionData[i].rot.z
|
||||
);
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function creatRegion(color){
|
||||
let region = new THREE.Group();
|
||||
var geometry = new THREE.PlaneBufferGeometry( 2, 2, 4 );
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
let regionHead = new THREE.Mesh( geometry, material );
|
||||
regionHead.rotation.x = -Math.PI/2;
|
||||
regionHead.position.y = 0.01;
|
||||
region.add(regionHead);
|
||||
|
||||
var geom = new THREE.Geometry();
|
||||
var v1 = new THREE.Vector3(1,-1,0);
|
||||
var v2 = new THREE.Vector3(-1,-1,0);
|
||||
var v3 = new THREE.Vector3(0,-2,0);
|
||||
|
||||
|
||||
geom.vertices.push(v1);
|
||||
geom.vertices.push(v2);
|
||||
geom.vertices.push(v3);
|
||||
|
||||
geom.faces.push(new THREE.Face3(0, 1, 2));
|
||||
geom.computeFaceNormals();
|
||||
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
var regionDirect= new THREE.Mesh(geom, material);
|
||||
regionDirect.rotation.x = -Math.PI/2;
|
||||
regionDirect.position.y = 0.01;
|
||||
region.add(regionDirect);
|
||||
return region;
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
//禁行区域
|
||||
export function unaccessRegion() {
|
||||
let scope = this;
|
||||
this.list = [];
|
||||
|
||||
this.group = new THREE.Group();
|
||||
|
||||
this.creatUnaccessRegion = function(regionType,regionColor,pos,underFloor){
|
||||
let newRegion = creatRegion(regionColor);
|
||||
newRegion.regionType = regionType;
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.status = "1";
|
||||
newRegion.position.set(
|
||||
pos.x,
|
||||
pos.y+0.1,
|
||||
pos.z
|
||||
);
|
||||
newRegion.underFloor = underFloor;
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
};
|
||||
|
||||
this.loadRegionData = function(regionData){
|
||||
if(regionData.length>0){
|
||||
for(let i=0;i<regionData.length;i++){
|
||||
let newRegion = creatRegion(0x272727);
|
||||
newRegion.regionType = "unaccessRegion";
|
||||
newRegion.deviceType = "region";
|
||||
newRegion.name = regionData[i].name;
|
||||
|
||||
newRegion.status = regionData[i].status;
|
||||
newRegion.underFloor = regionData[i].underFloor;
|
||||
|
||||
newRegion.position.set(
|
||||
regionData[i].pos.x,
|
||||
regionData[i].pos.y,
|
||||
regionData[i].pos.z
|
||||
);
|
||||
newRegion.rotation.set(
|
||||
regionData[i].rot.x,
|
||||
regionData[i].rot.y,
|
||||
regionData[i].rot.z
|
||||
);
|
||||
newRegion.renderOrder = 8;
|
||||
scope.group.add(newRegion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function creatRegion(color){
|
||||
let region = new THREE.Group();
|
||||
var geometry = new THREE.PlaneBufferGeometry( 2, 2, 4 );
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
let regionHead = new THREE.Mesh( geometry, material );
|
||||
regionHead.rotation.x = -Math.PI/2;
|
||||
regionHead.position.y = 0.01;
|
||||
region.add(regionHead);
|
||||
|
||||
var geom = new THREE.Geometry();
|
||||
var v1 = new THREE.Vector3(1,-1,0);
|
||||
var v2 = new THREE.Vector3(-1,-1,0);
|
||||
var v3 = new THREE.Vector3(0,-2,0);
|
||||
|
||||
|
||||
geom.vertices.push(v1);
|
||||
geom.vertices.push(v2);
|
||||
geom.vertices.push(v3);
|
||||
|
||||
geom.faces.push(new THREE.Face3(0, 1, 2));
|
||||
geom.computeFaceNormals();
|
||||
|
||||
var material = new THREE.MeshBasicMaterial( { color: color } );
|
||||
var regionDirect= new THREE.Mesh(geom, material);
|
||||
regionDirect.rotation.x = -Math.PI/2;
|
||||
regionDirect.position.y = 0.01;
|
||||
region.add(regionDirect);
|
||||
return region;
|
||||
|
||||
}
|
||||
}
|
290
src/jlmap3d/jl3dstationmanager/model/regionManager.js
Normal file
290
src/jlmap3d/jl3dstationmanager/model/regionManager.js
Normal file
@ -0,0 +1,290 @@
|
||||
import { startRegion } from '@/jlmap3d/jl3dstationmanager/model/region/startRegion.js';
|
||||
import { securityRegion } from '@/jlmap3d/jl3dstationmanager/model/region/securityRegion.js';
|
||||
import { checkRegion } from '@/jlmap3d/jl3dstationmanager/model/region/checkRegion.js';
|
||||
import { standRegion } from '@/jlmap3d/jl3dstationmanager/model/region/standRegion.js';
|
||||
import { ticketRegion } from '@/jlmap3d/jl3dstationmanager/model/region/ticketRegion.js';
|
||||
import { elevatorRegion } from '@/jlmap3d/jl3dstationmanager/model/region/elevatorRegion.js';
|
||||
import { stairsRegion } from '@/jlmap3d/jl3dstationmanager/model/region/stairsRegion.js';
|
||||
import { escalatorRegion } from '@/jlmap3d/jl3dstationmanager/model/region/escalatorRegion.js';
|
||||
import { unaccessRegion } from '@/jlmap3d/jl3dstationmanager/model/region/unaccessRegion.js';
|
||||
|
||||
//区域管理器
|
||||
export function regionManager() {
|
||||
|
||||
var scope = this;
|
||||
|
||||
this.name = "test";
|
||||
|
||||
this.startRegion = new startRegion();
|
||||
this.securityRegion = new securityRegion();
|
||||
this.checkRegion = new checkRegion();
|
||||
this.standRegion = new standRegion();
|
||||
this.ticketRegion = new ticketRegion();
|
||||
this.elevatorRegion = new elevatorRegion();
|
||||
this.stairsRegion = new stairsRegion();
|
||||
this.escalatorRegion = new escalatorRegion();
|
||||
this.unaccessRegion = new unaccessRegion();
|
||||
|
||||
let group = null;
|
||||
|
||||
this.initRegionManager = function(control){
|
||||
|
||||
group = control.drawGroup;
|
||||
control.drawGroup.add(scope.startRegion.group);
|
||||
control.drawGroup.add(scope.securityRegion.group);
|
||||
control.drawGroup.add(scope.checkRegion.group);
|
||||
control.drawGroup.add(scope.standRegion.group);
|
||||
control.drawGroup.add(scope.ticketRegion.group);
|
||||
control.drawGroup.add(scope.elevatorRegion.group);
|
||||
control.drawGroup.add(scope.stairsRegion.group);
|
||||
control.drawGroup.add(scope.escalatorRegion.group);
|
||||
control.drawGroup.add(scope.unaccessRegion.group);
|
||||
}
|
||||
|
||||
this.creatRegion = function(regionType,regionColor,pos,underFloor){
|
||||
switch(regionType){
|
||||
case "startRegion":
|
||||
scope.startRegion.creatStartRegion(regionType,regionColor,pos,underFloor);
|
||||
break;
|
||||
case "securityRegion":
|
||||
scope.securityRegion.creatSecurityRegion(regionType,regionColor,pos,underFloor);
|
||||
break;
|
||||
case "checkRegion":
|
||||
scope.checkRegion.creatCheckRegion(regionType,regionColor,pos,underFloor);
|
||||
break;
|
||||
case "standRegion":
|
||||
scope.standRegion.creatStandRegion(regionType,regionColor,pos,underFloor);
|
||||
break;
|
||||
case "ticketRegion":
|
||||
scope.ticketRegion.creatTicketRegion(regionType,regionColor,pos,underFloor);
|
||||
break;
|
||||
case "elevatorRegion":
|
||||
scope.elevatorRegion.creatElevatorRegion(regionType,regionColor,pos,underFloor);
|
||||
break;
|
||||
case "stairsRegion":
|
||||
scope.stairsRegion.creatStairsRegion(regionType,regionColor,pos,underFloor);
|
||||
break;
|
||||
case "escalatorRegion":
|
||||
scope.escalatorRegion.creatEscalatorRegion(regionType,regionColor,pos,underFloor);
|
||||
break;
|
||||
case "unaccessRegion":
|
||||
scope.unaccessRegion.creatUnaccessRegion(regionType,regionColor,pos,underFloor);
|
||||
break;
|
||||
default:break;
|
||||
}
|
||||
};
|
||||
|
||||
//存储区域数据
|
||||
this.saveRegionData = function(){
|
||||
// console.log();
|
||||
let newSaveData = {
|
||||
startRegion:[],
|
||||
securityRegion:[],
|
||||
checkRegion:[],
|
||||
standRegion:[],
|
||||
ticketRegion:[],
|
||||
elevatorRegion:[],
|
||||
stairsRegion:[],
|
||||
escalatorRegion:[],
|
||||
unaccessRegion:[],
|
||||
};
|
||||
|
||||
for(let i=0;i<scope.startRegion.group.children.length;i++){
|
||||
newSaveData.startRegion.push({
|
||||
name:scope.startRegion.group.children[i].name,
|
||||
status:scope.startRegion.group.children[i].status,
|
||||
startWeight:scope.startRegion.group.children[i].startWeight,
|
||||
endWeight:scope.startRegion.group.children[i].endWeight,
|
||||
targetWeight:scope.startRegion.group.children[i].targetWeight,
|
||||
connectDevice:scope.startRegion.group.children[i].connectDevice,
|
||||
underFloor:scope.startRegion.group.children[i].underFloor,
|
||||
pos:{
|
||||
x:scope.startRegion.group.children[i].position.x,
|
||||
y:scope.startRegion.group.children[i].position.y,
|
||||
z:scope.startRegion.group.children[i].position.z
|
||||
},
|
||||
rot:{
|
||||
x:scope.startRegion.group.children[i].rotation.x,
|
||||
y:scope.startRegion.group.children[i].rotation.y,
|
||||
z:scope.startRegion.group.children[i].rotation.z
|
||||
},
|
||||
});
|
||||
}
|
||||
for(let i=0;i<scope.securityRegion.group.children.length;i++){
|
||||
newSaveData.securityRegion.push({
|
||||
name:scope.securityRegion.group.children[i].name,
|
||||
status:scope.securityRegion.group.children[i].status,
|
||||
stayTime:scope.securityRegion.group.children[i].stayTime,
|
||||
connectDevice:scope.securityRegion.group.children[i].connectDevice,
|
||||
underFloor:scope.securityRegion.group.children[i].underFloor,
|
||||
pos:{
|
||||
x:scope.securityRegion.group.children[i].position.x,
|
||||
y:scope.securityRegion.group.children[i].position.y,
|
||||
z:scope.securityRegion.group.children[i].position.z
|
||||
},
|
||||
rot:{
|
||||
x:scope.securityRegion.group.children[i].rotation.x,
|
||||
y:scope.securityRegion.group.children[i].rotation.y,
|
||||
z:scope.securityRegion.group.children[i].rotation.z
|
||||
},
|
||||
});
|
||||
}
|
||||
for(let i=0;i<scope.checkRegion.group.children.length;i++){
|
||||
newSaveData.checkRegion.push({
|
||||
name:scope.checkRegion.group.children[i].name,
|
||||
status:scope.checkRegion.group.children[i].status,
|
||||
connectDevice:scope.checkRegion.group.children[i].connectDevice,
|
||||
underFloor:scope.checkRegion.group.children[i].underFloor,
|
||||
pos:{
|
||||
x:scope.checkRegion.group.children[i].position.x,
|
||||
y:scope.checkRegion.group.children[i].position.y,
|
||||
z:scope.checkRegion.group.children[i].position.z
|
||||
},
|
||||
rot:{
|
||||
x:scope.checkRegion.group.children[i].rotation.x,
|
||||
y:scope.checkRegion.group.children[i].rotation.y,
|
||||
z:scope.checkRegion.group.children[i].rotation.z
|
||||
},
|
||||
});
|
||||
}
|
||||
for(let i=0;i<scope.standRegion.group.children.length;i++){
|
||||
newSaveData.standRegion.push({
|
||||
name:scope.standRegion.group.children[i].name,
|
||||
status:scope.standRegion.group.children[i].status,
|
||||
direction:scope.standRegion.group.children[i].direction,
|
||||
underFloor:scope.standRegion.group.children[i].underFloor,
|
||||
pos:{
|
||||
x:scope.standRegion.group.children[i].position.x,
|
||||
y:scope.standRegion.group.children[i].position.y,
|
||||
z:scope.standRegion.group.children[i].position.z
|
||||
},
|
||||
rot:{
|
||||
x:scope.standRegion.group.children[i].rotation.x,
|
||||
y:scope.standRegion.group.children[i].rotation.y,
|
||||
z:scope.standRegion.group.children[i].rotation.z
|
||||
},
|
||||
});
|
||||
}
|
||||
for(let i=0;i<scope.ticketRegion.group.children.length;i++){
|
||||
newSaveData.ticketRegion.push({
|
||||
name:scope.ticketRegion.group.children[i].name,
|
||||
status:scope.ticketRegion.group.children[i].status,
|
||||
stayTime:scope.ticketRegion.group.children[i].stayTime,
|
||||
runType:scope.ticketRegion.group.children[i].runType,
|
||||
connectDevice:scope.ticketRegion.group.children[i].connectDevice,
|
||||
underFloor:scope.ticketRegion.group.children[i].underFloor,
|
||||
pos:{
|
||||
x:scope.ticketRegion.group.children[i].position.x,
|
||||
y:scope.ticketRegion.group.children[i].position.y,
|
||||
z:scope.ticketRegion.group.children[i].position.z
|
||||
},
|
||||
rot:{
|
||||
x:scope.ticketRegion.group.children[i].rotation.x,
|
||||
y:scope.ticketRegion.group.children[i].rotation.y,
|
||||
z:scope.ticketRegion.group.children[i].rotation.z
|
||||
},
|
||||
});
|
||||
}
|
||||
for(let i=0;i<scope.elevatorRegion.group.children.length;i++){
|
||||
newSaveData.elevatorRegion.push({
|
||||
name:scope.elevatorRegion.group.children[i].name,
|
||||
status:scope.elevatorRegion.group.children[i].status,
|
||||
connectDevice:scope.elevatorRegion.group.children[i].connectDevice,
|
||||
underFloor:scope.elevatorRegion.group.children[i].underFloor,
|
||||
pos:{
|
||||
x:scope.elevatorRegion.group.children[i].position.x,
|
||||
y:scope.elevatorRegion.group.children[i].position.y,
|
||||
z:scope.elevatorRegion.group.children[i].position.z
|
||||
},
|
||||
rot:{
|
||||
x:scope.elevatorRegion.group.children[i].rotation.x,
|
||||
y:scope.elevatorRegion.group.children[i].rotation.y,
|
||||
z:scope.elevatorRegion.group.children[i].rotation.z
|
||||
},
|
||||
});
|
||||
}
|
||||
for(let i=0;i<scope.stairsRegion.group.children.length;i++){
|
||||
newSaveData.stairsRegion.push({
|
||||
name:scope.stairsRegion.group.children[i].name,
|
||||
status:scope.stairsRegion.group.children[i].status,
|
||||
connectDevice:scope.stairsRegion.group.children[i].connectDevice,
|
||||
underFloor:scope.stairsRegion.group.children[i].underFloor,
|
||||
pos:{
|
||||
x:scope.stairsRegion.group.children[i].position.x,
|
||||
y:scope.stairsRegion.group.children[i].position.y,
|
||||
z:scope.stairsRegion.group.children[i].position.z
|
||||
},
|
||||
rot:{
|
||||
x:scope.stairsRegion.group.children[i].rotation.x,
|
||||
y:scope.stairsRegion.group.children[i].rotation.y,
|
||||
z:scope.stairsRegion.group.children[i].rotation.z
|
||||
},
|
||||
});
|
||||
}
|
||||
for(let i=0;i<scope.escalatorRegion.group.children.length;i++){
|
||||
newSaveData.escalatorRegion.push({
|
||||
name:scope.escalatorRegion.group.children[i].name,
|
||||
status:scope.escalatorRegion.group.children[i].status,
|
||||
connectDevice:scope.escalatorRegion.group.children[i].connectDevice,
|
||||
underFloor:scope.escalatorRegion.group.children[i].underFloor,
|
||||
pos:{
|
||||
x:scope.escalatorRegion.group.children[i].position.x,
|
||||
y:scope.escalatorRegion.group.children[i].position.y,
|
||||
z:scope.escalatorRegion.group.children[i].position.z
|
||||
},
|
||||
rot:{
|
||||
x:scope.escalatorRegion.group.children[i].rotation.x,
|
||||
y:scope.escalatorRegion.group.children[i].rotation.y,
|
||||
z:scope.escalatorRegion.group.children[i].rotation.z
|
||||
},
|
||||
});
|
||||
}
|
||||
for(let i=0;i<scope.unaccessRegion.group.children.length;i++){
|
||||
newSaveData.unaccessRegion.push({
|
||||
name:scope.unaccessRegion.group.children[i].name,
|
||||
status:scope.unaccessRegion.group.children[i].status,
|
||||
underFloor:scope.unaccessRegion.group.children[i].underFloor,
|
||||
pos:{
|
||||
x:scope.unaccessRegion.group.children[i].position.x,
|
||||
y:scope.unaccessRegion.group.children[i].position.y,
|
||||
z:scope.unaccessRegion.group.children[i].position.z
|
||||
},
|
||||
rot:{
|
||||
x:scope.unaccessRegion.group.children[i].rotation.x,
|
||||
y:scope.unaccessRegion.group.children[i].rotation.y,
|
||||
z:scope.unaccessRegion.group.children[i].rotation.z
|
||||
},
|
||||
});
|
||||
}
|
||||
return newSaveData;
|
||||
|
||||
};
|
||||
|
||||
//读取区域数据
|
||||
this.loadRegionData = function(data){
|
||||
console.log(data);
|
||||
scope.startRegion.loadRegionData(data.startRegion);
|
||||
scope.securityRegion.loadRegionData(data.securityRegion);
|
||||
scope.checkRegion.loadRegionData(data.checkRegion);
|
||||
scope.standRegion.loadRegionData(data.standRegion);
|
||||
scope.ticketRegion.loadRegionData(data.ticketRegion);
|
||||
scope.elevatorRegion.loadRegionData(data.elevatorRegion);
|
||||
scope.stairsRegion.loadRegionData(data.stairsRegion);
|
||||
scope.escalatorRegion.loadRegionData(data.escalatorRegion);
|
||||
scope.unaccessRegion.loadRegionData(data.unaccessRegion);
|
||||
};
|
||||
|
||||
|
||||
//获取区域范围内点
|
||||
this.getInitPos = function(name){
|
||||
|
||||
};
|
||||
|
||||
//获取目标区域
|
||||
this.getTargetPos = function(name){
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,331 +0,0 @@
|
||||
import { ZoneModel } from '@/jlmap3d/jl3dstationmanager/model/zonemodel.js';
|
||||
//进站区域1
|
||||
let enter1 = {
|
||||
code : '001',
|
||||
name : "enter1",
|
||||
type : "normal",
|
||||
stage : "0",
|
||||
randompoint : new THREE.Vector3(26.6,9.8,-2.7),
|
||||
railpoints : [
|
||||
new THREE.Vector3(34,9.8,-6),
|
||||
new THREE.Vector3(32,9.8,-6)
|
||||
]
|
||||
};
|
||||
//进站区域2
|
||||
let enter2 = {
|
||||
code : '002',
|
||||
name : "enter2",
|
||||
type : "normal",
|
||||
stage : "0",
|
||||
randompoint : new THREE.Vector3(27,9.8,16),
|
||||
railpoints : [
|
||||
new THREE.Vector3(34,9.8,31.5),
|
||||
new THREE.Vector3(32,9.8,31.5)
|
||||
]
|
||||
};
|
||||
//安检区域
|
||||
let security = {
|
||||
code : '003',
|
||||
name : "security",
|
||||
type : "device",
|
||||
stage : "1",
|
||||
randompoint : new THREE.Vector3(8.8,9.8,18),
|
||||
railpoints : [
|
||||
new THREE.Vector3(20.5,9.8,18),
|
||||
new THREE.Vector3(21,9.8,21)
|
||||
]
|
||||
};
|
||||
//进方向闸机区域
|
||||
let entergate = {
|
||||
code : '004',
|
||||
name : "entergate",
|
||||
type : "device",
|
||||
stage : "2",
|
||||
randompoint : new THREE.Vector3(2.3,9.8,13),
|
||||
railpoints : [
|
||||
new THREE.Vector3(6.3,9.8,18.1),
|
||||
new THREE.Vector3(4.8,9.8,18.1),
|
||||
new THREE.Vector3(3.4,9.8,18.1),
|
||||
new THREE.Vector3(2.1,9.8,18.1),
|
||||
new THREE.Vector3(0.7,9.8,18.1)
|
||||
]
|
||||
};
|
||||
//站台上车区域
|
||||
let standtop = {
|
||||
code : '005',
|
||||
name : "standtop",
|
||||
type : "stand",
|
||||
stage : "3",
|
||||
randompoint : new THREE.Vector3(-64,1.77,0.38),
|
||||
doorpoints:[
|
||||
new THREE.Vector3(-62.1,1.77,-4.38),
|
||||
new THREE.Vector3(-57.54,1.77,-4.38),
|
||||
new THREE.Vector3(-53.1,1.77,-4.38),
|
||||
new THREE.Vector3(-42.5,1.77,-4.38),
|
||||
new THREE.Vector3(-37.6,1.77,-4.38),
|
||||
new THREE.Vector3(-33.6,1.77,-4.38),
|
||||
new THREE.Vector3(-20.8,1.77,-4.38),
|
||||
new THREE.Vector3(-16.6,1.77,-4.38),
|
||||
new THREE.Vector3(-12,1.77,-4.38),
|
||||
new THREE.Vector3(0.5,1.77,-4.38),
|
||||
new THREE.Vector3(4.8,1.77,-4.38),
|
||||
new THREE.Vector3(9.27,1.77,-4.38),
|
||||
new THREE.Vector3(21.6,1.77,-4.38),
|
||||
new THREE.Vector3(26.2,1.77,-4.38),
|
||||
new THREE.Vector3(30.48,1.77,-4.38),
|
||||
new THREE.Vector3(43.2,1.77,-4.38),
|
||||
new THREE.Vector3(47.5,1.77,-4.38),
|
||||
new THREE.Vector3(51.9,1.77,-4.38)
|
||||
],
|
||||
// new THREE.Vector3(-62.84,1.77,-4.38),
|
||||
// new THREE.Vector3(-58.11,1.77,-4.38),
|
||||
// new THREE.Vector3(-53.47,1.77,-4.38),
|
||||
// new THREE.Vector3(-45.45,1.77,-4.38),
|
||||
// new THREE.Vector3(-41.1,1.77,-4.38),
|
||||
// new THREE.Vector3(-36.33,1.77,-4.38),
|
||||
// new THREE.Vector3(-31.5,1.77,-4.38),
|
||||
// new THREE.Vector3(-23.65,1.77,-4.38),
|
||||
// new THREE.Vector3(-18.98,1.77,-4.38),
|
||||
// new THREE.Vector3(-14.46,1.77,-4.38),
|
||||
// new THREE.Vector3(-10,1.77,-4.38),
|
||||
// new THREE.Vector3(-2.2,1.77,-4.38),
|
||||
// new THREE.Vector3(2.49,1.77,-4.38),
|
||||
// new THREE.Vector3(7.17,1.77,-4.38),
|
||||
// new THREE.Vector3(11.8,1.77,-4.38),
|
||||
// new THREE.Vector3(19.41,1.77,-4.38),
|
||||
// new THREE.Vector3(24.09,1.77,-4.38),
|
||||
// new THREE.Vector3(28.72,1.77,-4.38),
|
||||
// new THREE.Vector3(33.46,1.77,-4.38),
|
||||
// new THREE.Vector3(41.24,1.77,-4.38),
|
||||
// new THREE.Vector3(45.82,1.77,-4.38),
|
||||
// new THREE.Vector3(50.69,1.77,-4.38)
|
||||
railpoints : [
|
||||
new THREE.Vector3(53.1,1.77,-1.8),
|
||||
new THREE.Vector3(-63.5,1.77,-1.8)
|
||||
]
|
||||
};
|
||||
//站台下车区域
|
||||
let standdown = {
|
||||
code : '006',
|
||||
name : "standdown",
|
||||
type : "stand",
|
||||
stage : "3",
|
||||
randompoint : new THREE.Vector3(-64,1.77,21),
|
||||
doorpoints:[
|
||||
new THREE.Vector3(-62.1,1.77,27),
|
||||
new THREE.Vector3(-57.54,1.77,27),
|
||||
new THREE.Vector3(-53.1,1.77,27),
|
||||
new THREE.Vector3(-42.5,1.77,27),
|
||||
new THREE.Vector3(-37.6,1.77,27),
|
||||
new THREE.Vector3(-33.6,1.77,27),
|
||||
new THREE.Vector3(-20.8,1.77,27),
|
||||
new THREE.Vector3(-16.6,1.77,27),
|
||||
new THREE.Vector3(-12,1.77,27),
|
||||
new THREE.Vector3(0.5,1.77,27),
|
||||
new THREE.Vector3(4.8,1.77,27),
|
||||
new THREE.Vector3(9.27,1.77,27),
|
||||
new THREE.Vector3(21.6,1.77,27),
|
||||
new THREE.Vector3(26.2,1.77,27),
|
||||
new THREE.Vector3(30.48,1.77,27),
|
||||
new THREE.Vector3(43.2,1.77,27),
|
||||
new THREE.Vector3(47.5,1.77,27),
|
||||
new THREE.Vector3(51.9,1.77,27)
|
||||
],
|
||||
// new THREE.Vector3(-62.84,1.77,27),
|
||||
// new THREE.Vector3(-58.11,1.77,27),
|
||||
// new THREE.Vector3(-53.47,1.77,27),
|
||||
// new THREE.Vector3(-45.45,1.77,27),
|
||||
// new THREE.Vector3(-41.1,1.77,27),
|
||||
// new THREE.Vector3(-36.33,1.77,27),
|
||||
// new THREE.Vector3(-31.5,1.77,27),
|
||||
// new THREE.Vector3(-23.65,1.77,27),
|
||||
// new THREE.Vector3(-18.98,1.77,27),
|
||||
// new THREE.Vector3(-14.46,1.77,27),
|
||||
// new THREE.Vector3(-10,1.77,27),
|
||||
// new THREE.Vector3(-2.2,1.77,27),
|
||||
// new THREE.Vector3(2.49,1.77,27),
|
||||
// new THREE.Vector3(7.17,1.77,27),
|
||||
// new THREE.Vector3(11.8,1.77,27),
|
||||
// new THREE.Vector3(19.41,1.77,27),
|
||||
// new THREE.Vector3(24.09,1.77,27),
|
||||
// new THREE.Vector3(28.72,1.77,27),
|
||||
// new THREE.Vector3(33.46,1.77,27),
|
||||
// new THREE.Vector3(41.24,1.77,27),
|
||||
// new THREE.Vector3(45.82,1.77,27),
|
||||
// new THREE.Vector3(50.69,1.77,27)
|
||||
railpoints : [
|
||||
new THREE.Vector3(53.1,1.77,24),
|
||||
new THREE.Vector3(-64,1.77,24)
|
||||
]
|
||||
};
|
||||
//4是刚下车状态
|
||||
//出方向闸机区域
|
||||
let exitgate = {
|
||||
code : '007',
|
||||
name : "exitgate",
|
||||
type : "device",
|
||||
stage : "5",
|
||||
randompoint : new THREE.Vector3(-16,9.8,-0.4),
|
||||
railpoints : [
|
||||
new THREE.Vector3(18,9.8,-0.27),
|
||||
new THREE.Vector3(18,9.8,1.18),
|
||||
new THREE.Vector3(18,9.8,2.64),
|
||||
new THREE.Vector3(18,9.8,4.1),
|
||||
new THREE.Vector3(18,9.8,5.4)
|
||||
]
|
||||
};
|
||||
//出站台区域1
|
||||
let exit1 = {
|
||||
code : '008',
|
||||
name : "exit1",
|
||||
type : "normal",
|
||||
stage : "6",
|
||||
randompoint : new THREE.Vector3(),
|
||||
railpoints : [
|
||||
new THREE.Vector3(28.2,9.8,-7),
|
||||
new THREE.Vector3(30.5,9.8,-7.4)
|
||||
]
|
||||
};
|
||||
//出站台区域2
|
||||
let exit2 = {
|
||||
code : '009',
|
||||
name : "exit2",
|
||||
type : "normal",
|
||||
stage : "6",
|
||||
randompoint : new THREE.Vector3(),
|
||||
railpoints : [
|
||||
new THREE.Vector3(28.3,9.8,28),
|
||||
new THREE.Vector3(30.2,9.8,28)
|
||||
]
|
||||
};
|
||||
let enternum = 0;
|
||||
let exitnum = 0;
|
||||
//区域管理器
|
||||
export function ZoneManager() {
|
||||
|
||||
var scope = this;
|
||||
|
||||
this.name = "test";
|
||||
|
||||
this.list = [];
|
||||
|
||||
initzone();
|
||||
//初始化区域对象
|
||||
function initzone(){
|
||||
scope.list[enter1.name] = new ZoneModel(enter1);
|
||||
scope.list[enter2.name] = new ZoneModel(enter2);
|
||||
scope.list[security.name] = new ZoneModel(security);
|
||||
scope.list[entergate.name] = new ZoneModel(entergate);
|
||||
scope.list[standtop.name] = new ZoneModel(standtop);
|
||||
scope.list[standdown.name] = new ZoneModel(standdown);
|
||||
scope.list[exitgate.name] = new ZoneModel(exitgate);
|
||||
scope.list[exit1.name] = new ZoneModel(exit1);
|
||||
scope.list[exit2.name] = new ZoneModel(exit2);
|
||||
}
|
||||
//获取区域范围内点
|
||||
this.getinitposition = function(name){
|
||||
// console.log(scope.list[name]);
|
||||
let randompoint = new THREE.Vector3(0,scope.list[name].randompoint.y,0);
|
||||
|
||||
// console.log(randompoint);
|
||||
if(name == "enter1"){
|
||||
randompoint.x = scope.list[name].randompoint.x + Math.random()*8;
|
||||
randompoint.z = scope.list[name].randompoint.z + Math.random()*8;
|
||||
}
|
||||
if(name == "enter2"){
|
||||
randompoint.x = scope.list[name].randompoint.x + Math.random()*8;
|
||||
randompoint.z = scope.list[name].randompoint.z + Math.random()*8;
|
||||
}
|
||||
if(name == "security"){
|
||||
randompoint.x = scope.list[name].randompoint.x + Math.random()*10;
|
||||
randompoint.z = scope.list[name].randompoint.z + Math.random()*2;
|
||||
}
|
||||
if(name == "entergate"){
|
||||
randompoint.x = scope.list[name].randompoint.x + Math.random()*5;
|
||||
randompoint.z = scope.list[name].randompoint.z - Math.random()*2;
|
||||
}
|
||||
if(name == "standtop"){
|
||||
randompoint.x = scope.list[name].randompoint.x + Math.random()*100;
|
||||
randompoint.z = scope.list[name].randompoint.z + Math.random();
|
||||
}
|
||||
if(name == "standdown"){
|
||||
randompoint.x = scope.list[name].randompoint.x + Math.random()*100;
|
||||
randompoint.z = scope.list[name].randompoint.z ;
|
||||
}
|
||||
if(name == "exitgate"){
|
||||
randompoint.x = scope.list[name].randompoint.x + Math.random()*30;
|
||||
randompoint.z = scope.list[name].randompoint.z + Math.random()*5;
|
||||
}
|
||||
// let random = Math.random();
|
||||
return randompoint;
|
||||
}
|
||||
|
||||
this.getstandposition = function(name){
|
||||
let n = Math.round(Math.random()*17);
|
||||
if(n>=1){
|
||||
n=n;
|
||||
}else{
|
||||
n=0;
|
||||
}
|
||||
let randompoint = new THREE.Vector3(0,scope.list[name].doorpoints[n].y,0);
|
||||
|
||||
if(name == "standtop"){
|
||||
randompoint.x = scope.list[name].doorpoints[n].x + Math.random()*3;
|
||||
randompoint.z = scope.list[name].doorpoints[n].z +4+Math.random()*5;
|
||||
}
|
||||
if(name == "standdown"){
|
||||
randompoint.x = scope.list[name].doorpoints[n].x + Math.random()*3;
|
||||
randompoint.z = scope.list[name].doorpoints[n].z -4-Math.random()*5;
|
||||
}
|
||||
let standdata = {
|
||||
door:n,
|
||||
point:randompoint
|
||||
};
|
||||
return standdata;
|
||||
}
|
||||
|
||||
this.getgateposition = function(name){
|
||||
let randompoint = new THREE.Vector3(0,0,0);
|
||||
|
||||
let standdata = {
|
||||
door:null,
|
||||
point:null
|
||||
};
|
||||
if(name == "entergate"){
|
||||
randompoint.x = scope.list[name].railpoints[enternum].x ;
|
||||
randompoint.y = scope.list[name].railpoints[enternum].y ;
|
||||
randompoint.z = scope.list[name].railpoints[enternum].z ;
|
||||
standdata.door = 4-enternum;
|
||||
enternum += 1;
|
||||
if(enternum>4){
|
||||
enternum = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(name == "exitgate"){
|
||||
|
||||
randompoint.x = scope.list[name].railpoints[exitnum].x ;
|
||||
randompoint.y = scope.list[name].railpoints[exitnum].y ;
|
||||
randompoint.z = scope.list[name].railpoints[exitnum].z ;
|
||||
standdata.door = 4-exitnum;
|
||||
exitnum += 1;
|
||||
if(exitnum>4){
|
||||
exitnum = 0;
|
||||
}
|
||||
}
|
||||
standdata.point = randompoint;
|
||||
|
||||
return standdata;
|
||||
}
|
||||
|
||||
this.getzoneposition = function(name){
|
||||
// let random = Math.random();
|
||||
let position = scope.list[name].railline.getPointAt(Math.random());
|
||||
return position;
|
||||
}
|
||||
|
||||
this.zoneActionCheck = function(){
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
export function ZoneModel(data) {
|
||||
var scope = this;
|
||||
//code
|
||||
this.code = data.code;
|
||||
//命名
|
||||
this.name = data.name;
|
||||
this.type = data.type;
|
||||
this.stage = data.stage;
|
||||
this.status = 0;
|
||||
this.randompoint = data.randompoint;
|
||||
//轨迹点
|
||||
this.railpoints = data.railpoints;
|
||||
|
||||
this.railline = new THREE.CatmullRomCurve3(data.railpoints);
|
||||
if(data.doorpoints){
|
||||
this.doorpoints = data.doorpoints;
|
||||
}else{
|
||||
this.doorpoints = null;
|
||||
}
|
||||
}
|
@ -22,7 +22,7 @@ export function PathFinder(){
|
||||
// load a resource
|
||||
loaderObj.load(
|
||||
// resource URL
|
||||
JL3D_LOCAL_STATIC+'/jl3d/path/path.obj',
|
||||
JL3D_LOCAL_STATIC+'/jl3d/path/stationmanager.obj',
|
||||
// called when resource is loaded
|
||||
function ( object ) {
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
<el-tab-pane label="基础区域绘制" name="trackedit" >
|
||||
<el-row>
|
||||
<el-button id="stationRegion" class="editbutton stationRegion" @click="actionClick($event)">入口区域</el-button>
|
||||
<el-button id="startRegion" class="editbutton startRegion" @click="actionClick($event)">入口区域</el-button>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-button id="securityRegion" class="editbutton securityRegion" @click="actionClick($event)">安检区域</el-button>
|
||||
@ -141,7 +141,7 @@ export default {
|
||||
padding: 1cm
|
||||
}
|
||||
|
||||
.stationRegion{
|
||||
.startRegion{
|
||||
background:#2894FF;
|
||||
}
|
||||
.securityRegion{
|
||||
|
@ -4,8 +4,58 @@
|
||||
<el-tabs class="mapControl" :tab-position="tabPosition" v-model="activeName" type="card" @tab-click="handleClick" >
|
||||
|
||||
|
||||
<el-tab-pane label="区域属性" name="trackedit" >
|
||||
<el-tab-pane label="区域属性" name="regionEditor" >
|
||||
|
||||
<el-form ref="form" label-width="130px" size="mini" v-if="selectModel">
|
||||
|
||||
|
||||
<el-form-item label="uuid:" v-if="selectModel.uuid" disabled="true">
|
||||
<el-input v-model="selectModel.uuid" ></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="区域类型:" v-if="selectModel.regionType" disabled="true">
|
||||
<el-input v-model="selectModel.regionType"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="区域状态:" v-if="selectModel.status" disabled="true">
|
||||
<el-input v-model="selectModel.status"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="入口乘客比例:" v-if="selectModel.startWeight" disabled="true">
|
||||
<el-input v-model="selectModel.startWeight"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="出口乘客比例:" v-if="selectModel.endWeight" disabled="true">
|
||||
<el-input v-model="selectModel.endWeight"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="买票乘客比例:" v-if="selectModel.targetWeight" disabled="true">
|
||||
<el-input v-model="selectModel.targetWeight"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="乘客停留时间:" v-if="selectModel.stayTime" disabled="true">
|
||||
<el-input v-model="selectModel.stayTime"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="售票处状态:" v-if="selectModel.runType" disabled="true">
|
||||
<el-input v-model="selectModel.runType"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="站台方向:" v-if="selectModel.direction" disabled="true">
|
||||
<el-input v-model="selectModel.direction"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="连接设备:" v-if="selectModel.connectDevice" disabled="true">
|
||||
<el-input v-model="selectModel.connectDevice"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
|
||||
<!-- <el-button v-if="selectModel.meshtype == 'section'" @click="leftAlignment">区段左对齐</el-button>
|
||||
|
||||
<el-button v-if="selectModel.meshtype == 'section'" @click="rightAlignment">区段右对齐</el-button> -->
|
||||
|
||||
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
@ -35,6 +85,7 @@ export default {
|
||||
tabPosition:'top',
|
||||
size:'medium',
|
||||
isActive:-1,
|
||||
selectModel:null,
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
@ -42,21 +93,18 @@ export default {
|
||||
|
||||
},
|
||||
mounted() {
|
||||
|
||||
window.jl3dStationManagerUpdateSelectModel = this.jl3dStationManagerUpdateSelectModel;
|
||||
},
|
||||
methods: {
|
||||
|
||||
init: function() {
|
||||
|
||||
},
|
||||
back() {
|
||||
back: function() {
|
||||
|
||||
},
|
||||
handleClick(tab, event) {
|
||||
// console.log(tab);
|
||||
// if(tab.name == "pathedit"){
|
||||
// this.$emit('saction',this.activeName);
|
||||
// }
|
||||
handleClick: function(tab, event) {
|
||||
|
||||
this.isActive = -1;
|
||||
if(tab.name == "trackedit"){
|
||||
|
||||
@ -72,7 +120,11 @@ export default {
|
||||
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
jl3dStationManagerUpdateSelectModel: function(selected){
|
||||
this.selectModel = selected;
|
||||
this.activeName = "regionEditor";
|
||||
console.log(this.selectModel);
|
||||
},
|
||||
|
||||
|
||||
|
@ -3,16 +3,56 @@
|
||||
<el-row class="managerbutton">
|
||||
<el-button @click="switchViews" round>{{switchButtonName}}</el-button>
|
||||
<!-- 仿真操作按钮 -->
|
||||
<el-button round >显示隐藏区域</el-button>
|
||||
<el-button round >显示隐藏热力图</el-button>
|
||||
<el-button v-show="!viewStatus" round @click="startSimulation">开始仿真</el-button>
|
||||
<el-button v-show="!viewStatus" round >显示隐藏区域</el-button>
|
||||
<el-button v-show="!viewStatus" round >显示隐藏热力图</el-button>
|
||||
<!-- 绘图操作按钮 -->
|
||||
<el-button round @click="deleteRegion">删除区域</el-button>
|
||||
<el-button round>保存方案</el-button>
|
||||
<el-button round>加载方案</el-button>
|
||||
<el-button v-show="viewStatus" round @click="deleteRegion">删除区域</el-button>
|
||||
<el-button v-show="viewStatus" round @click="saveData">保存方案</el-button>
|
||||
<el-button v-show="viewStatus" round @click="loadData">加载方案</el-button>
|
||||
<!-- 其他 -->
|
||||
<el-button round>退出</el-button>
|
||||
</el-row>
|
||||
<Draw-Type @changeDrawType=changeDrawType ></Draw-Type>
|
||||
|
||||
<div class="dataLoadDiv" v-show="showSaveList">
|
||||
<el-input v-model="saveDataName"></el-input>
|
||||
<div class="modelname" @click="saveNewData(saveDataName)">存新方案</div>
|
||||
<div class="modelname" @click="updateSaveData(saveDataName)">更新方案</div>
|
||||
</div>
|
||||
<div class="dataLoadDiv" v-show="showLoadList">
|
||||
<div class="dataLoadTittle">已存储方案列表:</div>
|
||||
<el-scrollbar style="margin-bottom:1px">
|
||||
<el-form ref="form" label-width="130px" size="mini">
|
||||
|
||||
<div class="dataListDiv" v-for="(asset,index) in nowDataList" >
|
||||
|
||||
<div >
|
||||
<div class="modelname">方案名称:{{asset.name }}</div>
|
||||
<div class="modelname">方案修改日期:{{asset.updateTime }}</div>
|
||||
|
||||
<div class="modelname" @click="modelSelect(asset.id)">加载方案</div>
|
||||
<div class="modelname" @click="deletSelect(asset.id)">删除方案</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
|
||||
|
||||
<div v-show="!viewStatus" class="station" :style="{'background-image': 'url('+localStatic+'/texture/scene.png)'}">
|
||||
<div style="margin-top:5%;font-size: 30px;">当前车站:</div>
|
||||
<el-select v-model="value" class="listmenu" placeholder="当前车站" @change="currentsel">
|
||||
<el-option
|
||||
v-for="item in stationlist"
|
||||
:key="item.name"
|
||||
:label="item.text"
|
||||
:value="item.name"
|
||||
:disabled="item.disabled"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
<Station-Data v-show="!viewStatus"></Station-Data>
|
||||
<Draw-Type v-show="viewStatus" @changeDrawType=changeDrawType ></Draw-Type>
|
||||
<Pro-Perty></Pro-Perty>
|
||||
<div id="jl3d" class="jl3dstationmanagerdraw">
|
||||
</div>
|
||||
@ -24,20 +64,41 @@
|
||||
|
||||
import { Jl3dStationManager } from '@/jlmap3d/jl3dstationmanager/jl3dstationmanager.js';
|
||||
|
||||
import StationData from '@/views/jlmap3d/trafficplan/component/stationdata';
|
||||
import DrawType from '@/views/jlmap3d/stationmanager/component/drawtype';
|
||||
import ProPerty from '@/views/jlmap3d/stationmanager/component/property';
|
||||
|
||||
import { saveStationManagerData,updateStationManagerData,getStationManagerDataList,getStationManagerData,deleteStationManagerData} from '@/api/jlmap3d/load3ddata';
|
||||
|
||||
export default {
|
||||
name: 'jl3devacuation',
|
||||
components: {
|
||||
StationData,
|
||||
DrawType,
|
||||
ProPerty,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
group:'',
|
||||
mapid:'',
|
||||
lineCode:'',
|
||||
deviceCode:'',
|
||||
localStatic:JL3D_LOCAL_STATIC,
|
||||
jl3d: null,
|
||||
switchButtonName:'仿真视角',
|
||||
viewStatus:false,
|
||||
stationlist:[],
|
||||
value:'',
|
||||
nowDataList:[
|
||||
{
|
||||
name:"test",
|
||||
updateTime:"2021年3月5日",
|
||||
},
|
||||
],
|
||||
showLoadList:false,
|
||||
showSaveList:false,
|
||||
dataId:null,
|
||||
saveDataName:"",
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -48,8 +109,12 @@
|
||||
|
||||
},
|
||||
mounted() {
|
||||
window.updatestationlist = this.updatestationlist;
|
||||
|
||||
|
||||
this.group = this.$route.query.group;
|
||||
this.mapid = this.$route.query.mapid;
|
||||
this.lineCode = this.$route.query.lineCode;
|
||||
this.initCode = this.$route.query.deviceCode;
|
||||
this.initnewdata();
|
||||
},
|
||||
beforeDestroy() {
|
||||
@ -57,7 +122,7 @@
|
||||
methods: {
|
||||
initnewdata: function (group,header){
|
||||
let dom = document.getElementById('jl3d');
|
||||
this.jl3d = new Jl3dStationManager(dom);
|
||||
this.jl3d = new Jl3dStationManager(dom,this.mapid,this.group,this.initCode);
|
||||
},
|
||||
changeDrawType(drawTypeName){
|
||||
// console.log(drawTypeName);
|
||||
@ -74,10 +139,92 @@
|
||||
this.viewStatus = false;
|
||||
this.jl3d.changeControlMode(false);
|
||||
}
|
||||
},
|
||||
startSimulation(){
|
||||
|
||||
},
|
||||
deleteRegion(){
|
||||
this.jl3d.deleteRegion();
|
||||
},
|
||||
currentsel(selVal) {
|
||||
|
||||
this.jl3d.changestation(selVal);
|
||||
// let oldgroupnum = this.groupnum;
|
||||
this.value = selVal;
|
||||
},
|
||||
saveData(){
|
||||
this.showSaveList = true;
|
||||
},
|
||||
saveNewData(nowName){
|
||||
let newSaveData = this.jl3d.saveAllData();
|
||||
newSaveData.name = nowName;
|
||||
saveStationManagerData(newSaveData).then(data => {
|
||||
if(data.code == "200"){
|
||||
//console.log("创建三维数据成功");
|
||||
console.log(data);
|
||||
this.dataId = data.data;
|
||||
this.showSaveList = false;
|
||||
}
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
});
|
||||
},
|
||||
updateSaveData(nowName){
|
||||
if(this.dataId){
|
||||
let newSaveData = this.jl3d.saveAllData();
|
||||
newSaveData.name = nowName;
|
||||
updateStationManagerData(this.dataId,newSaveData).then(data => {
|
||||
if(data.code == "200"){
|
||||
//console.log("创建三维数据成功");
|
||||
console.log(data);
|
||||
this.showSaveList = false;
|
||||
|
||||
}
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
});
|
||||
}else{
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
loadData(){
|
||||
this.showLoadList = true;
|
||||
getStationManagerDataList().then(netdata => {
|
||||
console.log(netdata);
|
||||
this.nowDataList = netdata.data;
|
||||
|
||||
});
|
||||
},
|
||||
deletSelect(deleteId){
|
||||
deleteStationManagerData(deleteId).then(netdata => {
|
||||
console.log(netdata);
|
||||
});
|
||||
this.showLoadList = false;
|
||||
},
|
||||
modelSelect(loadId){
|
||||
console.log(loadId);
|
||||
getStationManagerData(loadId).then(netdata => {
|
||||
console.log(netdata);
|
||||
|
||||
this.dataId = loadId;
|
||||
this.saveDataName = netdata.data.name;
|
||||
this.jl3d.loadData(netdata.data);
|
||||
});
|
||||
this.showLoadList = false;
|
||||
},
|
||||
updatestationlist(list,nowname) {
|
||||
|
||||
if(nowname){
|
||||
this.value = nowname;
|
||||
}else{
|
||||
this.value = list[0].name;
|
||||
}
|
||||
for(let i=0;i<list.length;i++){
|
||||
list[i].text = list[i].name+'(现有乘客'+(list[i].downpassers+list[i].toppassers)+'人)';
|
||||
}
|
||||
this.stationlist = list;
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
@ -96,8 +243,46 @@
|
||||
/* left: 0; */
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 9;
|
||||
/* z-index: 9; */
|
||||
}
|
||||
.dataLoadDiv{
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
width:40%;
|
||||
height:60;
|
||||
top:20%;
|
||||
left:30%;
|
||||
background-color: #fff;
|
||||
|
||||
border-radius:5px;
|
||||
border:solid 2px #000;
|
||||
}
|
||||
.dataLoadTittle{
|
||||
text-align:center;
|
||||
font-size: 20px;
|
||||
}
|
||||
.dataListDiv {
|
||||
float:left;
|
||||
position: relative;
|
||||
width:100%;
|
||||
height:100px;
|
||||
border-radius:5px;
|
||||
border:solid 2px #000;
|
||||
}
|
||||
.station{
|
||||
width:250px;
|
||||
height:100px;
|
||||
top:0;
|
||||
left:0;
|
||||
text-align: center;
|
||||
/* right:500px; */
|
||||
/* bottom:0; */
|
||||
position: absolute;
|
||||
background-size: 100% 100%;
|
||||
border-radius:10px;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.managerbutton{
|
||||
width:50%;
|
||||
left:25%;
|
||||
|
@ -117,6 +117,7 @@ export default {
|
||||
.stationdata{
|
||||
top:100px;
|
||||
left:0;
|
||||
z-index: 10;
|
||||
position: absolute;
|
||||
}
|
||||
.datatab{
|
||||
|
@ -395,6 +395,8 @@ export default {
|
||||
runPassenger(this.$route.query.group, em.deviceCode).then(netdata => {
|
||||
if (netdata.data) {
|
||||
const routeData = this.$router.resolve({
|
||||
// /jlmap3d/trafficplan
|
||||
// /design/jlmap3d/jl3dstationmanager
|
||||
path:'/jlmap3d/trafficplan',
|
||||
query:{
|
||||
mapid:this.$route.query.mapId,
|
||||
|
@ -28,7 +28,6 @@
|
||||
@refresh="loadInitData"
|
||||
@jlmap3d="jlmap3d"
|
||||
@assetmanager3d="assetmanager3d"
|
||||
@stationmanager3d="stationmanager3d"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -155,9 +154,7 @@ export default {
|
||||
assetmanager3d() {
|
||||
this.$router.push({ path: '/design/jlmap3d/assetmanager' });
|
||||
},
|
||||
stationmanager3d() {
|
||||
this.$router.push({ path: '/design/jlmap3d/jl3dstationmanager' });
|
||||
},
|
||||
|
||||
|
||||
|
||||
importMap() {
|
||||
|
@ -102,10 +102,6 @@ export default {
|
||||
label: this.$t('map.assetmanager3d'),
|
||||
handler: this.assetmanager3d
|
||||
},
|
||||
// {
|
||||
// label: this.$t('map.stationmanager3d'),
|
||||
// handler: this.stationmanager3d
|
||||
// },
|
||||
{
|
||||
label: this.$t('map.publish'),
|
||||
handler: this.publish
|
||||
@ -265,9 +261,6 @@ export default {
|
||||
assetmanager3d() {
|
||||
this.$emit('assetmanager3d');
|
||||
},
|
||||
stationmanager3d(){
|
||||
this.$emit('stationmanager3d');
|
||||
},
|
||||
jlmap3d() {
|
||||
this.$emit('jlmap3d');
|
||||
},
|
||||
|
1665
static/jl3d/path/stationmanager.obj
Normal file
1665
static/jl3d/path/stationmanager.obj
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user