| | [C++] Gestione animazioni MGROUP_SCALE | |
| | Autore | Messaggio |
---|
Matt44 Add-on Developer


Numero di messaggi : 1226 Età : 45 Località : Bergamo Data d'iscrizione : 13.04.11
![[C++] Gestione animazioni MGROUP_SCALE Empty](https://2img.net/i/empty.gif) | Titolo: [C++] Gestione animazioni MGROUP_SCALE Mer 19 Giu 2013 - 13:37 | |
| Sto definendo un paracadute e come facevo con spacecraft3 ho utilizato SCALE, ed in questo caso MGROUP_SCALE. Ho però un problema non riesco a fermare l'animazione; per spiegarmi meglio la mia idea era di creare un animazione che rimpicciolisce la mesh del paracadute e poi farla andare al contrario... (da 1 a 0) solo che il paracadute si rimpicciolisce ma poi non torna più indietro.
Io sono partito da questo che ho trovato su OH
MGROUP_SCALE bay2 (0, LGrp2, 2, _V(8.111672,-6.521036,-54.86), _V(0,1,0)); | |
|  | | Fausto Admin


Numero di messaggi : 7181 Età : 40 Località : Arcore (Milano) Data d'iscrizione : 27.06.09
![[C++] Gestione animazioni MGROUP_SCALE Empty](https://2img.net/i/empty.gif) | Titolo: Re: [C++] Gestione animazioni MGROUP_SCALE Mer 19 Giu 2013 - 14:00 | |
| Aspetta, non ho capito: le due cose devono essere fatte da sole in sequenza o devi fare in modo che premendo il tasto l'animazione ritorni al punto di partenza? | |
|  | | Matt44 Add-on Developer


Numero di messaggi : 1226 Età : 45 Località : Bergamo Data d'iscrizione : 13.04.11
![[C++] Gestione animazioni MGROUP_SCALE Empty](https://2img.net/i/empty.gif) | Titolo: Re: [C++] Gestione animazioni MGROUP_SCALE Mer 19 Giu 2013 - 14:09 | |
| Vorrei che premendo il tasto l'animazione si attivi rimpicciolisca il paracadute e poi ripremendolo torni indietro, con TRANSALTE e ROTATE funziona perfettamente, con SCALE non funziona. Non capisco se devo fare qualcosa di differente.
static UINT Par1Grp[8] = {60,61,159,160,147,149,118,119}; static MGROUP_SCALE Par1 (0, Par1Grp, 8, _V(8.111672,-6.521036,-54.86), _V(0,1,0)); anim_pan1 = CreateAnimation (0); AddAnimationComponent (anim_Par1, 0, 1, &Par1);
Quello sopra è la definizione dell'animazione che uso per ogni animazione, l'unica cosa che cambia è MGROUP_SCALE. | |
|  | | Fausto Admin


Numero di messaggi : 7181 Età : 40 Località : Arcore (Milano) Data d'iscrizione : 27.06.09
![[C++] Gestione animazioni MGROUP_SCALE Empty](https://2img.net/i/empty.gif) | Titolo: Re: [C++] Gestione animazioni MGROUP_SCALE Mer 19 Giu 2013 - 14:45 | |
| Il codice che vedo qui è giusto, il mio sospetto è che ci sia qualcosa da qualche altra parte che impedisce l'animazione.. ora non ho sotto mano il codice ma domani vedo di postarti le varie parti che vanno a creare l'animazione del gonfiaggio del galleggiante di Antares.. sono sicuro che si tratta di qualche virgola o qualche parentesi mancante, com'è di solito in questi casi  | |
|  | | Matt44 Add-on Developer


Numero di messaggi : 1226 Età : 45 Località : Bergamo Data d'iscrizione : 13.04.11
![[C++] Gestione animazioni MGROUP_SCALE Empty](https://2img.net/i/empty.gif) | Titolo: Re: [C++] Gestione animazioni MGROUP_SCALE Mer 19 Giu 2013 - 14:57 | |
| Come al solito, grazie... non c'è urgenza comunque  | |
|  | | fred18 Add-on Developer

Numero di messaggi : 950 Età : 40 Località : La Spezia Data d'iscrizione : 04.01.12
![[C++] Gestione animazioni MGROUP_SCALE Empty](https://2img.net/i/empty.gif) | Titolo: Re: [C++] Gestione animazioni MGROUP_SCALE Mer 19 Giu 2013 - 15:36 | |
| Domanda: per translate e rotate ti funziona semplicemente così? perché in teoria il "ritorno" dell'animazione dovrebbe essere definito in post step o in cosume buffered key a seconda di dove lo si mette: il concetto è premo il tasto dell'animazione, se lo stato dell'animazione è 0 allora parte in un verso, se lo stato dell'animazione è 1 allora parte nell'altro. Anche perché non è detto che debba fare avanti e indietro (pensa a come le usi con Spacecraft3). Mi meraviglia che funzioni così easy con translate e rotate.  | |
|  | | Matt44 Add-on Developer


Numero di messaggi : 1226 Età : 45 Località : Bergamo Data d'iscrizione : 13.04.11
![[C++] Gestione animazioni MGROUP_SCALE Empty](https://2img.net/i/empty.gif) | Titolo: Re: [C++] Gestione animazioni MGROUP_SCALE Mer 19 Giu 2013 - 15:53 | |
| Quella è la definizione, che è l'unica cosa che cambia. Tutto il resto rimane invariato.
Poi c'è la gestione dello stato, ma quella parte non è stata toccata... appena posso farò altre prove, ora mi sto distraendo per non impazzirci sopra, che poi magari è la solita virgola persa per strada. | |
|  | | Fausto Admin


Numero di messaggi : 7181 Età : 40 Località : Arcore (Milano) Data d'iscrizione : 27.06.09
![[C++] Gestione animazioni MGROUP_SCALE Empty](https://2img.net/i/empty.gif) | Titolo: Re: [C++] Gestione animazioni MGROUP_SCALE Ven 21 Giu 2013 - 14:09 | |
| Come promesso, posto qui tutte le parti relative all'animazione del galleggiante, spero possa essere utile a risolvere i tuoi dubbi: - Codice:
-
const double GALL_OPERATING_SPEED = 0.5;
class antares: public VESSEL2 { public: enum DoorStatus { DOOR_CLOSED, DOOR_OPEN, DOOR_CLOSING, DOOR_OPENING }status_gall;
void Activategall (DoorStatus action); void Revertgall (void);
UINT anim_gall;
double proc_gall; };
antares::antares (OBJHANDLE hObj, int fmodel) : VESSEL2 (hObj, fmodel) { status_gall = DOOR_CLOSED;
proc_gall = 0.0 }
void antares::clbkPostStep (double simt, double simdt, double mjd){ if (status_gall >= DOOR_CLOSING) { double da = oapiGetSimStep() * GALL_OPERATING_SPEED; if (status_gall == DOOR_CLOSING) { if (proc_gall > 0.0) proc_gall = max (0.0, proc_gall-da); else { status_gall = DOOR_CLOSED; } } else { // door opening if (proc_gall < 1.0) proc_gall= min (1.0, proc_gall+da); else { status_gall = DOOR_OPEN;
}
} SetAnimation (anim_gall, proc_gall); }
}
void antares::clbkSaveState (FILEHANDLE scn) { if (status_gall) { sprintf (cbuf, "%d %0.4f", status_gall, proc_gall); oapiWriteScenario_string (scn, "GALL", cbuf);
}
}
void antares::clbkLoadStateEx (FILEHANDLE scn, void *vs) { if (!strnicmp (line, "GALL", 4)) sscanf (line+4, "%d%lf", &status_gall, &proc_gall);
SetAnimation (anim_gall, proc_gall);
}
void antares::DefineAnimations (void) { static UINT gall1Grp[1] = {13}; static MGROUP_SCALE gall1 (midx,gall1Grp, 1, _V(0.948,0.942,2.03), _V(15,15,15)); static UINT gall2Grp[1] = {12}; static MGROUP_SCALE gall2 (midx,gall2Grp, 1, _V(0.948,-0.942,2.03), _V(15,15,15)); static UINT gall3Grp[1] = {11}; static MGROUP_SCALE gall3 (midx,gall3Grp, 1, _V(-0.948,-0.942,2.03), _V(15,15,15)); static UINT gall4Grp[1] = {10}; static MGROUP_SCALE gall4 (midx,gall4Grp, 1, _V(-0.948,0.942,2.03), _V(15,15,15)); static UINT gall5Grp[1] = {9}; static MGROUP_SCALE gall5 (midx,gall5Grp, 1, _V(0.0,0.0,-2.342), _V(4,4,5)); static UINT gallmark1Grp[1] = {89}; static MGROUP_TRANSLATE gallmark1 (midx, gallmark1Grp, 1, _V(0.0,-0.007,0.0)); static UINT gallmark2Grp[1] = {89}; static MGROUP_TRANSLATE gallmark2 (midx, gallmark2Grp, 1, _V(0.0,-0.008,0.0)); anim_gall=CreateAnimation (0.0); AddAnimationComponent (anim_gall, 0, 1, &gall1); AddAnimationComponent (anim_gall, 0, 1, &gall2); AddAnimationComponent (anim_gall, 0, 1, &gall3); AddAnimationComponent (anim_gall, 0, 1, &gall4); AddAnimationComponent (anim_gall, 0.0, 1, &gall5); AddAnimationComponent (anim_gall, 0.0, 0.01, &gallmark1); AddAnimationComponent (anim_gall, 0.99, 1, &gallmark2); }
int antares::clbkConsumeBufferedKey(DWORD key, bool down, char *kstate) { if (!down) return 0; switch (key) { case OAPI_KEY_G: PlayVesselWave3(MyID, 11); if (GroundContact()) RevertMasterAlarm(),PlayVesselWave3(MyID, 1); else Revertgall(); return 1; } return 0;
}
void antares::Activategall (DoorStatus action) { status_gallswitch = action; }
void antares::Revertgall (void) { Activategall ((status_gallswitch == DOOR_CLOSED || status_gallswitch == DOOR_CLOSING) ? DOOR_OPENING : DOOR_CLOSING); }
void antares::clbkPostCreation() { SetAnimation (anim_gall, proc_gall); } Credo di aver messo tutto.. copia ed incolla e prendi spunto sostituendo i nomi delle tue animazione al posto delle mie, cancella le parti che non ti servono.. e facci sapere il risultato!  | |
|  | | Contenuto sponsorizzato
![[C++] Gestione animazioni MGROUP_SCALE Empty](https://2img.net/i/empty.gif) | Titolo: Re: [C++] Gestione animazioni MGROUP_SCALE ![[C++] Gestione animazioni MGROUP_SCALE Empty](https://2img.net/i/empty.gif) | |
| |
|  | | | [C++] Gestione animazioni MGROUP_SCALE | |
|
Argomenti simili |  |
|
| Permessi in questa sezione del forum: | Non puoi rispondere agli argomenti in questo forum.
| |
| |
| |