增加信号机位置重置

This commit is contained in:
sunzhenyu 2019-09-30 18:38:42 +08:00
parent 2551a4d595
commit 2c5284b6c4
7 changed files with 48 additions and 12 deletions

View File

@ -46,8 +46,8 @@ export function Jlmap3ddata(mapid,scope){
}else{
// console.log(editmapid);
// console.log(data.data.id);
// init3d(editmapid,data.data);
initobj(editmapid,data.data.id);
init3d(editmapid,data.data);
// initobj(editmapid,data.data.id);
}
}
@ -154,7 +154,7 @@ export function Jlmap3ddata(mapid,scope){
})
.then(function(data){
//console.log(data);
return jlmap3ddata.signallist.loadpromise(signaldata,scene,assetloader);
return jlmap3ddata.signallist.loadpromise(signaldata,scene,assetloader,mapdata.signalList);
})
.then(function(data){
//console.log(data);

View File

@ -89,7 +89,7 @@ function linkhelp(data,scene){
testmesh2.lengthfact = data[i].lengthfact;
for(let i=0;i<testmesh2.rightlist.length;i++){
testmesh2.geometry.attributes.position.array[testmesh2.rightlist[i]*3] = testmesh2.lengthfact-29;
testmesh2.geometry.attributes.position.array[testmesh2.rightlist[i]*3] = testmesh2.lengthfact-25;
testmesh2.geometry.attributes.uv.array[testmesh2.rightlist[i]*2] = testmesh2.geometry.attributes.position.array[0]-testmesh2.geometry.attributes.position.array[3];
}
let newrail = new THREE.BufferGeometry();
@ -208,7 +208,7 @@ function linkhelp(data,scene){
let testmesh2 = autorail.clone(true);
for(let i=0;i<autorail.rightlist.length;i++){
testmesh2.geometry.attributes.position.array[autorail.rightlist[i]*3] = len-26;
testmesh2.geometry.attributes.position.array[autorail.rightlist[i]*3] = len-25;
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();

View File

@ -15,7 +15,7 @@ export function RailList(){
let raillink = mapdata.linklist.linksgroup.children;
for(let i=0;i<raillink.length;i++){
var geometry = new THREE.PlaneBufferGeometry( raillink[i].lengthfact-20.5, 0.1, 0.1 );
var geometry = new THREE.PlaneBufferGeometry( raillink[i].lengthfact-25, 0.1, 0.1 );
var material = new THREE.MeshBasicMaterial( {color: 0xffff00, side: THREE.DoubleSide} );
var plane = new THREE.Mesh( geometry, material );
plane.position.x = raillink[i].position.x;
@ -29,14 +29,14 @@ export function RailList(){
var geometry2 = new THREE.CircleBufferGeometry( 1, 16 );
var material2 = new THREE.MeshBasicMaterial( { color: 0xff2000 } );
var circle1 = new THREE.Mesh( geometry1, material1 );
circle1.position.x = plane.position.x + (raillink[i].lengthfact-20.5)/2*Math.cos(plane.rotation.z);
circle1.position.z = plane.position.z - (raillink[i].lengthfact-20.5)/2*Math.sin(plane.rotation.z);
circle1.position.x = plane.position.x + (raillink[i].lengthfact-25)/2*Math.cos(plane.rotation.z);
circle1.position.z = plane.position.z - (raillink[i].lengthfact-25)/2*Math.sin(plane.rotation.z);
circle1.rotation.x = -Math.PI/2;
scene.add( circle1 );
var circle2 = new THREE.Mesh( geometry2, material2 );
circle2.position.x = plane.position.x - (raillink[i].lengthfact-20.5)/2*Math.cos(plane.rotation.z);
circle2.position.z = plane.position.z + (raillink[i].lengthfact-20.5)/2*Math.sin(plane.rotation.z);
circle2.position.x = plane.position.x - (raillink[i].lengthfact-25)/2*Math.cos(plane.rotation.z);
circle2.position.z = plane.position.z + (raillink[i].lengthfact-25)/2*Math.sin(plane.rotation.z);
circle2.rotation.x = -Math.PI/2;
scene.add( circle2 );
scene.add( plane );

View File

@ -549,6 +549,10 @@ export function SectionList() {
}
}
this.resetsection = function(scene){
scene.remove(sectiongroup);
};
this.reposition = function(){
}

View File

@ -59,7 +59,10 @@ export function SignalList() {
newmesh.scale.x = 0.05;
newmesh.scale.y = 0.05;
newmesh.scale.z = 0.05;
newmesh.offset = data[i].offset;
newmest.linkCode = data[i].linkCode;
newsignal.mesh = newmesh;
newsignal.offset = data[i].offset;
newsignal.mesh.status = "01";
scope.group.add(newsignal.mesh);
scope.list.push(newsignal);
@ -101,7 +104,7 @@ export function SignalList() {
});
}
this.loadpromise = function(signaldata,scene,assetloader){
this.loadpromise = function(signaldata,scene,assetloader,data){
return new Promise(function(resolve, reject){
for(let i=0;i<signaldata.length;i++){
let newsignal = new SignalModel(signaldata[i]);
@ -111,11 +114,15 @@ export function SignalList() {
num = j;
}
}
let newmesh = assetloader.modellist[num].mesh.clone(true);
newmesh.uuid = signaldata[i].id;
newmesh.name = signaldata[i].name;
newmesh.modelid = assetloader.modellist[num].id;
newmesh.code = signaldata[i].code;
newmesh.offset = data[i].offset;
newmesh.linkCode = data[i].linkCode;
newmesh.directionType = data[i].directionType;
newmesh.position.x = signaldata[i].position.x;
newmesh.position.y = signaldata[i].position.y;
newmesh.position.z = signaldata[i].position.z;
@ -132,7 +139,30 @@ export function SignalList() {
resolve("loadedsignal");
});
};
this.resetsignal = function(jlmap3ddata){
console.log(jlmap3ddata.linksgroup);
console.log(scope);
let linkdata = jlmap3ddata.linksgroup;
for(let i=0;i<scope.group.children.length;i++){
let signaldata = scope.group.children[i];
let link = linkdata.getObjectByProperty("code",signaldata.linkCode);
let posx = null;
if(signaldata.offset > link.lengthfact/2){
posx = link.position.x + signaldata.offset - link.lengthfact/2-10;
}else{
posx = link.position.x - (link.lengthfact/2 - signaldata.offset)+10;
}
//根据线路方向修改信号灯位置
if(signaldata.directionType == "01"){
signaldata.position.set(posx,0,link.position.z-3);
signaldata.rotation.z = ( Math.PI / 2 );
}else if(signaldata.directionType == "02"){
signaldata.position.set(posx,0,link.position.z+3);
signaldata.rotation.z = ( - Math.PI / 2 );
}
}
};
this.init = function(data,realsectionlist,scene,assetloader){

View File

@ -243,6 +243,8 @@ export function JLmap3dEdit(dom, data, mapid) {
this.autoss = function(){
console.log("autoss");
console.log(scope.mapdata);
scope.mapdata.signallist.resetsignal(scope.mapdata.linklist);
};
function onWindowResize() {

View File

@ -142,7 +142,7 @@ THREE.ScalControls = function ( scene,_camera, _domElement ) {
// _movemesh.geometry.computeBoundingBox();
_movemesh.geometry.computeBoundingSphere();
_movemesh.geometry.center();
_movemesh.lengthfact = (_movemesh.geometry.attributes.position.array[_movemesh.rightlist[0]] - _movemesh.geometry.attributes.position.array[_movemesh.leftlist[0]])*2+20.5;
_movemesh.lengthfact = (_movemesh.geometry.attributes.position.array[_movemesh.rightlist[0]] - _movemesh.geometry.attributes.position.array[_movemesh.leftlist[0]])*2+28.5;
// testmesh2.position.z = 50;
// testmesh2.geometry.center();