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: [tutorial] Posez vos question sur les DLL C++  (Read 44967 times)

0 Members and 1 Guest are viewing this topic.

Offline siriusfett

  • Legend
  • ******
  • Posts: 967
  • Country: France fr
  • Karma: 5
Reply #50 - 06 July 2007, 09:34:30
Merci no matter, pour les docks je continu mes recherches, j'ai la tête dans le guidon depuis plusieurs jours, il faut que
prenne un peu de recule, mais tout cela c'est à cause du shutlePB qui ne possède qu'un seul dock. :)

Edit:

J'ai trouvé mon bonheur sur M6

Quote
DOCKHANDLE dh_docks[2];
           dh_docks[0] = CreateDock ( _V(-0.1,0.01,7.42), _V(0,0,1), _V(0,1,0));
           dh_docks[1] = CreateDock (_V(-0.1,0,-7.98), _V(0,0,-1), _V(0,1,0));



Message modifié ( 06-07-2007 13:27 )


Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15002
  • Karma: 178
  • Hein, quoi !?
    • FsPassengers
Reply #51 - 06 July 2007, 17:21:38
Quote
no matter a écrit:
Comment pourrais-je faire pour jouer ce son de séparation lorsque la capsule est crée?

Essaie de le mettre dans clbkPostStep avec un flag de protection,
perso j'ai pleins d'init qui ce font au premier Post Step, avant il
manque des trucs. Orbiter est pas "fini" d'initialiser vraiment.

Code: [Select]
void Blabla::clbkPostStep(simt,simdt)
{
   if(FIRST_STEP_INIT_DONE==FALSE)
   {


      FIRST_STEP_INIT_DONE=TRUE;
   }
}

Sinon y a pas un callback pour le focus ? clbkFocusChanged ou dans le genre ? (me souvient pas exactement)
mais si ca marche pas dans poststep c'est a desesperer...

sinon un son radio ? RADIO_SOUND ?

Dan



Message modifié ( 06-07-2007 17:24 )


Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #52 - 06 July 2007, 19:54:28
Un callback pour le focus, je n'y avais pas pensé!
Effectivement en cherchant dans l'api_reference, il y a bien un clbkFocusChanged.

Quote
Sinon y a pas un callback pour le focus ? clbkFocusChanged ou dans le genre ? (me souvient pas exactement)
mais si ca marche pas dans poststep c'est a desesperer...

sinon un son radio ? RADIO_SOUND ?
Me voilà avec trois solutions d'un coup, merci :applause:

EDIT: Çà marche au poil dans clbkpostStep



Message modifié ( 06-07-2007 21:49 )

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

no matter.

Offline siriusfett

  • Legend
  • ******
  • Posts: 967
  • Country: France fr
  • Karma: 5
Reply #53 - 06 July 2007, 20:13:40
Bonsoir les pros, je me suis mis en tête d'inclure des sons dans ma dll pour en apprendre un peu plus...

J’ai repris des exemples et pourtant quand je compile, le programme m'indique une erreur de syntaxe ?

Je souhaiterais jouer ce son en même temps que le déploiement de mes panneaux solaires donc touche 3 mais je ne trouve pas
d'exemple concret.

Bien sur je continu mes recherches :)

Quote
#define DEPANSOLSOUND
////////////
#include "OrbiterSoundSDK35.h"
////////////

void clbkPostCreation(void);
///////////

void module1::clbkPostCreation(void)
   {
      RequestLoadVesselWave3(MyID,DEPANSOLSOUND,"Sound\\Esalab\\depansol.wav",RADIO_SOUND);
   }

Quote
error C2059: erreur de syntaxe : ','



Message modifié ( 06-07-2007 20:14 )


Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #54 - 06 July 2007, 21:13:45
:trucdeouf:
Tu as bien mis MyID=ConnectToOrbiterSoundDLL3(GetHandle()); dans clbkPostCreation?

Jouer ton son pendant une anim par exemple:
...
case OAPI_KEY_3: // touche 3
if (panneaux_proc == 1) // valable si panneaux déplié
{
MaFonctionQuiLanceLaRotation(); // lance la rotation
PlayVesselWave3(MyID,ROTATIONSOUND); // joue le son de rotation
}
return 1;
...



