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++]UMMU Crew.DeleteCrewMember()?  (Read 2119 times)

0 Members and 1 Guest are viewing this topic.

Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
05 November 2007, 16:33:11
Pour se débarasser d'un membre UMMU, à part le tuer puis le balancer dans l'espace, il n'y a rien de prévu dans le
sdk ou j'ai mal lu?

Je cherche à faire un truc qui correspondrait à'Crew.DeleteCrewMember(...)' mais je ne trouve pas. Je ne sais pas
vers quoi me lancer.

:wonder:

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

no matter.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #1 - 05 November 2007, 23:49:57
mhhhh.. euh non... cas non prévu (pas logique ce truc la?). Je vérifie si y a pas un hack...
...
Moui... peut etre passer les variable private de UMMuSdk.h en public et les tripoter toi même..

Ou alors plus simple tu l'ejecte en lui donnant un mesh "invisible" et tu le delete juste après...
(facile)

C'est pour quoi ?

Dan


Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #2 - 06 November 2007, 16:40:54
Quote
C'est pour quoi ?
Bah, juste une idée bête, j'ai voulu modifier le DeltaGlider traditionnel pour y ajouter UMMU.
Je me suis pris au jeu et il a fallu que je fasse correspondre toutes les fonctions de l'editeur
de scénario (animations de l'airlock, chargement des passagers...).

Rien de bien compliqué, il n'y a que pour supprimer un passager que çà posait problème.
Je n'avais pas pensé à l'éjection! ;)
J'avais imaginé supprimer le membre à l'extérieur mais en oubliant l'ejection çà donnait:
ouvre le nez; ouvre l'airlock; sort le membre; supprime le membre; :badsmile:



Message modifié ( 06-11-2007 16:42 )

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

no matter.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #3 - 07 November 2007, 01:57:09
Quote
no matter a écrit:
Quote
C'est pour quoi ?
Bah, juste une idée bête, j'ai voulu modifier le DeltaGlider traditionnel pour y ajouter UMMU.

Cool ;)

Quote
no matter a écrit:
Rien de bien compliqué, il n'y a que pour supprimer un passager que çà posait problème.
Je n'avais pas pensé à l'éjection! ;)
J'avais imaginé supprimer le membre à l'extérieur mais en oubliant l'ejection çà donnait:
ouvre le nez; ouvre l'airlock; sort le membre; supprime le membre; :badsmile:

Arrgh ma souris vient de me lacher et l'autre n'était pas correctement sur son socle
de rechargement. :sad:


Aucun probleme en principe, pour la petite histoire le transfert "dock/dock"
ce fait deja comme ca d'ailleurs tu a un "meshNull" pret a l'emploi dans mesh/dgIV.

Si tu veux j'ai le code de ceres et ISS pour une interface plus sympa que les "debugstring"
à moins que tu a deja prévu ca ?

Dan


Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #4 - 07 November 2007, 16:32:17
Quote
Si tu veux j'ai le code de ceres et ISS pour une interface plus sympa que les "debugstring"
à moins que tu a deja prévu ca ?
C'est déjà mis en place, en effet.

J'ai envie de modifier aussi l'aérodynamique pour que la rentrée soit moins 'tête baissée'.



Message modifié ( 07-11-2007 17:28 )

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

no matter.

Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #5 - 09 November 2007, 12:57:49
Quote
Ou alors plus simple tu l'ejecte en lui donnant un mesh "invisible" et tu le delete juste après...
Çà marche impec :top:

un bouton en plus :
Code: [Select]
case IDC_CHECK5: {
dg = GetDG(hTab);
dg->RemoveUmmuPassengers();
sprintf (cbuf, "%0.2f kg", dg->GetMass());
SetWindowText (GetDlgItem (hTab, IDC_MASS), cbuf);
} break;
et un reset des passagers:
Code: [Select]
void DeltaGlider::RemoveUmmuPassengers()
{
Crew.EjectCrewMember(Crew.GetCrewNameBySlotNumber(SelectedUmmuMember));
OBJHANDLE UMMU1 = Crew.GetObjHandleOfLastEVACrew();
if (UMMU1) oapiDeleteVessel(UMMU1);

Crew.EjectCrewMember(Crew.GetCrewNameBySlotNumber(SelectedUmmuMember));
OBJHANDLE UMMU2 = Crew.GetObjHandleOfLastEVACrew();
if (UMMU2) oapiDeleteVessel(UMMU2);

Crew.EjectCrewMember(Crew.GetCrewNameBySlotNumber(SelectedUmmuMember));
OBJHANDLE UMMU3 = Crew.GetObjHandleOfLastEVACrew();
if (UMMU3) oapiDeleteVessel(UMMU3);

Crew.EjectCrewMember(Crew.GetCrewNameBySlotNumber(SelectedUmmuMember));
OBJHANDLE UMMU4 = Crew.GetObjHandleOfLastEVACrew();
if (UMMU4) oapiDeleteVessel(UMMU4);
}


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

no matter.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #6 - 09 November 2007, 13:44:40
Cool ;)

Note que je me demande une chose: peut etre que passer le int NbrCrewPatati;
en "public" dans le header et en le mettant simplement à zéro aurait fait l'affaire
mais je n'ai pas vérifié. (tu me dira c'est bien le moment :sad: )

C'est une très bonne idée le UMMU la dessus, tu me diras je mettrais
le lien dans la liste des "compatibles"
http://orbiter.dansteph.com/forum/index.php?topic=12140.msg187235#msg187235

A++

Dan


Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #7 - 09 November 2007, 19:43:26
En image:






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

no matter.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #8 - 10 November 2007, 13:54:46
Cooo!, le visuel des crews à l'intérieur suivra le nombre de UMMU a bord ?
(j'avais utilisé un set SetVisibility(..NEVER/ALWAYS) pour le faire après avoir
simplement séparé les crew en 4 meshes)

A ++

Dan



Message modifié ( 10-11-2007 14:15 )


Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #9 - 10 November 2007, 19:47:54
Quote
DanSteph a écrit:
Cooo!, le visuel des crews à l'intérieur suivra le nombre de UMMU a bord ?
(j'avais utilisé un set SetVisibility(..NEVER/ALWAYS) pour le faire après avoir
simplement séparé les crew en 4 meshes)

Oui, le visuel suit l'affaire, en fait c'est directement en fonction du nombre total
de membres UMMU que le visuel des passagers se fait.
Le code du deltaglider utilisait déjà les flags sur les groupes et une fonction
SetPassengerVisuals() j'ai eu simplement à lier la fonction au nombre total de
membres UMMU.
On peut les charger par l'éditeur de scénario, on peut utiliser tous les controles
originaux (animations/passagers) de l'éditeur de scenario.

On peut même désactiver UMMU et réactiver la version originale.



Par contre, oserais-je te demander comment tu es passé de l'aérodynamique
de base (rentrée atmo le nez pointé vers le bas) à la rentrée du DGIV.
Une simple histoire de lift? un changement de lift en fonction de la vitesse
(au dessus de mach5 par exemple)? ou il faut encore autre chose?
J'aimerais pouvoir rentrer en pointant le ventre du vaisseau pas le nez.



Message modifié ( 10-11-2007 19:50 )

« Last Edit: 10 November 2007, 19:47:54 by no matter »
------------

no matter.