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: API-Guide.pdf  (Read 2063 times)

0 Members and 1 Guest are viewing this topic.

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
02 July 2007, 16:30:29
Ayant un peu de mal à lire en anglais tout en apprenant le C++ en même temps, je procède par une traduction
complète par écrit de la partie de la doc qui m'intéresse à un moment donné. C'est un bon moyen de tout lire et de ne
rien rater aussi ;) Ca "rentre" mieux par écrit je trouve.

Et ça donne ça ....

De là a produire un nouveau guide entièrement en Français, il n'y a pas loin.
Si d'autres font la même chose que moi pour apprendre, ce pourrait être bien de tout coller ici puis de rassembler le
truc une fois complété dans un nouveau guide en Français :siffle:


1.12.2 Definir un cockpit virtuel.



Comme avec les Panels 2D, certaines zones du VC doivent être activées pour permettre des modifications
dynamiques ou pour répondre aux sollicitations d'un utilisateur. Voici la méthode utilisée pour les définir.
dans clbkLoadVC:

bool MyVessel::clbkLoadVC (int id)
{
...
SURFHANDLE tex = oapiGetTextureHandle (vcmesh, 10);
oapiVCRegisterArea (AID_BUTTON, _R(0,0,20,10), PANEL_REDRAW_ALWAYS,
PANEL_MOUSE_LBDOWN, PANEL_MAP_BGONREQUEST, tex);
oapiVCSetAreaClickmode_Spherical (AID_BUTTON, _V(5,3.3,7.1), 2.5);
...
}

Comme pour la definition des zones actives d'un panel 2D, le premier paramètre de oapiVCRegisterArea
défini un identifieur unique pour la zone (AID_BUTTON sur cet exemple ).

Le paramètre suivant définiune zone rectangulaire ( en pixels ) dans une texture qui est rafraichie dynamiquement dans un événement de réécriture. Si la zone n'a pas besoin d'être actualisée, par exemple pour une zone seulement clickable avec la souris ou parce que le retour visuel de cette action est une modification de la géométrie du mesh,
ce paramètre est ignoré et peut être défini comme suit : _R(0,0,0,0).


Le troisième paramètre défini l'événement qui déclenche un redessinage de la zone. Sur cet exemple,
il a été défini comme  PANEL_REDRAW_ALWAYS ce qui implique un redessinage à chaque frame de la simulation.
Ceci est typiquement utilisé pour les jauges de réservoir. A noter que contrairement à un panel 2D, le terme
" redessiner " correspond à n'importe quelle modification de la modification visuelle de la zone. Celà peut
prendre la forme d'une texture dynamique, mais aussi l'animation d'un groupe du mesh ou l'édition directe
des vertices du mesh ou des coordonnées de la texture.


Le quatrième paramètre défini l'action de la souris qui implique une modification de la zone. Ils sont utilisés
de la même façon que sur les panels2D, mais une fonction additionnelle est nécessitée pour définir la zone sensible
à la souris ( voir plus bas )


Le cinquième paramètre défini le contenu initial du bitmap qui a été redessiné. C'est utilisé de la même manière
que sur les panels 2D. Toutefois, si le redessinage ne modifie pas une texture dynamique, ce paramètre doit être
défini comme  PANEL_MAP_NONE.


Le dernier paramètre est un handle de la texture dynamique modifiée. Dans cet exemple, nous avons obtenu le
handle de la texture du Group 10 du mesh du cockpit par un appel à  oapiGetTextureHandle. A noter que la
texture obtenue pour une peinture dynamique doit être labellisée comme dynamique sur le fichier msh
( voir la prochaine section )
Si la zone ne nécessite pas de redessinage pendant un tel événement, ce paramètre peut être NULL. Dans ce cas,
il existe une version plus courte de oapiVCRegisterArea qui omet les deuxième, cinquième et sixième paramètres.


Contrairement aux Panels 2D, la région sensible à la souris doit être définie avec une fonction d'appel séparée.
Dans un Vc, la région sensible est un volume 3D. Orbiter dessine une droite virtuelle entre la position des yeux
et l'endroit de l'écran que pointe la souris au moment ou le click a lieu et teste si cette ligne a touché un
volume sensible. Si oui, l'événement correspondant se déclenche.


Vous pouvez définir une zone en quadrilatère ou sphérique. Une région sphérique se définit grâce à
oapiVCSetAreaClickmode_Spherical, ou vous définissez le centre et le rayon de la sphère dans le volume
du mesh.

etc ...



Message modifié ( 02-07-2007 17:09 )

« Last Edit: 02 July 2007, 17:24:09 by picto »
Pic

Offline yoann

  • Legend
  • ******
  • Posts: 1914
  • Country: France fr
  • Karma: 9
Reply #1 - 02 July 2007, 17:03:39
yiiiIIIIiipiiiiii, quelqun qui ose traduire le API_guide !!!! je te souhaite bonne chance, surtout si tu veut le traduire en
entier (houlaaa :badsmile: ) tu a tout mon soutien ( psycologique...) si vous me chercher je suis deja dehor
...


« Last Edit: 02 July 2007, 17:24:09 by yoann »
__________________________________
    Luke, je suis ton pere            kchuuu  pchiiiii

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #2 - 02 July 2007, 17:24:09
Quote
surtout si tu veut le traduire en entier

J'ai pas dit ça :sad:

Encore que on puisse imaginer que petit à petit à force de chercher on finisse par devoir tout traduire. :badsmile:



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

« Last Edit: 02 July 2007, 17:24:09 by picto »
Pic