Message modifié ( 06-07-2007 21:14 )

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

no matter.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15002
  • Karma: 178
  • Hein, quoi !?
    • FsPassengers
Reply #55 - 06 July 2007, 21:19:26
Quote
siriusfett a écrit:
Quote
error C2059: erreur de syntaxe : ','

Et la sainte methode alors ? :rant: (pas de panique, j'adore ce smiley :badsmile: )

Double clique gauche sur la ligne de l'erreur dans le rapport pour montrer le listing
et surtout la ligne ou ce situe l'erreur de syntaxe...

pasque la :sick: y a bien une virgule qui déconne mais je suis pas devin ;)

Sinon comme dis no matter, playvesselsound la ou tu déclenche l'animation.

Dan



Message modifié ( 06-07-2007 21:32 )


Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15002
  • Karma: 178
  • Hein, quoi !?
    • FsPassengers
Reply #56 - 06 July 2007, 21:36:11
En tout cas il manque un chiffre la :

Code: [Select]
#define DEPANSOLSOUND
////////////

Tu defini DEPANSOLSOUND mais tu lui donne aucune valeurs... la c'est mieux:

Code: [Select]
#define DEPANSOLSOUND 1
////////////

Ensuite tu devrais le mettre dans le header (regarde il y en a deja des #define pour les sons)
sinon ton cpp "keyboard" la verra pas cette definition.

Dan



Message modifié ( 06-07-2007 21:36 )


Offline siriusfett

  • Legend
  • ******
  • Posts: 967
  • Country: France fr
  • Karma: 5
Reply #57 - 07 July 2007, 00:21:43
Merci pour vos réponses ;)

Alors voila ce que j'ai fait:
Quote
#define DEPANSOLSOUND                1  (inclus dans OrbiterSoundSDK35.h)

Dans mon cpp :

#include "OrbiterSoundSDK35.h"
////////////////////
void clbkPostCreation(void); (pourquoi création>>>> exemple que j'ai trouvé)
///////////////////
void module1::clbkPostCreation(void)
   {
      RequestLoadVesselWave3(MyID,DEPANSOLSOUND,"Sound\\Esalab\\depansol.wav",RADIO_SOUND);
   }

//////////////////
case OAPI_KEY_NUMPAD2:
      {
      RevertPanneaux();
      PlayVesselWave3(MyID,DEPANSOLSOUND); // joue le son de déploiement
      }
                       return 1;

et ça compile

J'ai bien créé un dossier Esalab qui contient mon wav et que j'ai placer dans le dossier sound mais je n'ai pas de son quand
je sort mes panneaux :wonder::wall::wall::wall:

Quote
DanSteph a écrit:
Double clique gauche sur la ligne de l'erreur dans le rapport pour montrer le listing
et surtout la ligne ou ce situe l'erreur de syntaxe...

Je double clique, je double clique ;)

Sur ce bonne nuit :zzz:

Demain moi et mes questions sommes absent pour la journée :lol:



Message modifié ( 07-07-2007 00:41 )


Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15002
  • Karma: 178
  • Hein, quoi !?
    • FsPassengers
Reply #58 - 07 July 2007, 00:46:09
si ca play pas regarde dans Orbiter/OrbiterSound_log.txt

Tu n'utilise pas l'exemple du tuto ? C'est tout expliqué, tout pret pour rajouter
des sons.

Dan


Offline Pierre_le

  • Sr. Member
  • ****
  • Posts: 384
  • Karma: 0
Reply #59 - 07 July 2007, 02:15:09
c comman con fait une dll qui fait un vaisso qui vas vite sur la lune?
gu guuuu gnnniiiii gnnnuuu :bave:


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

res gesta per excellentiam

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15002
  • Karma: 178
  • Hein, quoi !?
    • FsPassengers
Reply #60 - 07 July 2007, 03:11:52
simple, tu compile le shuttlePB et tu lui mets un ISP de malade. Terre-lune en 1h ;)

Dan


Offline siriusfett

  • Legend
  • ******
  • Posts: 967
  • Country: France fr
  • Karma: 5
Reply #61 - 09 July 2007, 23:53:12
C'est moi :)

