HomeHome  CalendarCalendar  FAQFAQ  SearchSearch  MemberlistMemberlist  UsergroupsUsergroups  RegisterRegister  Log inLog in  

Share | 
 

 Copie d'un système

View previous topic View next topic Go down 
AuthorMessage
congelli501



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

PostSubject: Copie d'un système   Mon 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
View user profile
Juff
Developer


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

PostSubject: Re: Copie d'un système   Mon 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
View user profile http://spark.developpez.com
congelli501



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

PostSubject: Re: Copie d'un système   Mon 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
View user profile
congelli501



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

PostSubject: Re: Copie d'un système   Mon 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
View user profile
Sponsored content




PostSubject: Re: Copie d'un système   Today at 3:41 am

Back to top Go down
 
Copie d'un système
View previous topic View next topic Back to top 
Page 1 of 1

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