See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: [C++] oapiParticleSetLevelRef  (Read 1956 times)

0 Members and 1 Guest are viewing this topic.

Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
21 August 2008, 09:26:31
J'aurais bien aimé utiliser oapiParticleSetLevelRef ( PSTREAM_HANDLE ph, double *lvl) qui permet de déassocier
un exhaust en particles stream du "ThrusterLevel".

Ainsi lorsque j'utilise oapiParticleSetLevelRef (MainExhaustStream, 0) le jet de particules dont le handle est
MainExhaustStream n'est plus rendu.

L'ennui vient ensuite lorsque je veux le réassocier à mon "ThrusterLevel", la seule méthode que j'ai pour avoir le
ThrusterLevel en question, c'est GetThrusterlevel(th_main) ou à la rigueur
GetThrusterGroupLevel(THG_MAIN).

Seulement, j'ai un problème: oapiParticleSetLevelRef ( PSTREAM_HANDLE ph, double *lvl) et double GetThrusterlevel(blablabla) çà se marie mal.

Le pire dans l'histoire c'est que je me suis penché sur oapiParticleSetLevelRef après avoir regardé l'exemple du deltaglider où on peut trouver:
... oapiParticleSetLevelRef (ph, scram_intensity+1);
et en toute innocence, lorsqu'on pointe le curseur sur scram_intensity on découvre :
"deltaglider::double scram_intensity[2]"  :trucdeouf:

moi si je fais çà:
double level;
level=GetThrusterLevel(th_main);
oapiParticleSetLevelRef (MainExhaustStream, level);

comme attendu çà ne compile pas, normal c'est un double... D'ailleur on n'obtiendra guère mieux avec &level, ce n'est pas ce que je veux!

Là je suis perdu... :sunk: :help: D'une part je n'arrive pas à comprendre comment pour le deltaglmider un double çà passe et d'autre part je ne sais pas comment je pourrais relier mon jet de particule au thrusterlevel !!

Je dois avoir besoin de repotasser un peu  le C++! Quelqu'un peut-il m'aider :wor:



Message modifié ( 21-08-2008 11:04 )

------------

no matter.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #1 - 21 August 2008, 18:03:03
essaie comme cela:

Code: [Select]
double level[1];
level[0]=GetThrusterLevel(th_main);
oapiParticleSetLevelRef (ph, level);

(j'ai pas regardé la doc, rien, je sais pas si ca marche)

Dan



Message modifié ( 21-08-2008 18:03 )


Offline Schimz

  • Legend
  • ******
  • Posts: 1598
  • Karma: 1
Reply #2 - 21 August 2008, 18:07:13
Et comme ça ?

oapiParticleSetLevelRef (MainExhaustStream, GetThrusterLevel(th_main));

Ça m'intéresse aussi, je vais avoir besoin de cette fonction...



Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #3 - 21 August 2008, 20:32:21
Quote
oapiParticleSetLevelRef (MainExhaustStream, GetThrusterLevel(th_main));
De cette manière, le compilateur ne compile pas.
Pour l'instant, j'ai réussi à faire autrement, je détruit et je recrée le stream mais c'est bien plus lourd et comme c'est dans le PostStep, il faut faire attention à ne pas recréer un stream à chaque frame...
ENcore pour le moteur principal, çà ne fait que deux jets à détruire, mais pour les rcs, là on atteint les 20 ou 30 jets divers >_<

Quote
double level[1];
level[0]=GetThrusterLevel(th_main);
oapiParticleSetLevelRef (ph, level);
Je teste sur le champ!

EDIT:Çà compile mais sans résultat et lorsque je teste level, il reste à 0.0000 alors que je suis le doigt sur la touche"+".



Message modifié ( 21-08-2008 21:27 )

------------

no matter.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #4 - 21 August 2008, 23:29:03
Quote
no matter a écrit:
EDIT:Çà compile mais sans résultat et lorsque je teste level, il reste à 0.0000 alors que je suis le
doigt sur la touche"+".

Dans ce cas ca vient pas de la variable mais de GetThrusterLevel, ton handle doit etre pourris ou autre problème.
(pas un handle main thrust ?)

Tu sais debugger pas a pas je pense ? typique le genre de cas ou c'est utile.

Bosse bien :badsmile:

Dan


Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #5 - 21 August 2008, 23:44:09
Les handles sont à priori valides, si je teste level[0] il varie bien en fonction de ce que je fais, j'en saurais plus en
debuggant.
Il me semble que çà devrait marcher, j'ai du laisser une erreur typique de celles que je suis capable de faire :siffle:
(à cent lieux de là où je regarde ^^)



Message modifié ( 21-08-2008 23:44 )

------------

no matter.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #6 - 21 August 2008, 23:47:50
Faut remonter la chaine,

level a zero donc c'est plus haut ? handle valide ? vraiment ? donc c'est la commande ? thruster pas déclaré en main
thruster (donc touche + sans effet) etc etc...

Quelques F9 dans le tas pour chequer toutes la chaine... et roule la boule !

Dan


Offline Schimz

  • Legend
  • ******
  • Posts: 1598
  • Karma: 1
Reply #7 - 22 August 2008, 07:21:18
Han mé oué, th_main c'est le groupe.
Pour avoir son level c'est GetThrusterGroupLevel(xx)
Pour un moteur en particulier, c'est GetThrusterLevel(xx
  • )




Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #8 - 22 August 2008, 22:41:25
J'ai mis la chose de côté, j'ai réussi à introduire un ctd à force de debug/tentative de correction alors que jusque là il
n'y en avait pas :)

Pour l'instant, je détruis puis recrée et çà fonctionne, çà n'a même pas l'air d'avoir un impact sur le fps malgrés le
nombre d'exhaust mis en jeu pour les rcs.
Je n'ai pas trop envie de passer encore du temps sur progress alors qu'il fonctionne bien par ailleurs (et puis je
manque de beta testeurs maintenant malgrés 49 téléchargements, depuis le version 3 je n'ai plus grand retrour...

Sans parler d'OctoberSky (qui aura besoin de oapiParticleSetLevelRef d'ailleurs), je vais donc y revenir dessus
plus tard, je préviendrais si je corrige mon erreur.



Message modifié ( 22-08-2008 23:03 )

------------

no matter.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #9 - 23 August 2008, 07:14:41
Bon courage !

Schimz me semble pas loin du truc non ?

Dan


Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #10 - 23 August 2008, 20:28:38
Dans mon cas, le groupe ne possède qu'une seule tuyère mais à vrai dire effectivement, je n'ai pas pensé à essayer
th_main[0].

« Last Edit: 23 August 2008, 20:28:38 by no matter »
------------

no matter.