BGE Redraw problem:

at the moment only files from blender 2.4x will display in 2.5x, compared area and window structs in both cases and dont see any differences.

This doesnt fix the problem but corrects a few things related to window drawing with the BGE,
also adds a hack because I noticed the window and area pointers in the KX_BlenderCanvas were offset after initialized, maybe need to use <static cast> ?
This commit is contained in:
Campbell Barton 2009-06-27 23:54:20 +00:00
parent 35ac032b55
commit aa933d2c9f
5 changed files with 31 additions and 32 deletions

@ -65,6 +65,14 @@
#include "SYS_System.h" #include "SYS_System.h"
#include "GPU_extensions.h"
#include "Value.h"
#ifdef __cplusplus
extern "C" {
#endif
/***/ /***/
#include "DNA_view3d_types.h" #include "DNA_view3d_types.h"
#include "DNA_screen_types.h" #include "DNA_screen_types.h"
@ -77,21 +85,13 @@
//XXX #include "BIF_scrarea.h" //XXX #include "BIF_scrarea.h"
#include "BKE_main.h" #include "BKE_main.h"
//#include "BKE_context.h"
#include "BLI_blenlib.h" #include "BLI_blenlib.h"
#include "BLO_readfile.h" #include "BLO_readfile.h"
#include "DNA_scene_types.h" #include "DNA_scene_types.h"
/***/ /***/
#include "GPU_extensions.h"
#include "Value.h"
#ifdef __cplusplus
extern "C" {
#endif
//XXX #include "BSE_headerbuttons.h" //XXX #include "BSE_headerbuttons.h"
#include "BKE_context.h"
#include "../../blender/windowmanager/WM_types.h" #include "../../blender/windowmanager/WM_types.h"
#include "../../blender/windowmanager/wm_window.h" #include "../../blender/windowmanager/wm_window.h"
#include "../../blender/windowmanager/wm_event_system.h" #include "../../blender/windowmanager/wm_event_system.h"
@ -118,19 +118,10 @@ static BlendFileData *load_game_data(char *filename)
return bfd; return bfd;
} }
/* screw it, BKE_context.h is complaining! */
extern "C" struct wmWindow *CTX_wm_window(const bContext *C);
extern "C" struct ScrArea *CTX_wm_area(const bContext *C);
extern "C" struct ARegion *CTX_wm_region(const bContext *C);
extern "C" struct Scene *CTX_data_scene(const bContext *C);
extern "C" struct Main *CTX_data_main(const bContext *C);
extern "C" void StartKetsjiShell(struct bContext *C, int always_use_expand_framing) extern "C" void StartKetsjiShell(struct bContext *C, int always_use_expand_framing)
{ {
/* context values */ /* context values */
struct wmWindow *win= CTX_wm_window(C); struct wmWindow *win= CTX_wm_window(C);
struct ScrArea *area= CTX_wm_area(C); // curarea
struct ARegion *ar= CTX_wm_region(C); struct ARegion *ar= CTX_wm_region(C);
struct Scene *scene= CTX_data_scene(C); struct Scene *scene= CTX_data_scene(C);
struct Main* maggie1= CTX_data_main(C); struct Main* maggie1= CTX_data_main(C);
@ -159,8 +150,8 @@ extern "C" void StartKetsjiShell(struct bContext *C, int always_use_expand_frami
do do
{ {
View3D *v3d= (View3D*) area->spacedata.first; View3D *v3d= CTX_wm_view3d(C);
RegionView3D *rv3d= (RegionView3D*) ar->regiondata; RegionView3D *rv3d= CTX_wm_region_view3d(C);
// get some preferences // get some preferences
SYS_SystemHandle syshandle = SYS_GetSystem(); SYS_SystemHandle syshandle = SYS_GetSystem();
@ -239,7 +230,6 @@ extern "C" void StartKetsjiShell(struct bContext *C, int always_use_expand_frami
scene->camera= v3d->camera; scene->camera= v3d->camera;
} }
// some blender stuff // some blender stuff
MT_CmMatrix4x4 projmat; MT_CmMatrix4x4 projmat;
MT_CmMatrix4x4 viewmat; MT_CmMatrix4x4 viewmat;
@ -257,7 +247,7 @@ extern "C" void StartKetsjiShell(struct bContext *C, int always_use_expand_frami
projmat.setElem(i, projmat_linear[i]); projmat.setElem(i, projmat_linear[i]);
} }
if(v3d->persp==V3D_CAMOB) { if(rv3d->persp==V3D_CAMOB) {
camzoom = (1.41421 + (rv3d->camzoom / 50.0)); camzoom = (1.41421 + (rv3d->camzoom / 50.0));
camzoom *= camzoom; camzoom *= camzoom;
} }
@ -348,10 +338,10 @@ extern "C" void StartKetsjiShell(struct bContext *C, int always_use_expand_frami
if (exitrequested != KX_EXIT_REQUEST_QUIT_GAME) if (exitrequested != KX_EXIT_REQUEST_QUIT_GAME)
{ {
if (v3d->persp != V3D_CAMOB) if (rv3d->persp != V3D_CAMOB)
{ {
ketsjiengine->EnableCameraOverride(startscenename); ketsjiengine->EnableCameraOverride(startscenename);
ketsjiengine->SetCameraOverrideUseOrtho((v3d->persp == V3D_ORTHO)); ketsjiengine->SetCameraOverrideUseOrtho((rv3d->persp == V3D_ORTHO));
ketsjiengine->SetCameraOverrideProjectionMatrix(projmat); ketsjiengine->SetCameraOverrideProjectionMatrix(projmat);
ketsjiengine->SetCameraOverrideViewMatrix(viewmat); ketsjiengine->SetCameraOverrideViewMatrix(viewmat);
ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far); ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far);
@ -587,7 +577,6 @@ extern "C" void StartKetsjiShell(struct bContext *C, int always_use_expand_frami
} }
extern "C" void StartKetsjiShellSimulation(struct wmWindow *win, extern "C" void StartKetsjiShellSimulation(struct wmWindow *win,
struct ScrArea *area,
struct ARegion *ar, struct ARegion *ar,
char* scenename, char* scenename,
struct Main* maggie, struct Main* maggie,

@ -20,6 +20,7 @@ SET(INC
../../../source/blender ../../../source/blender
../../../source/blender/include ../../../source/blender/include
../../../source/blender/makesdna ../../../source/blender/makesdna
../../../source/blender/makesrna
../../../source/gameengine/Rasterizer ../../../source/gameengine/Rasterizer
../../../source/gameengine/GameLogic ../../../source/gameengine/GameLogic
../../../source/gameengine/Expressions ../../../source/gameengine/Expressions

@ -28,15 +28,23 @@
#include "KX_BlenderCanvas.h" #include "KX_BlenderCanvas.h"
#include "DNA_screen_types.h" #include "DNA_screen_types.h"
#include "stdio.h"
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include <config.h> #include <config.h>
#endif #endif
// temp hack, prevents pointers being offset somehow, will need to look into this later - Campbell
ARegion *m_ar;
wmWindow *m_win;
KX_BlenderCanvas::KX_BlenderCanvas(struct wmWindow *win, ARegion *ar) : KX_BlenderCanvas::KX_BlenderCanvas(struct wmWindow *win, ARegion *ar) :
m_win(win), __m_win(win),
m_ar(ar) __m_ar(ar)
{ {
m_ar= ar;
m_win= win;
} }
KX_BlenderCanvas::~KX_BlenderCanvas() KX_BlenderCanvas::~KX_BlenderCanvas()

@ -163,8 +163,8 @@ public:
private: private:
/** Blender area the game engine is running within */ /** Blender area the game engine is running within */
struct ARegion* m_ar; struct ARegion* __m_ar;
struct wmWindow* m_win; struct wmWindow* __m_win;
RAS_Rect m_area_rect; RAS_Rect m_area_rect;
}; };

@ -11,7 +11,8 @@ incs += ' #intern/ghost/include'
incs += ' #intern/moto/include #source/gameengine/Ketsji #source/blender/blenlib' incs += ' #intern/moto/include #source/gameengine/Ketsji #source/blender/blenlib'
incs += ' #source/blender/blenkernel #source/blender' incs += ' #source/blender/blenkernel #source/blender'
incs += ' #source/blender/blenfont #source/blender/editors/include' incs += ' #source/blender/blenfont #source/blender/editors/include'
incs += ' #source/blender/makesdna #source/gameengine/Rasterizer #source/gameengine/GameLogic' incs += ' #source/blender/makesdna #source/blender/makesrna'
incs += ' #source/gameengine/Rasterizer #source/gameengine/GameLogic'
incs += ' #source/gameengine/Expressions #source/gameengine/Network' incs += ' #source/gameengine/Expressions #source/gameengine/Network'
incs += ' #source/gameengine/SceneGraph #source/gameengine/Physics/common' incs += ' #source/gameengine/SceneGraph #source/gameengine/Physics/common'
incs += ' #source/gameengine/Physics/Bullet' incs += ' #source/gameengine/Physics/Bullet'