Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: FreeYourMind on April 14, 2011, 03:20:06 PM

Title: Bug en la funcion BLUR dentro de LOOP
Post by: FreeYourMind on April 14, 2011, 03:20:06 PM
Hola, pienso que es un bug, la funcion BLUR si la llamamos para asignar un grafico dentro de un LOOP, devuelve siempre el grafico 1, aunque le pasemos otro id...

en el Main tenemos:

blur_letra_menu(FPG_Principal, 642, 160, 120);


que es esta:


PROCESS blur_grafico(file, grafico, x, y)
PRIVATE
intensidade = 3;

BEGIN
  z = -4;
  graph = grafico; //blur(file, grafico, intensidade);
  say(grafico);
  say(graph);
  LOOP
     //graph = blur(file, grafico, intensidade);
   graph = blur(file, 642, intensidade); // Bug Bennu ? Pinta siempre el grafico 1 el cual no asgnamos en ningun sitio
   //say(file);
   //say(grafico);

    FRAME (30); // Lento
  END
END
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: SplinterGU on April 14, 2011, 03:21:43 PM
quien te dijo que blur te devuelve un grafico???!!!!

blur trabaja sobre el mismo grafico que le pasas de parametro...

el bug esta en no leer la wiki o documentacion.
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: FreeYourMind on April 14, 2011, 03:27:03 PM
xDDDDDDDDDDDDDDDDDD

Y ya que estamos,en la wiki donde esta la info de esta funcion:

FILTER(INTEGER, INTEGER, POINTER)
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: FreeYourMind on April 14, 2011, 03:32:30 PM
Vale, he corregido el ejemplo, mi pregunta es, porque despues de tener intensidade = 0, que se corresponde con BLUR_NORMAL, en los siguientes frames el grafico continua siendo afectado hasta que desaparece por completo ?

(Por cierto os estoy pasando un ejemplo sencillo y cojonudo de efectos :D)

PROCESS blur_grafico(file, grafico, x, y)
PRIVATE
intensidade = 3;

BEGIN
 z = -4;
 graph = grafico;
 blur(file, grafico, intensidade);

 LOOP
 
   intensidade--;
IF (intensidade <= 0) intensidade = 0; END

blur(file, grafico, intensidade);

say(intensidade);

   FRAME (600); // Lento
 END
END
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: SplinterGU on April 14, 2011, 06:56:12 PM
y... partiendo de la base que el grafico source es el mismo que se modifica y si pones el efecto en un loop, es logico que se vaya siendo afectado hasta desaparecer...
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: FreeYourMind on April 14, 2011, 09:56:42 PM
Claro, que tonto soy, me estan afectando tantas horas delante del ordenador, estoy seriamente pensando en dejarlo xD

Y un ejemplo de FILTER donde lo puedo encontrar ?

No se puede aplicar efectos de blur a fuentes en loop tambien ? Las ttf lo permitian ? (a ver si josebita se pronuncia)
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: FreeYourMind on April 21, 2011, 05:28:46 PM
Tengo un problema/duda:

Como restauro de nuevo el grafico en memoria a su estado original despues de aplicarle el efecto blur (en un proceso que despues ya no existe), de forma a poder utilizar ese gráfico despúes en otros sitios del programa ?
(sin la solución de descargar y volver a cargar el mapa del fpg)
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: SplinterGU on April 21, 2011, 09:40:11 PM
no necesitas descargarlo, con cargarlo, ya te basta.
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: FreeYourMind on April 21, 2011, 09:43:48 PM
Pero lo voy a tener que cargar mas veces ? No hay forma de resetear su estado ?
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: SplinterGU on April 21, 2011, 09:53:36 PM
te lo respondo con una pregunta.

si esculpis (no confundir con escupir) una piedra con un cincel, luego de finalizar tu trabajo, podes volver a restaurar la pierda a su estado original?

porque eso es exactamente lo que haces con blur, esculpir el mapa.
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: Drumpi on April 22, 2011, 05:05:39 PM
Para eso, mejor que clones el mapa y le hagas el blur al clon.
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: SplinterGU on April 22, 2011, 05:27:03 PM
Quote from: Drumpi on April 22, 2011, 05:05:39 PM
Para eso, mejor que clones el mapa y le hagas el blur al clon.

;) :D

sobraba el comentario me parece... :D
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: FreeYourMind on April 22, 2011, 06:09:31 PM
Siguiendo esa filosofia Splinter ya ni necesitamos pedirte nada mas para Bennu  ;D

Y clonando el mapa, imaginate que vuelvo a poner el proceso de nuevo en el juego, tengo que estar siempre creando nuevos mapas xDDD No me queda otra que separar esos graficos en un fpg chiquito y cargar/descargar en cada modificacion de blur...

Se agradeceria un ejemplo mister Drumpi  :D
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: SplinterGU on April 22, 2011, 10:16:34 PM
tienes miles de formas de hacerlo, lo importante es que si no entendes el comportamiento del blur (y cualquier otra de la libreria effects) vas a estar preguntando estas cosas sin sentido...

tu pregunta es lo mismo que preguntar, "como hago para volver a tener el grafico original despues de hacer un UNLOAD_MAP o DRAWING_MAP+MAP o un MAP_PUT, etc?" es exactamente lo mismo, una vez que alteras el grafico original no hay forma de restaurarlo sino lo preservaste antes o si no lo volves a cargar, y no necesitas tener el original 100 mil veces guardado, con guardarlo 1 sola vez y clonarlo las que necesites es mas que suficiente.
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: Drumpi on April 22, 2011, 10:42:48 PM
Quote from: SplinterGU on April 22, 2011, 05:27:03 PM
Quote from: Drumpi on April 22, 2011, 05:05:39 PM
Para eso, mejor que clones el mapa y le hagas el blur al clon.

;) :D

sobraba el comentario me parece... :D

Vistas las preguntas que se hacen últimamente, creo que la aclaración de que existe una función para CLONAR mapas no sobra :P

Free, si tienes cargado el FPG, y el proceso lo usa, significa que has guardado el ID del FPG en una variable ¿Es que cargas el FPG en ese proceso? En ese caso te recomiendo que hagas la carga y descargas de gráficos, así como de sonidos y demás, en el proceso "padre", entendiendo como "padre" al proceso que controla la acción de los demás procesos. Puede ser el main, o el proceso "juego" o el proceso "jugar_nivel".

Y al igual que cargas el FPG en una variable global, puedes crear el clon del gráfico en una variable global. Recuerdo que no es necesario asignarla a un FPG de memoria, ya que los mapas creados durante la ejecución pertenecen al FPG cero, y tienen IDs superiores al 1000 (pero no se sabe cual).
Title: Re: Bug en la funcion BLUR dentro de LOOP
Post by: SplinterGU on April 22, 2011, 11:04:28 PM
Quote from: Drumpi on April 22, 2011, 10:42:48 PM
Quote from: SplinterGU on April 22, 2011, 05:27:03 PM
Quote from: Drumpi on April 22, 2011, 05:05:39 PM
Para eso, mejor que clones el mapa y le hagas el blur al clon.

;) :D

sobraba el comentario me parece... :D

Vistas las preguntas que se hacen últimamente, creo que la aclaración de que existe una función para CLONAR mapas no sobra :P

tienes razon.