Pour les sons c'est ok, il me manqué  :pfff: :

Quote
MyID=ConnectToOrbiterSoundDLL3(GetHandle());

Je procède en ce moment à des lancements de Esalab avec sa propre dll,  mais au moment de la libération quand je prends les
commandes de Esalab (F3) je n'ai pas de carburant, je ne vois pas pourquoi, car si je lance un scn avec Esalab en orbite j'ai
bien du coco  :wonder:



Message modifié ( 10-07-2007 00:09 )


Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15002
  • Karma: 178
  • Hein, quoi !?
    • FsPassengers
Reply #62 - 10 July 2007, 01:32:21
Comme aucun scenery est appelé le tank est vide regarde
du coté de setfuemass dans class cap.

Chui pas sur de celle la...

Dan


Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #63 - 10 July 2007, 11:15:03
Quote
Je procède en ce moment à des lancements de Esalab avec sa propre dll, mais au moment de la libération
quand je prends les commandes de Esalab (F3) je n'ai pas de carburant, je ne vois pas pourquoi, car si je lance un
scn avec Esalab en orbite j'ai bien du coco.
Tu lance avec Ariane6 non? Multistage2 ne met pas de fuel si le vaisseau n'utilise pas spacecraft2 ou 3.
Tu peux corriger en faisant une config temporaire en spacecraft1 qui porte ton vaisseau (dll)
en charge utile.
Sinon, tu peux rajouter une touche qui rempli le réservoir (avec comme condition les reservoir à 0 pour éviter de
remplir par erreur).
Il y a une autre solution plus automatique, demande à Momo.


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

no matter.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15002
  • Karma: 178
  • Hein, quoi !?
    • FsPassengers
Reply #64 - 10 July 2007, 12:38:14
Si tu a pas le controle sur la dll releasée sinon GetObjByName Get Vessel2->SetFuelMass juste après la release.

Dan


Offline siriusfett

  • Legend
  • ******
  • Posts: 967
  • Country: France fr
  • Karma: 5
Reply #65 - 10 July 2007, 13:04:39
Merci pour vos réponses, vous m'avez mis sur la voie, j'ai fait une recherche de "SetFuelMass" avec les jumelles et je suis
tombé sur un exemple fourni par momo.



Message modifié ( 11-07-2007 11:09 )


Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15002
  • Karma: 178
  • Hein, quoi !?
    • FsPassengers
Reply #66 - 10 July 2007, 13:30:06
ouéééé mais moi pas super comprendre.... (moi faire :worry: factures moi tête ailleurs)

un setFuelMass tout bete après la création du tank dans
clbksetclascap marche pas ?

Dan


Offline siriusfett

  • Legend
  • ******
  • Posts: 967
  • Country: France fr
  • Karma: 5
Reply #67 - 10 July 2007, 14:33:24
Quote
DanSteph a écrit:
ouéééé mais moi pas super comprendre.... (moi faire :worry: factures moi tête ailleurs)

un setFuelMass tout bete après la création du tank dans
clbksetclascap marche pas ?

Dan

Moi non plus, moi travailler à partir d'exemple :badsmile:

si je place que "SetFuelMass(10000);" dans clbksetclascap pas de fuel à la libé

si je place que "SetFuelMass(10000);" dans clbkPostStep fuel à la libé mais je ne consomme pas une goutte...



Message modifié ( 10-07-2007 14:34 )


Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #68 - 10 July 2007, 15:58:11
Si tu met SetFuelMass(10000); dans clbkPostStep, tu auras une masse
de fuel de 10000 attribuée à chaque frame et une consommation pas nulle mais invisible.

Quote
un setFuelMass tout bête après la création du tank dans clbksetclascap marche pas ?
Çà ne marche pas si on lance avec un lanceur Multistage2 qui n'attribue pas de fuel lorsque
le vaisseau lancé utilise une dll autre que Spacecraft2 ou 3. La prochaine version doit corriger çà
il me semble.


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

no matter.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15002
  • Karma: 178
  • Hein, quoi !?
    • FsPassengers
