1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #pragma once
- #include "ReferenceCounter.h"
- #include "Vec3.h"
- namespace Framework
- {
- class Skelett;
- class Knochen;
- class Animation3D : public virtual ReferenceCounter
- {
- private:
- struct KnochenData
- {
- KnochenData* next;
- double time = 0;
- Vec3<float> pos;
- Vec3<float> rot;
- };
- KnochenData* kd[MAX_KNOCHEN_ANZ];
- double maxTime;
- //! löscht eine KnochenData Struktur
- void deleteKnochenData(KnochenData* d);
- public:
- //! Konstruktor
- DLLEXPORT Animation3D();
- //! Destructor
- DLLEXPORT ~Animation3D();
- //! Fügt für einen bestimmten Knochen ein Keyframe hinzu
- //! \param kId Die Id des Knochens
- //! \param time Die Zeit, die vergehen soll bis der Knochen die Position
- //! und die Rotation des Keyframes follständig erreicht hat \param pos
- //! Die Position des Knochens die erreicht werden soll in
- //! Modellkoordinaten \param rot Die Rotation des Knochens um seine
- //! Position die erreicht werden soll
- DLLEXPORT void addKeyFrame(
- int kId, double time, Vec3<float> pos, Vec3<float> rot);
- //! Wendet die Animation auf ein bestimmtes Skelett an
- //! zS: Das Skelett
- //! timeOffset: zeit in sekunden, die diese Animation bereits auf dem
- //! Skelett angewendet wurde. Wird automatisch von der Animation
- //! aktualisiert. sec: zeit in Sekunden, die vergangen ist seit dem
- //! diese Methode zuletzt für das Skelett aufgerufen wurde
- DLLEXPORT void apply(Skelett* zS, double& timeOffset, double sec) const;
- //! Wendet die Animation auf ein bestimmten Knochen an
- //! zS: Der Knochen
- //! timeOffset: zeit in sekunden, die diese Animation bereits auf dem
- //! Knochen angewendet wurde. sec: zeit in Sekunden, die vergangen ist
- //! seit dem diese Methode zuletzt für dem Knochen aufgerufen wurde
- DLLEXPORT void apply(Knochen* zK, double timeOffset, double sec) const;
- };
- } // namespace Framework
|