CLICCA QUI PER SCARICARE ORBITER 2016
 
IndiceIndice  FAQFAQ  LinkLink  CercaCerca  RegistratiRegistrati  Accedi  
Accedi
Nome utente:
Password:
Connessione automatica: 
:: Ho dimenticato la password
FOI è sui social
Parole chiave
2016 TransX Missione Shuttle AMSO Rientro mesh Fleet Flotta luna terra texture DGIV Orbiter Delphinus Pegasus autofcs Nassp anim8or jarvis manuale lander mission Multistage2015 Antares Universal
Siti amici
Astronautica Ultima Speranza

AstronautiNEWS

Orbiter Forum

Tuttovola
Ultimi argomenti
» Ciao a tutti
Da Ripley Ieri alle 20:07

» [WIP] Missione San Marco 1
Da Francy03 Lun 13 Nov 2017 - 18:42

» Sviluppo di una base italiana - Sede ASVI
Da Dany Lun 13 Nov 2017 - 10:20

» Orbiter Sound 4.0 MFD non funziona
Da Ripley Dom 12 Nov 2017 - 22:26

» [Risolto] Jarvis non scaricabile
Da Ripley Mer 1 Nov 2017 - 0:12

» Cosa Vorreste Cambiare Del Forum?
Da Francy03 Gio 26 Ott 2017 - 17:24

» Ripley Administrator!
Da marcogavazzeni Sab 21 Ott 2017 - 7:43

» Nuova versione BETA di Orbiter
Da wolf Dom 15 Ott 2017 - 14:57

» Rendezvous ISS "by the numbers"
Da wolf Ven 13 Ott 2017 - 12:31

» Ciao a tutti da Francy
Da Pete Conrad Ven 13 Ott 2017 - 7:18

» Salve a tutti
Da DDD Gio 5 Ott 2017 - 13:53

» MOONSCAPE versione completa - documentario di Paolo Attivissimo
Da Ripley Gio 28 Set 2017 - 0:01

» Astronautica US chiude i battenti
Da Ripley Mer 27 Set 2017 - 23:52

» Rilasciato Anim8or versione 1.0
Da Pete Conrad Ven 22 Set 2017 - 14:39

» D3D9Client - il client grafico di Jarmonik
Da Ripley Mar 19 Set 2017 - 17:26

» Segnali di vita da Dansteph!
Da Ripley Gio 31 Ago 2017 - 0:06

» Multistage2015
Da fred18 Lun 28 Ago 2017 - 14:10

» Terza missione di Paolo Nespoli nello spazio.
Da marcozambi Dom 27 Ago 2017 - 9:34

» Texfilms - Un nuovo canale streaming live
Da Ripley Dom 20 Ago 2017 - 20:14

» Nuove textures HRSC per Marte
Da wolf Ven 18 Ago 2017 - 12:02

» Domanda ridicola sui piani orbitali Terra-Luna
Da Ripley Mar 8 Ago 2017 - 7:29

» Space Shuttle Ultra - il vero Shuttle a casa vostra
Da wolf Gio 3 Ago 2017 - 21:17

» sound e carburante limitato
Da DDD Mer 2 Ago 2017 - 11:11

» Cambio indirizzo mail
Da Ripley Mar 1 Ago 2017 - 16:28

» [Risolto] Problema download XR Fleet
Da DDD Dom 23 Lug 2017 - 9:39

Argomenti simili
Contatore Visite

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à : 21
Località : Catania
Data d'iscrizione : 12.02.10

MessaggioTitolo: [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
Vedi 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
-
» [c++] utilizzare le variabili GetDynPressure()/GetAirspeed() per distruggere un mezzo in fase di rientro
» Si può stampare e consegnare un formulario al trasportatore con data di emissione futura?
» utilizzo del fresato di asfalto
» quando effettuare il tampone
» smaltimento polveri polivalenti ABC

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