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/blender
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/blender')
-rw-r--r--source/blender/editors/space_view3d/SConscript6
-rw-r--r--source/blender/editors/space_view3d/view3d_intern.h2
-rw-r--r--source/blender/editors/space_view3d/view3d_ops.c3
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c69
4 files changed, 79 insertions, 1 deletions
diff --git a/source/blender/editors/space_view3d/SConscript b/source/blender/editors/space_view3d/SConscript
index b771095c781..7d51d237ef0 100644
--- a/source/blender/editors/space_view3d/SConscript
+++ b/source/blender/editors/space_view3d/SConscript
@@ -2,10 +2,14 @@
Import ('env')
sources = env.Glob('*.c')
+defs = []
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
incs += ' ../../render/extern/include #/intern/guardedalloc'
incs += ' ../../gpu ../../makesrna ../../blenfont'
-env.BlenderLib ( 'bf_editors_space_view3d', sources, Split(incs), [], libtype=['core'], priority=[40] )
+if env['WITH_BF_GAMEENGINE']:
+ defs.append('GAMEBLENDER=1')
+
+env.BlenderLib ( 'bf_editors_space_view3d', sources, Split(incs), defines = defs, libtype=['core'], priority=[40] )
diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h
index ab705cb32fb..6dbd99c67be 100644
--- a/source/blender/editors/space_view3d/view3d_intern.h
+++ b/source/blender/editors/space_view3d/view3d_intern.h
@@ -120,6 +120,8 @@ void VIEW3D_OT_select_lasso(struct wmOperatorType *ot);
void VIEW3D_OT_smoothview(struct wmOperatorType *ot);
void VIEW3D_OT_setcameratoview(struct wmOperatorType *ot);
void VIEW3D_OT_localview(struct wmOperatorType *ot);
+void VIEW3D_OT_game_start(struct wmOperatorType *ot);
+
int boundbox_clip(RegionView3D *rv3d, float obmat[][4], struct BoundBox *bb);
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index 0ed43bead17..6cb1051ce4a 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -85,6 +85,7 @@ void view3d_operatortypes(void)
WM_operatortype_append(VIEW3D_OT_drawtype);
WM_operatortype_append(VIEW3D_OT_editmesh_face_toolbox);
WM_operatortype_append(VIEW3D_OT_localview);
+ WM_operatortype_append(VIEW3D_OT_game_start);
WM_operatortype_append(VIEW3D_OT_layers);
WM_operatortype_append(VIEW3D_OT_properties);
@@ -173,6 +174,8 @@ void view3d_keymap(wmWindowManager *wm)
WM_keymap_add_item(keymap, "VIEW3D_OT_localview", PADSLASHKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "VIEW3D_OT_game_start", PKEY, KM_PRESS, 0, 0);
+
/* layers, shift + alt are properties set in invoke() */
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", ONEKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 1);
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", TWOKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 2);
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index e1a6f32aa41..eaa23061322 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -1382,6 +1382,75 @@ void VIEW3D_OT_localview(wmOperatorType *ot)
ot->poll= ED_operator_view3d_active;
}
+
+static void SaveState(void)
+{
+ glPushAttrib(GL_ALL_ATTRIB_BITS);
+
+ GPU_state_init();
+
+ if(G.f & G_TEXTUREPAINT)
+ GPU_paint_set_mipmap(1);
+
+ //XXX waitcursor(1);
+}
+
+static void RestoreState(void)
+{
+ if(G.f & G_TEXTUREPAINT)
+ GPU_paint_set_mipmap(0);
+
+ //XXX curarea->win_swap = 0;
+ //XXX curarea->head_swap=0;
+ //XXX allqueue(REDRAWVIEW3D, 1);
+ //XXX allqueue(REDRAWBUTSALL, 0);
+ //XXX reset_slowparents();
+ //XXX waitcursor(0);
+ //XXX G.qual= 0;
+ glPopAttrib();
+}
+
+/* maybe we need this defined somewhere else */
+extern void StartKetsjiShell(wmWindow *win, ScrArea *area, struct ARegion *ar, struct Scene *scene, struct Main* maggie,int always_use_expand_framing);
+
+
+static int game_engine_exec(bContext *C, wmOperator *unused)
+{
+ View3D *v3d= CTX_wm_view3d(C);
+ ScrArea *sa= CTX_wm_area(C); // curarea
+ ARegion *ar= CTX_wm_region(C);
+ Scene *sc, *startscene = CTX_data_scene(C);
+
+#if GAMEBLENDER == 1
+ SaveState();
+ StartKetsjiShell(CTX_wm_window(C), sa, ar, startscene, CTX_data_main(C), 1);
+ RestoreState();
+
+ //XXX restore_all_scene_cfra(scene_cfra_store);
+ set_scene_bg(startscene);
+ //XXX scene_update_for_newframe(G.scene, G.scene->lay);
+
+ ED_area_tag_redraw(CTX_wm_area(C));
+#else
+ printf("GameEngine Disabled\n");
+#endif
+
+ return OPERATOR_FINISHED;
+}
+
+void VIEW3D_OT_game_start(wmOperatorType *ot)
+{
+
+ /* identifiers */
+ ot->name= "Start Game Engine";
+ ot->idname= "VIEW3D_OT_game_start";
+
+ /* api callbacks */
+ ot->exec= game_engine_exec;
+
+ ot->poll= ED_operator_view3d_active;
+}
+
/* ************************************** */
void view3d_align_axis_to_vector(View3D *v3d, RegionView3D *rv3d, int axisidx, float vec[3])