doxygen: bge scenegraph and videotexture
[blender-staging.git] / source / gameengine / VideoTexture / ImageRender.h
1 /* $Id$
2 -----------------------------------------------------------------------------
3 This source file is part of VideoTexture library
4
5 Copyright (c) 2007 The Zdeno Ash Miklas
6
7 This program is free software; you can redistribute it and/or modify it under
8 the terms of the GNU Lesser General Public License as published by the Free Software
9 Foundation; either version 2 of the License, or (at your option) any later
10 version.
11
12 This program is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public License along with
17 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
18 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
19 http://www.gnu.org/copyleft/lesser.txt.
20 -----------------------------------------------------------------------------
21 */
22
23 /** \file ImageRender.h
24  *  \ingroup bgevideotex
25  */
26  
27 #if !defined IMAGERENDER_H
28 #define IMAGERENDER_H
29
30
31 #include "Common.h"
32
33 #include <KX_Scene.h>
34 #include <KX_Camera.h>
35 #include <DNA_screen_types.h>
36 #include <RAS_ICanvas.h>
37 #include <RAS_IRasterizer.h>
38 #include <RAS_IRenderTools.h>
39
40 #include "ImageViewport.h"
41
42
43 /// class for render 3d scene
44 class ImageRender : public ImageViewport
45 {
46 public:
47         /// constructor
48         ImageRender (KX_Scene * scene, KX_Camera * camera);
49         ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObject * mirror, RAS_IPolyMaterial * mat);
50
51         /// destructor
52         virtual ~ImageRender (void);
53
54         /// get background color
55     int getBackground (int idx) { return (idx < 0 || idx > 3) ? 0 : int(m_background[idx]*255.f); }
56         /// set background color
57         void setBackground (int red, int green, int blue, int alpha);
58
59         /// clipping distance
60         float getClip (void) { return m_clip; }
61         /// set whole buffer use
62     void setClip (float clip) { m_clip = clip; }
63
64 protected:
65     /// true if ready to render
66     bool m_render;
67         /// rendered scene
68         KX_Scene * m_scene;
69         /// camera for render
70         KX_Camera * m_camera;
71     /// do we own the camera?
72     bool m_owncamera;
73     /// for mirror operation
74     KX_GameObject * m_observer;
75     KX_GameObject * m_mirror;
76         float m_clip;                                           // clipping distance
77     float m_mirrorHalfWidth;            // mirror width in mirror space
78     float m_mirrorHalfHeight;           // mirror height in mirror space
79     MT_Point3 m_mirrorPos;              // mirror center position in local space
80     MT_Vector3 m_mirrorZ;               // mirror Z axis in local space
81     MT_Vector3 m_mirrorY;               // mirror Y axis in local space
82     MT_Vector3 m_mirrorX;               // mirror X axis in local space
83     /// canvas
84     RAS_ICanvas* m_canvas;
85     /// rasterizer
86     RAS_IRasterizer* m_rasterizer;
87     /// render tools
88     RAS_IRenderTools* m_rendertools;
89     /// engine
90     KX_KetsjiEngine* m_engine;
91
92         /// background color
93         float  m_background[4];
94
95
96         /// render 3d scene to image
97         virtual void calcImage (unsigned int texId, double ts);
98
99         void Render();
100         void SetupRenderFrame(KX_Scene *scene, KX_Camera* cam);
101         void RenderFrame(KX_Scene* scene, KX_Camera* cam);
102         void SetBackGround(KX_WorldInfo* wi);
103         void SetWorldSettings(KX_WorldInfo* wi);
104 };
105
106
107 #endif
108