erkosone wrote:Ya lo se CicTec, pero si te digo la verdad los priority nunca tuvieron mucho sentido para mi, siempre programé sin ellos y nunca me hicieron falta, muchas veces si que los necesitaba al principio por que no sabia como ordenar de otra manera las ejecuciones del codigo, pero al final entendí como hacerlo y no los necesito.
erkosone wrote:Sobre el error que tengo ahora mismo.. es por que no se eliminar correctamente objetos de un vector desde el interior de un bucle for que recorre al vector, esto me provoca fallos y tengo que averiguar como hacerlo bien..
osea.. lo que estoy haciendo es basicamente esto:
int iterator = 0; for(auto s : sprites){ // execute batch game sprites.. s->render(); s->frame(); if(!s->live) { // check if sprite needs dead.. if(s->body_created){ cpShapeDestroy(s->shape); cpBodyDestroy(s->body); } //sprites.erase( begin(sprites)+iterator ); iterator++; } }
La linea que tengo comentada es la que me da el crash.. entiendo que cuando elimino un sprite del vector sprites, el tamaño del vector cambia y no solo eso.. los objetos se reordenan.. y esto me provoca casi seguro un acceso fuera de rango o algo peor..
En java este tipo de cosas es automatico pero en C++ hay que ser cuidadoso por lo que me parece..
Estoy buscando la forma de recorrer el vector de procesos y eliminar los que estan marcados con live=false;
Se te ocurre como hacerlo bien y eficientemente? puedo hacer una chapuza.. pero no quiero.. tiene que haber una forma normal de hacerlo.
erkosone wrote:Ya te digo, que lo que tu comentas es lo ideal, pero es lento y se puede esquivar facilmente jugando solo con las Z y creando un proceso padre que ordena a los procesos que quieres ordenar con priority, así te ahorras todas esas escaneadas de procesos continuamente y el performance es muy superior.
Igualmente gracias por la info, me viene muy bien saber todo esto
Users browsing this forum: No registered users and 21 guests