Animation3D.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #pragma once
  2. #include "Vec3.h"
  3. namespace Framework
  4. {
  5. class Skelett;
  6. class Knochen;
  7. class Animation3D
  8. {
  9. private:
  10. struct KnochenData
  11. {
  12. KnochenData *next;
  13. double time = 0;
  14. Vec3<float> pos;
  15. Vec3<float> rot;
  16. };
  17. KnochenData *kd[ MAX_KNOCHEN_ANZ ];
  18. double maxTime;
  19. int ref;
  20. // löscht eine KnochenData Struktur
  21. void deleteKnochenData( KnochenData *d );
  22. public:
  23. // Konstruktor
  24. __declspec( dllexport ) Animation3D();
  25. // Destructor
  26. __declspec( dllexport ) ~Animation3D();
  27. // Fügt für einen bestimmten Knochen ein Keyframe hinzu
  28. // kId: Die Id des Knochens
  29. // time: Die Zeit, die vergehen soll bis der Knochen die Position und die Rotation des Keyframes follständig erreicht hat
  30. // pos: Die Position des Knochens die erreicht werden soll in Modellkoordinaten
  31. // rot: Die Rotation des Knochens um seine Position die erreicht werden soll
  32. __declspec( dllexport ) void addKeyFrame( int kId, double time, Vec3<float> pos, Vec3<float> rot );
  33. // Wendet die Animation auf ein bestimmtes Skelett an
  34. // zS: Das Skelett
  35. // timeOffset: zeit in sekunden, die diese Animation bereits auf dem Skelett angewendet wurde. Wird automatisch von der Animation aktualisiert.
  36. // sec: zeit in Sekunden, die vergangen ist seit dem diese Methode zuletzt für das Skelett aufgerufen wurde
  37. __declspec( dllexport ) void apply( Skelett *zS, double &timeOffset, double sec ) const;
  38. // Wendet die Animation auf ein bestimmten Knochen an
  39. // zS: Der Knochen
  40. // timeOffset: zeit in sekunden, die diese Animation bereits auf dem Knochen angewendet wurde.
  41. // sec: zeit in Sekunden, die vergangen ist seit dem diese Methode zuletzt für dem Knochen aufgerufen wurde
  42. __declspec( dllexport ) void apply( Knochen *zK, double timeOffset, double sec ) const;
  43. // Erhöht den Reference Counting Zähler.
  44. // return: this.
  45. __declspec( dllexport ) Animation3D *getThis();
  46. // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht.
  47. // return: 0.
  48. __declspec( dllexport ) Animation3D *release();
  49. };
  50. }