128 lines
3.1 KiB
JavaScript
128 lines
3.1 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
let Converter = {
|
|
sourcePath: __dirname + '/' + process.argv[2],
|
|
destPath: __dirname + '/' + process.argv[3],
|
|
|
|
start() {
|
|
this.traversalDir(this.sourcePath, this.destPath);
|
|
},
|
|
|
|
// 遍历文件夹找到
|
|
traversalDir: function(srcDir, destDir) {
|
|
let files = [];
|
|
if ( fs.existsSync(srcDir) ) { //判断给定的路径是否存在
|
|
files = fs.readdirSync(srcDir); //返回文件和子目录的数组
|
|
for (let i = 0, len = files.length; i < len; i++) {
|
|
let file = files[i];
|
|
let curPath = path.join(srcDir, file);
|
|
|
|
fs.readFile(curPath, (err, data) => {
|
|
if (err) {
|
|
console.error(err);
|
|
return;
|
|
}
|
|
|
|
console.log('Success to read file: ' +curPath);
|
|
|
|
let str = this.writePath(data);
|
|
if (str && str.length > 0) {
|
|
let destFile = path.join(destDir, file);
|
|
fs.writeFile(destFile, str, (err) => {
|
|
if (err) {
|
|
console.error(err);
|
|
return;
|
|
}
|
|
console.log('Success to write file: ' +destFile);
|
|
});
|
|
}
|
|
});
|
|
|
|
}
|
|
}
|
|
return files;
|
|
},
|
|
|
|
writePath(data) {
|
|
if (!data || data.length <= 0) {
|
|
cc.warn('writePath: path is invalid');
|
|
return '';
|
|
}
|
|
|
|
let str = '';
|
|
try {
|
|
let paths = JSON.parse(data);
|
|
str = '{';
|
|
for (let i = 0, len = paths.length; i < len; i++) {
|
|
let path = paths[i];
|
|
str += '"' + path.pathId + '":';
|
|
str += '"' + path.speeds.join('|') + ';';
|
|
str += this.writePoints(path.points) + ';';
|
|
if (!path.ctrls) {
|
|
str += path.type + '"';
|
|
} else {
|
|
str += path.type + ';';
|
|
str += this.writeCtrls(path.ctrls) + '"';
|
|
}
|
|
if ((i+1) < len) {
|
|
str += ',';
|
|
}
|
|
}
|
|
str += '}';
|
|
} catch(e) {
|
|
cc.error('writePath: error to format path');
|
|
}
|
|
|
|
return str;
|
|
},
|
|
|
|
writePoints(arr) {
|
|
if (!arr || arr.length <= 0) {
|
|
cc.warn('writePoint: arr is invalid');
|
|
return '';
|
|
}
|
|
|
|
let str = '';
|
|
try {
|
|
for (let i = 0, len = arr.length; i < len; i++) {
|
|
let pt = arr[i];
|
|
str += pt.x + ',' + pt.y;
|
|
if ((i+1) < len) {
|
|
str += '|';
|
|
}
|
|
}
|
|
} catch(e) {
|
|
cc.error('writePoints: error to format points');
|
|
}
|
|
|
|
return str;
|
|
},
|
|
|
|
writeCtrls(arr) {
|
|
if (!arr || arr.length <= 0) {
|
|
cc.warn('writeCtrls: arr is invalid');
|
|
return '';
|
|
}
|
|
|
|
let str = '';
|
|
try {
|
|
for (let i = 0, len = arr.length; i < len; i++) {
|
|
let pt = arr[i];
|
|
str += pt.x + ',' + pt.y + ',' + pt.z + ',' + pt.w;
|
|
if ((i+1) < len) {
|
|
str += '|';
|
|
}
|
|
}
|
|
} catch(e) {
|
|
cc.error('writeCtrls: error to format ctrls');
|
|
}
|
|
|
|
return str;
|
|
}
|
|
};
|
|
|
|
module.exports = Converter;
|
|
|
|
Converter.start();
|