arsa  2.7
CAVSceneNode.h
Go to the documentation of this file.
1 #ifndef __C_AV_SCENE_NODE_H__
2 #define __C_AV_SCENE_NODE_H__
3 
4 #include <irrlicht.h>
5 
6 #ifdef ARSA_FRAMEWORK
7 #include "ArsaCompileConfig.h"
8 #include "ESceneNodeTypes2.h"
9 #endif
10 
11 typedef struct av_t av_t;
12 
13 namespace irr
14 {
15 
16 #ifndef ARSA_FRAMEWORK
17 namespace scene
18 {
19  const int ESNT_AV = MAKE_IRR_ID('f','f','a','v');
20 }
21 #endif
22 
23 namespace arsa
24 {
25 
26 class CSceneManager2;
27 struct SPsd;
28 
29 const char* const sBuiltInPlayBackNames[] = {
30  "play",
31  "playonce",
32  "pause",
33  "stop",
34  "playall",
35  "pauseall",
36  "stopall",
37  "show",
38  "hide",
39  "isplaying",
40  "!isplaying",
41  "isend",
42  "!isend",
43  "clear",
44  "load",
45  "playat",
46  "playatresize",
47  "loop",
48  "once",
49  "resize",
50  "volume",
51  "seek",
52  "isready",
53  "isreadyfirst",
54  "fit",
55  "getfit",
56  "getframe",
57  "getframecount",
58  "cache",
59  "clearplayat",
60  "getfilename",
61  "clearcache",
62  "getcachecount",
63  "getcount",
64  "fps",
65  "getfps",
66  "getdurationend",
67  "getduration",
68  0
69 };
70 
72 {
73  EPB_PLAY = 0,
112 };
113 
115 {
116 public:
118  CAVSceneNode(irr::IrrlichtDevice* device, scene::ISceneNode* parent, scene::ISceneManager* smgr, arsa::CSceneManager2* smgr2, s32 id = -1);
119  virtual ~CAVSceneNode( );
120 
121  static void AV_INIT(irr::ILogger* log = 0);
122  static bool AV_DEINIT( );
123  static void internal_volume(irr::f32 vol = 1.0f);
124 
131  virtual bool openFromFile( const irr::core::stringc& filename, bool stream = true, const irr::core::dimension2di& size = irr::core::dimension2di(0,0));
133  virtual void avUpdate();
135  virtual void close( );
136  virtual bool isPlaying( ) const;
137  virtual bool isEnd( ) const;
138  virtual void play( bool play = true );
139  virtual void loop( bool loop );
140  virtual void stop( );
141  virtual void volume( irr::f32 vol = 1.0f );
142  virtual bool seek( u32 hh, u32 mm, u32 ss );
143  virtual bool seek_sec( irr::s32 sec );
144  virtual bool seek_percent( irr::s32 percent );
145  virtual bool resize( const irr::core::dimension2di& size );
147  virtual void show( bool show = true ) { m_show = show; }
148  //virtual void setAutoClose( bool close = false ) { m_auto_close = close; }
149  virtual bool isForground() const { return m_forground; }
150  virtual bool isShow() const { return m_show; }
151  //virtual bool isAutoClose() const { return m_auto_close; }
152  virtual bool draw( bool is_forground = true );
153  virtual void useAsTexture( bool active = true );
154  virtual void useAsForground(bool active = true) { m_forground = active; }
155  static E_PLAY_BACK getPlayback( const core::stringc& str );
156  virtual void playback( E_PLAY_BACK pb );
157  virtual void setPlayTime( f32 sec );
158  virtual video::ITexture* getTexture();
159  virtual void setDrawOrder(u32 order) { m_draworder = order; }
160  virtual u32 getDrawOrder() const { return m_draworder; }
161  virtual irr::u64 getVideoEndDuration() const; // return millisec, 0 is error
162  virtual irr::u64 getAudioEndDuration() const; // return millisec, 0 is error
163  virtual irr::u64 getVideoCurrentDuration() const; // return millisec, 0 is error
164  virtual irr::u64 getAudioCurrentDuration() const; // return millisec, 0 is error
165  virtual bool hasVideo() const { return m_has_video; }
166  virtual bool hasAudio() const { return m_has_audio; }
167 
169  virtual CAVSceneNode* clone(scene::ISceneNode* newParent = 0, scene::ISceneManager* newSceneManager = 0);
170 
172  virtual void OnRegisterSceneNode();
173 
175  virtual void OnAnimate(u32 timeMs);
176 
178  virtual void render();
179 
181  virtual const core::aabbox3d<f32>& getBoundingBox() const;
182 
184  virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const;
185 
188 
191 
192  virtual void setVisible(bool isVisible);
193 
199  virtual video::SMaterial& getMaterial(u32 i);
200 
202  virtual u32 getMaterialCount() const;
203 
204 private:
205 
206  irr::IrrlichtDevice* Device;
207  CSceneManager2* SceneManager2;
209  av_t* m_av;
210  irr::io::path m_filename;
211  video::SMaterial Material;
212  bool m_play;
213  bool m_loop;
214  bool m_stream;
215  bool m_show;
216  bool m_use_as_uv;
217  bool m_screen_align;
218  bool m_forground;
219  //bool m_auto_close;
220  bool m_has_audio;
221  bool m_has_video;
222  bool m_alpha;
223  f32 m_vol;
224  core::vector2df m_pos;
225  core::position2di m_size;
226  int m_align;
227  f32 m_play_time;
228  u32 LastTimeMs;
229  irr::video::ITexture* m_tex;
230  irr::video::IImage* m_image; // ref only from av
231  irr::scene::SMeshBuffer m_mb_fullscreen;
232  SPsd* m_psd;
233  u32 m_draworder;
234 
235 };
236 
237 } // end namespace arsa
238 } // end namespace irr
239 
240 #endif // __C_AV_SCENE_NODE_H__
241 
virtual bool hasVideo() const
Definition: CAVSceneNode.h:165
virtual bool isForground() const
Definition: CAVSceneNode.h:149
virtual void volume(irr::f32 vol=1.0f)
Template implementation of the IMeshBuffer interface.
Definition: CMeshBuffer.h:17
unsigned long long u64
64 bit unsigned variable.
Definition: irrTypes.h:86
virtual void setPlayTime(f32 sec)
Provides a generic interface for attributes and their values and the possibility to serialize them.
Definition: IAttributes.h:41
Interface providing read access to a file.
Definition: IReadFile.h:18
static void AV_INIT(irr::ILogger *log=0)
virtual bool isVisible() const
Returns whether the node should be visible (if all of its parents are visible).
Definition: ISceneNode.h:243
float f32
32 bit floating point variable.
Definition: irrTypes.h:108
GLuint GLuint stream
virtual void avUpdate()
user must call update function ever loop
virtual bool hasAudio() const
Definition: CAVSceneNode.h:166
Scene node interface.
Definition: ISceneNode.h:40
virtual void OnRegisterSceneNode()
Pre-Register stuff.
struct holding data describing options
The Irrlicht device. You can create it with createDevice() or createDeviceEx().
virtual irr::u64 getAudioCurrentDuration() const
Everything in the Irrlicht Engine can be found in this namespace.
Definition: CARSADPad.h:6
Main header file of the irrlicht, the only file needed to include.
virtual void deserializeAttributes(io::IAttributes *in, io::SAttributeReadWriteOptions *options=0)
Reads attributes of the scene node.
GLfixed GLfixed GLint GLint order
virtual scene::ESCENE_NODE_TYPE getType() const
Returns type of the scene node.
Definition: CAVSceneNode.h:190
GLsizeiptr size
Specifies a 2 dimensional size.
Definition: dimension2d.h:20
static bool AV_DEINIT()
virtual bool seek_sec(irr::s32 sec)
Interface for software image data.
Definition: IImage.h:25
Very simple string class with some useful features.
Definition: irrString.h:37
virtual void loop(bool loop)
virtual void playback(E_PLAY_BACK pb)
virtual void setVisible(bool isVisible)
Sets if the node should be visible or not.
static void internal_volume(irr::f32 vol=1.0f)
virtual bool resize(const irr::core::dimension2di &size)
signed int s32
32 bit signed variable.
Definition: irrTypes.h:70
virtual bool openFromFile(const irr::core::stringc &filename, bool stream=true, const irr::core::dimension2di &size=irr::core::dimension2di(0, 0))
virtual bool isPlaying() const
virtual u32 getDrawOrder() const
Definition: CAVSceneNode.h:160
virtual irr::u64 getVideoCurrentDuration() const
virtual bool isShow() const
Definition: CAVSceneNode.h:150
virtual void OnAnimate(u32 timeMs)
OnAnimate() is called just before rendering the whole scene.
GLfloat f
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:62
Interface for logging messages, warnings and errors.
Definition: ILogger.h:38
struct av_t av_t
Definition: CAVSceneNode.h:11
virtual bool open(irr::io::IReadFile *fp, const irr::core::dimension2di &size=irr::core::dimension2di(0, 0))
virtual video::SMaterial & getMaterial(u32 i)
virtual irr::u64 getVideoEndDuration() const
virtual bool seek(u32 hh, u32 mm, u32 ss)
ESCENE_NODE_TYPE
An enumeration for all types of built-in scene nodes.
virtual irr::core::dimension2di getTextureSize()
virtual CAVSceneNode * clone(scene::ISceneNode *newParent=0, scene::ISceneManager *newSceneManager=0)
Will create a copy of this scenenode and it's settings.
The Scene Manager manages scene nodes, mesh resources, cameras and all the other stuff.
virtual video::ITexture * getTexture()
virtual void render()
Render our grid using 3D lines.
virtual void play(bool play=true)
#define MAKE_IRR_ID(c0, c1, c2, c3)
ignore VC8 warning deprecated
Definition: irrTypes.h:243
virtual bool draw(bool is_forground=true)
const int ESNT_AV
Definition: CAVSceneNode.h:19
CAVSceneNode(irr::IrrlichtDevice *device, scene::ISceneNode *parent, scene::ISceneManager *smgr, arsa::CSceneManager2 *smgr2, s32 id=-1)
Constructor.
static E_PLAY_BACK getPlayback(const core::stringc &str)
Interface of a Video Driver dependent Texture.
Definition: ITexture.h:177
virtual void show(bool show=true)
Definition: CAVSceneNode.h:147
virtual irr::u64 getAudioEndDuration() const
virtual const core::aabbox3d< f32 > & getBoundingBox() const
Returns our bounding box.
virtual void setDrawOrder(u32 order)
Definition: CAVSceneNode.h:159
virtual void serializeAttributes(io::IAttributes *out, io::SAttributeReadWriteOptions *options=0) const
Writes attributes of the scene node.
virtual void close()
close this audio
GLuint in
Struct for holding parameters for a material renderer.
Definition: SMaterial.h:304
virtual bool isEnd() const
virtual u32 getMaterialCount() const
returns amount of materials used by this scene node.
virtual void useAsTexture(bool active=true)
virtual bool seek_percent(irr::s32 percent)
const char *const sBuiltInPlayBackNames[]
Definition: CAVSceneNode.h:29
virtual void useAsForground(bool active=true)
Definition: CAVSceneNode.h:154