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
Rientro Base Basesync Fleet apollo manuale Universal Nassp Missione addon Flotta OrbiterSound TransX Antares DGIV jarvis 2016 Shuttle d3d9 autofcs Poderosa lander AMSO sound Module Orbiter
Siti amici
AstronautiNEWS

ForumAstronautico

Orbiter Forum

Tuttovola
Ultimi argomenti
» ModuleMessagingExt v2
Da Ripley Oggi alle 10:36

» D3D9 - il client grafico di Jarmonik
Da Ripley Mer 20 Giu 2018 - 20:13

» Costruiranno uno spazioporto per suborbitali a Taranto?
Da Pete Conrad Mar 15 Mag 2018 - 18:44

» Risorse per l'ambiente di sviluppo Visual Studio 2017 (in Win10)
Da Ripley Gio 10 Mag 2018 - 16:03

» [WIP] Missione San Marco 1
Da Dany Gio 26 Apr 2018 - 0:10

» Conversione carichi DGIV- UCGO
Da Franz Sab 21 Apr 2018 - 19:55

» Domanda punti di Lagrange
Da Ripley Gio 19 Apr 2018 - 7:56

» Addon russi di igel e Thorton incompatibili con Orbiter2016?
Da Ripley Mer 18 Apr 2018 - 14:34

» X-Plane 11
Da masdeca Mer 18 Apr 2018 - 11:57

» "Starlab" space station
Da Franz Lun 16 Apr 2018 - 21:53

» Come si mette nasa tv?
Da Francy03 Sab 14 Apr 2018 - 18:16

» Vista interna Delta Glider
Da Franz Ven 13 Apr 2018 - 18:07

» Nuova versione di TransX (Enjo)
Da Ripley Lun 9 Apr 2018 - 15:48

» BaseSync MFD
Da Ripley Dom 8 Apr 2018 - 20:08

» BurnTimeCalc MFD
Da Ripley Ven 6 Apr 2018 - 1:20

» Launch MFD
Da Ripley Ven 6 Apr 2018 - 0:51

» Glideslope 2 MFD
Da Ripley Gio 5 Apr 2018 - 8:53

» Rilasciato XRSound, il nuovo sistema audio
Da Ripley Lun 12 Mar 2018 - 12:42

» Sviluppo di una base italiana - Sede ASVI
Da Franz Gio 1 Mar 2018 - 10:47

» Dalla Terra alla Luna - Serie TV
Da m.a.s Dom 25 Feb 2018 - 22:21

» Problema con D3D9Client Beta 25.4
Da Pietrogramma Dom 25 Feb 2018 - 16:28

» Intervista (finta) a Samantha Cristoforetti
Da Pete Conrad Sab 24 Feb 2018 - 18:25

» Mission to Mars
Da Edward Sab 24 Feb 2018 - 15:20

» oMMU, l'alternativa per la gestione dell'equipaggio!
Da Edward Gio 22 Feb 2018 - 13:13

» Traduzione ITA manuale operativo di volo flotta XR
Da Ripley Mer 21 Feb 2018 - 16:16

Argomenti simili
Contatore Visite

Condividi | 
 

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

Andare in basso 
AutoreMessaggio
simone
Add-on Developer
Add-on Developer
avatar

Numero di messaggi : 1005
Età : 22
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!
Torna in alto Andare in basso
Visualizza 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
Torna 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: