RILASCIATO ORBITER 2016!!! CLICCA QUI PER SCARICARLO
 
IndiceIndice  FAQFAQ  LinkLink  CercaCerca  RegistrarsiRegistrarsi  Accedi  
Accedi
Nome utente:
Password:
Connessione automatica: 
:: Recuperare la parola d'ordine
FOI sui social networks
Argomenti simili
Siti Amici
Astronautica Ultima Speranza

AstronautiNEWS

Orbiter Forum

Tuttovola.org

Contatore Visite
Ultimi argomenti
» Cassini inizia l'ultimo anno della sua missione
Da Pete Conrad Oggi alle 8:36

» Lagrange MFD
Da Ripley Lun 24 Apr 2017 - 20:04

» Sviluppo di una base italiana - Sede ASVI
Da marcogavazzeni Sab 22 Apr 2017 - 12:12

» Orbits - visualizzazione grafica di orbite e parametri
Da Ripley Gio 20 Apr 2017 - 12:39

» Ciao a tutti arrivo da Facebook
Da Claudio Riccobene Ven 14 Apr 2017 - 1:09

» Delphinus
Da Pete Conrad Dom 9 Apr 2017 - 22:21

» D3D9Client - il client grafico di Jarmonik
Da Ripley Gio 6 Apr 2017 - 12:12

» X-Plane 11
Da fred18 Lun 3 Apr 2017 - 10:56

» Plugin per Space Network
Da fred18 Lun 3 Apr 2017 - 10:53

» spazioplano futuristico?
Da fred18 Dom 26 Mar 2017 - 0:34

» LOGAN STREAMING FILM ITALIANO 2017
Da Pete Conrad Sab 11 Mar 2017 - 19:37

» trasformare carichi dgiv
Da Jim lovell Gio 2 Mar 2017 - 11:56

» Dropbox abbandona il supporto alla cartella Public
Da marcogavazzeni Gio 2 Mar 2017 - 11:01

» Excel: dimensioni, capacità, massa di un serbatoio sferico
Da Ripley Gio 2 Mar 2017 - 0:53

» "Starlab" space station
Da Andrew Mar 28 Feb 2017 - 23:04

» Dyna-Soar declassificato!
Da Andrew Dom 29 Gen 2017 - 12:14

» Apollo 1: cinquant’anni fa, la prima tragedia spaziale americana
Da Ripley Ven 27 Gen 2017 - 14:46

» Informazione su Pad24_UR500_O2016_v2
Da Ash Mar 24 Gen 2017 - 22:47

» Happy birthday, mr. Aldrin!
Da Pete Conrad Ven 20 Gen 2017 - 12:00

» Base Sync mfd, qualche problema
Da Ripley Gio 19 Gen 2017 - 12:03


Condividere | 
 

 [c++] utilizzare le variabili GetDynPressure()/GetAirspeed() per distruggere un mezzo in fase di rientro

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso 
AutoreMessaggio
simone
Add-on Developer
Add-on Developer
avatar

Numero di messaggi : 1005
Età : 20
Località : Catania
Data d'iscrizione : 12.02.10

MessaggioOggetto: [c++] utilizzare le variabili GetDynPressure()/GetAirspeed() per distruggere un mezzo in fase di rientro   Sab 15 Giu 2013 - 15:47

appena finito di implementare la funzione nel mio machiavelli ho pensato che metterla in questa sezione ,e ampliarla sempre più in modo da farla diventare un manuale per chi come me è alle prime armi con il c++,sarebbe stata una buona idea quindi cominciamo


INTANTO i credits
la formula per il calore è stata presa da una discussione su OF appena la ritrovo dò i giusti credits
per quanto riguarda la stringa che chiude l'attuale dll i credits vanno a Fred


//questa funzione permette alla dll di aggiornare in ogni istante i valori
//che inseriremo subito sotto,l'ideale per il nostro scopo
void machiavelli::clbkPostStep(double simt,double simdt,double mjd)
{


//la formula che permette di trovare la temperatura
//GetDynPressure() e GetAirspeed() leggono i valori attuali corrispondenti
//in tempo "reale"
double heat = (0.5*GetDynPressure() * (GetAirspeed()))/100000;
//
//questo codice invece ci dice che se la temperatura va sopra i 600 kelvin si attiva
//la nostra funzione 
if (heat>600){
//
///////////creazione primo detrito tramite un comando jettison (vedi avanti) 
Jettison();
////chiusura dll attuale
OBJHANDLE hdel;
hdel=GetHandle();
oapiDeleteVessel(hdel);
}else{}
};


ATTENZIONE la stringa di chiusura della dll va messa sempre alla fine della nostra funzione
per ovvi motivi


la funzione jettison in ordine,inserisce dei puntatori che servono a calcolare la velocità al momento del distacco e inizializzano una nuova dll
esterna a quella del modulo attuale

il codice da usare è questo

void machiavelli::Jettison()
{
VESSELSTATUS2 vs;
memset(&vs,0,sizeof(vs));
vs.version=2;
GetStatusEx(&vs);

VECTOR3 ofs = _V(3,6,0);
VECTOR3 rofs, rvel = {vs.rvel.x, vs.rvel.y, vs.rvel.z};
VECTOR3 vel = {0,0,2};
Local2Rel (ofs, vs.rpos);
GlobalRot(vel,rofs);
vs.rvel.x=rvel.x+rofs.x;
vs.rvel.y=rvel.y+rofs.y;
vs.rvel.z=rvel.z+rofs.z;

//il nome del file .cfg del nuovo mezzo
oapiCreateVesselEx("machiavelli2", "machiavelli2", &vs);

//altra funzione Jettison in modo da creare più pezzi
Jettison12();
};


da notare che così creeremo un solo pezzo che si distaccherà ecco il perchè del richiamo ad un'altra funzione Jettison nell'ultima riga

VECTOR3 ofs = _V(3,6,0); cambiando questo valore cambierai la direzione di espulsione del detrito dando l'effetto esplosione


per quanto riguarda la visuale (che andrebbe "persa" una volta distrutto il modulo principale,creiamo una sola funzione jettison che abbia un puntatore 

OBJHANDLE h;

e che carichi così il nuovo detrito

h=oapiCreateVesselEx("machiavelli1", "machiavelli1", &vs); 

alla fine di questa funzione mettiamo

oapiSetFocusObject(h);


se qualcosa non è chiaro o se avete suggerimenti scrivete pure!
Tornare in alto Andare in basso
Vedere il profilo dell'utente http://www.facebook.com/profile.php?cropsuccess&id=100000660
 
[c++] utilizzare le variabili GetDynPressure()/GetAirspeed() per distruggere un mezzo in fase di rientro
Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto 
Pagina 1 di 1
 Argomenti simili
-
» Microsfere di vetro da rettifica
» Imparare a conoscere e ad utilizzare il denaro: suggerimenti, giochi, link utili
» Codice cer bombolette poliuretano vuote
» PENSIERO DEL GIORNO: QUANDO QUALCUNO NON RIESCE A TROVARE IL PROPRIO POSTO NELLA COMUNITA’, SI DIVERTE A DISTRUGGERE CIO’ CHE HA INTORNO A SE’
» La guarigione di dsprt • VULVODINIA.INFO

Permesso di questo forum:Non puoi rispondere agli argomenti in questo forum
Forum Orbiter Italia :: Orbiter Space Flight Simulator :: Sviluppo Add-on :: Orbiter SDK-
Andare verso: