This commit is contained in:
fan 2020-04-03 17:45:44 +08:00
commit 1e19840405
57 changed files with 946 additions and 398 deletions

View File

@ -68,7 +68,6 @@ export function Jlmap3ddata(mapid,scope){
//
jlmap3ddata.raillist = new RailList();
jlmap3ddata.raillist.setrail();
console.log(mapdata);
assetloader.assetinit(scene)
.then(function(data){
//console.log(data);
@ -100,7 +99,6 @@ export function Jlmap3ddata(mapid,scope){
console.log(netdata);
// console.log(netdata)
getMapDetail(mapid).then(data => {
console.log(data);
jlmap3ddata.id = netdata.id;
jlmap3ddata.mapId = mapid;
let mapdata = data.data;
@ -121,7 +119,7 @@ export function Jlmap3ddata(mapid,scope){
let signaldata = JSON.parse(netdata.signals);
let standsdata = JSON.parse(netdata.stands);
// console.log(mapdata);
assetloader.setmodellist(netdata.assets,5);
assetloader.setmodellistnew(netdata.assets,5);
assetloader.assetpromise(scene)
.then(function(data){
// return jlmap3ddata.stationstandlist.initpromise(jlmap3ddata,mapdata.stationList,mapdata.stationStandList,scene,assetloader);

View File

@ -148,6 +148,7 @@ export function getmodels(data) {
position:data.mapdata.stationstandlist.list[i].mesh.position,
rotation:data.mapdata.stationstandlist.list[i].mesh.rotation,
scale:data.mapdata.stationstandlist.list[i].mesh.scale,
inside:data.mapdata.stationstandlist.list[i].inside,
direction1:{
name:data.mapdata.stationstandlist.list[i].direction1.name,
code:data.mapdata.stationstandlist.list[i].direction1.code

View File

@ -873,7 +873,6 @@ export function SectionList() {
autorail.leftlist = leftlist;
scene.add(scope.sectiongroup);
return new Promise(function(resolve, reject){
console.log(sectiondata);
for(let i=0,leni = sectiondata.length;i<leni;i++){
let newsection = {
code:sectiondata[i].code,

View File

@ -29,10 +29,8 @@ export function SignalList() {
}
}
for(let i=0;i<data.length;i++){
console.log(data[i]);
if(data[i].virtual == false){
let newsignal = new SignalModel(data[i]);
console.log();
if(haddata == false){
// console.log(data[i])
let newmesh = assetloader.modellist[num].mesh.clone(true);
@ -132,8 +130,6 @@ export function SignalList() {
this.loadpromise = function(signaldata,scene,assetloader,data){
return new Promise(function(resolve, reject){
console.log("+++++++++++++++++++++++++++++++++++++");
console.log(signaldata);
let num;
for(let j=0;j<assetloader.modellist.length;j++){
if(assetloader.modellist[j].id == signaldata[0].modelid){
@ -177,7 +173,6 @@ export function SignalList() {
}
}
console.log(scope.group.children);
scene.add(scope.group);
resolve("loadedsignal");
});

View File

@ -157,10 +157,14 @@ export function StationStandList() {
}
this.loadpromise = function(jlmap3ddata,standsdata,jlmapstanddata,scene,assetloader){
return new Promise(function(resolve, reject){
console.log("............");
console.log(jlmap3ddata);
console.log(standsdata);
console.log(jlmapstanddata);
let stations = jlmap3ddata.stationstandlist.list;
let num;
let num2;
let num3;
for(let j=0;j<assetloader.modellist.length;j++){
if(assetloader.modellist[j].deviceType == "stand"){
num = j;
@ -169,6 +173,10 @@ export function StationStandList() {
num2 = j;
// assetloader.modellist[num2].mesh.rotation.y = Math.PI/2;
}
if(assetloader.modellist[j].deviceType == "station3"){
num3 = j;
// assetloader.modellist[num2].mesh.rotation.y = Math.PI/2;
}
}
// console.log("+++++++++++++");
// console.log(jlmapstanddata);
@ -177,31 +185,60 @@ export function StationStandList() {
let newstationstand = new StationStandModel(standsdata[i]);
let newstationmesh;
for(let j=0;j<jlmapstanddata.length;j++){
if(jlmapstanddata[j].code == standsdata[i].direction1.code){
if(jlmapstanddata[j].inside == true){
newstationmesh = assetloader.modellist[num].mesh.clone(true);
}else{
console.log(jlmapstanddata[j]);
newstationmesh = assetloader.modellist[num2].mesh.clone(true);
}
// console.log(jlmapstanddata[j]);
newstationstand.code = standsdata[i].code;
newstationstand.name = standsdata[i].name;
newstationstand.direction1.code = standsdata[i].direction1.code;
newstationstand.direction1.name = standsdata[i].direction1.name;
newstationstand.direction2.code = standsdata[i].direction2.code;
newstationstand.direction2.name = standsdata[i].direction2.name;
// console.log(standsdata[i]);
newstationmesh.position.x = standsdata[i].position.x;
newstationmesh.position.y = standsdata[i].position.y;
newstationmesh.position.z = standsdata[i].position.z;
// newstationmesh.rotation.x = standsdata[i].rotation._x;
// newstationmesh.rotation.y = standsdata[i].rotation._y;
// newstationmesh.rotation.z = standsdata[i].rotation._z;
newstationstand.mesh = newstationmesh;
scope.group.add(newstationmesh);
scope.list.push(newstationstand);
j = jlmapstanddata.length;
if(jlmapstanddata[j].code == standsdata[i].direction1.code){
if(standsdata[i].code != "Station96090"){
if(jlmapstanddata[j].inside == true){
newstationmesh = assetloader.modellist[num].mesh.clone(true);
}else{
newstationmesh = assetloader.modellist[num2].mesh.clone(true);
}
// console.log(jlmapstanddata[j]);
newstationstand.code = standsdata[i].code;
newstationstand.name = standsdata[i].name;
newstationstand.direction1.code = standsdata[i].direction1.code;
newstationstand.direction1.name = standsdata[i].direction1.name;
newstationstand.direction2.code = standsdata[i].direction2.code;
newstationstand.direction2.name = standsdata[i].direction2.name;
newstationstand.inside = jlmapstanddata[j].inside;
// console.log(standsdata[i]);
newstationmesh.position.x = standsdata[i].position.x;
newstationmesh.position.y = standsdata[i].position.y;
newstationmesh.position.z = standsdata[i].position.z;
// newstationmesh.rotation.x = standsdata[i].rotation._x;
// newstationmesh.rotation.y = standsdata[i].rotation._y;
// newstationmesh.rotation.z = standsdata[i].rotation._z;
newstationstand.mesh = newstationmesh;
scope.group.add(newstationmesh);
scope.list.push(newstationstand);
j = jlmapstanddata.length;
}else{
if(jlmapstanddata[j].code == standsdata[i].direction1.code){
newstationmesh = assetloader.modellist[num3].mesh.clone(true);
// console.log(jlmapstanddata[j]);
newstationstand.code = standsdata[i].code;
newstationstand.name = standsdata[i].name;
newstationstand.direction1.code = standsdata[i].direction1.code;
newstationstand.direction1.name = standsdata[i].direction1.name;
newstationstand.direction2.code = standsdata[i].direction2.code;
newstationstand.direction2.name = standsdata[i].direction2.name;
newstationstand.inside = jlmapstanddata[j].inside;
// console.log(standsdata[i]);
newstationmesh.position.x = standsdata[i].position.x;
newstationmesh.position.y = standsdata[i].position.y;
newstationmesh.position.z = standsdata[i].position.z;
// newstationmesh.rotation.x = standsdata[i].rotation._x;
// newstationmesh.rotation.y = standsdata[i].rotation._y;
// newstationmesh.rotation.z = standsdata[i].rotation._z;
newstationstand.mesh = newstationmesh;
scope.group.add(newstationmesh);
scope.list.push(newstationstand);
j = jlmapstanddata.length;
}
}
}
}

View File

@ -90,7 +90,6 @@ export function SwitchList() {
}
console.log(scope.switchs.modellist);
resolve("loadedswitch");
});

View File

@ -74,6 +74,8 @@ export function JLmapDriving(dom,data,mapId,storemod,translation,routegroup,proj
this.assetloader = new AssetLoader();
// 替换材质组,例:信号机不同灯光
this.materiallist = [];
//替换材质组(站台的)
this.stationtexture = [];
// 初始化场景线框和灯光 暂时
SetLights(scene);
// 点击选中的模型
@ -138,7 +140,7 @@ export function JLmapDriving(dom,data,mapId,storemod,translation,routegroup,proj
// controls3.getObject().rotation.x = Math.PI/2;
scene.add(controls3.getObject());
let cameracctv = new THREE.PerspectiveCamera(70, dom.clientWidth/dom.clientHeight, 1, 50);
let cameracctv = new THREE.PerspectiveCamera(60, dom.clientWidth/dom.clientHeight, 1, 40);
cameracctv.position.set( 2, -1,27 );
cameracctv.rotation.y = Math.PI/2;

View File

@ -365,49 +365,93 @@ export function Jl3dDrivingNew(mixers,updatemmi,sound,translation,routegroup,sta
function traindoorupdate(data){
if(trainmodel.code == data.code){
if(trainmodel.right == "0"){
if(data.doorCode == "2"){
if(data.doorCode == "0"){
if(trainmodel.open != data.open && data.open == "0"){
trainmodel.open = "0";
for(let an=actions["traindoor"].top.length-1;an>=0;an--){
actions["traindoor"].top[an].reset();
actions["traindoor"].top[an].time = actions["traindoor"].top[an]._clip.duration;
actions["traindoor"].top[an].timeScale = -1;
actions["traindoor"].top[an].play();
}
}else if(trainmodel.open != data.open && data.open == "1"){
trainmodel.open = "1";
for(let an=actions["traindoor"].top.length-1;an>=0;an--){
actions["traindoor"].top[an].reset();
actions["traindoor"].top[an].time = 0;
actions["traindoor"].top[an].timeScale = 1;
actions["traindoor"].top[an].play();
}
}
}else{
if(trainmodel.open != data.open && data.open == "0"){
trainmodel.open = "0";
for(let an=actions["traindoor"].down.length-1;an>=0;an--){
actions["traindoor"].down[an].reset();
actions["traindoor"].down[an].time = actions["traindoor"].top[an]._clip.duration;
actions["traindoor"].down[an].timeScale = -1;
actions["traindoor"].down[an].play();
}
}else if(trainmodel.open != data.open && data.open == "1"){
trainmodel.open = "1";
for(let an=actions["traindoor"].down.length-1;an>=0;an--){
actions["traindoor"].down[an].reset();
actions["traindoor"].down[an].time = 0;
actions["traindoor"].down[an].timeScale = 1;
actions["traindoor"].down[an].play();
if (trainmodel.open != data.open && data.open == '0') {
trainmodel.open = '0';
for (let an=actions["traindoor"].down.length-1; an>=0; an--) {
actions["traindoor"].down[an].reset();
actions["traindoor"].down[an].time = actions["traindoor"].down[an]._clip.duration;
actions["traindoor"].down[an].timeScale = -1;
actions["traindoor"].down[an].play();
}
} else if (trainmodel.open != data.open && data.open == '1') {
trainmodel.open = "1";
for(let an=actions["traindoor"].down.length-1;an>=0;an--){
actions["traindoor"].down[an].reset();
actions["traindoor"].down[an].time = 0;
actions["traindoor"].down[an].timeScale = 1;
actions["traindoor"].down[an].play();
}
}
}
}else{
if(data.doorCode == "1"){
if(trainmodel.open != data.open && data.open == "0"){
trainmodel.open = "0";
for(let an=actions["traindoor"].top.length-1;an>=0;an--){
actions["traindoor"].top[an].reset();
actions["traindoor"].top[an].time = actions["traindoor"].top[an]._clip.duration;
actions["traindoor"].top[an].timeScale = -1;
actions["traindoor"].top[an].play();
}
}else if(trainmodel.open != data.open && data.open == "1"){
trainmodel.open = "1";
for(let an=actions["traindoor"].top.length-1;an>=0;an--){
actions["traindoor"].top[an].reset();
actions["traindoor"].top[an].time = 0;
actions["traindoor"].top[an].timeScale = 1;
actions["traindoor"].top[an].play();
}
}
}else{
if (trainmodel.open != data.open && data.open == '0') {
trainmodel.open = '0';
for (let an=actions["traindoor"].top.length-1; an>=0; an--) {
actions["traindoor"].top[an].reset();
actions["traindoor"].top[an].time = actions["traindoor"].top[an]._clip.duration;
actions["traindoor"].top[an].timeScale = -1;
actions["traindoor"].top[an].play();
}
} else if (trainmodel.open != data.open && data.open == '1') {
trainmodel.open = "1";
for(let an=actions["traindoor"].top.length-1;an>=0;an--){
actions["traindoor"].top[an].reset();
actions["traindoor"].top[an].time = 0;
actions["traindoor"].top[an].timeScale = 1;
actions["traindoor"].top[an].play();
if (trainmodel.open != data.open && data.open == '0') {
trainmodel.open = '0';
for (let an=actions["traindoor"].down.length-1; an>=0; an--) {
actions["traindoor"].down[an].reset();
actions["traindoor"].down[an].time = actions["traindoor"].down[an]._clip.duration;
actions["traindoor"].down[an].timeScale = -1;
actions["traindoor"].down[an].play();
}
} else if (trainmodel.open != data.open && data.open == '1') {
trainmodel.open = "1";
for(let an=actions["traindoor"].down.length-1;an>=0;an--){
actions["traindoor"].down[an].reset();
actions["traindoor"].down[an].time = 0;
actions["traindoor"].down[an].timeScale = 1;
actions["traindoor"].down[an].play();
}
}
}
}
}
}

View File

@ -150,7 +150,7 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
if(trainlisttest.list[code].dispose == "0"){
if(trainlisttest.list[code].curve == null){
if (data.right == '1') { // 向右
trainlisttest.list[code].right = '1';
trainlisttest.list[code].progress = data.offset;
trainlisttest.list[code].isstandsection = rails.sectionrail[data.section].standTrack;
if(rails.sectionrail[data.section].standTrack){
@ -175,6 +175,7 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
trainlisttest.list[code].status = '1';
} else if (data.right == '0') { // 向左
trainlisttest.list[code].right = '0';
trainlisttest.list[code].progress = 1-data.offset;
trainlisttest.list[code].isstandsection = rails.sectionrail[data.section].standTrack;
if(rails.sectionrail[data.section].standTrack){
@ -205,6 +206,7 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
//后端数据驱动车的位置更新与代码驱动车的移动相结合
if(data.code != trainlisttest.list[code].code){
if (data.right == '1') { // 向右
trainlisttest.list[code].right = '1';
trainlisttest.list[code].nowcode = data.code;
trainlisttest.list[code].curve = rails.sectionrail[data.section].lineleft;
trainlisttest.list[code].progress = data.offset;
@ -213,6 +215,7 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
trainlisttest.list[code].nextlen = rails.sectionrail[data.next].lengthfact;
trainlisttest.list[code].nextissection = rails.sectionrail[data.next].standTrack;
} else if (data.right == '0') { // 向左
trainlisttest.list[code].right = '0';
trainlisttest.list[code].nowcode = data.code;
trainlisttest.list[code].curve = rails.sectionrail[data.section].lineright;
trainlisttest.list[code].progress = 1-data.offset;
@ -251,7 +254,6 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
}
function DeviceDestroy(data){
console.log(data);
for(let i=0,leni=data.body.length;i<leni;i++){
if(data.body[i].type == "TRAIN"){
@ -311,44 +313,90 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
function traindoorupdate(data){
let code = data.code;
if(data.doorCode == "0"){
if(trainlisttest.list[code].right == "0"){
if(data.doorCode == "2"){
if(trainlisttest.list[code].open != data.open && data.open == "0"){
trainlisttest.list[code].open = "0";
for(let an=actions[code].down.length-1;an>=0;an--){
actions[code].down[an].reset();
actions[code].down[an].time = actions[code].top[an]._clip.duration;
actions[code].down[an].timeScale = -1;
actions[code].down[an].play();
if(trainlisttest.list[code].open != data.open && data.open == "0"){
trainlisttest.list[code].open = "0";
for(let an=actions[code].top.length-1;an>=0;an--){
actions[code].top[an].reset();
actions[code].top[an].time = actions[code].top[an]._clip.duration;
actions[code].top[an].timeScale = -1;
actions[code].top[an].play();
}
}else if(trainlisttest.list[code].open != data.open && data.open == "1"){
trainlisttest.list[code].open = "1";
for(let an=actions[code].top.length-1;an>=0;an--){
actions[code].top[an].reset();
actions[code].top[an].time = 0;
actions[code].top[an].timeScale = 1;
actions[code].top[an].play();
}
}
}else if(trainlisttest.list[code].open != data.open && data.open == "1"){
trainlisttest.list[code].open = "1";
for(let an=actions[code].down.length-1;an>=0;an--){
actions[code].down[an].reset();
actions[code].down[an].time = 0;
actions[code].down[an].timeScale = 1;
actions[code].down[an].play();
}else{
if (trainlisttest.list[code].open != data.open && data.open == '0') {
trainlisttest.list[code].open = '0';
for (let an=actions[code].down.length-1; an>=0; an--) {
actions[code].down[an].reset();
actions[code].down[an].time = actions[code].down[an]._clip.duration;
actions[code].down[an].timeScale = -1;
actions[code].down[an].play();
}
} else if (trainlisttest.list[code].open != data.open && data.open == '1') {
trainlisttest.list[code].open = "1";
for(let an=actions[code].down.length-1;an>=0;an--){
actions[code].down[an].reset();
actions[code].down[an].time = 0;
actions[code].down[an].timeScale = 1;
actions[code].down[an].play();
}
}
}
}else{
if (trainlisttest.list[code].open != data.open && data.open == '0') {
trainlisttest.list[code].open = '0';
for (let an=actions[code].top.length-1; an>=0; an--) {
actions[code].top[an].reset();
actions[code].top[an].time = actions[code].top[an]._clip.duration;
actions[code].top[an].timeScale = -1;
actions[code].top[an].play();
}
} else if (trainlisttest.list[code].open != data.open && data.open == '1') {
trainlisttest.list[code].open = "1";
for(let an=actions[code].top.length-1;an>=0;an--){
actions[code].top[an].reset();
actions[code].top[an].time = 0;
actions[code].top[an].timeScale = 1;
actions[code].top[an].play();
}
}
if(data.doorCode == "1"){
if(trainlisttest.list[code].open != data.open && data.open == "0"){
trainlisttest.list[code].open = "0";
for(let an=actions[code].top.length-1;an>=0;an--){
actions[code].top[an].reset();
actions[code].top[an].time = actions[code].top[an]._clip.duration;
actions[code].top[an].timeScale = -1;
actions[code].top[an].play();
}
}else if(trainlisttest.list[code].open != data.open && data.open == "1"){
trainlisttest.list[code].open = "1";
for(let an=actions[code].top.length-1;an>=0;an--){
actions[code].top[an].reset();
actions[code].top[an].time = 0;
actions[code].top[an].timeScale = 1;
actions[code].top[an].play();
}
}
}else{
if (trainlisttest.list[code].open != data.open && data.open == '0') {
trainlisttest.list[code].open = '0';
for (let an=actions[code].down.length-1; an>=0; an--) {
actions[code].down[an].reset();
actions[code].down[an].time = actions[code].down[an]._clip.duration;
actions[code].down[an].timeScale = -1;
actions[code].down[an].play();
}
} else if (trainlisttest.list[code].open != data.open && data.open == '1') {
trainlisttest.list[code].open = "1";
for(let an=actions[code].down.length-1;an>=0;an--){
actions[code].down[an].reset();
actions[code].down[an].time = 0;
actions[code].down[an].timeScale = 1;
actions[code].down[an].play();
}
}
}
}
}

View File

@ -56,13 +56,15 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
//定义镜头操作
let controls = new THREE.OrbitControls(camera);
controls.maxPolarAngle = Math.PI/2;
controls.screenSpacePanning = true;
// controls.screenSpacePanning = true;
//controls.minPolarAngle = Math.PI/8;
controls.maxDistance = 2000;
controls.maxDistance = 1000;
//模型加载器
this.assetloader = new AssetLoader();
//替换材质组,例:信号机不同灯光
this.materiallist = [];
//替换材质组(站台的)
this.stationtexture = [];
//初始化场景线框和灯光 暂时
SetLights(scene);
//点击选中的模型

View File

@ -37,7 +37,7 @@ let defaultstation = {
type:"num4",
picUrl:"",
assetUrl:"../../static/model/station/fuzhou.FBX"
}//modelurl+"/station/fuzhou/fuzhou.FBX"
}//"../../static/model/station/fuzhou/fuzhou.FBX"
let waicestation = {
id:"10",
name:"外侧车站",
@ -46,15 +46,15 @@ let waicestation = {
picUrl:"",
assetUrl:"../../static/model/station/waicestation.FBX"
}
let defaulttopstation = {
id:"104",
name:"福州车站1",
deviceType:"topstand",
type:"num5",
let station3 = {
id:"10000",
name:"三站台",
deviceType:"station3",
type:"num4",
picUrl:"",
assetUrl:modelurl+"/station/fuzhou/topstation.FBX"
assetUrl:"../../static/model/station/station3.FBX"
}
//modelurl+"/station/fuzhou/fuzhou.FBX"
//"../../static/model/station/fuzhou/fuzhou.FBX"
//https://test.joylink.club/oss/station/fuzhou/fuzhou.FBX
//https://joylink.club/oss/station/fuzhou/fuzhou.FBX
//../../static/model/station/zhantai715(2).FBX
@ -65,17 +65,9 @@ let defaultswitch = {
deviceType:"switch",
type:"fuzhou",
picUrl:"",
assetUrl:modelurl+"/daocha/daocha.FBX"
assetUrl:"../../static/model/daocha/daocha.FBX"
}
let defaultdriver = {
id:"15",
name:"驾驶台",
deviceType:"driver",
type:"driver",
picUrl:"",
assetUrl:modelurl+"/driver/driver.FBX"
}
let defaultsuidao = {
id:"16",
@ -83,7 +75,16 @@ let defaultsuidao = {
deviceType:"suidao",
type:"suidao",
picUrl:"",
assetUrl:modelurl+"/suidao/suidao.FBX"
assetUrl:"../../static/model/suidao/suidao.FBX"
}
let hebsuidao = {
id:"1010",
name:"hebsuidao",
deviceType:"hebsuidao",
type:"hebsuidao",
picUrl:"",
assetUrl:"../../static/model/suidao/hebsuidao.FBX"
}
let defaultbackground = {
@ -92,9 +93,9 @@ let defaultbackground = {
deviceType:"background",
type:"background",
picUrl:"",
assetUrl:modelurl+"/suidao/background.FBX"
assetUrl:"../../static/model/suidao/background.FBX"
}
//modelurl+"/suidao/suidao.FBX"
//"../../static/model/suidao/suidao.FBX"
//https://test.joylink.club/oss/suidao/suidao.FBX
//https://joylink.club/oss/suidao/suidao.FBX
//../../static/model/suidao/suidao.FBX
@ -108,15 +109,6 @@ let defaultautorail = {
assetUrl:"../../static/model/auto/rail.FBX"
}
let defaultautosuidao = {
id:"101",
name:"autosuidao",
deviceType:"autosuidao",
type:"autosuidao",
picUrl:"",
assetUrl:"../../static/model/auto/suidao.FBX"
}
let autoswitch = {
id:"104",
name:"道岔",
@ -132,7 +124,7 @@ let autoswitch1 = {
deviceType:"autoswitch1",
type:"fuzhou",
picUrl:"",
assetUrl:modelurl+"/auto/switch1.FBX"
assetUrl:"../../static/model/auto/switch1.FBX"
}
let autoswitch2 = {
@ -141,7 +133,7 @@ let autoswitch2 = {
deviceType:"autoswitch2",
type:"fuzhou",
picUrl:"",
assetUrl:modelurl+"/auto/switch2.FBX"
assetUrl:"../../static/model/auto/switch2.FBX"
}
export function AssetLoader(){
@ -160,7 +152,6 @@ export function AssetLoader(){
if(trainoffset){
scope.trainoffset = trainoffset;
}
// console.log("setmodellist");
let defaultmodel1 = new AssetModel(defaultsignal);
scope.modellist.push(defaultmodel1);
@ -170,17 +161,10 @@ export function AssetLoader(){
let station = new AssetModel(defaultstation);
scope.modellist.push(station);
let wstation = new AssetModel(waicestation);
scope.modellist.push(wstation);
// let topstation = new AssetModel(defaulttopstation);
// scope.modellist.push(topstation);
// let driver = new AssetModel(defaultdriver);
// scope.modellist.push(driver);
let suidao = new AssetModel(defaultsuidao);
scope.modellist.push(suidao);
let background = new AssetModel(defaultbackground);
scope.modellist.push(defaultbackground);
@ -215,6 +199,58 @@ export function AssetLoader(){
}
this.setmodellistnew = function (data,trainoffset){
if(trainoffset){
scope.trainoffset = trainoffset;
}
let defaultmodel1 = new AssetModel(defaultsignal);
scope.modellist.push(defaultmodel1);
let defaultmodel2 = new AssetModel(defaulttrain);
scope.modellist.push(defaultmodel2);
let station = new AssetModel(defaultstation);
scope.modellist.push(station);
let wstation = new AssetModel(waicestation);
scope.modellist.push(wstation);
let s3 = new AssetModel(station3);
scope.modellist.push(s3);
let hebsd = new AssetModel(hebsuidao);
scope.modellist.push(hebsd);
let defaultswitch1 = new AssetModel(autoswitch1);
scope.modellist.push(defaultswitch1);
let defaultswitch2 = new AssetModel(autoswitch2);
scope.modellist.push(defaultswitch2);
let modeldata = JSON.parse(data);
for(let j=0;j<modeldata.length;j++){
let had = false;
for(let i=0;i<scope.modellist.length;i++){
if(scope.modellist[i].id == modeldata[j].id){
had = true;
i = scope.modellist.length;
}
}
if(had == false){
let model = new AssetModel(modeldata[j]);
scope.modellist.push(modeldata[j]);
}
}
}
this.assetpromise = function (scene){
let initlist = [];
@ -248,15 +284,10 @@ export function AssetLoader(){
let wstation = new AssetModel(waicestation);
scope.modellist.push(wstation);
// let topstation = new AssetModel(defaulttopstation);
// scope.modellist.push(topstation);
let autorail = new AssetModel(defaultautorail);
scope.modellist.push(autorail);
// let autosuidao = new AssetModel(defaultautosuidao);
// scope.modellist.push(autosuidao);
let defaultswitch1 = new AssetModel(autoswitch1);
scope.modellist.push(defaultswitch1);

View File

@ -72,7 +72,7 @@ export function DriverLoadNew(data,scope,netdata,mapdata,sectionlist,signallist,
let signaldata = JSON.parse(netdata.signals);
let standsdata = JSON.parse(netdata.stands);
let psddata = data.psdList;
assetloader.setmodellist(netdata.assets);
assetloader.setmodellistnew(netdata.assets);
assetloader.assetpromise(sceneload)
// .then(function(data){
@ -107,7 +107,36 @@ export function DriverLoadNew(data,scope,netdata,mapdata,sectionlist,signallist,
});
})
.then(function(data){
return new Promise(function(resolve, reject){
if(stationstandlist.group.children[0].name == "Station18398"){
for(let mm=0;mm< stationstandlist.group.children.length;mm++){
if(stationstandlist.group.children[mm].name != "Station96090"){
let stationname = stationstandlist.group.children[mm].name;
stationstandlist.group.children[mm].getObjectByName("zhantailiebiao").material.map =scope.stationtexture["haerbinlist"];
stationstandlist.group.children[mm].getObjectByName("zhantailiebiao").material.map.needsUpdate = true;
let newmaterial = stationstandlist.group.children[mm].getObjectByName("zhantaiming").material.clone();
newmaterial.map =scope.stationtexture[stationname];
stationstandlist.group.children[mm].getObjectByName("zhantaiming").material = newmaterial;
stationstandlist.group.children[mm].getObjectByName("zhantaiming").material.map.needsUpdate = true;
}
}
for(let mn=0;mn<scope.assetloader.modellist.length;mn++){
if(scope.assetloader.modellist[mn].name && scope.assetloader.modellist[mn].name == "hebsuidao"){
scope.assetloader.modellist[mn].mesh.name = "hebsuidao";
scene.add(scope.assetloader.modellist[mn].mesh);
}
}
}
resolve("mergemodel");
});
})
.then(function(data){
// for(let mn=0;mn<scope.assetloader.modellist.length;mn++){
// if(scope.assetloader.modellist[mn].name && scope.assetloader.modellist[mn].name == "suidao"){
@ -125,7 +154,6 @@ export function DriverLoadNew(data,scope,netdata,mapdata,sectionlist,signallist,
backdata.loaderdata(sectionlist,linklist,signallist,stationstandlist,trainlisttest,realsectionlist,rails);
scope.Subscribe.updatamap(sectionlist,linklist,signallist,stationstandlist,trainlisttest,realsectionlist,rails,scope.materiallist,scope.actions,scope.sceneload);
scope.webwork.postMessage("on");
console.log(scene);
// updatemenulist(stationstandlist.list,trainlisttest.list);
loadingInstance.close();
});

View File

@ -8,6 +8,33 @@ export function Materialload(jlmap3dedit){
settexture( jlmap3dedit.materiallist,"green",'../../static/material/signal/3.jpg');
settexture( jlmap3dedit.materiallist,"black",'../../static/material/signal/5.jpg');
if(jlmap3dedit.stationtexture){
setstationtexture(jlmap3dedit.stationtexture,"haerbinlist",'../../static/texture/heb/haerbinlist.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station5361",'../../static/texture/heb/Station5361.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station11094",'../../static/texture/heb/Station11094.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station11136",'../../static/texture/heb/Station11136.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station17293",'../../static/texture/heb/Station17293.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station18398",'../../static/texture/heb/Station18398.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station22163",'../../static/texture/heb/Station22163.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station25464",'../../static/texture/heb/Station25464.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station28090",'../../static/texture/heb/Station28090.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station41999",'../../static/texture/heb/Station41999.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station44338",'../../static/texture/heb/Station44338.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station46464",'../../static/texture/heb/Station46464.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station50565",'../../static/texture/heb/Station50565.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station60068",'../../static/texture/heb/Station60068.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station62429",'../../static/texture/heb/Station62429.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station64444",'../../static/texture/heb/Station64444.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station71700",'../../static/texture/heb/Station71700.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station72132",'../../static/texture/heb/Station72132.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station78164",'../../static/texture/heb/Station78164.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station79537",'../../static/texture/heb/Station79537.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station82618",'../../static/texture/heb/Station82618.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station85520",'../../static/texture/heb/Station85520.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station89483",'../../static/texture/heb/Station89483.jpg');
setstationtexture(jlmap3dedit.stationtexture,"Station96090",'../../static/texture/heb/Station96090.jpg');
}
//console.log(jlmap3dedit.materiallist);
}
@ -34,3 +61,26 @@ function settexture(materiallist,name,textureurl){
}
);
}
function setstationtexture(stationtexture,name,textureurl){
var loader = new THREE.TextureLoader();
// 加载一个资源
loader.load(
// 资源URL
textureurl,
// onLoad回调
function ( texture ) {
texture.name = name;
stationtexture[name] = texture;
},
// 目前暂不支持onProgress的回调
undefined,
// onError回调
function ( err ) {
console.error( 'An error happened.' );
}
);
}

View File

@ -69,7 +69,7 @@ export function SimulationLoadNew(data,scope,netdata,mapdata,camera,controls,sce
let signaldata = JSON.parse(netdata.signals);
let standsdata = JSON.parse(netdata.stands);
let psddata = data.psdList;
assetloader.setmodellist(netdata.assets);
assetloader.setmodellistnew(netdata.assets);
assetloader.assetpromise(sceneload)
// .then(function(data){
@ -78,6 +78,7 @@ export function SimulationLoadNew(data,scope,netdata,mapdata,camera,controls,sce
.then(function(data){
//console.log(data);
//,netdata.stands,mixers,actions,"0"
return stationstandlist.loadpromise(mapdata.stationList,standsdata,psddata,sceneload,assetloader,mixers,actions,"02");
})
.then(function(data){
@ -104,7 +105,34 @@ export function SimulationLoadNew(data,scope,netdata,mapdata,camera,controls,sce
});
})
.then(function(data){
return new Promise(function(resolve, reject){
//
if(stationstandlist.group.children[0].name == "Station18398"){
for(let mm=0;mm< stationstandlist.group.children.length;mm++){
if(stationstandlist.group.children[mm].name != "Station96090"){
let stationname = stationstandlist.group.children[mm].name;
stationstandlist.group.children[mm].getObjectByName("zhantailiebiao").material.map =scope.stationtexture["haerbinlist"];
stationstandlist.group.children[mm].getObjectByName("zhantailiebiao").material.map.needsUpdate = true;
let newmaterial = stationstandlist.group.children[mm].getObjectByName("zhantaiming").material.clone();
newmaterial.map =scope.stationtexture[stationname];
stationstandlist.group.children[mm].getObjectByName("zhantaiming").material = newmaterial;
stationstandlist.group.children[mm].getObjectByName("zhantaiming").material.map.needsUpdate = true;
}
}
for(let mn=0;mn<scope.assetloader.modellist.length;mn++){
if(scope.assetloader.modellist[mn].name && scope.assetloader.modellist[mn].name == "hebsuidao"){
scope.assetloader.modellist[mn].mesh.name = "hebsuidao";
scene.add(scope.assetloader.modellist[mn].mesh);
}
}
}
resolve("mergemodel");
});
})
.then(function(data){
// for(let mn=0;mn<scope.assetloader.modellist.length;mn++){
// if(scope.assetloader.modellist[mn].name && scope.assetloader.modellist[mn].name == "suidao"){

View File

@ -191,7 +191,8 @@ export function StationStandList() {
let textmaterial = new THREE.MeshBasicMaterial( { side: THREE.DoubleSide,map:textt ,transparent: true} );
let textplane = new THREE.Mesh( textgeometry, textmaterial );
textplane.name = stationdata[map[k].num].code;
textplane.position.y = 300;
textplane.position.y = 50;
textplane.position.z = 250;
textplane.rotation.x = Math.PI/2;
//textplane.position.x = -30;
scope.textlist.push(textplane);

View File

@ -16,11 +16,11 @@ export function StationStandListN() {
return new Promise(function(resolve, reject){
let stations = stationdata;
let selectmesh;
let selectmesh1;
for(let j=0;j<assetloader.modellist.length;j++){
if(assetloader.modellist[j].deviceType == "stand"){
selectmesh = assetloader.modellist[j].mesh;
selectmesh1 = assetloader.modellist[j].mesh;
}
}
@ -40,7 +40,7 @@ export function StationStandListN() {
newstationstand.direction2.name = standsdata[i].direction2.name;
newstationstand.direction2.screenDoorOpenStatus = "01";
let newstationmesh = selectmesh.clone(true);
let newstationmesh = selectmesh1.clone(true);
newstationmesh.position.x = standsdata[i].position.x;
newstationmesh.position.y = standsdata[i].position.y;
newstationmesh.position.z = standsdata[i].position.z;
@ -52,7 +52,7 @@ export function StationStandListN() {
scope.list[standsdata[i].code] = newstationstand;
let newclip = selectmesh.animations[ 0 ];
let newclip = selectmesh1.animations[ 0 ];
for(let j=0;j<newstationmesh.children.length;j++){
if(newstationmesh.children[j].name == "top"){
@ -136,111 +136,222 @@ export function StationStandListN() {
return new Promise(function(resolve, reject){
let stations = stationdata;
let selectmesh;
let selectmesh1;
let selectmesh2;
let selectmesh3;
for(let j=0;j<assetloader.modellist.length;j++){
if(assetloader.modellist[j].deviceType == "stand"){
selectmesh = assetloader.modellist[j].mesh;
selectmesh1 = assetloader.modellist[j].mesh;
}
if(assetloader.modellist[j].deviceType == "standwaice"){
selectmesh2 = assetloader.modellist[j].mesh;
// assetloader.modellist[num2].mesh.rotation.y = Math.PI/2;
}
if(assetloader.modellist[j].deviceType == "station3"){
selectmesh3 = assetloader.modellist[j].mesh;
// assetloader.modellist[num2].mesh.rotation.y = Math.PI/2;
}
}
for(let i=0;i<standsdata.length;i++){
let newstationstand = new StationStandModel(standsdata[i]);
if(standsdata[i].code != "Station96090"){
newstationstand.code = standsdata[i].code;
newstationstand.name = standsdata[i].name;
newstationstand.type = "station";
newstationstand.num = i;
newstationstand.code = standsdata[i].code;
newstationstand.name = standsdata[i].name;
newstationstand.type = "station";
newstationstand.num = i;
newstationstand.direction1.code = standsdata[i].direction1.code;
newstationstand.direction1.name = standsdata[i].direction1.name;
newstationstand.direction1.screenDoorOpenStatus = "01";
newstationstand.direction2.code = standsdata[i].direction2.code;
newstationstand.direction2.name = standsdata[i].direction2.name;
newstationstand.direction2.screenDoorOpenStatus = "01";
let newstationmesh = selectmesh.clone(true);
newstationmesh.position.x = standsdata[i].position.x;
newstationmesh.position.y = standsdata[i].position.y;
newstationmesh.position.z = standsdata[i].position.z;
// newstationmesh.rotation.x = standsdata[i].rotation._x;
// newstationmesh.rotation.y = standsdata[i].rotation._y;
// newstationmesh.rotation.z = standsdata[i].rotation._z;
newstationstand.mesh = newstationmesh;
scope.group.add(newstationmesh);
//
scope.list[standsdata[i].code] = newstationstand;
//
let newclip = selectmesh.animations[ 0 ];
for(let j=0;j<newstationmesh.children.length;j++){
if(newstationmesh.children[j].name == "top"){
newstationmesh.children[j].animations = [];
newstationmesh.children[j].animations.push(newclip.clone());
let mixer = new THREE.AnimationMixer( newstationmesh.children[j] );
for(let n=0;n<psddata.length;n++){
if(psddata[n].standCode == newstationstand.direction2.code){
let key = psddata[n].code;
actionss[key] = {
status:"01",
action:mixer.clipAction( newstationmesh.children[j].animations[0])
};
actionss[key].action.setLoop(THREE.LoopOnce);
actionss[key].action.clampWhenFinished = true;
//actionss[key].play();
mixers.push(mixer);
n = psddata.length;
}
}
newstationstand.direction1.code = standsdata[i].direction1.code;
newstationstand.direction1.name = standsdata[i].direction1.name;
newstationstand.direction1.screenDoorOpenStatus = "01";
newstationstand.direction2.code = standsdata[i].direction2.code;
newstationstand.direction2.name = standsdata[i].direction2.name;
newstationstand.direction2.screenDoorOpenStatus = "01";
let newstationmesh = null;
if(standsdata[i].inside == true){
newstationmesh = selectmesh1.clone(true);
}else{
newstationmesh = selectmesh2.clone(true);
}
newstationmesh.code = standsdata[i].code;
newstationmesh.name = standsdata[i].code;
newstationmesh.position.x = standsdata[i].position.x;
newstationmesh.position.y = standsdata[i].position.y;
newstationmesh.position.z = standsdata[i].position.z;
// newstationmesh.rotation.x = standsdata[i].rotation._x;
// newstationmesh.rotation.y = standsdata[i].rotation._y;
// newstationmesh.rotation.z = standsdata[i].rotation._z;
newstationstand.mesh = newstationmesh;
scope.group.add(newstationmesh);
//
scope.list[standsdata[i].code] = newstationstand;
//
let newclip =null;
if(standsdata[i].inside == true){
newclip = selectmesh1.animations[ 0 ];
}else{
newclip = selectmesh2.animations[ 0 ];
}
if(newstationmesh.children[j].name == "down"){
newstationmesh.children[j].animations = [];
newstationmesh.children[j].animations.push(newclip.clone());
let mixer = new THREE.AnimationMixer( newstationmesh.children[j] );
for(let n=0;n<psddata.length;n++){
if(psddata[n].standCode == newstationstand.direction1.code){
for(let j=0;j<newstationmesh.children.length;j++){
let key = psddata[n].code;
actionss[key] = {
status:"01",
action:mixer.clipAction( newstationmesh.children[j].animations[0])
};
actionss[key].action.setLoop(THREE.LoopOnce);
actionss[key].action.clampWhenFinished = true;
//actionss[key].play();
mixers.push(mixer);
n = psddata.length;
if(newstationmesh.children[j].name == "top"){
newstationmesh.children[j].animations = [];
newstationmesh.children[j].animations.push(newclip.clone());
let mixer = new THREE.AnimationMixer( newstationmesh.children[j] );
for(let n=0;n<psddata.length;n++){
if(psddata[n].standCode == newstationstand.direction2.code){
let key = psddata[n].code;
actionss[key] = {
status:"01",
action:mixer.clipAction( newstationmesh.children[j].animations[0])
};
actionss[key].action.setLoop(THREE.LoopOnce);
actionss[key].action.clampWhenFinished = true;
//actionss[key].play();
mixers.push(mixer);
n = psddata.length;
}
}
}
if(newstationmesh.children[j].name == "down"){
newstationmesh.children[j].animations = [];
newstationmesh.children[j].animations.push(newclip.clone());
let mixer = new THREE.AnimationMixer( newstationmesh.children[j] );
for(let n=0;n<psddata.length;n++){
if(psddata[n].standCode == newstationstand.direction1.code){
let key = psddata[n].code;
actionss[key] = {
status:"01",
action:mixer.clipAction( newstationmesh.children[j].animations[0])
};
actionss[key].action.setLoop(THREE.LoopOnce);
actionss[key].action.clampWhenFinished = true;
//actionss[key].play();
mixers.push(mixer);
n = psddata.length;
}
}
}
}
}
// console.log(newstationmesh);
if(mode){
if(mode == "02"){
let textgeometry = new THREE.PlaneBufferGeometry( 65, 90, 1 );
let textt = new THREE.CanvasTexture(getTextCanvas(stationdata[i]));
let textmaterial = new THREE.MeshBasicMaterial( { side: THREE.DoubleSide,map:textt ,transparent: true} );
let textplane = new THREE.Mesh( textgeometry, textmaterial );
textplane.name = stationdata[i].code;
textplane.position.y = 70;
textplane.rotation.x = Math.PI/2;
//textplane.position.x = -30;
scope.textlist.push(textplane);
newstationmesh.add(textplane);
textgeometry.dispose();
textmaterial.dispose();
textt.dispose();
// let newtopstation = topstationmesh.clone(true);
// newtopstation.position.x = map[k].mesh.position.x;
// newtopstation.position.z = map[k].mesh.position.z;
// scene.add(newtopstation);
if(mode){
if(mode == "02"){
let textgeometry = new THREE.PlaneBufferGeometry( 65, 90, 1 );
let textt = new THREE.CanvasTexture(getTextCanvas(standsdata[i]));
let textmaterial = new THREE.MeshBasicMaterial( { side: THREE.DoubleSide,map:textt ,transparent: true} );
let textplane = new THREE.Mesh( textgeometry, textmaterial );
textplane.name = standsdata[i].code;
textplane.position.y = 70;
textplane.rotation.x = Math.PI/2;
textplane.position.z = 50;
scope.textlist.push(textplane);
newstationmesh.add(textplane);
textgeometry.dispose();
textmaterial.dispose();
textt.dispose();
}
}
}else{
newstationstand.code = standsdata[i].code;
newstationstand.name = standsdata[i].name;
newstationstand.type = "station";
newstationstand.num = i;
newstationstand.direction1.code = standsdata[i].direction1.code;
newstationstand.direction1.name = standsdata[i].direction1.name;
newstationstand.direction1.screenDoorOpenStatus = "01";
newstationstand.direction2.code = standsdata[i].direction2.code;
newstationstand.direction2.name = standsdata[i].direction2.name;
newstationstand.direction2.screenDoorOpenStatus = "01";
let newstationmesh = null;
newstationmesh = selectmesh3.clone(true);
newstationmesh.code = standsdata[i].code;
newstationmesh.name = standsdata[i].code;
newstationmesh.position.x = standsdata[i].position.x;
newstationmesh.position.y = standsdata[i].position.y;
newstationmesh.position.z = standsdata[i].position.z;
// newstationmesh.rotation.x = standsdata[i].rotation._x;
// newstationmesh.rotation.y = standsdata[i].rotation._y;
// newstationmesh.rotation.z = standsdata[i].rotation._z;
newstationstand.mesh = newstationmesh;
scope.group.add(newstationmesh);
//
scope.list[standsdata[i].code] = newstationstand;
//
let newclip =null;
newclip = selectmesh3.animations[ 0 ];
for(let j=0;j<newstationmesh.children.length;j++){
if(newstationmesh.children[j].name == "top"){
newstationmesh.children[j].animations = [];
newstationmesh.children[j].animations.push(newclip.clone());
let mixer = new THREE.AnimationMixer( newstationmesh.children[j] );
for(let n=0;n<psddata.length;n++){
if(psddata[n].standCode == newstationstand.direction2.code){
let key = psddata[n].code;
actionss[key] = {
status:"01",
action:mixer.clipAction( newstationmesh.children[j].animations[0])
};
actionss[key].action.setLoop(THREE.LoopOnce);
actionss[key].action.clampWhenFinished = true;
//actionss[key].play();
mixers.push(mixer);
n = psddata.length;
}
}
}
if(newstationmesh.children[j].name == "down"){
newstationmesh.children[j].animations = [];
newstationmesh.children[j].animations.push(newclip.clone());
let mixer = new THREE.AnimationMixer( newstationmesh.children[j] );
for(let n=0;n<psddata.length;n++){
if(psddata[n].standCode == newstationstand.direction1.code){
let key = psddata[n].code;
actionss[key] = {
status:"01",
action:mixer.clipAction( newstationmesh.children[j].animations[0])
};
actionss[key].action.setLoop(THREE.LoopOnce);
actionss[key].action.clampWhenFinished = true;
//actionss[key].play();
mixers.push(mixer);
n = psddata.length;
}
}
}
}
if(mode){
if(mode == "02"){
let textgeometry = new THREE.PlaneBufferGeometry( 65, 90, 1 );
let textt = new THREE.CanvasTexture(getTextCanvas(standsdata[i]));
let textmaterial = new THREE.MeshBasicMaterial( { side: THREE.DoubleSide,map:textt ,transparent: true} );
let textplane = new THREE.Mesh( textgeometry, textmaterial );
textplane.name = standsdata[i].code;
textplane.position.y = 70;
textplane.rotation.x = Math.PI/2;
textplane.position.z = 50;
scope.textlist.push(textplane);
newstationmesh.add(textplane);
textgeometry.dispose();
textmaterial.dispose();
textt.dispose();
}
}
}
}

View File

@ -7,7 +7,7 @@ export function StationStandModel(opts) {
this.name = null;
this.modelid = null;
this.type = null;
this.inside = null;
this.ismodel = false;
this.istexture = false;
this.modelurl = null;

View File

@ -171,7 +171,7 @@ export function TrainListN() {
for(let i=0;i<data.length;i++){
actionss[data[i].code] = {
actionss[data[i].groupNumber] = {
top:[],
down:[]
};
@ -198,7 +198,7 @@ export function TrainListN() {
//action.play();
action.setLoop(THREE.LoopOnce);
action.clampWhenFinished = true;
actionss[data[i].code].top.push(action);
actionss[data[i].groupNumber].top.push(action);
}
@ -214,7 +214,7 @@ export function TrainListN() {
//action.play();
action.setLoop(THREE.LoopOnce);
action.clampWhenFinished = true;
actionss[data[i].code].down.push(action);
actionss[data[i].groupNumber].down.push(action);
}
}
}else{
@ -230,7 +230,7 @@ export function TrainListN() {
//action.play();
action.setLoop(THREE.LoopOnce);
action.clampWhenFinished = true;
actionss[data[i].code].top.push(action);
actionss[data[i].groupNumber].top.push(action);
}
if(newmesh.children[j].children[n].name == "down"){
@ -244,12 +244,12 @@ export function TrainListN() {
//action.play();
action.setLoop(THREE.LoopOnce);
action.clampWhenFinished = true;
actionss[data[i].code].down.push(action);
actionss[data[i].groupNumber].down.push(action);
}
}
}
//newmesh.children[j].name = data[i].code;
newmesh.children[j].code = data[i].code;
newmesh.children[j].groupNumber = data[i].groupNumber;
newmesh.children[j].axis = new THREE.Vector3();
newmesh.children[j].up = new THREE.Vector3(1, 0, 0);
// newmesh.axis = new THREE.Vector3();
@ -281,7 +281,7 @@ export function TrainListN() {
alphaTest:0.1
} );
let textplane = new THREE.Mesh( textgeometry, textmaterial );
textplane.name = data[i].code;
textplane.name = data[i].groupNumber;
textplane.position.x = 0;
textplane.position.y = 0;
textplane.position.z = 20;
@ -300,7 +300,7 @@ export function TrainListN() {
//group.add(textplane);
newmesh.first = false;
newmesh.name = data[i].code;
newmesh.name = data[i].groupNumber;
newmesh.rname = data[i].groupNumber;
newmesh.groupNumber = data[i].groupNumber;
@ -321,7 +321,7 @@ export function TrainListN() {
newmesh.open = null;
newmesh.statsstop = 0;
scope.list[data[i].code] = newmesh;
scope.list[data[i].groupNumber] = newmesh;
//scene.add(newmesh);
}
// console.log(selectmesh);

View File

@ -1,148 +1,154 @@
<template>
<el-dialog class="beijing-01__systerm confirm-control-speed" :title="title" :visible.sync="show" width="540px"
:before-close="doClose" :zIndex="2000" :modal="false" :close-on-click-modal="false" append-to-body v-dialogDrag>
<div style="height: 60px; padding-left: 20px">
<span style="font-size: 18px">{{message}}</span>
</div>
<el-row justify="center" class="button-group">
<el-col :span="6" :offset="6">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="10" :offset="2">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
<el-dialog
v-dialogDrag
class="beijing-01__systerm confirm-control-speed"
:title="title"
:visible.sync="show"
width="540px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
append-to-body
>
<div style="height: 60px; padding-left: 20px">
<span style="font-size: 18px">{{ message }}</span>
</div>
<el-row justify="center" class="button-group">
<el-col :span="6" :offset="6">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="10" :offset="2">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'ConfirmControlSpeed',
data() {
return {
dialogShow: false,
loading: false,
type: '',
operation: '',
message: '',
}
export default {
name: 'ConfirmControlSpeed',
data() {
return {
dialogShow: false,
loading: false,
operation: '',
message: ''
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
title() {
if (this.dialogShow) {
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
return "区段设置限速";
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
return "区段取消限速";
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
return "道岔设置限速";
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
return "道岔取消限速";
}
}
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
if (this.dialogShow) {
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
/** 区段设置限速*/
return OperationEvent.Section.setSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
/** 区段取消限速*/
return OperationEvent.Section.cancelSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
/** 道岔设置限速*/
return OperationEvent.Switch.setSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
/** 道岔取消限速*/
return OperationEvent.Switch.cancelSpeed.confirm.domId;
}
title() {
if (this.dialogShow) {
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
return '区段设置限速';
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
return '区段取消限速';
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
return '道岔设置限速';
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
return '道岔取消限速';
}
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
})
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
methods: {
doShow(operate) {
if (!this.dialogShow) {
this.type = operate.type;
this.operation = operate.operation;
this.message = operate.message;
}
this.loading = false;
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
let operate = {
type: this.type
}
domIdConfirm() {
if (this.dialogShow) {
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
/** 区段设置限速*/
operate.operation = OperationEvent.Section.setSpeed.confirm.operation;
return OperationEvent.Section.setSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
/** 区段取消限速*/
operate.operation = OperationEvent.Section.cancelSpeed.confirm.operation;
return OperationEvent.Section.cancelSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
/** 道岔设置限速*/
operate.operation = OperationEvent.Switch.setSpeed.confirm.operation;
return OperationEvent.Switch.setSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
/** 道岔取消限速*/
operate.operation = OperationEvent.Switch.cancelSpeed.confirm.operation;
return OperationEvent.Switch.cancelSpeed.confirm.domId;
}
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.$emit('setOperate', { step: 1, success: true });
this.doClose();
}
}).catch((error) => {
this.loading = false;
this.$emit('setOperate', { step: 0, success: false });
this.doClose();
})
},
cancel() {
let operate = {
type: this.type,
operation: OperationEvent.Command.cancel.menu.operation,
}
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.$emit('setOperate', { step: 0, success: false });
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
}
}).catch(error => {
this.doClose();
});
}
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate) {
if (!this.dialogShow) {
this.operation = operate.operation;
this.message = operate.message;
}
this.loading = false;
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
const operate = {
};
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
/** 区段设置限速*/
operate.operation = OperationEvent.Section.setSpeed.confirm.operation;
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
/** 区段取消限速*/
operate.operation = OperationEvent.Section.cancelSpeed.confirm.operation;
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
/** 道岔设置限速*/
operate.operation = OperationEvent.Switch.setSpeed.confirm.operation;
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
/** 道岔取消限速*/
operate.operation = OperationEvent.Switch.cancelSpeed.confirm.operation;
}
this.loading = true;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.$emit('setOperate', { step: 1, success: true });
this.doClose();
}
}).catch(() => {
this.loading = false;
this.$emit('setOperate', { step: 0, success: false });
this.doClose();
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.$emit('setOperate', { step: 0, success: false });
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>
<style>
@ -150,4 +156,4 @@
padding-bottom: 40px !important;
border: 1px solid lightgray;
}
</style>
</style>

View File

@ -214,6 +214,21 @@ export default {
} else {
this.commitDisabled = true;
}
const operate = {val:code};
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
/** 进路交人工控*/
operate.operation = OperationEvent.Signal.humanControl.choose.operation;
} else if (this.operation == OperationEvent.Signal.atsAutoControl.menu.operation) {
/** 进路交自动控*/
operate.operation = OperationEvent.Signal.atsAutoControl.choose.operation;
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
allSelectChange() {
this.changeList = [];

View File

@ -102,7 +102,7 @@
</template>
<script>
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import ConfirmControlSpeed from './childDialog/confirmControlSpeed';
import { now } from '@/utils/date';
@ -378,7 +378,6 @@ export default {
this.cmdDisabled = [true, true, true];
this.stpDisabled = true;
this.order = 0;
this.type = operate.type;
this.operation = operate.operation;
this.setMessage('请选择限速值后,点击“下达”按钮,下达命令!');
if (this.isCancelSpeed) {
@ -400,7 +399,6 @@ export default {
},
speedSelectChange(val) {
const operate = {
type: this.type,
val: val
};
@ -422,7 +420,6 @@ export default {
},
command() {
const operate = {
type: this.type
};
if (this.operation == OperationEvent.Section.setSpeed.menu.operation) {
@ -459,7 +456,6 @@ export default {
},
confirm1() {
const operate = {
type: this.type
};
if (this.operation == OperationEvent.Section.setSpeed.menu.operation) {
@ -495,8 +491,6 @@ export default {
confirm2() {
const operate = {
over:true,
type: this.type,
val: this.speed,
param: {
speedLimitValue: `${this.speed}`
}
@ -539,7 +533,6 @@ export default {
},
stop() {
const operate = {
type: this.type
};
if (this.operation == OperationEvent.Section.setSpeed.menu.operation) {
@ -571,7 +564,6 @@ export default {
},
close() {
const operate = {
type: this.type,
operation: OperationEvent.Command.close.menu.operation
};
this.writeRecord({ order: ++this.order, date: now(), context: '点击关闭', result: '' });

View File

@ -1095,7 +1095,6 @@ export const OperationList = {
{ deviceType: '06', orderNum: 3, operateCode: '511', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
@ -1137,7 +1136,7 @@ export const OperationList = {
{ deviceType: '03', orderNum: 1, operateCode: '407', tip: '鼠标右键菜单选择【设置临时限速】' },
{ deviceType: '03', orderNum: 2, operateCode: '4076', tip: '鼠标左键选择【限速值15】', val: '15' },
{ deviceType: '03', orderNum: 3, operateCode: '4071', tip: '鼠标左键点击【下达】按钮' },
{ deviceType: '03', orderNum: 4, operateCode: '4072', tip: '鼠标左键点击【确】按钮' },
{ deviceType: '03', orderNum: 4, operateCode: '4072', tip: '鼠标左键点击【确】按钮' },
{ deviceType: '03', orderNum: 5, operateCode: '4073', tip: '鼠标左键点击【确认1】按钮' },
{ deviceType: '03', orderNum: 6, operateCode: '4074', tip: '鼠标左键点击【确认2】按钮' },
{ deviceType: '03', orderNum: 7, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }
@ -1178,7 +1177,7 @@ export const OperationList = {
operateType: '0310',
skinCode: '03',
trainingName: '设置临时限速({7} 道岔)',
trainingRemark: '设置临时限速功能(限速值 35 零点西上行公里标0 - 零点西上行公里标3000',
trainingRemark: '设置临时限速功能(限速值 35 ',
trainingType: '03',
productTypes: ['02'],
// stepVOList: [
@ -1205,13 +1204,68 @@ export const OperationList = {
{ deviceType: '02', orderNum: 1, operateCode: '113', tip: '鼠标右键菜单选择【设置临时限速】' },
{ deviceType: '02', orderNum: 2, operateCode: '1136', tip: '鼠标左键选择【限速值35】', val: '35' },
{ deviceType: '02', orderNum: 3, operateCode: '1131', tip: '鼠标左键点击【下达】按钮' },
{ deviceType: '02', orderNum: 4, operateCode: '1132', tip: '鼠标左键点击【确】按钮' },
{ deviceType: '02', orderNum: 4, operateCode: '1132', tip: '鼠标左键点击【确】按钮' },
{ deviceType: '02', orderNum: 5, operateCode: '1133', tip: '鼠标左键点击【确认1】按钮' },
{ deviceType: '02', orderNum: 6, operateCode: '1134', tip: '鼠标左键点击【确认2】按钮' },
{ deviceType: '02', orderNum: 7, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0313',
skinCode: '03',
trainingName: '道岔总反({7} 道岔)',
trainingRemark: '道岔反位功能',
trainingType: '03',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1020', tip: '鼠标左键点击【道岔总反】' },
{ deviceType: '02', orderNum: 2, operateCode: '1020', tip: '鼠标左键点击【道岔】', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0312',
skinCode: '03',
trainingName: '道岔总定({7} 道岔)',
trainingRemark: '道岔定位功能',
trainingType: '03',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1010', tip: '鼠标左键点击【道岔总定】' },
{ deviceType: '02', orderNum: 2, operateCode: '1010', tip: '鼠标左键点击【道岔】', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0301',
skinCode: '03',
trainingName: '道岔单锁({7} 道岔)',
trainingRemark: '道岔单锁功能',
trainingType: '03',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1030', tip: '鼠标左键点击【道岔单锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '1030', tip: '鼠标左键点击【道岔】', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0302',
skinCode: '03',
trainingName: '道岔解锁({7} 道岔)',
trainingRemark: '道岔单解功能',
trainingType: '03',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1040', tip: '鼠标左键点击【道岔解锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '1040', tip: '鼠标左键点击【道岔】', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
@ -1220,7 +1274,7 @@ export const OperationList = {
trainingName: '排列进路({3} 进路)',
trainingRemark: '排列进路功能',
trainingType: '02',
productTypes: ['01', '02'],
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '301', tip: '鼠标右键菜单选择【排列进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3011', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' },
@ -1293,13 +1347,117 @@ export const OperationList = {
trainingName: '信号重开({3} 进路)',
trainingRemark: '信号重开功能',
trainingType: '02',
productTypes: ['01', '02'],
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '304', tip: '鼠标右键菜单选择【信号重开】' },
{ deviceType: '04', orderNum: 2, operateCode: '304', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 8,
minDuration: 5,
operateType: '0206',
skinCode: '03',
trainingName: '信号重开({3} 进路)',
trainingRemark: '信号重开功能',
trainingType: '02',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3040', tip: '鼠标左键点击【信号重开】' },
{ deviceType: '04', orderNum: 2, operateCode: '3040', tip: '鼠标左键点击【信号机】', codeType:'SIGNAL'}
]
},
{
maxDuration: 8,
minDuration: 5,
operateType: '0211',
skinCode: '03',
trainingName: '设置自动进路({3} 进路)',
trainingRemark: '设置自动进路功能',
trainingType: '02',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3090', tip: '鼠标左键点击【自动进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3090', tip: '鼠标左键点击【信号机】', codeType:'SIGNAL'}
]
},
{
maxDuration: 8,
minDuration: 5,
operateType: '0212',
skinCode: '03',
trainingName: '取消自动进路({3} 进路)',
trainingRemark: '取消自动进路功能',
trainingType: '02',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3090', tip: '鼠标左键点击【自动进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3090', tip: '鼠标左键点击【信号机】', codeType:'SIGNAL'}
]
},
{
maxDuration: 8,
minDuration: 5,
operateType: '0215',
skinCode: '03',
trainingName: '总人解({3} 进路)',
trainingRemark: '人解进路(总人解)',
trainingType: '02',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3050', tip: '鼠标左键点击【总人解】' },
{ deviceType: '04', orderNum: 2, operateCode: '3050', tip: '鼠标左键点击【信号机】', codeType:'SIGNAL'}
]
},
{
maxDuration: 8,
minDuration: 5,
operateType: '0205',
skinCode: '03',
trainingName: '关闭信号({5} )',
trainingRemark: '关闭信号',
trainingType: '02',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' },
{ deviceType: '04', orderNum: 2, operateCode: '2994', tip: '鼠标左键点击【信号机】', codeType:'SIGNAL'}
]
},
{
maxDuration: 8,
minDuration: 5,
operateType: '0205',
skinCode: '03',
trainingName: '取消进路({5} )',
trainingRemark: '取消进路',
trainingType: '02',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' },
{ deviceType: '04', orderNum: 2, operateCode: '2994', tip: '鼠标左键点击【信号机】', codeType:'SIGNAL'}
]
},
{
maxDuration: 8,
minDuration: 5,
operateType: '0201',
skinCode: '03',
trainingName: '进路建立({3})',
trainingRemark: '进路建立',
trainingType: '02',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3010', tip: '鼠标左键点击【排列进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3010', tip: '鼠标左键点击【始端信号机】', codeType:'SIGNAL'},
{ deviceType: '04', orderNum: 3, operateCode: '3010', tip: '鼠标左键点击【终端信号机】', codeType:'SIGNAL'}
]
},
// 自动折返 (暂时没有)
// 取消自动折返 (暂时没有)
// 引导信号 (暂时没有)
// 取消引导信号 (暂时没有)
{
// 暂时没有
maxDuration: 15,
minDuration: 8,
operateType: '0801',

View File

@ -263,6 +263,9 @@ export default {
this.showSelectStation && this.setStationList(val);
},
'$store.state.training.offsetStationCode': function(code) {
if (code) {
this.setCenter(code);
}
if (code && this.showSelectStation) {
const deviceModel = this.$store.getters['map/getDeviceByCode'](code);
if (deviceModel._type == 'Section' || deviceModel._type == 'Switch' || deviceModel._type == 'Signal' || deviceModel._type == 'Switch') {

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB