From: Antoine B. <an...@bo...> - 2002-08-30 11:29:03
|
Bon, apr=E8s quelques semaines charg=E9es entre boulot, d=E9m=E9nagement = et vacances ;) je me suis remis un peu au code. J'ai vouu pr=E9parer le terrain pour = le blending d'anims, donc j'ai un peu modifi=E9 la fa=E7on dont les anims so= nt updat=E9es : avant, c'=E9taient les tracks qui mettaient =E0 jour les obj= ets avec un switch suivant le Target dans chaque OR_AnimationTrack_xxx::Compute(). Maintenant le switch est d=E9plac=E9 dans une nouvelle fonction OR_Object::Animate() et les OR_AnimationTrack ont simplement =E0 appeler = cette fonction. Plusieurs avantages : d=E9j=E0 =E7a =E9vite la redondance qu'y = avait avant, et ensuite =E7a permet de rajouter des targets comme on veut : les OR_Object::Animate() sont virtual et ainsi si un objet particulier a des targets d'animation suppl=E9mentaires, il suffit qu'il overloade la fonct= ion animate pour les g=E9rer (et appeler OR_Object::Animate() dans le default= ). Mais en fait au final il faut que ce ne soit plus les OR_AnimationTrack q= ui appellent Animate(), mais les OR_AnimationNode, pour permettre le blendin= g d'anims. Mon id=E9e est que le node appelle AnimationTrack::Compute() pou= r chaque track =E0 blender, mixe le tout et appelle OR_Object::Animate() av= ec le r=E9sultat. Il faut donc que Compute() retourne la valeur calcul=E9e au l= ieu de l'appliquer directement =E0 l'objet. Et c'est l=E0 que ca coince : la fon= ction ne retourne pas toujours le m=EAme type suivant le track (ca peut =EAtre = un float, un vecteur, etc). Donc je me dit pas de probl=E8me, on va rajouter= un template =E0 AnimationTrack. Mais =E0 ce moment l=E0 on ne peut plus fair= e une list de OR_AnimationTrack*, le compilateur veut que je donne un type en template, et c'est pas cool parce qu'il faut que la liste puisse contenir des tracks de type diff=E9rents. Donc j'ai l'impression d'=EAtre bloqu=E9= . Je pense qu'y a une solution mais l=E0 je vois pas laquelle, je vais y r=E9f= l=E9chir. En attendant si vous avez une id=E9e, faites-m'en part. Je sais pas si c'= est tr=E8s clair, si vous avez pas bien compris, et bien, euh, relisez :). Je pense que gab comprendra :p Voil=E0, pour l'instant je met l'update qui marche sur le CVS (enfin j'essaye). A+, Antoche P.S. : gab fais-nous signe quand tu rentres, =E7a serait cool qu'on se vo= ie cette semaine. P.P.S. : gloups lundi c'est la rentr=E9e |