Reply #69 - 10 July 2007, 18:18:21
Quote
siriusfett a écrit:
si je place que "SetFuelMass(10000);" dans clbksetclascap pas de fuel à la libé
si je place que "SetFuelMass(10000);" dans clbkPostStep fuel à la libé mais je ne consomme pas
une goutte...

Alors met le dans  clbkpoststep mais protegé par une variable qu'il ne s'execute qu'une fois
(voir post plus haut sur les init unique dans poststep)

Dan


Offline siriusfett

  • Legend
  • ******
  • Posts: 967
  • Country: France fr
  • Karma: 5
Reply #70 - 11 July 2007, 00:04:41
ça fonctionne :turning::turning:

Quote
int FIRST_STEP_INIT_DONE;

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

  if(FIRST_STEP_INIT_DONE==FALSE)
        {
           SetFuelMass(10000);         
           FIRST_STEP_INIT_DONE=TRUE;
        }

:wor:



Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15002
  • Karma: 178
  • Hein, quoi !?
    • FsPassengers
Reply #71 - 11 July 2007, 02:14:00
l'init unique dans clbkPostStep à prouvé une fois de plus son utilité ;)

Moral de l'histoire: si une initialisation marche pas ailleurs pensez au clbkPostStep.
Oubliez pas de proteger par une variable de classe (BOOL FIRST_STEP_INIT_DONE)
et d'initialiser cette derniere a FALSE dans le clbkSetClassCap.

Bonne idée: Quand il y en a beaucoup tout mettre dans une fonction qui est appellée
dans clbkPostStep mais qui est implémentée dans un autre listing, ca va liberer
le source "postStep" de pas mal de ligne de code qui ressortent plus de l'initialisation
que de l'execution à chaque image.

Dan
"qui devrait suivre cette bonne idée pour le DGV"


Offline picto

  • Legend
  • ******
  • Posts: 5013
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #72 - 12 July 2007, 02:45:52
Question pratique sur MSVC.

J'ai un problème quand je cherche à compiler certaines sources en C++
Par exemple, quand je cherche à comprendre comment fonctionne un programme je fais un copier coller sur un .cpp
existant vide, ou dans un nouveau projet.

A ce sujet, d'ailleurs, la structure par défaut est bizarre quand j'en crée un nouveau.
Elle prend cette forme ...



Ce qui veut dire pas mal de magouilles derrière pour la rendre cohérente comme celle de l'exemple MonAddon du tuto
C++ ....

Ensuite, tant que la compilation n'a pas été effectuée avec succès, ce qui n'est pas gagné quand la source dans
laquelle on navigue n'apparait pas évidente au premier abord, il est impossible de se servir des fonctions de
recherche et de suivi de variables ou de fonctions fournis par MSVC. Ca donne ce genre de message d'erreur
Le symbole 'EndOfTimer' n'est pas défini par exemple. etc ...

Autre petit problème par exemple.
Si dans une source, les commentaires sont marqués par ', il est relativement facile de les changer en // mais comment
savoir si en cours de route on ne modifie pas des trucs importants dans le code ...

Après ce genre de magouilles j'obtiens souvent ce genre de résultat lors de la compile, alors que le script fonctionne
parfaitement sur un autre compilateur.


1>Génération de code en cours...
1>Le journal de génération a été enregistré à l'emplacement "file://d:\patati"
1>patata - 171 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========


En bref, je crois qu'il doit exister quelques subtilités d'utilisation de MSVC qui permettent de pallier ce genre
d'inconvénients, mais je ne les ai pas encore trouvées ...


Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15002
  • Karma: 178
  • Hein, quoi !?
    • FsPassengers
Reply #73 - 12 July 2007, 02:50:21
Quote
picto a écrit:
En bref, je crois qu'il doit exister quelques subtilités d'utilisation de MSVC qui permettent de pallier ce genre
d'inconvénients, mais je ne les ai pas encore trouvées ...

Ben la subtilité c'est surtout que tu essaie de compiler du visual basic avec un compilateur C++
et les librairies MFC en plus :badsmile:

Dan



Message modifié ( 12-07-2007 02:53 )


Offline picto

  • Legend
  • ******
  • Posts: 5013
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #74 - 12 July 2007, 02:54:31
Pffff :wall:


Pic