diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Video/MovieTexture.h |
Diffstat (limited to 'Runtime/Video/MovieTexture.h')
-rw-r--r-- | Runtime/Video/MovieTexture.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/Runtime/Video/MovieTexture.h b/Runtime/Video/MovieTexture.h new file mode 100644 index 0000000..401968f --- /dev/null +++ b/Runtime/Video/MovieTexture.h @@ -0,0 +1,77 @@ +#pragma once +#include "Configuration/UnityConfigure.h" + +#if ENABLE_MOVIES + +#include "BaseVideoTexture.h" +#include "MoviePlayback.h" +#include "Runtime/Audio/AudioClip.h" +#if ENABLE_WWW +#include "Runtime/Export/WWW.h" +#endif +#include <vector> + +class ColorRGBAf; +class MoviePlayback; + + +class MovieTexture: public BaseVideoTexture +{ +private: + + std::vector<UInt8> m_MovieData; //the raw Ogg movie data + MoviePlayback m_MoviePlayback; //class controlling playback state + PPtr<AudioClip> m_AudioClip; //attached AudioClip +#if ENABLE_WWW + WWW *m_StreamData; //if != NULL, use this instead of m_MovieData. +#else + typedef void WWW; +#endif + +protected: +// void DestroyTexture (); + + void TryLoadMovie (); + +public: + REGISTER_DERIVED_CLASS (MovieTexture, Texture) + DECLARE_OBJECT_SERIALIZE (MovieTexture) + +#if ENABLE_WWW + // WARNING: don't call AwakeFromLoad if you use InitStream + void InitStream (WWW * streamData); +#endif + void AwakeFromLoad (AwakeFromLoadMode awakeMode); + + void Rewind(); + virtual void Play(); + virtual void Pause(); + virtual void Stop (); + virtual void Update (); + virtual void UnloadFromGfxDevice(bool forceUnloadAll); + virtual void UploadToGfxDevice(); + + bool IsPlaying(); + bool GetLoop () {return m_MoviePlayback.GetLoop();} + void SetLoop (bool l) {m_MoviePlayback.SetLoop(l);} + + bool ReadyToPlay (); + + virtual bool ShouldIgnoreInGarbageDependencyTracking (); + MovieTexture (MemLabelId label, ObjectCreationMode mode, WWW* streamData = NULL); + + #if ENABLE_PROFILER || UNITY_EDITOR + virtual int GetStorageMemorySize() const { return m_MovieData.size(); } + #endif + + // WARNING: don't call AwakeFromLoad if you use SetMovieData + void SetMovieData(const UInt8* data,long size); + std::vector<UInt8> *GetMovieData() { return &m_MovieData; } + + AudioClip *GetMovieAudioClip() { return m_AudioClip; } + void SetMovieAudioClip(AudioClip *clip); + + float GetMovieDuration() { return m_MoviePlayback.GetMovieTotalDuration(); } +}; + +#endif // ENABLE_MOVIES |