aşağıdaki 2 dosya, birinci Fizik/world.js adres:şey gerektiren dosya
var p2 = require('p2');
var pkg_world = require('../redis_pkgs/pkg_world.js');
var redisObjectMap = new Array(); // redis_id - world_id
var world = new p2.World({
gravity:[0,-9.82]
});
//el piso
var groundShape = new p2.Plane();
var groundBody = new p2.Body({
mass:0
});
groundBody.addShape(groundShape);
world.addBody(groundBody);
initWorld = pkg_world.initWorld(); //traigo el estado inicial de redis
initWorld.done(function(){
redisObjectMap = initWorld.valueOf();
});
var timeStep = 1/60;
setInterval(function(){
world.step(timeStep);
pkg_world.setWorld(world,redisObjectMap);
/* console.log(world.bodies[0].id);
console.log(world.bodies.length);*/
},1000 * timeStep);
module.exports = world;
ve redis_pkgs/pkg_world.js:
var client = require('../redisClient.js');
var p2 = require('p2');
var world = require('../Physics/world.js');
var q = require('q');
var D_object = require('../schemas/d_object_schema.js');
module.exports = {
initWorld: function(){
return q.Promise(function(resolve,reject){
var result = Array();
client.hvals('d_object',function(err,obj){
if(err){
reject(err);
}else{
var tmp;
obj.forEach(function(o){
tmp = JSON.parse(o);
var circleBody = new p2.Body({
mass:5,
position:[tmp.position.x,tmp.position.y]
});
var circleShape = new p2.Circle({radius:1});
circleBody.addShape(circleShape);
world.addBody(circleBody);
result[tmp.id] = world.bodies.length; // Mapeo al id del mundo asi despues acutualizo
});
resolve(result);
}
});
});
},
setWorld: function(redisObjectMap){
return q.Promise(function(resolve,reject){
redisObjectMap.forEach(function(world_id){
var object = new D_object({
id:redisObjectMap.indexOf(world_id),
position:{
x:world.bodies[world_id].position[0],
y:world.bodies[world_id].position[1]
}
});
console.log(JSON.stringify(object));
client.hset("d_object",object.id,JSON.stringify(object));
});
resolve();
});
}
}
sorun olduğunu ikinci dosya bana world.addBody'nin bir işlev olmadığını söyler ancak dünyayı ilk dosyadan dışa aktarır, bu yüzden ne yapıyorum ne yapıyorum ya da ne olduğunu anlamıyorum ne modül.exports anlamıyorum
İlk dosyanın Physics/world.js olduğunu varsayalım mı? Her bölüm için dosya adları burada yardımcı olabilir. –
evet, üzgünüm unuttum. Düzenledim –
Dairesel referanslar görüyorum. Ayrıca - world.js'de initWorld'ü bir parametre olarak "world" ile yapılandırıp pkg_world'de çalışacak şekilde içe aktarın. Dairesel referanslara sahip olmamak ve dünyayı pkg_world'deki param olarak ele almak mantıklı olmaz mıydı? Belki de burada bir şey özlüyorum. –