-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
96 lines (86 loc) · 2.04 KB
/
server.js
File metadata and controls
96 lines (86 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var path = require('path');
var UUID = require('node-uuid');
var boid = require('./boid');
var vector = require('./vector');
var addon = require('./build/Release/addon');
var obj = new addon.Boids();
var objList = {};
var keys = [];
var time = new Date().getTime();
function gameLoop(){
var now = new Date().getTime();
if (time + 66 < now){
var delta = now-time;
objList = obj.getNextFrame(delta,keys);
time=now;
//console.log(keys);
//console.log(objList);
}
if(now-time<16){
setTimeout(gameLoop);
} else {
setImmediate(gameLoop);
}
}
setImmediate(gameLoop);
var index=0;
var sendSize=25;
app.get('/boid.js', function(req,res){
res.sendFile(__dirname+'/boid.js');
});
app.get('/vector.js', function(req,res){
res.sendFile(__dirname+'/vector.js');
});
app.get('/', function(req,res){
res.sendFile(__dirname+'/index.html');
});
io.on('connection', function(socket){
socket.userid = UUID();
socket.emit('onconnected', {id: socket.userid});
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
socket.on('total', function(msg){
socket.emit('total', objList);
});
socket.on('click', function(msg){
console.log('click');
io.emit('click',msg);
});
socket.on('keypress', function(msg){
if(keys.indexOf(msg)<0){
keys.push(msg);
}
});
socket.on('keyrelease', function(msg){
var loc = keys.indexOf(msg);
if(loc>=0){
keys.splice(loc,1);
}
});
socket.on('frame', function(msg){
//gameLoop();
var data = {};
for (var i=0;i<sendSize;i++){
data["Boid"+(index+i)]=objList["Boid"+(index+i)];
//console.log("Boid"+(index+i));
}
data["Player"]=objList["Player"];
//console.log(data["Player"].angle);
//console.log(data);
index+=sendSize;
index%=700;
socket.emit('data', data);
});
/*function sendLoop(){
io.emit('data',objList);
}
setInterval(sendLoop,66)*/
});
http.listen(3000, function(){
console.log('listening on 3000');
});