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++]Les MFD ne s'affichent pas : probable problème de codage de mesh...  (Read 1709 times)

0 Members and 1 Guest are viewing this topic.

Offline ea76620

  • Sr. Member
  • ****
  • Posts: 393
  • Country: France fr
  • Karma: 15
05 October 2012, 22:13:10
Bonjour,

Je suis actuellement en train de faire les écrans MFD pour Deadalus, j'ai pour cela repris le code que j'avais mis pour mon module de station (ou les mfd fonctionnent normalement).
Cependant les deux écrans restent noir (mais les labels eu sont là et bien en place) j'ai bien sur revérifier plusieurs fois les numéros de groupe que j'ai mis et ils sont bons. Le problème est donc ailleurs.

La seul chose qui change entre les codage des mesh du module de station et du SMV c'est que le SMV a plusieurs mesh pour l'extérieur, je suis donc arriver à la conclusion suivante est ce que le problème vient de la manière dont je déclarer les mesh?

voici ce que j'ai fait :

dans setclasscap :

Code: [Select]
VECTOR3 ofs2 = _V(0,0,2.5);
AddMesh ("SD_Daedalus_CM",&ofs2);
VECTOR3 ofs1 = _V(0,0,-1.9);
AddMesh ("SD_Daedalus_SM",&ofs1);
VECTOR3 ofsCP = _V(0,0,4.462);
AddMesh ("SD_Deadalus_ChuteProtect",&ofsCP);
VECTOR3 ofsINT = _V(0,0,1.85);

SetMeshVisibilityMode (AddMesh (vcmesh_tpl = oapiLoadMeshGlobal ("SD_Deadalus_int"),&ofsINT), MESHVIS_VC);

quand j'enlève et ajoute une mesh :

Code: [Select]
VECTOR3 ofsHoldChute = _V(0,0,9.21);
DelMesh(1);
AddMesh ("SD_Daedalus_HoldChute",&ofsHoldChute);


La partie de clbkLoadVC qui concerne les mfd :

Code: [Select]
static VCMFDSPEC mfds_left  = {1, MESHGRP_VC_LMFDDISP};
static VCMFDSPEC mfds_right = {1, MESHGRP_VC_RMFDDISP};
oapiVCRegisterMFD (MFD_LEFT, &mfds_left);   // left MFD
oapiVCRegisterMFD (MFD_RIGHT, &mfds_right); // right MFD

Voila, est ce que je m'y prend correctement? car dans ce cas c'est peut être la manière dont j'ai codé tout ça qui pose problème.

Quel est la bonne manière de coder les mesh sans bug?

Merci d'avance

Au revoir



Message modifié ( 05-10-2012 22:15 )


Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #1 - 06 October 2012, 02:07:49
DelMesh(1); est mortel dans ce cas-ci. Tu mieux de garder le UINT retourné par AddMesh, puis de l'envoyer dans DelMesh comme index du mesh que tu veux enlever. Bref, quelque chose du genre :

Code: [Select]
UINT meshIdx = AddMesh("Canneberges vitrées");
DelMesh(meshIdx);


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline ea76620

  • Sr. Member
  • ****
  • Posts: 393
  • Country: France fr
  • Karma: 15
Reply #2 - 06 October 2012, 12:56:41
Bonjour,

Je dois mettre
Code: [Select]
UINT meshIdx = AddMesh("Canneberges vitrées"); des que j'ajoute un mesh?

A+



Message modifié ( 06-10-2012 12:56 )


Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #3 - 07 October 2012, 01:02:54
Ouais, puis tu utilises le meshIdx comme index dans

static VCMFDSPEC mfds_left  = {meshIdx, MESHGRP_VC_LMFDDISP};

et etc.


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline ea76620

  • Sr. Member
  • ****
  • Posts: 393
  • Country: France fr
  • Karma: 15
Reply #4 - 07 October 2012, 16:09:01
Bonjour,

Merci, ça marche (je me suis en plus trompé entre les différents numéros de mesh, votre méthode  à l'avantage d'éviter de s’emmêler les pinceaux entre les numéros) je vais également mettre un système d'ajout / séparation de mesh mieux, comme celui d'atlantis (de base) dont je vient de comprendre à peu près le fonctionnement.

A+

« Last Edit: 07 October 2012, 16:09:02 by ea76620 »