summaryrefslogtreecommitdiff
path: root/Runtime/Video/MovieTexture.h
blob: 401968f692370e69aa1285d2fb61afd5143f14c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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