隧道,信号机自动部署测试
This commit is contained in:
parent
c4e8bee27a
commit
3dfa7d6000
@ -81,6 +81,7 @@ export function Jlmap3ddata(mapid,scope){
|
||||
jlmap3ddata.mapId = mapid;
|
||||
console.log(jlmap3ddata.mapId);
|
||||
//初始化轨道和道岔 暂时
|
||||
jlmap3ddata.linklist = new LinkList();
|
||||
jlmap3ddata.sectionlist = new SectionList();
|
||||
jlmap3ddata.signallist = new SignalList();
|
||||
//初始化站台
|
||||
@ -90,11 +91,15 @@ export function Jlmap3ddata(mapid,scope){
|
||||
assetloader.assetinit(scene)
|
||||
.then(function(data){
|
||||
//console.log(data);
|
||||
return jlmap3ddata.sectionlist.initpromise(mapdata.sectionList,mapdata.switchList,scene);
|
||||
return jlmap3ddata.linklist.initpromise(mapdata.linkList,scene,assetloader);
|
||||
})
|
||||
.then(function(data){
|
||||
//console.log(data);
|
||||
return jlmap3ddata.signallist.initpromise(mapdata.signalList,scene,assetloader);
|
||||
return jlmap3ddata.sectionlist.initpromise(jlmap3ddata,assetloader,mapdata.sectionList,mapdata.switchList,scene);
|
||||
})
|
||||
.then(function(data){
|
||||
//console.log(data);
|
||||
return jlmap3ddata.signallist.initpromise(jlmap3ddata,mapdata.signalList,scene,assetloader);
|
||||
})
|
||||
.then(function(data){
|
||||
//console.log(data);
|
||||
@ -106,7 +111,6 @@ export function Jlmap3ddata(mapid,scope){
|
||||
})
|
||||
.then(function(data){
|
||||
//console.log(data);
|
||||
LinkList(mapdata.linkList,scene,assetloader);
|
||||
loadingInstance.close();
|
||||
});
|
||||
//初始化信号
|
||||
|
@ -1,8 +1,25 @@
|
||||
|
||||
export function LinkList(data,scene,assetloader){
|
||||
export function LinkList(data){
|
||||
|
||||
let scope = this;
|
||||
|
||||
this.type = "linklist";
|
||||
|
||||
this.linksgroup = new THREE.Group();
|
||||
this.linksgroup.name = "link";
|
||||
|
||||
this.initpromise = function(linkdata,scene,assetloader){
|
||||
return new Promise(function(resolve, reject){
|
||||
linkhelp(linkdata,scene);
|
||||
|
||||
scene.add(scope.linksgroup);
|
||||
linktest(linkdata,scene,assetloader);
|
||||
resolve("loadedrealsection");
|
||||
});
|
||||
}
|
||||
|
||||
function linkhelp(data,scene){
|
||||
let groups = new THREE.Group();
|
||||
let linklist = [];
|
||||
for(let i=0;i<data.length;i++){
|
||||
let lineGeometry = new THREE.Geometry();//生成几何体
|
||||
|
||||
@ -22,36 +39,27 @@ export function LinkList(data,scene,assetloader){
|
||||
line.distancey = data[i].rp.y-data[i].lp.y;
|
||||
line.computeLineDistances();//不可或缺的,若无,则线段不能显示为虚线
|
||||
groups.add(line);
|
||||
groups.position.z = 2000;
|
||||
linklist.push(line);
|
||||
|
||||
}
|
||||
groups.position.z = 2000;
|
||||
scene.add(groups);
|
||||
let linksgroup = new THREE.Group();
|
||||
linksgroup.name = "link";
|
||||
scene.add(linksgroup);
|
||||
}
|
||||
|
||||
let suidaogroup = new THREE.Group();
|
||||
suidaogroup.name = "suidao";
|
||||
scene.add(suidaogroup);
|
||||
|
||||
linktest(data,scene);
|
||||
|
||||
|
||||
// return linklist;
|
||||
|
||||
function linktest(data,scene){
|
||||
console.log(assetloader.modellist);
|
||||
function linktest(data,scene,assetloader){
|
||||
let autorail = null;
|
||||
let autosuidao = null;
|
||||
for(let i=0;i<assetloader.modellist.length;i++){
|
||||
if(assetloader.modellist[i].deviceType == "autorail"){
|
||||
autorail = assetloader.modellist[i].mesh.children[0];
|
||||
}
|
||||
if(assetloader.modellist[i].deviceType == "autosuidao"){
|
||||
autosuidao = assetloader.modellist[i].mesh.children[0];
|
||||
|
||||
}
|
||||
}
|
||||
autosuidao.rotation.x = 0;
|
||||
|
||||
let rightlist = [];
|
||||
let leftlist = [];
|
||||
let count = autorail.geometry.attributes.position.count;
|
||||
@ -67,22 +75,6 @@ export function LinkList(data,scene,assetloader){
|
||||
autorail.rightlist = rightlist;
|
||||
autorail.leftlist = leftlist;
|
||||
|
||||
rightlist = [];
|
||||
leftlist = [];
|
||||
count = autosuidao.geometry.attributes.position.count;
|
||||
for(let i=0;i<count;i++){
|
||||
if(autosuidao.geometry.attributes.position.array[i*3] >0.49){
|
||||
rightlist.push(i);
|
||||
}
|
||||
if(autosuidao.geometry.attributes.position.array[i*3] <-0.49){
|
||||
leftlist.push(i);
|
||||
}
|
||||
}
|
||||
autosuidao.rightlist = rightlist;
|
||||
autosuidao.leftlist = leftlist;
|
||||
|
||||
console.log(autorail);
|
||||
console.log(autosuidao);
|
||||
|
||||
let reallinks = [];
|
||||
let testlink;
|
||||
@ -102,12 +94,9 @@ export function LinkList(data,scene,assetloader){
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buildmodel(startdata);
|
||||
reallinks.push(startdata);
|
||||
data.splice(index,1);
|
||||
|
||||
|
||||
for(let i=0;i<reallinks.length;i++){
|
||||
for(let j=0;j<data.length;j++){
|
||||
if(reallinks[i].leftFdCode && j>=0){
|
||||
@ -150,31 +139,12 @@ export function LinkList(data,scene,assetloader){
|
||||
}
|
||||
}
|
||||
|
||||
function checklink(code,data){
|
||||
if(code == data.leftFdCode){
|
||||
|
||||
}
|
||||
if(code == data.leftSdCode){
|
||||
|
||||
}
|
||||
if(code == data.rightFdCode){
|
||||
|
||||
}
|
||||
if(code == data.rightSdCode){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function buildmodel(data,mdata,sx,direct){
|
||||
console.log(data);
|
||||
let len = data.lengthFact;
|
||||
// console.log(autorail);
|
||||
// console.log(autosuidao);
|
||||
|
||||
let testmesh2 = autorail.clone(true);
|
||||
|
||||
for(let i=0;i<autorail.rightlist.length;i++){
|
||||
testmesh2.geometry.attributes.position.array[autorail.rightlist[i]*3] = len-20;
|
||||
testmesh2.geometry.attributes.position.array[autorail.rightlist[i]*3] = len-20.5;
|
||||
testmesh2.geometry.attributes.uv.array[autorail.rightlist[i]*2] = testmesh2.geometry.attributes.position.array[0]-testmesh2.geometry.attributes.position.array[3];
|
||||
}
|
||||
let newrail = new THREE.BufferGeometry();
|
||||
@ -184,22 +154,6 @@ export function LinkList(data,scene,assetloader){
|
||||
testmesh2.geometry.attributes.uv.needsUpdate = true;
|
||||
testmesh2.geometry.computeBoundingSphere();
|
||||
testmesh2.geometry.center();
|
||||
|
||||
let testmesh1 = autosuidao.clone(true);
|
||||
|
||||
for(let i=0;i<autosuidao.rightlist.length;i++){
|
||||
testmesh1.geometry.attributes.position.array[autosuidao.rightlist[i]*3] = len-20;
|
||||
testmesh1.geometry.attributes.uv.array[autosuidao.rightlist[i]*2] = (testmesh1.geometry.attributes.position.array[3]-testmesh1.geometry.attributes.position.array[0])/15.3;
|
||||
}
|
||||
let newsuidao = new THREE.BufferGeometry();
|
||||
newsuidao.copy(testmesh1.geometry);
|
||||
testmesh1.geometry = newsuidao;
|
||||
testmesh1.geometry.attributes.position.needsUpdate = true;
|
||||
testmesh1.geometry.attributes.uv.needsUpdate = true;
|
||||
testmesh1.geometry.computeBoundingSphere();
|
||||
testmesh1.geometry.center();
|
||||
|
||||
// testmesh2.add(testmesh1);
|
||||
// data.lp.y *= 10;
|
||||
// data.rp.y *= 10;
|
||||
|
||||
@ -270,28 +224,18 @@ export function LinkList(data,scene,assetloader){
|
||||
}else {
|
||||
testmesh2.rotation.z = -rotenum;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}else{
|
||||
data.lp.x = data.lp.x;
|
||||
data.rp.x = data.lp.x + data.lengthFact;
|
||||
|
||||
testmesh2.position.x = (data.lp.x + data.rp.x)/2;
|
||||
testmesh2.position.z = (data.lp.y + data.rp.y)/2;
|
||||
|
||||
}
|
||||
|
||||
// testmesh2.position.y = 10;
|
||||
testmesh2.code = data.code;
|
||||
testmesh1.position.x = testmesh2.position.x;
|
||||
testmesh1.position.z = testmesh2.position.z;
|
||||
testmesh1.rotation.x = -Math.PI/2;
|
||||
testmesh1.rotation.z = testmesh2.rotation.z;
|
||||
var box = new THREE.BoxHelper( testmesh2, 0xff0000 );
|
||||
scene.add( box );
|
||||
suidaogroup.add( testmesh1 );
|
||||
linksgroup.add( testmesh2 );
|
||||
testmesh2.name = data.name;
|
||||
testmesh2.lengthfact = data.lengthFact;
|
||||
scope.linksgroup.add( testmesh2 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,8 +12,9 @@ export function RealSectionList(data) {
|
||||
|
||||
this.switch = [];
|
||||
|
||||
this.initpromise = function(jlmap3ddata,scene,assetloader){
|
||||
this.initpromise = function(sectiondata,switchdata,scene){
|
||||
return new Promise(function(resolve, reject){
|
||||
console.log(jlmap3ddata);
|
||||
let modelnum = null;
|
||||
for(let i=0;i<assetloader.modellist.length;i++){
|
||||
if(assetloader.modellist[i].deviceType == "mapSection"){
|
||||
@ -22,28 +23,28 @@ export function RealSectionList(data) {
|
||||
}
|
||||
let newmesh = assetloader.modellist[modelnum].mesh;
|
||||
//let mixer = new THREE.AnimationMixer( newmesh );
|
||||
////console.log(jlmap3ddata.sectionlist);
|
||||
////console.log(sectiondata.sectionlist);
|
||||
for(let i=0;i<newmesh.children.length;i++){
|
||||
|
||||
let name = newmesh.children[i].name.split("_");
|
||||
let newmeshname = name[0]+"_"+name[1]+"_"+name[2]+"."+name[3];
|
||||
////console.log(newmeshname);
|
||||
if(name[0] == "Switch"){
|
||||
for(let j=0;j<jlmap3ddata.sectionlist.switchs.datalist.length;j++){
|
||||
if(jlmap3ddata.sectionlist.switchs.datalist[j].name == newmeshname){
|
||||
for(let j=0;j<sectiondata.sectionlist.switchs.datalist.length;j++){
|
||||
if(sectiondata.sectionlist.switchs.datalist[j].name == newmeshname){
|
||||
//绿色道岔
|
||||
var box = new THREE.BoxHelper( newmesh.children[i], 0x00EE00 );
|
||||
scene.add(box);
|
||||
let nowname = jlmap3ddata.sectionlist.switchs.datalist[j].name;
|
||||
let nowcode = jlmap3ddata.sectionlist.switchs.datalist[j].code;
|
||||
let nowname = sectiondata.sectionlist.switchs.datalist[j].name;
|
||||
let nowcode = sectiondata.sectionlist.switchs.datalist[j].code;
|
||||
newmesh.children[i].name = nowname;
|
||||
newmesh.children[i].code = nowcode;
|
||||
for(let n=0;n<newmesh.children[i].children.length;n++){
|
||||
newmesh.children[i].children[n].code = nowcode;
|
||||
}
|
||||
|
||||
jlmap3ddata.sectionlist.switchs.modellist[j] = newmesh.children[i];
|
||||
j = jlmap3ddata.sectionlist.switchs.datalist.length;
|
||||
sectiondata.sectionlist.switchs.modellist[j] = newmesh.children[i];
|
||||
j = sectiondata.sectionlist.switchs.datalist.length;
|
||||
|
||||
}
|
||||
}
|
||||
@ -52,11 +53,11 @@ export function RealSectionList(data) {
|
||||
if(name[0] == "Section"){
|
||||
//console.log(newmesh.children[i]);
|
||||
//物理区段
|
||||
for(let j=0;j<jlmap3ddata.sectionlist.sections.datalist.length;j++){
|
||||
for(let j=0;j<sectiondata.sectionlist.sections.datalist.length;j++){
|
||||
|
||||
if(jlmap3ddata.sectionlist.sections.datalist[j].name == newmeshname){
|
||||
if(sectiondata.sectionlist.sections.datalist[j].name == newmeshname){
|
||||
|
||||
if(jlmap3ddata.sectionlist.sections.datalist[j].isStandTrack == true){
|
||||
if(sectiondata.sectionlist.sections.datalist[j].isStandTrack == true){
|
||||
//红色站台区段
|
||||
var box = new THREE.BoxHelper( newmesh.children[i], 0xff0000 );
|
||||
}else{
|
||||
@ -65,12 +66,12 @@ export function RealSectionList(data) {
|
||||
}
|
||||
scene.add( box );
|
||||
|
||||
let nowname = jlmap3ddata.sectionlist.sections.datalist[j].name;
|
||||
let nowcode = jlmap3ddata.sectionlist.sections.datalist[j].code;
|
||||
let nowname = sectiondata.sectionlist.sections.datalist[j].name;
|
||||
let nowcode = sectiondata.sectionlist.sections.datalist[j].code;
|
||||
newmesh.children[i].name = nowname;
|
||||
newmesh.children[i].code = nowcode;
|
||||
jlmap3ddata.sectionlist.sections.modellist[j] = newmesh.children[i];
|
||||
j = jlmap3ddata.sectionlist.sections.datalist.length;
|
||||
sectiondata.sectionlist.sections.modellist[j] = newmesh.children[i];
|
||||
j = sectiondata.sectionlist.sections.datalist.length;
|
||||
|
||||
}
|
||||
|
||||
@ -87,32 +88,32 @@ export function RealSectionList(data) {
|
||||
});
|
||||
}
|
||||
|
||||
this.init = function(jlmap3ddata,scene,assetloader){
|
||||
this.init = function(sectiondata,scene,assetloader){
|
||||
|
||||
let newmesh = assetloader.modellist[2].mesh;
|
||||
//let mixer = new THREE.AnimationMixer( newmesh );
|
||||
////console.log(jlmap3ddata.sectionlist);
|
||||
////console.log(sectiondata.sectionlist);
|
||||
for(let i=0;i<newmesh.children.length;i++){
|
||||
|
||||
let name = newmesh.children[i].name.split("_");
|
||||
let newmeshname = name[0]+"_"+name[1]+"_"+name[2]+"."+name[3];
|
||||
////console.log(newmeshname);
|
||||
if(name[0] == "Switch"){
|
||||
for(let j=0;j<jlmap3ddata.sectionlist.switchs.datalist.length;j++){
|
||||
if(jlmap3ddata.sectionlist.switchs.datalist[j].name == newmeshname){
|
||||
for(let j=0;j<sectiondata.sectionlist.switchs.datalist.length;j++){
|
||||
if(sectiondata.sectionlist.switchs.datalist[j].name == newmeshname){
|
||||
//绿色道岔
|
||||
var box = new THREE.BoxHelper( newmesh.children[i], 0x00EE00 );
|
||||
scene.add(box);
|
||||
let nowname = jlmap3ddata.sectionlist.switchs.datalist[j].name;
|
||||
let nowcode = jlmap3ddata.sectionlist.switchs.datalist[j].code;
|
||||
let nowname = sectiondata.sectionlist.switchs.datalist[j].name;
|
||||
let nowcode = sectiondata.sectionlist.switchs.datalist[j].code;
|
||||
newmesh.children[i].name = nowname;
|
||||
newmesh.children[i].code = nowcode;
|
||||
for(let n=0;n<newmesh.children[i].children.length;n++){
|
||||
newmesh.children[i].children[n].code = nowcode;
|
||||
}
|
||||
|
||||
jlmap3ddata.sectionlist.switchs.modellist[j] = newmesh.children[i];
|
||||
j = jlmap3ddata.sectionlist.switchs.datalist.length;
|
||||
sectiondata.sectionlist.switchs.modellist[j] = newmesh.children[i];
|
||||
j = sectiondata.sectionlist.switchs.datalist.length;
|
||||
|
||||
}
|
||||
}
|
||||
@ -121,11 +122,11 @@ export function RealSectionList(data) {
|
||||
if(name[0] == "Section"){
|
||||
|
||||
//物理区段
|
||||
for(let j=0;j<jlmap3ddata.sectionlist.sections.datalist.length;j++){
|
||||
for(let j=0;j<sectiondata.sectionlist.sections.datalist.length;j++){
|
||||
|
||||
if(jlmap3ddata.sectionlist.sections.datalist[j].name == newmeshname){
|
||||
if(sectiondata.sectionlist.sections.datalist[j].name == newmeshname){
|
||||
|
||||
if(jlmap3ddata.sectionlist.sections.datalist[j].isStandTrack == true){
|
||||
if(sectiondata.sectionlist.sections.datalist[j].isStandTrack == true){
|
||||
//红色站台区段
|
||||
var box = new THREE.BoxHelper( newmesh.children[i], 0xff0000 );
|
||||
}else{
|
||||
@ -134,12 +135,12 @@ export function RealSectionList(data) {
|
||||
}
|
||||
scene.add( box );
|
||||
|
||||
let nowname = jlmap3ddata.sectionlist.sections.datalist[j].name;
|
||||
let nowcode = jlmap3ddata.sectionlist.sections.datalist[j].code;
|
||||
let nowname = sectiondata.sectionlist.sections.datalist[j].name;
|
||||
let nowcode = sectiondata.sectionlist.sections.datalist[j].code;
|
||||
newmesh.children[i].name = nowname;
|
||||
newmesh.children[i].code = nowcode;
|
||||
jlmap3ddata.sectionlist.sections.modellist[j] = newmesh.children[i];
|
||||
j = jlmap3ddata.sectionlist.sections.datalist.length;
|
||||
sectiondata.sectionlist.sections.modellist[j] = newmesh.children[i];
|
||||
j = sectiondata.sectionlist.sections.datalist.length;
|
||||
|
||||
}
|
||||
|
||||
@ -148,13 +149,13 @@ export function RealSectionList(data) {
|
||||
|
||||
if(name[0] == "Singal"){
|
||||
|
||||
for(let j=0;j<jlmap3ddata.signallist.list.length;j++){
|
||||
if(jlmap3ddata.signallist.list[j].mesh.code == newmeshname){
|
||||
jlmap3ddata.signallist.list[j].mesh.position.x = newmesh.children[i].position.x;
|
||||
jlmap3ddata.signallist.list[j].mesh.position.y = newmesh.children[i].position.y;
|
||||
jlmap3ddata.signallist.list[j].mesh.position.z = newmesh.children[i].position.z;
|
||||
for(let j=0;j<sectiondata.signallist.list.length;j++){
|
||||
if(sectiondata.signallist.list[j].mesh.code == newmeshname){
|
||||
sectiondata.signallist.list[j].mesh.position.x = newmesh.children[i].position.x;
|
||||
sectiondata.signallist.list[j].mesh.position.y = newmesh.children[i].position.y;
|
||||
sectiondata.signallist.list[j].mesh.position.z = newmesh.children[i].position.z;
|
||||
|
||||
j = jlmap3ddata.signallist.list.length;
|
||||
j = sectiondata.signallist.list.length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,9 +16,9 @@ export function SectionList() {
|
||||
modellist:[]
|
||||
};
|
||||
|
||||
|
||||
this.initpromise = function (sectiondata,switchdata,scene){
|
||||
this.initpromise = function(jlmap3ddata,assetloader,sectiondata,switchdata,scene){
|
||||
return new Promise(function(resolve, reject){
|
||||
let linkdata = jlmap3ddata.linklist;
|
||||
//遍历区段
|
||||
for(let i=0;i<sectiondata.length;i++){
|
||||
if(sectiondata[i].type == "01"){
|
||||
@ -30,12 +30,15 @@ export function SectionList() {
|
||||
newsection.index = i;
|
||||
newsection.isStandTrack = sectiondata[i].isStandTrack;
|
||||
newsection.type = sectiondata[i].type;
|
||||
newsection.offsetRight = sectiondata[i].offsetRight;
|
||||
newsection.offsetLeft = sectiondata[i].offsetLeft;
|
||||
newsection.linkCode = sectiondata[i].linkCode;
|
||||
|
||||
scope.sections.datalist.push(newsection);
|
||||
scope.sections.modellist.push("");
|
||||
// scope.sections.modellist.push("");
|
||||
}
|
||||
|
||||
}
|
||||
buildsuidao(linkdata,scope.sections,assetloader,scene);
|
||||
|
||||
//定义区分道岔组
|
||||
let switchlist = [];
|
||||
@ -72,21 +75,59 @@ export function SectionList() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//道岔贴图
|
||||
//遍历道岔信息组合轨道
|
||||
for(let i=0;i<switchlist.length;i++){
|
||||
//道岔对象组
|
||||
let newswitch = new SwitchModel();
|
||||
|
||||
newswitch.name = switchlist[i].code;
|
||||
newswitch.code = switchlist[i].code;
|
||||
|
||||
newswitch.index = i;
|
||||
|
||||
scope.switchs.datalist.push(newswitch);
|
||||
scope.switchs.modellist.push("");
|
||||
let switchmesh;
|
||||
for(let i=0;i<assetloader.modellist.length;i++){
|
||||
if(assetloader.modellist[i].deviceType == "switch"){
|
||||
switchmesh = assetloader.modellist[i].mesh;
|
||||
}
|
||||
}
|
||||
//遍历道岔信息组合轨道
|
||||
// for(let i=0;i<switchlist.length;i++){
|
||||
// let sectionA,sectionB,sectionC;
|
||||
// for(let j=0;j<scope.sections.modellist.length;j++){
|
||||
// if(switchlist[i].paname == scope.sections.modellist[j].code){
|
||||
// sectionA = scope.sections.modellist[j]
|
||||
// }else if(switchlist[i].pbname == scope.sections.modellist[j].code){
|
||||
// sectionB = scope.sections.modellist[j];
|
||||
// }else if(switchlist[i].pcname == scope.sections.modellist[j].code){
|
||||
// sectionC = scope.sections.modellist[j];
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// let testswitch = switchmesh.clone(true);
|
||||
// if(sectionA.position.x>sectionB.position.x){
|
||||
// if(sectionA.position.z>sectionC.position.z){
|
||||
// testswitch.rotation.y = 0;
|
||||
// }else{
|
||||
// testswitch.rotation.y = Math.PI;
|
||||
// }
|
||||
// }else{
|
||||
// if(sectionA.position.z>sectionC.position.z){
|
||||
// testswitch.rotation.y = 0;
|
||||
// }else{
|
||||
// testswitch.rotation.y = Math.PI;
|
||||
// }
|
||||
// }
|
||||
// testswitch.position.x = (sectionA.position.x+sectionB.position.x)/2;
|
||||
// testswitch.position.y = 0;
|
||||
// testswitch.position.z = sectionA.position.z;
|
||||
// console.log("----------");
|
||||
// console.log(testswitch.position);
|
||||
// console.log(sectionA.position);
|
||||
// console.log(sectionB.position);
|
||||
// console.log(sectionC.position);
|
||||
// console.log("---------");
|
||||
// scene.add(testswitch);
|
||||
// //道岔对象组
|
||||
// let newswitch = new SwitchModel();
|
||||
// newswitch.name = switchlist[i].code;
|
||||
// newswitch.code = switchlist[i].code;
|
||||
// newswitch.index = i;
|
||||
// scope.switchs.datalist.push(newswitch);
|
||||
// scope.switchs.modellist.push("");
|
||||
// }
|
||||
|
||||
|
||||
resolve("loadersection");
|
||||
});
|
||||
@ -108,7 +149,7 @@ export function SectionList() {
|
||||
newsection.type = sectiondata[i].type;
|
||||
|
||||
scope.sections.datalist.push(newsection);
|
||||
scope.sections.modellist.push("");
|
||||
// scope.sections.modellist.push("");
|
||||
}
|
||||
|
||||
}
|
||||
@ -150,6 +191,7 @@ export function SectionList() {
|
||||
}
|
||||
|
||||
//道岔贴图
|
||||
|
||||
//遍历道岔信息组合轨道
|
||||
for(let i=0;i<switchlist.length;i++){
|
||||
//道岔对象组
|
||||
@ -163,9 +205,78 @@ export function SectionList() {
|
||||
scope.switchs.datalist.push(newswitch);
|
||||
scope.switchs.modellist.push("");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function buildsuidao(linkdata,suidaodata,assetloader,scene){
|
||||
let autosuidao;
|
||||
for(let i=0;i<assetloader.modellist.length;i++){
|
||||
if(assetloader.modellist[i].deviceType == "autosuidao"){
|
||||
autosuidao = assetloader.modellist[i].mesh.children[0];
|
||||
}
|
||||
}
|
||||
|
||||
let rightlist = [];
|
||||
let leftlist = [];
|
||||
let count = autosuidao.geometry.attributes.position.count;
|
||||
|
||||
for(let i=0;i<count;i++){
|
||||
if(autosuidao.geometry.attributes.position.array[i*3] >7){
|
||||
rightlist.push(i);
|
||||
}
|
||||
if(autosuidao.geometry.attributes.position.array[i*3] <-7){
|
||||
leftlist.push(i);
|
||||
}
|
||||
}
|
||||
autosuidao.rightlist = rightlist;
|
||||
autosuidao.leftlist = leftlist;
|
||||
|
||||
// console.log(autosuidao);
|
||||
// console.log(linkdata.linksgroup.children);
|
||||
// console.log(suidaodata.datalist);
|
||||
for(let i = 0;i < suidaodata.datalist.length;i++){
|
||||
let link = linkdata.linksgroup.getObjectByProperty("code",suidaodata.datalist[i].linkCode);
|
||||
let suidao = suidaodata.datalist[i];
|
||||
let len = suidao.offsetRight-suidao.offsetLeft;
|
||||
// console.log("-------------------------------------");
|
||||
// console.log("name:"+link.name);
|
||||
// console.log(link.lengthfact);
|
||||
// console.log(len);
|
||||
// console.log("ofl:"+suidao.offsetLeft+" "+"ofr:"+suidao.offsetRight);
|
||||
// console.log("-------------------------------------");
|
||||
let testmesh1 = autosuidao.clone(true);
|
||||
for(let i=0;i<autosuidao.rightlist.length;i++){
|
||||
testmesh1.geometry.attributes.position.array[autosuidao.rightlist[i]*3] = len-7.5;
|
||||
testmesh1.geometry.attributes.uv.array[autosuidao.rightlist[i]*2] = (testmesh1.geometry.attributes.position.array[3]-testmesh1.geometry.attributes.position.array[0])/15.3;
|
||||
}
|
||||
let newsuidao = new THREE.BufferGeometry();
|
||||
newsuidao.copy(testmesh1.geometry);
|
||||
testmesh1.geometry = newsuidao;
|
||||
testmesh1.geometry.attributes.position.needsUpdate = true;
|
||||
testmesh1.geometry.attributes.uv.needsUpdate = true;
|
||||
testmesh1.geometry.computeBoundingSphere();
|
||||
testmesh1.geometry.center();
|
||||
let offset = suidao.offsetLeft + len/2;
|
||||
let lenfact = link.lengthfact;
|
||||
if(offset<=(link.lengthfact/2)){
|
||||
testmesh1.position.x = -(lenfact/2-offset);
|
||||
}else{
|
||||
testmesh1.position.x = offset -lenfact/2;
|
||||
}
|
||||
|
||||
// testmesh1.rotation.x = Math.PI/4;
|
||||
|
||||
|
||||
link.add(testmesh1);
|
||||
testmesh1.code = suidaodata.datalist[i].code;
|
||||
testmesh1.name = suidaodata.datalist[i].code;
|
||||
testmesh1.position.z = 3.5;
|
||||
testmesh1.position.y = 0;
|
||||
testmesh1.rotation.x = 0;
|
||||
scope.sections.modellist.push(testmesh1);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
this.update = function(){
|
||||
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ export function SignalList() {
|
||||
|
||||
this.group = new THREE.Group();
|
||||
|
||||
this.initpromise = function(data,scene,assetloader,netdata){
|
||||
this.initpromise = function(jlmap3ddata,data,scene,assetloader,netdata){
|
||||
return new Promise(function(resolve, reject){
|
||||
scope.group.name = "signal";
|
||||
//遍历信号数据
|
||||
@ -20,7 +20,7 @@ export function SignalList() {
|
||||
netsignal = JSON.parse(netdata);
|
||||
haddata = true;
|
||||
}
|
||||
|
||||
let linkdata = jlmap3ddata.linklist;
|
||||
for(let i=0;i<data.length;i++){
|
||||
|
||||
let newsignal = new SignalModel(data[i]);
|
||||
@ -40,16 +40,25 @@ export function SignalList() {
|
||||
for(let j=0;j<newmesh.children.length;j++){
|
||||
newmesh.children[j].code = data[i].code;
|
||||
}
|
||||
let link = linkdata.linksgroup.getObjectByProperty("code",data[i].linkCode);
|
||||
let posx = null;
|
||||
|
||||
if(data[i].offset > link.lengthfact/2){
|
||||
posx = link.position.x + data[i].offset - link.lengthfact/2-10;
|
||||
}else{
|
||||
posx = link.position.x - (link.lengthfact/2 - data[i].offset)+10;
|
||||
}
|
||||
//根据线路方向修改信号灯位置
|
||||
if(data[i].directionType == "01"){
|
||||
newmesh.position.set(data[i].position.x,1,data[i].position.y-10);
|
||||
newmesh.position.set(posx,0,link.position.z-3);
|
||||
newmesh.rotation.z = ( Math.PI / 2 );
|
||||
}else if(data[i].directionType == "02"){
|
||||
newmesh.position.set(data[i].position.x,1,data[i].position.y+10);
|
||||
newmesh.position.set(posx,0,link.position.z+3);
|
||||
newmesh.rotation.z = ( - Math.PI / 2 );
|
||||
}
|
||||
|
||||
newmesh.scale.x = 0.05;
|
||||
newmesh.scale.y = 0.05;
|
||||
newmesh.scale.z = 0.05;
|
||||
newsignal.mesh = newmesh;
|
||||
newsignal.mesh.status = "01";
|
||||
scope.group.add(newsignal.mesh);
|
||||
|
@ -78,6 +78,15 @@ let defaultautosuidao = {
|
||||
assetUrl:"../../static/model/auto/suidao.FBX"
|
||||
}
|
||||
|
||||
let testswitch = {
|
||||
id:"11",
|
||||
name:"道岔",
|
||||
deviceType:"switch",
|
||||
type:"fuzhou",
|
||||
picUrl:"",
|
||||
assetUrl:"../../static/model/auto/testdaocha.FBX"
|
||||
}
|
||||
|
||||
export function AssetLoader(){
|
||||
|
||||
let scope = this;
|
||||
@ -174,6 +183,9 @@ export function AssetLoader(){
|
||||
let autosuidao = new AssetModel(defaultautosuidao);
|
||||
scope.modellist.push(autosuidao);
|
||||
|
||||
let defaultmodel4 = new AssetModel(testswitch);
|
||||
scope.modellist.push(defaultmodel4);
|
||||
|
||||
fbxpromise(signal)
|
||||
.then(function(data){
|
||||
////console.log(data);
|
||||
@ -191,6 +203,10 @@ export function AssetLoader(){
|
||||
////console.log(data);
|
||||
return fbxpromise(autosuidao);
|
||||
})
|
||||
.then(function(data){
|
||||
////console.log(data);
|
||||
return fbxpromise(defaultmodel4);
|
||||
})
|
||||
.then(function(data){
|
||||
////console.log(scope.modellist);
|
||||
resolve("loaderassets");
|
||||
|
@ -2,8 +2,8 @@
|
||||
export function getBaseUrl() {
|
||||
let BASE_API;
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
BASE_API = 'https://joylink.club/jlcloud';
|
||||
// BASE_API = 'https://test.joylink.club/jlcloud';
|
||||
// BASE_API = 'https://joylink.club/jlcloud';
|
||||
BASE_API = 'https://test.joylink.club/jlcloud';
|
||||
// BASE_API = 'http://192.168.3.5:9000'; // 袁琪
|
||||
// BASE_API = 'http://192.168.3.6:9000'; // 旭强
|
||||
// BASE_API = 'http://192.168.3.41:9000'; // 王兴杰
|
||||
|
BIN
static/model/auto/testdaocha.FBX
Normal file
BIN
static/model/auto/testdaocha.FBX
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user