Animation3D.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #pragma once
  2. #include "ReferenceCounter.h"
  3. #include "Vec3.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
  30. //! und die Rotation des Keyframes follständig erreicht hat \param pos
  31. //! Die Position des Knochens die erreicht werden soll in
  32. //! Modellkoordinaten \param rot Die Rotation des Knochens um seine
  33. //! Position die erreicht werden soll
  34. DLLEXPORT void addKeyFrame(
  35. int kId, double time, Vec3<float> pos, Vec3<float> rot);
  36. //! Wendet die Animation auf ein bestimmtes Skelett an
  37. //! zS: Das Skelett
  38. //! timeOffset: zeit in sekunden, die diese Animation bereits auf dem
  39. //! Skelett angewendet wurde. Wird automatisch von der Animation
  40. //! aktualisiert. sec: zeit in Sekunden, die vergangen ist seit dem
  41. //! diese Methode zuletzt für das Skelett aufgerufen wurde
  42. DLLEXPORT void apply(Skelett* zS, double& timeOffset, double sec) const;
  43. //! Wendet die Animation auf ein bestimmten Knochen an
  44. //! zS: Der Knochen
  45. //! timeOffset: zeit in sekunden, die diese Animation bereits auf dem
  46. //! Knochen angewendet wurde. sec: zeit in Sekunden, die vergangen ist
  47. //! seit dem diese Methode zuletzt für dem Knochen aufgerufen wurde
  48. DLLEXPORT void apply(Knochen* zK, double timeOffset, double sec) const;
  49. };
  50. } // namespace Framework