Hola Spiderman.
Si, para cargar un escenario seria con sceneLoad( String fileName ) donde fileName es la ruta a un archivo .cpt.
Me encuentro creando el motor de carga para los escenarios jeje.. en cuanto esté creado lo cuelgo, estoy teniendo un ligero contratiempo con la JBox2D ya que con la ChipMunk Physics es muy sencillo crear "lineas" y añadirlas al mundo, pero con la jBox2D no es exactamente el mismo resultado, la respuesta de fisica se aplica por una cara, pero por la otra sucede que los objetos se atraen y salen disparados hacia la normal de la cara que tiene la respuesta de colisión.
Solución?: crear cajas finas en vez de lineas?
Contratiempo?: las cajas hay que colocarlas en el centro del segmento y rotarlas al algulo que forma p1 con p2..
Contratiempo extra?: aveces p1 forma un angulo contra p2 que se encuentra en el tercer cuadrante, y hay que invertir el sentido del angulo obtenido..
Estoy en ello, ya me queda poco, tengo solucionado el tema de los angulos en 3 de los 4 cuadrantes, en cuanto lo tenga al completo actualizo la librería y ejemplo de video juego al canto
Esto es en lo que estoy currando:
void loadScene( String fileName ){
String[] lines = loadStrings(fileName);
//FPoly p = new FPoly();
//p.setStatic(true);
for(int i=0; i<lines.length-1; i++){
String[] itemA = split(lines[i], ' '); // recojer valores del punto..
int x0 = int(itemA[0]); // cast a int..
int y0 = int(itemA[1]); // cast a int..
String[] itemB = split(lines[i+1], ' '); // recojer valores del punto..
int x1 = int(itemB[0]); // cast a int..
int y1 = int(itemB[1]); // cast a int..
// crear poligono??
// primer vector debera ser cero..
// segundo vector debera ser diferente de cero..
//-----------------------------------------------------
//-----------------------------------------------------
if(x0==0 && y0==0){
if(x1!=0 && y1!=0){
// aqui empieza un poligono..
}
}
//-----------------------------------------------------
//-----------------------------------------------------
if(x0!=0 && y0!=0){
if(x1!=0 && y1!=0){
// aqui se traza el poligono..
float dist = sqrt((x0-x1)*(x0-x1) + (y0-y1)*(y0-y1)); // largo de la caja..
FBox b = new FBox( dist, 3 ); // el ancho siempre es 3 pixels..
float xa,xb,ya,yb;
if(x0<x1){
xa = x0;
xb = x1;
}else{
xa = x1;
xb = x0;
}
if(y0<y1){
ya = y0;
yb = y1;
}else{
ya = y1;
yb = y0;
}
float dx = xb-xa;
float dy = yb-ya;
float x = xa + dx/2;
float y = ya + dy/2;
b.setPosition(x, y); // posicion central de la caja..
float angle = atan2( dy, dx );
println(degrees(angle), angle);
b.setRotation(angle); // angulo de la caja..
b.setStatic(true);
world.add(b);
}
}
//-----------------------------------------------------
//-----------------------------------------------------
if(x0!=0 && y0!=0){
if(x1==0 && y1==0){
// aqui se termina el poligono..
}
}
//-----------------------------------------------------
//-----------------------------------------------------
}
}
//------------------------------------------------------------
//------------------------------------------------------------