Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2009-06-13 21:25:54 +0400
committerCampbell Barton <ideasman42@gmail.com>2009-06-13 21:25:54 +0400
commit611e2f484c1d3c1c07abbe289a23623e714c700f (patch)
tree3ff7159023ff556bbfc0803c9e0c4407a67a35b8 /source/gameengine/BlenderRoutines
parent3a9396c47dcc1083baf5bcbb93556f65b84ba5a0 (diff)
GameEngine WIP,
* pressing P starts the BGE in the 3D view * redraw window clipping isnt right * BGE python api works in py3k (without __import__ override or Mathutils, BGL, Geometry) * no events yet (so there is no way to exit)
Diffstat (limited to 'source/gameengine/BlenderRoutines')
-rw-r--r--source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp31
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp25
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderCanvas.h10
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderGL.cpp16
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderGL.h7
5 files changed, 52 insertions, 37 deletions
diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
index a1df5621922..5f1437b8699 100644
--- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
+++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
@@ -88,11 +88,11 @@
extern "C" {
#endif
//XXX #include "BSE_headerbuttons.h"
-void update_for_newframe();
#ifdef __cplusplus
}
#endif
+
static BlendFileData *load_game_data(char *filename)
{
ReportList reports;
@@ -111,17 +111,17 @@ static BlendFileData *load_game_data(char *filename)
return bfd;
}
-extern "C" void StartKetsjiShell(struct ScrArea *area,
+extern "C" void StartKetsjiShell(struct wmWindow *win,
+ struct ScrArea *area,
struct ARegion *ar,
- char* scenename,
+ Scene *scene,
struct Main* maggie1,
int always_use_expand_framing)
{
int exitrequested = KX_EXIT_REQUEST_NO_REQUEST;
- Scene *scene= NULL; // XXX give as arg
Main* blenderdata = maggie1;
- char* startscenename = scenename;
+ char* startscenename = scene->id.name+2;
char pathname[FILE_MAXDIR+FILE_MAXFILE], oldsce[FILE_MAXDIR+FILE_MAXFILE];
STR_String exitstring = "";
BlendFileData *bfd= NULL;
@@ -155,7 +155,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
bool nodepwarnings = (SYS_GetCommandLineInt(syshandle, "ignore_deprecation_warnings", 0) != 0);
bool novertexarrays = (SYS_GetCommandLineInt(syshandle, "novertexarrays", 0) != 0);
// create the canvas, rasterizer and rendertools
- RAS_ICanvas* canvas = new KX_BlenderCanvas(area);
+ RAS_ICanvas* canvas = new KX_BlenderCanvas(win, ar);
canvas->SetMouseState(RAS_ICanvas::MOUSE_INVISIBLE);
RAS_IRenderTools* rendertools = new KX_BlenderRenderTools();
RAS_IRasterizer* rasterizer = NULL;
@@ -235,7 +235,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
}
for (i = 0; i < 16; i++)
{
- float *projmat_linear; //XXX = (float*) area->winmat;
+ float *projmat_linear= (float*) rv3d->winmat;
projmat.setElem(i, projmat_linear[i]);
}
@@ -423,7 +423,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
exitrequested = ketsjiengine->GetExitCode();
// kick the engine
- bool render = ketsjiengine->NextFrame();
+ bool render = ketsjiengine->NextFrame(); // XXX 2.5 Bug, This is never true! FIXME- Campbell
if (render)
{
@@ -434,7 +434,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
// test for the ESC key
while (0) //XXX while (qtest())
{
- short val;
+ short val = 0;
unsigned short event = 0; //XXX extern_qread(&val);
if (keyboarddevice->ConvertBlenderEvent(event,val))
@@ -444,9 +444,9 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
* should this really be?
*/
if (event==MOUSEX) {
- val = 0;//XXX val - scrarea_get_win_x(area);
+ val = val - ar->winrct.xmin;
} else if (event==MOUSEY) {
- val = 0;//XXX scrarea_get_win_height(area) - (val - scrarea_get_win_y(area)) - 1;
+ val = ar->winy - (val - ar->winrct.ymin) - 1;
}
mousedevice->ConvertBlenderEvent(event,val);
@@ -557,7 +557,8 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
PyGILState_Release(gilstate);
}
-extern "C" void StartKetsjiShellSimulation(struct ScrArea *area,
+extern "C" void StartKetsjiShellSimulation(struct wmWindow *win,
+ struct ScrArea *area,
struct ARegion *ar,
char* scenename,
struct Main* maggie,
@@ -595,7 +596,7 @@ extern "C" void StartKetsjiShellSimulation(struct ScrArea *area,
bool usemat = false;
// create the canvas, rasterizer and rendertools
- RAS_ICanvas* canvas = new KX_BlenderCanvas(area);
+ RAS_ICanvas* canvas = new KX_BlenderCanvas(win, ar);
//canvas->SetMouseState(RAS_ICanvas::MOUSE_INVISIBLE);
RAS_IRenderTools* rendertools = new KX_BlenderRenderTools();
RAS_IRasterizer* rasterizer = NULL;
@@ -648,7 +649,7 @@ extern "C" void StartKetsjiShellSimulation(struct ScrArea *area,
cframe=blscene->r.cfra;
startFrame = blscene->r.sfra;
blscene->r.cfra=startFrame;
- update_for_newframe();
+ // update_for_newframe(); // XXX scene_update_for_newframe wont cut it!
ketsjiengine->SetGame2IpoMode(game2ipo,startFrame);
}
@@ -722,7 +723,7 @@ extern "C" void StartKetsjiShellSimulation(struct ScrArea *area,
// kick the engine
ketsjiengine->NextFrame();
blscene->r.cfra=blscene->r.cfra+1;
- update_for_newframe();
+ // update_for_newframe(); // XXX scene_update_for_newframe wont cut it
}
exitstring = ketsjiengine->GetExitString();
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
index 750a1ef3f93..aa83d17a03a 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
@@ -26,15 +26,16 @@
* ***** END GPL LICENSE BLOCK *****
*/
-//XXX #include "BIF_scrarea.h"
#include "KX_BlenderCanvas.h"
+#include "DNA_screen_types.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-KX_BlenderCanvas::KX_BlenderCanvas(struct ScrArea *area) :
-m_area(area)
+KX_BlenderCanvas::KX_BlenderCanvas(struct wmWindow *win, ARegion *ar) :
+m_win(win),
+m_ar(ar)
{
}
@@ -50,7 +51,7 @@ void KX_BlenderCanvas::Init()
void KX_BlenderCanvas::SwapBuffers()
{
- BL_SwapBuffers();
+ BL_SwapBuffers(m_win);
}
void KX_BlenderCanvas::BeginFrame()
@@ -93,12 +94,12 @@ void KX_BlenderCanvas::ClearBuffer(int type)
int KX_BlenderCanvas::GetWidth(
) const {
- return 0; //XXX scrarea_get_win_width(m_area);
+ return m_ar->winx;
}
int KX_BlenderCanvas::GetHeight(
) const {
- return 0; //XXX scrarea_get_win_height(m_area);
+ return m_ar->winy;
}
RAS_Rect &
@@ -116,8 +117,8 @@ SetViewPort(
){
int vp_width = (x2 - x1) + 1;
int vp_height = (y2 - y1) + 1;
- int minx = 0;//XXX scrarea_get_win_x(m_area);
- int miny = 0;//XXX scrarea_get_win_y(m_area);
+ int minx = m_ar->winrct.xmin;
+ int miny = m_ar->winrct.ymin;
m_area_rect.SetLeft(minx + x1);
m_area_rect.SetBottom(miny + y1);
@@ -159,9 +160,9 @@ void KX_BlenderCanvas::SetMouseState(RAS_MouseState mousestate)
// (0,0) is top left, (width,height) is bottom right
void KX_BlenderCanvas::SetMousePosition(int x,int y)
{
- int winX = 0;//XXX scrarea_get_win_x(m_area);
- int winY = 0;//XXX scrarea_get_win_y(m_area);
- int winH = 0;//XXX scrarea_get_win_height(m_area);
+ int winX = m_ar->winrct.xmin;
+ int winY = m_ar->winrct.ymin;
+ int winH = m_ar->winy;
BL_warp_pointer(winX + x, winY + (winH-y-1));
}
@@ -170,5 +171,5 @@ void KX_BlenderCanvas::SetMousePosition(int x,int y)
void KX_BlenderCanvas::MakeScreenShot(const char* filename)
{
- BL_MakeScreenShot(m_area, filename);
+ BL_MakeScreenShot(m_ar, filename);
}
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h
index bc202a8558c..fd41fb90f2f 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h
+++ b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h
@@ -40,7 +40,8 @@
#include "KX_BlenderGL.h"
-struct ScrArea;
+struct ARegion;
+struct wmWindow;
/**
* 2D Blender device context abstraction.
@@ -57,9 +58,9 @@ private:
public:
/* Construct a new canvas.
*
- * @param area The Blender ScrArea to run the game within.
+ * @param area The Blender ARegion to run the game within.
*/
- KX_BlenderCanvas(struct ScrArea* area);
+ KX_BlenderCanvas(struct wmWindow* win, struct ARegion* ar);
~KX_BlenderCanvas();
void
@@ -162,7 +163,8 @@ public:
private:
/** Blender area the game engine is running within */
- struct ScrArea* m_area;
+ struct ARegion* m_ar;
+ struct wmWindow* m_win;
RAS_Rect m_area_rect;
};
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp b/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
index de7a7f54fde..5cf696fe146 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
@@ -27,7 +27,14 @@
*/
#include "KX_BlenderGL.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
#include "BLF_api.h"
+#ifdef __cplusplus
+}
+#endif
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -58,6 +65,7 @@
#include "DNA_image_types.h"
#include "DNA_view3d_types.h"
#include "DNA_material_types.h"
+#include "DNA_windowmanager_types.h"
#include "BKE_global.h"
#include "BKE_bmfont.h"
@@ -68,7 +76,7 @@ extern "C" {
//XXX #include "BIF_mywindow.h"
//XXX #include "BIF_toolbox.h"
//XXX #include "BIF_graphics.h" /* For CURSOR_NONE CURSOR_WAIT CURSOR_STD */
-
+void wm_window_swap_buffers(wmWindow *win); // wm_window.h
}
/* end of blender block */
@@ -86,8 +94,10 @@ void BL_warp_pointer(int x,int y)
//XXX warp_pointer(x,y);
}
-void BL_SwapBuffers()
+void BL_SwapBuffers(wmWindow *win)
{
+ //wmWindow *window= CTX_wm_window(C);
+ wm_window_swap_buffers(win);
//XXX myswapbuffers();
}
@@ -214,7 +224,7 @@ void BL_NormalMouse()
#define MAX_FILE_LENGTH 512
-void BL_MakeScreenShot(struct ScrArea *area, const char* filename)
+void BL_MakeScreenShot(struct ARegion *ar, const char* filename)
{
char copyfilename[MAX_FILE_LENGTH];
strcpy(copyfilename,filename);
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderGL.h b/source/gameengine/BlenderRoutines/KX_BlenderGL.h
index b891a7343c2..1e65f29d87c 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderGL.h
+++ b/source/gameengine/BlenderRoutines/KX_BlenderGL.h
@@ -33,14 +33,15 @@
extern "C" {
#endif //__cplusplus
-struct ScrArea;
+struct wmWindow;
+struct ARegion;
// special swapbuffers, that takes care of which area (viewport) needs to be swapped
-void BL_SwapBuffers();
+void BL_SwapBuffers(struct wmWindow *win);
void BL_warp_pointer(int x,int y);
-void BL_MakeScreenShot(struct ScrArea *area, const char* filename);
+void BL_MakeScreenShot(struct ARegion *ar, const char* filename);
void BL_HideMouse();
void BL_NormalMouse();