Collision d'objets

0 views
Skip to first unread message

JMD

unread,
Nov 24, 2009, 8:27:40 AM11/24/09
to freebox-elixir
Bonjour,

Je débute vraiment avec Elixir et Evas & Co, et je voulais savoir s'il
est possible de définir une action lorsque deux objets se rencontrent.
Par exemple avec le Simple.js, si on fait deux carrés qui se touchent,
y-a-til possibilité de lancer une fonction ?

Merci pour votre aide,

JMD

Cedric BAIL

unread,
Nov 24, 2009, 8:49:49 AM11/24/09
to freebox...@googlegroups.com
2009/11/24 JMD <jeanmat...@gmail.com>:

> Je débute vraiment avec Elixir et Evas & Co, et je voulais savoir s'il
> est possible de définir une action lorsque deux objets se rencontrent.
> Par exemple avec le Simple.js, si on fait deux carrés qui se touchent,
> y-a-til possibilité de lancer une fonction ?

Nop pas de callback pour l'instant sans un moteur de physique/collision.

Il y a plusieurs possibilite pour implementer ca.

Tu peux implementer ca en utilisant la fonction :
evas_objects_in_rectangle_get(Evas, X, Y, W, H, include_pass_events,
include_hidden) . Elle retournera null, si il n'y aucun objet a cet
endroit, et un array d'Evas_Object, si elle trouve quelque chose.

Tu peux aussi avoir une liste des objets se trouvant dans ton monde et
comparer leur geometrie directement sans faire appel aux EFL.
--
Cedric BAIL

del65

unread,
Nov 24, 2009, 1:05:50 PM11/24/09
to freebox-elixir
Et avec Edje il n'y a pas moyen de détecter la collision entre
composants ?

Laurent Asfaux

On 24 nov, 14:49, Cedric BAIL <moa.blueb...@gmail.com> wrote:
> 2009/11/24 JMD <jeanmatthie...@gmail.com>:

Cedric BAIL

unread,
Nov 25, 2009, 4:13:55 AM11/25/09
to freebox...@googlegroups.com
2009/11/24 del65 <ici...@gmail.com>:

> Et avec Edje il n'y a pas moyen de détecter la collision entre
> composants ?

Nop. Pas de maniere simple a ma connaissance.

--
Cedric BAIL

JMD

unread,
Nov 25, 2009, 4:45:06 PM11/25/09
to freebox-elixir
J'essaie d'utiliser evas_objects_in_rectangle_get().
En C, on récupère une structure avec trois pointeurs. Et avec Elixir ?

Y aura-t-il une API disponible dans un futur proche ? Car C != JS :(

Merci en tout cas !

Cedric BAIL

unread,
Nov 25, 2009, 4:47:13 PM11/25/09
to freebox...@googlegroups.com
2009/11/25 JMD <jeanmat...@gmail.com>:

> J'essaie d'utiliser evas_objects_in_rectangle_get().
> En C, on récupère une structure avec trois pointeurs. Et avec Elixir ?

En C, on recupere une liste d'Evas_Object. Et avec Elixir, un array
d'Evas_Object.

> Y aura-t-il une API disponible dans un futur proche ? Car C != JS :(

De quel API parles-tu ?
--
Cedric BAIL

JMD

unread,
Nov 25, 2009, 6:09:01 PM11/25/09
to freebox-elixir


On 25 nov, 22:47, Cedric BAIL <moa.blueb...@gmail.com> wrote:
> 2009/11/25 JMD <jeanmatthie...@gmail.com>:
>
> > J'essaie d'utiliser evas_objects_in_rectangle_get().
> > En C, on récupère une structure avec trois pointeurs. Et avec Elixir ?
>
> En C, on recupere une liste d'Evas_Object. Et avec Elixir, un array
> d'Evas_Object.
C'est ce que j'avais cru comprendre, mais j'ai essayé de faire :
var infos = evas_objects_in_rectangle_get(g_evas, x, y, 2, 10, 1, 0);
elx.print((infos.length) + "\n");

Sachant que mes x, y et g_evas sont bien déclarés. Je lance mon
programme, j'appuie sur la touche qui déclenche le test et... bim !
la méthode d'animation s'arrête mais pas un seul message d'erreur...

J'essaie de faire une sorte de jeu de tir et je ne vais pas référencer
tous les objets qui se baladerons (faudrait référencer tous les
pixels !) donc il faut absolument que j'arrive à utiliser cette
méthode...

Merci :)

>
> > Y aura-t-il une API disponible dans un futur proche ? Car C != JS :(
>
> De quel API parles-tu ?
Fatigué je me trompe de mots :)
Je voulais parler d'une doc contenant toutes les déclarations de
méthodes et retours comme les .h mais en plus documenté (avec exemples
tant qu'à faire :D)
> --
> Cedric BAIL

Cedric BAIL

unread,
Nov 26, 2009, 4:41:32 AM11/26/09
to freebox...@googlegroups.com
2009/11/26 JMD <jeanmat...@gmail.com>:

> On 25 nov, 22:47, Cedric BAIL <moa.blueb...@gmail.com> wrote:
>> 2009/11/25 JMD <jeanmatthie...@gmail.com>:
>>
>> > J'essaie d'utiliser evas_objects_in_rectangle_get().
>> > En C, on récupère une structure avec trois pointeurs. Et avec Elixir ?
>>
>> En C, on recupere une liste d'Evas_Object. Et avec Elixir, un array
>> d'Evas_Object.
> C'est ce que j'avais cru comprendre, mais j'ai essayé de faire :
> var infos = evas_objects_in_rectangle_get(g_evas, x, y, 2, 10, 1, 0);
> elx.print((infos.length) + "\n");

Pour eviter de creer un objet array quand la liste est vide, je
retourne 'null', il te faut donc faire un truc plutot comme ca :
elx.print((infos != null ? infos.length : "0") + "\n");

D'ailleur, tu peux aussi appeler :
var infos = evas_objects_in_rectangle_get(g_evas, x, y, 2, 10, true, false);

Ca revient au meme, mais c'est plus explicite quand a la lecture des parametres.

> Sachant que mes x, y et g_evas sont bien déclarés. Je lance mon
> programme,  j'appuie sur la touche qui déclenche le test et... bim !
> la méthode d'animation s'arrête mais pas un seul message d'erreur...

Oui, j'ai un bug, je ne sais pas pourquoi il ne reporte plus d'erreur
lors d'un mauvais passage de parametre. Il va falloir que je regarde.

> J'essaie de faire une sorte de jeu de tir et je ne vais pas référencer
> tous les objets qui se baladerons (faudrait référencer tous les
> pixels !) donc il faut absolument que j'arrive à utiliser cette
> méthode...

Euh, je ne pense pas que la Freebox puisse animer tous les pixels :-)
Si tu me decris un peu le principe de ce que tu veux faire, je
pourrais peut-etre t'aider/t'aiguiller un peu.

>> > Y aura-t-il une API disponible dans un futur proche ? Car C != JS :(
>>
>> De quel API parles-tu ?
> Fatigué je me trompe de mots :)
> Je voulais parler d'une doc contenant toutes les déclarations de
> méthodes et retours comme les .h mais en plus documenté (avec exemples
> tant qu'à faire :D)

Bien d'accord, malheureusement, je n'ai pas assez de temps pour faire
ca. Desole.
--
Cedric BAIL

nouknouk

unread,
Nov 26, 2009, 5:33:18 AM11/26/09
to freebox-elixir


On 26 nov, 00:09, JMD <jeanmatthie...@gmail.com> wrote:
> Je voulais parler d'une doc contenant toutes les déclarations de
> méthodes et retours comme les .h mais en plus documenté (avec exemples
> tant qu'à faire :D)

A noter que ça rejoint la demande déjà formulée dans les 'issues' :
http://code.google.com/p/freebox-elixir/issues/detail?id=5

JMD

unread,
Nov 26, 2009, 8:48:15 AM11/26/09
to freebox-elixir
J'ai fait un petit exemple avec deux carrés qui se rentrent dedans
basé sur un Simple.js. Comme cela de marchait pas, j'ai rajouté des
petits carrés qui notent les test (en vert).

http://dl.free.fr/hybzpYEaA
(dsl je n'ai pas d'accès FTP perso sous la main)

Dans mon programme final, il y aura plein de carrés qui se déplaceront
et il sera difficile de répertorier tous les objets en mouvement.

On 26 nov, 10:41, Cedric BAIL <moa.blueb...@gmail.com> wrote:
> 2009/11/26 JMD <jeanmatthie...@gmail.com>:

Cedric BAIL

unread,
Nov 26, 2009, 9:49:46 AM11/26/09
to freebox...@googlegroups.com
2009/11/26 JMD <jeanmat...@gmail.com>:

> J'ai fait un petit exemple avec deux carrés qui se rentrent dedans
> basé sur un Simple.js. Comme cela de marchait pas, j'ai rajouté des
> petits carrés qui notent les test (en vert).
>
> http://dl.free.fr/hybzpYEaA
> (dsl je n'ai pas d'accès FTP perso sous la main)

Ton code me semble bon, je regarde et essai de comprendre pourquoi ca fait ca.

> Dans mon programme final, il y aura plein de carrés qui se déplaceront
> et il sera difficile de répertorier tous les objets en mouvement.

Par contre, si je peux me permettre, la lecture de l'issue numero 3 et
des programmes d'exemples fournit, devrait peut-etre t'aider.

http://code.google.com/p/freebox-elixir/issues/detail?id=3

--
Cedric BAIL

Cedric BAIL

unread,
Nov 26, 2009, 9:57:32 AM11/26/09
to freebox...@googlegroups.com
2009/11/26 Cedric BAIL <moa.bl...@gmail.com>:

> 2009/11/26 JMD <jeanmat...@gmail.com>:
>> J'ai fait un petit exemple avec deux carrés qui se rentrent dedans
>> basé sur un Simple.js. Comme cela de marchait pas, j'ai rajouté des
>> petits carrés qui notent les test (en vert).
>>
>> http://dl.free.fr/hybzpYEaA
>> (dsl je n'ai pas d'accès FTP perso sous la main)
>
> Ton code me semble bon, je regarde et essai de comprendre pourquoi ca fait ca.

Ok, il y avait un bug dans evas. Corrige dans le svn r43999.

--
Cedric BAIL

JMD

unread,
Nov 26, 2009, 11:35:14 AM11/26/09
to freebox-elixir
Bon, je vais un peu mon boulet là... mais tu mets à jour le SVN de
Enlightenment ?
C'est donc à partir de ces sources qu'il faut recomplier et
réinstaller ? Ca ne pose pas de problème de faire un make / make
install par dessus une installation déjà présente sur le système ?

On 26 nov, 15:57, Cedric BAIL <moa.blueb...@gmail.com> wrote:
> 2009/11/26 Cedric BAIL <moa.blueb...@gmail.com>:
>
> > 2009/11/26 JMD <jeanmatthie...@gmail.com>:

Cedric BAIL

unread,
Nov 26, 2009, 11:38:42 AM11/26/09
to freebox...@googlegroups.com
2009/11/26 JMD <jeanmat...@gmail.com>:

> Bon, je vais un peu mon boulet là... mais tu mets à jour le SVN de
> Enlightenment ?
> C'est donc à partir de ces sources qu'il faut recomplier et
> réinstaller ? Ca ne pose pas de problème de faire un make / make
> install par dessus une installation déjà présente sur le système ?

Yep, le changement n'impact que Evas. Tu peux faire juste un svn up
sur ce bout la et faire un make/make install. Les autres dependences
ne sont pas impacte (et je n'ai pas vu de changement d'API dans Evas
qui pourrait forcer a mettre a jour Ecore/Edje/Elixir).
--
Cedric BAIL

JMD

unread,
Nov 26, 2009, 12:27:32 PM11/26/09
to freebox-elixir
On 26 nov, 17:38, Cedric BAIL <moa.blueb...@gmail.com> wrote:
> 2009/11/26 JMD <jeanmatthie...@gmail.com>:
Bon c'est trop compliqué pour moi faut faire des autogen avec des
messages d'erreurs de partout... des ./configuration et tjs des
erreurs...
Je voulais faire un make /make install tout simple mais il me dit
qu'il n'y a pas de cible trouvé. Quand je lui spécifie le Makefile.am,
il me dit qu'il n'y a rien à faire...

Cedric BAIL

unread,
Nov 26, 2009, 12:28:46 PM11/26/09
to freebox...@googlegroups.com
2009/11/26 JMD <jeanmat...@gmail.com>:

> On 26 nov, 17:38, Cedric BAIL <moa.blueb...@gmail.com> wrote:
>> 2009/11/26 JMD <jeanmatthie...@gmail.com>:
>>
>> > Bon, je vais un peu mon boulet là... mais tu mets à jour le SVN de
>> > Enlightenment ?
>> > C'est donc à partir de ces sources qu'il faut recomplier et
>> > réinstaller ? Ca ne pose pas de problème de faire un make / make
>> > install par dessus une installation déjà présente sur le système ?
>>
>> Yep, le changement n'impact que Evas. Tu peux faire juste un svn up
>> sur ce bout la et faire un make/make install. Les autres dependences
>> ne sont pas impacte (et je n'ai pas vu de changement d'API dans Evas
>> qui pourrait forcer a mettre a jour Ecore/Edje/Elixir).
>
> Bon c'est trop compliqué pour moi faut faire des autogen avec des
> messages d'erreurs de partout... des ./configuration et tjs des
> erreurs...
> Je voulais faire un make /make install tout simple mais il me dit
> qu'il n'y a pas de cible trouvé. Quand je lui spécifie le Makefile.am,
> il me dit qu'il n'y a rien à faire...

Tu t'es mis dans quel repertoire ? Tu as fais comment la premiere fois
pour recuperer Evas et tu as quoi comme message d'erreur exactement ?

--
Cedric BAIL

JMD

unread,
Nov 26, 2009, 12:43:31 PM11/26/09
to freebox-elixir
Alors le repository :
svn co http://svn.enlightenment.org/svn/e/trunk/evas

J'ai essayé make, ./autogen.sh
J'ai comparé au snapshot qui est sur le "google code" et j'ai vu qu'il
n'y a pas les mêmes fichiers (il n'y a pas les Makefile.in,
config.h.in, configure, config.sub, configure.ac...)

JMD

unread,
Nov 26, 2009, 12:45:20 PM11/26/09
to freebox-elixir
La première fois j'ai utilisé le easy-elixir.sh

On Nov 26, 6:43 pm, JMD <jeanmatthie...@gmail.com> wrote:
> Alors le repository :
> svn cohttp://svn.enlightenment.org/svn/e/trunk/evas

Cedric BAIL

unread,
Nov 26, 2009, 12:49:05 PM11/26/09
to freebox...@googlegroups.com
2009/11/26 JMD <jeanmat...@gmail.com>:

> La première fois j'ai utilisé le easy-elixir.sh

Et tu n'a plus les sources qu'il avait telecharge ? Parce que si tu
les as, il suffit d'aller dans le repertoire evas deja telecharge et
faire un: " svn up && make && sudo make install".

Si ce n'est pas le cas, il faut faire effectivement le "svn co" suivit
de, dans l'ordre :
./autogen.sh
make
sudo make install

--
Cedric BAIL

Vincent Barrier

unread,
Nov 26, 2009, 12:58:31 PM11/26/09
to freebox...@googlegroups.com
Je vais mettre à jour le script ce soir, qui en lieu et place
d'utiliser google code en repository, utilisera svn (pour evas /
ecore etc..) avec une révision spécifique (celle donnée par Cédric).

Vincent.

2009/11/26 Cedric BAIL <moa.bl...@gmail.com>:

JMD

unread,
Nov 26, 2009, 3:17:17 PM11/26/09
to freebox-elixir
Très bonne idée :)

On Nov 26, 6:58 pm, Vincent Barrier <barrier.vinc...@gmail.com> wrote:
> Je vais mettre à jour le script ce soir, qui en lieu et place
> d'utiliser google code en repository, utilisera svn  (pour evas /
> ecore etc..) avec une révision spécifique (celle donnée par Cédric).
>
> Vincent.
>
> 2009/11/26 Cedric BAIL <moa.blueb...@gmail.com>:
>
>
>
> > 2009/11/26 JMD <jeanmatthie...@gmail.com>:

Cedric BAIL

unread,
Nov 27, 2009, 5:22:34 AM11/27/09
to freebox...@googlegroups.com
2009/11/26 Vincent Barrier <barrier...@gmail.com>:

> Je vais mettre à jour le script ce soir, qui en lieu et place
> d'utiliser google code en repository, utilisera svn  (pour evas /
> ecore etc..) avec une révision spécifique (celle donnée par Cédric).

Des snapshot des EFL sont actuellement en preparation. Il devrait
normalement arrive dans le courant de la semaine prochaine. En
attendant, je conseille de suivre les dernieres revisions du SVN.
--
Cedric BAIL

Reply all
Reply to author
Forward
0 new messages