Ghost Context Refactor
[blender-staging.git] / source / gameengine / VideoTexture / ImageRender.cpp
index 0b34824fd082510931c1a8137da9f875852b6130..617e7fd1d8e5bb51a8d04c40249cf2bebf036d29 100644 (file)
 #include <math.h>
 
 
-#include "GL/glew.h"
+#include "glew-mx.h"
 
 #include "KX_PythonInit.h"
 #include "DNA_scene_types.h"
 #include "RAS_CameraData.h"
 #include "RAS_MeshObject.h"
+#include "RAS_Polygon.h"
 #include "BLI_math.h"
 
 #include "ImageRender.h"
@@ -62,7 +63,7 @@ ExpDesc MirrorHorizontalDesc(MirrorHorizontal, "Mirror is horizontal in local sp
 ExpDesc MirrorTooSmallDesc(MirrorTooSmall, "Mirror is too small");
 
 // constructor
-ImageRender::ImageRender (KX_Scene * scene, KX_Camera * camera) : 
+ImageRender::ImageRender (KX_Scene *scene, KX_Camera * camera) :
     ImageViewport(),
     m_render(true),
     m_scene(scene),
@@ -70,7 +71,9 @@ ImageRender::ImageRender (KX_Scene * scene, KX_Camera * camera) :
     m_owncamera(false),
     m_observer(NULL),
     m_mirror(NULL),
-    m_clip(100.f)
+    m_clip(100.f),
+    m_mirrorHalfWidth(0.f),
+    m_mirrorHalfHeight(0.f)
 {
        // initialize background color
        setBackground(0, 0, 255, 255);
@@ -78,7 +81,6 @@ ImageRender::ImageRender (KX_Scene * scene, KX_Camera * camera) :
        m_engine = KX_GetActiveEngine();
        m_rasterizer = m_engine->GetRasterizer();
        m_canvas = m_engine->GetCanvas();
-       m_rendertools = m_engine->GetRenderTools();
 }
 
 // destructor
@@ -197,10 +199,9 @@ void ImageRender::Render()
        m_canvas->SetViewPort(m_position[0], m_position[1], m_position[0]+m_capSize[0]-1, m_position[1]+m_capSize[1]-1);
        m_canvas->ClearColor(m_background[0], m_background[1], m_background[2], m_background[3]);
        m_canvas->ClearBuffer(RAS_ICanvas::COLOR_BUFFER|RAS_ICanvas::DEPTH_BUFFER);
-       m_rasterizer->BeginFrame(RAS_IRasterizer::KX_TEXTURED,m_engine->GetClockTime());
-       m_rendertools->BeginFrame(m_rasterizer);
+       m_rasterizer->BeginFrame(m_engine->GetClockTime());
        m_engine->SetWorldSettings(m_scene->GetWorldInfo());
-       m_rendertools->SetAuxilaryClientInfo(m_scene);
+       m_rasterizer->SetAuxilaryClientInfo(m_scene);
        m_rasterizer->DisplayFog();
        // matrix calculation, don't apply any of the stereo mode
        m_rasterizer->SetStereoMode(RAS_IRasterizer::RAS_STEREO_NOSTEREO);
@@ -273,7 +274,11 @@ void ImageRender::Render()
 
        m_scene->CalculateVisibleMeshes(m_rasterizer,m_camera);
 
-       m_scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools);
+       m_scene->UpdateAnimations(m_engine->GetFrameTime());
+
+       m_scene->RenderBuckets(camtrans, m_rasterizer);
+
+       m_scene->RenderFonts();
 
        // restore the canvas area now that the render is completed
        m_canvas->GetWindowArea() = area;
@@ -288,9 +293,9 @@ inline ImageRender * getImageRender (PyImage *self)
 // python methods
 
 // Blender Scene type
-BlendType<KX_Scene> sceneType ("KX_Scene");
+static BlendType<KX_Scene> sceneType ("KX_Scene");
 // Blender Camera type
-BlendType<KX_Camera> cameraType ("KX_Camera");
+static BlendType<KX_Camera> cameraType ("KX_Camera");
 
 
 // object initialization
@@ -299,7 +304,7 @@ static int ImageRender_init(PyObject *pySelf, PyObject *args, PyObject *kwds)
        // parameters - scene object
        PyObject *scene;
        // camera object
-       PyObject * camera;
+       PyObject *camera;
        // parameter keywords
        static const char *kwlist[] = {"sceneObj", "cameraObj", NULL};
        // get parameters
@@ -398,8 +403,7 @@ static PyGetSetDef imageRenderGetSets[] =
 
 
 // define python type
-PyTypeObject ImageRenderType =
-{ 
+PyTypeObject ImageRenderType = {
        PyVarObject_HEAD_INIT(NULL, 0)
        "VideoTexture.ImageRender",   /*tp_name*/
        sizeof(PyImage),          /*tp_basicsize*/
@@ -562,7 +566,7 @@ static PyGetSetDef imageMirrorGetSets[] =
 
 
 // constructor
-ImageRender::ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObject * mirror, RAS_IPolyMaterial * mat) :
+ImageRender::ImageRender (KX_Scene *scene, KX_GameObject *observer, KX_GameObject *mirror, RAS_IPolyMaterial *mat) :
     ImageViewport(),
     m_render(false),
     m_scene(scene),
@@ -592,7 +596,6 @@ ImageRender::ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObj
        m_engine = KX_GetActiveEngine();
        m_rasterizer = m_engine->GetRasterizer();
        m_canvas = m_engine->GetCanvas();
-       m_rendertools = m_engine->GetRenderTools();
        // locate the vertex assigned to mat and do following calculation in mesh coordinates
        for (int meshIndex = 0; meshIndex < mirror->GetMeshCount(); meshIndex++)
        {
@@ -733,8 +736,7 @@ ImageRender::ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObj
 
 
 // define python type
-PyTypeObject ImageMirrorType =
-{ 
+PyTypeObject ImageMirrorType = {
        PyVarObject_HEAD_INIT(NULL, 0)
        "VideoTexture.ImageMirror",   /*tp_name*/
        sizeof(PyImage),          /*tp_basicsize*/