User Tag List

Resultados 1 al 5 de 5

Tema: S_SLEEP -> S_WAKEUP -> no colisiones

  1. #1

    Fecha de ingreso
    Aug 2003
    Ubicación
    Madrid (Getafe)
    Mensajes
    13,901
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    221
    Thanked in
    Agradecido 164 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    2

    S_SLEEP -> S_WAKEUP -> no colisiones

    tengo un proceso cursor_mouse.
    lo unico que hace es perseguir las coordenadas del mouse y poco mas.


    En un momento determinado le hago un S_SLEEP y arranco otro proceso window_mouse, que tiene el codigo practicamente igual.


    Todo va bien, hasta que mato S_KILL el window_mouse, y quiero despertar a mi viejo amigo cursor_mouse.

    Se despierta, se mueve bien, se dibuja, persigue al raton e incluso es capaz de detectar colisiones contra otros procesos.

    Problema, los otros procesos no detectan colisiones contra el
    Alguna idea?
    Aiken
    < - >
    Código:
    if (collision(type cursor_mouse))
      drawing_color(rgb(250,250,250));
      write(0,0,0,0,"CURSOR_MOUSE encima mio");
      circleid = draw_circle(x,y,100);
    end
    Si detecta colisiones.
    En el ejemplo el texto lo veo, pero el circulo no lo dibuja o no lo veo

    El problema es el drawing_map().
    Si le pongo un drawing_map(0,0) lo dibuja pero luego no consigo borrar los circulos con delete_draw(circleid)

    donde dibuja por defecto cuando se llama a la funcion circle desde un proceso y sin haber especificado ningun drawing_map?

    EDIT. Lo he "solucionado" poniendo un drawing_z(-5); pero no se si es la forma correcta. Por lo que ve en la documentacion ocurre porque cuando llamas en algun otro punto del codigo a drawing_map las primitivas cambian a un modo con Z y dejan de dibujarse encima de todo que es el modo standard, pero no se como volver al modo "standard", salvo con el drawing_z(-5), es correcto?

    Código:
    if (collision(type cursor_mouse))
      drawing_z(-5)
      drawing_color(rgb(250,250,250));
      write(0,0,0,0,"CURSOR_MOUSE encima mio");
      circleid = draw_circle(x,y,100);
    end

    Aiken
    Última edición por Aiken; 16/10/2009 a las 03:25 Razón: Edición automática anti doble-post.

  2. #2

    Fecha de ingreso
    Sep 2005
    Mensajes
    15,202
    Mencionado
    247 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    675
    Agradecer Thanks Received 
    1,847
    Thanked in
    Agradecido 1,264 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por Aiken Ver mensaje
    donde dibuja por defecto cuando se llama a la funcion circle desde un proceso y sin haber especificado ningun drawing_map?
    El mapa por defecto en el que dibuja es el FILE=0, GRAPH=0, correspondiente al fondo de pantalla.

    Cita Iniciado por Aiken Ver mensaje
    EDIT. Lo he "solucionado" poniendo un drawing_z(-5); pero no se si es la forma correcta. Por lo que ve en la documentacion ocurre porque cuando llamas en algun otro punto del codigo a drawing_map las primitivas cambian a un modo con Z y dejan de dibujarse encima de todo que es el modo standard, pero no se como volver al modo "standard", salvo con el drawing_z(-5), es correcto?

    Código:
    if (collision(type cursor_mouse))
      drawing_z(-5)
      drawing_color(rgb(250,250,250));
      write(0,0,0,0,"CURSOR_MOUSE encima mio");
      circleid = draw_circle(x,y,100);
    end

    Aiken
    Creo que el problema que tienes es porque el fondo de pantalla está más al fondo que el resto de procesos, creo que tenía una Z de 512 (no estoy seguro, habría que mirarlo). Cuando un proceso se crea, por defecto tiene una Z=0, por eso se ve siempre sobre el fondo.
    No se si eso que haces está bien o no, no he usado drawing_z, pero parece correcto. Pero si te quieres asegurar, lo suyo sería crear un nuevo mapa, especificar que se va a dibujar en el, y tenerlo en un proceso con una Z baja.
    Pero si funciona drawing_z no veo por qué tendrías que hacerlo.
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  3. #3

    Fecha de ingreso
    Aug 2003
    Ubicación
    Madrid (Getafe)
    Mensajes
    13,901
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    221
    Thanked in
    Agradecido 164 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    2
    la pregunta es : las funciones de primitivas graficas, por defecto, a que profundidad grafica dibujan? porque lo que me ha pasado es que al usar drawing_map desde otro proceso creo que se me han cambiado los valores por defecto genericos que usan cuando no especificas nada.

    en realidad es por saber como funciona por dentro o porque es que me haya cogido otra z, supongo que habra cogido la z del proceso que hizo el ultimo drawing_map o algo asi.

    Pero bueno, gracias por tu ayuda como siempre cada dia aprendemos algo nuevo.
    Aiken

  4. #4

    Fecha de ingreso
    Sep 2005
    Mensajes
    15,202
    Mencionado
    247 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    675
    Agradecer Thanks Received 
    1,847
    Thanked in
    Agradecido 1,264 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por Aiken Ver mensaje
    la pregunta es : las funciones de primitivas graficas, por defecto, a que profundidad grafica dibujan? porque lo que me ha pasado es que al usar drawing_map desde otro proceso creo que se me han cambiado los valores por defecto genericos que usan cuando no especificas nada.

    en realidad es por saber como funciona por dentro o porque es que me haya cogido otra z, supongo que habra cogido la z del proceso que hizo el ultimo drawing_map o algo asi.

    Pero bueno, gracias por tu ayuda como siempre cada dia aprendemos algo nuevo.
    Aiken
    Lo que voy a decir es una suposición, no se basa en nada cierto, habría que conocerse el código de Fenix/Bennu para dar una respuesta o simplemente experimentar como estás haciendo.
    Creo que si dibujas sobre el fondo, por lo que he entendido del wiki de Bennu, las primitivas se dibujan con la Z que defines con drawing_z, como si fuera un proceso más.
    Pero esto no tiene sentido si dibujas sobre un gráfico, porque este estará asignado a un proceso con su propia Z, por lo que drawing_z no debería funcionar, y cada primitiva se dibujaría sobre la anterior en ese gráfico, y todas tendrían la Z del proceso.

    Yo, muchas de las preguntas que me hago experimento antes para ver el comportamiento (en realidad primero supongo su funcionamiento y luego lo compruebo). Tengo una carpeta llamada "pruebas" con unos 50 prgs para ver este tipo de cosas (quien tiene más prioridad si modificamos size y size_x con valores diferentes, cómo funciona fgets en cada version... cosas muy puntuales). Tambien pregunto en los foros, pero sólo cuando me impaciento o no tengo ganas de programar.
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  5. #5

    Fecha de ingreso
    Jul 2009
    Mensajes
    8,737
    Mencionado
    64 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    937
    Agradecer Thanks Received 
    571
    Thanked in
    Agradecido 345 veces en [ARG:2 UNDEFINED] posts
    si no mueves el objeto luego de hacer un wakeup, puede que en fenix no lo actualice... en bennu esas cosas se manejan bien... (espacio cedido para la publicidad... )

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •