Would you like to react to this message? Create an account in a few clicks or log in to continue.



 
HomeHome  Latest imagesLatest images  SearchSearch  RegisterRegister  Log inLog in  

 

 Copie d'un système

Go down 
2 posters
AuthorMessage
congelli501




Messages : 3
Date d'inscription : 2011-01-11

Copie d'un système Empty
PostSubject: Copie d'un système   Copie d'un système Icon_minitimeMon Mar 28, 2011 9:51 am

Salut Very Happy ,
Je suis actuellement en train de développer un moteur de jeu video 2D et j'ai quelques problème lors de la copie d'un système SPARK.

Pour copier mon système, j'utilise le code suivant:
Code:

m_sparkGroup = new SPK::Group(*source.m_sparkGroup);

m_sparkSystem = SFMLSystem::create();
m_sparkSystem->addGroup(m_sparkGroup);

// Changement de position du nouvel émetteur...

J'ai alors un comportement bizarre : les sources deux sources de particules émettent des particules à tour de rôle, c'est à dire quelques secondes pour l'une, puis l'autre commence à émettre des particules, puis s'éteint...

Par contre, changer le flow du nouveau système permet de régler le problème :
Code:
m_sparkGroup->getEmitter(0)->changeFlow(1);

Comment faire en sorte que les deux systèmes émettent des particules séparément sans changer le flow et d'où vient se comportement étrange ?
Back to top Go down
Juff
Developer



Messages : 539
Date d'inscription : 2009-07-14
Age : 42

Copie d'un système Empty
PostSubject: Re: Copie d'un système   Copie d'un système Icon_minitimeMon Mar 28, 2011 1:40 pm

Bonjour,

c'est tout simplement du au fait que les 2 groupes partagent le même émetteur. La copie ne se fait pas en profondeur. Il faut utiliser les macros fournies pour faire des copies en profondeur.

Pour copier un système : myNewSystem = SPK_Copy(SFML_System,system)
Avec ce code tous les objets du système seront également copiés via un parcours de l'arbre (systeme, groupes, emetteur...) sauf s'ils sont partagés (shared)

De même pour détruire un système en profondeur : SPK_Destroy(system)

Les macros sont juste des raccourcis vers des méthodes de SPKFactory.

Note que dans SPARK 2, la gestion mémoire change et sera plus simple et intuitive (avec des pointeurs intelligent)
Back to top Go down
http://spark.developpez.com
congelli501




Messages : 3
Date d'inscription : 2011-01-11

Copie d'un système Empty
PostSubject: Re: Copie d'un système   Copie d'un système Icon_minitimeMon Mar 28, 2011 2:06 pm

Salut, et merci pour ta réponse rapide.

Malheureusement, ça ne marche pas : j'ai le même comportement avec ce code:
Code:
    m_sparkSystem = SPK_Copy(SFMLSystem, source.m_sparkSystem);
    m_sparkGroup = m_sparkSystem->getGroup(0);
Back to top Go down
congelli501




Messages : 3
Date d'inscription : 2011-01-11

Copie d'un système Empty
PostSubject: Re: Copie d'un système   Copie d'un système Icon_minitimeMon Mar 28, 2011 2:57 pm

Ça y est, j'ai fini par trouver ce qui n'allait pas : j'utilisais des new pour créer mes Objets Spark au lieu des fonctions statiques create().
L'utilisation de SPK_Destroy m'a permis de résoudre une fuite de mémoire qui m'embêtait depuis pas mal de temps.

Merci pour ton aide !
Back to top Go down
Sponsored content





Copie d'un système Empty
PostSubject: Re: Copie d'un système   Copie d'un système Icon_minitime

Back to top Go down
 
Copie d'un système
Back to top 
Page 1 of 1
 Similar topics
-
» editeur de système de particule de SPARK (topic de dev)

Permissions in this forum:You cannot reply to topics in this forum
 :: Forum Francais :: Questions (fr)-
Jump to: