Animation3D.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma once
  2. #include "Vec3.h"
  3. #include "ReferenceCounter.h"
  4. namespace Framework
  5. {
  6. class Skelett;
  7. class Knochen;
  8. class Animation3D : public virtual ReferenceCounter
  9. {
  10. private:
  11. struct KnochenData
  12. {
  13. KnochenData *next;
  14. double time = 0;
  15. Vec3<float> pos;
  16. Vec3<float> rot;
  17. };
  18. KnochenData *kd[ MAX_KNOCHEN_ANZ ];
  19. double maxTime;
  20. //! löscht eine KnochenData Struktur
  21. void deleteKnochenData( KnochenData *d );
  22. public:
  23. //! Konstruktor
  24. DLLEXPORT Animation3D();
  25. //! Destructor
  26. DLLEXPORT ~Animation3D();
  27. //! Fügt für einen bestimmten Knochen ein Keyframe hinzu
  28. //! \param kId Die Id des Knochens
  29. //! \param time Die Zeit, die vergehen soll bis der Knochen die Position und die Rotation des Keyframes follständig erreicht hat
  30. //! \param pos Die Position des Knochens die erreicht werden soll in Modellkoordinaten
  31. //! \param rot Die Rotation des Knochens um seine Position die erreicht werden soll
  32. 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. 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. DLLEXPORT void apply( Knochen *zK, double timeOffset, double sec ) const;
  43. };
  44. }