Buenas, tengo una duda, haber si alguien experimentado puede ayudarme, estoy intentando setear un bit de una variable INT a 0|1 pero no lo consigo con la formula tradicional de C, tengo unas funciones que lo hacen en C pero no me funcionan, supongo que en bennu hay que hacerlo de una manera similar pero no igual..
Alguien puede ponerme un ejemplo de como setear un bit a 0 o 1 de un INT?
Esto es para un nuevo tutorial de la PhysicsMotionAPI donde voy a explicar como se usan los layers en chipmunk y como hay que hacer para aprobecharlos, pero no puedo setear los bits de la variable 'LPHYSICS.LAYERS' correctamente.
Gracias de antemano.
http://wiki.bennugd.org/index.php?title=Bit_flags
He visto esto, no se si te ayudará, yo me he tirado 10 minutos leyéndolo y no me he enterado de nada. Suerte.
No deberias sumar el valor del bit (1,2,4,8,etc) ?
y para consultaro usar el and, or, xor binario...
Quote from: laghengar on June 06, 2013, 07:38:18 PM
http://wiki.bennugd.org/index.php?title=Bit_flags (http://wiki.bennugd.org/index.php?title=Bit_flags)
He visto esto, no se si te ayudará, yo me he tirado 10 minutos leyéndolo y no me he enterado de nada. Suerte.
Gracias lagengar, lo había visto pero pensaba que no era lo que necesitaba, pero ahora al releerlo si que me he dado cuenta de que muestra los ejemplos de como acceder a los BITS con operadores binarios.
Gracias por abrirme los ojos jeje.. voy a grabar el vídeo de los layers y a colgar el nuevo tutorial de chipmunk en bennu, creo que esto le va a interesar a mas de uno.. muestra como atravesar plataformas durante un salto ;)
Gracias de nuevo, es justo lo que necesitaba para añadir esto al api de física:
//.............................................................
//......................LAYER SETTER...........................
//.............................................................
function Physics_entity_set_layer(int id_, int layer_, int status_);
begin
if (status_)
id_.lphysics.layers|= 1<<layer_;
else
id_.lphysics.layers&= ~(1<<layer_);
end
return(0);
end
//.............................................................
//......................LAYER GETTER...........................
//.............................................................
function Physics_entity_get_layer( int id_, int layer_ );
begin
if( (id_.lphysics.layers&(1<<layer_)) == 0 )
return(false);
else
return(true);
end
end
//......................LAYER RESET............................
function Physics_entity_reset_layers();
begin
father.lphysics.layers = 0;
return(0);
end
//.............................................................
De ná hombre, aquí estamos :)