2015-06-09 17:40:58 +02:00
|
|
|
var fs = require('fs');
|
|
|
|
var sleep = require('sleep');
|
2015-06-11 10:12:50 +02:00
|
|
|
var geo = require('./geo/Mesh.js');
|
2015-06-09 17:40:58 +02:00
|
|
|
|
2015-06-10 14:31:16 +02:00
|
|
|
function parseLine(line) {
|
|
|
|
var elts = line.split(' ');
|
|
|
|
if (elts[0] === 'v') {
|
|
|
|
|
|
|
|
return [
|
|
|
|
'v',
|
|
|
|
parseFloat(elts[1]),
|
|
|
|
parseFloat(elts[2]),
|
|
|
|
parseFloat(elts[3])
|
|
|
|
];
|
|
|
|
|
|
|
|
} else if (elts[0] === 'f') {
|
|
|
|
|
|
|
|
var tmp = [
|
|
|
|
'f',
|
|
|
|
parseInt(elts[1]) - 1,
|
|
|
|
parseInt(elts[2]) - 1,
|
|
|
|
parseInt(elts[3]) - 1
|
|
|
|
];
|
|
|
|
|
|
|
|
if (elts[4]) {
|
|
|
|
tmp.push(parseInt(elts[4]) - 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
return tmp;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-06-09 17:40:58 +02:00
|
|
|
module.exports = function(io) {
|
|
|
|
io.on('connection', function(socket) {
|
2015-06-10 11:24:59 +02:00
|
|
|
|
|
|
|
var index = 0;
|
|
|
|
var vIndex = 0;
|
|
|
|
var fIndex = 0;
|
2015-06-11 10:12:50 +02:00
|
|
|
var mesh;
|
2015-06-10 11:24:59 +02:00
|
|
|
|
2015-06-10 11:59:02 +02:00
|
|
|
// console.log(socket.conn.remoteAddress + " connected !");
|
2015-06-09 17:40:58 +02:00
|
|
|
|
2015-06-11 11:05:05 +02:00
|
|
|
// socket.on('disconnect', function() {
|
|
|
|
// console.log(socket.conn.remoteAddress + " disconnected !");
|
|
|
|
// });
|
2015-06-09 17:40:58 +02:00
|
|
|
|
|
|
|
socket.on("request", function(res) {
|
2015-06-10 11:59:02 +02:00
|
|
|
// console.log('Asking for static/data/spheres/' + res + '.obj');
|
2015-06-09 17:40:58 +02:00
|
|
|
|
2015-06-11 10:12:50 +02:00
|
|
|
var path = 'static/data/spheres/' + res + '.obj';
|
2015-06-10 11:24:59 +02:00
|
|
|
|
2015-06-11 10:12:50 +02:00
|
|
|
mesh = new geo.MeshStreamer(path, function() {
|
|
|
|
socket.emit('ok');
|
2015-06-11 11:05:05 +02:00
|
|
|
|
|
|
|
// console.log("Display mesh !");
|
|
|
|
// for (var i = 0; i < mesh.orderedElements.length; i++) {
|
|
|
|
// console.log(mesh.orderedElements[i].toString());
|
|
|
|
// }
|
|
|
|
|
2015-06-11 10:12:50 +02:00
|
|
|
});
|
2015-06-11 11:05:05 +02:00
|
|
|
|
2015-06-10 11:24:59 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
socket.on('next', function() {
|
2015-06-11 10:12:50 +02:00
|
|
|
var toSend = [];
|
|
|
|
var elt;
|
2015-06-11 10:16:59 +02:00
|
|
|
|
|
|
|
for (var limit = mesh.index + 200; mesh.index < limit; mesh.index++) {
|
|
|
|
|
|
|
|
elt = mesh.orderedElements[mesh.index];
|
2015-06-11 10:12:50 +02:00
|
|
|
|
|
|
|
if (elt) {
|
2015-06-11 10:16:59 +02:00
|
|
|
elt.sent = true;
|
2015-06-11 10:12:50 +02:00
|
|
|
toSend.push(elt.toList());
|
|
|
|
} else {
|
|
|
|
break;
|
2015-06-10 11:50:47 +02:00
|
|
|
}
|
2015-06-11 10:16:59 +02:00
|
|
|
|
2015-06-11 10:12:50 +02:00
|
|
|
}
|
2015-06-10 14:48:11 +02:00
|
|
|
|
2015-06-11 10:12:50 +02:00
|
|
|
socket.emit('elements', toSend);
|
2015-06-09 17:40:58 +02:00
|
|
|
|
2015-06-11 10:12:50 +02:00
|
|
|
if (!elt) {
|
|
|
|
socket.disconnect();
|
|
|
|
}
|
2015-06-10 11:24:59 +02:00
|
|
|
|
2015-06-09 17:40:58 +02:00
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|