BGE: option in the UI to start with the mouse cursor visible. Patch by Vitor Balbio...
authorDalai Felinto <dfelinto@gmail.com>
Sun, 23 Jan 2011 17:25:27 +0000 (17:25 +0000)
committerDalai Felinto <dfelinto@gmail.com>
Sun, 23 Jan 2011 17:25:27 +0000 (17:25 +0000)
----------------------------------
While we are more and more moving towards enabling features in the Python API, it's also important to have Logic Bricks working with no scripts.

This option allows you to start the game with the mouse cursor on (it's on Render Buttons). The defalt is still off (no do_version needed here).

release/scripts/ui/properties_game.py
source/blender/makesdna/DNA_scene_types.h
source/blender/makesrna/intern/rna_scene.c
source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
source/gameengine/GamePlayer/ghost/GPG_Application.cpp

index 856ae6245666d550f4345646b86f8835ac264b31..cb0dbc039124dfaca1e25f3098d894d3dfefb2b7 100644 (file)
@@ -217,7 +217,9 @@ class RENDER_PT_game_player(RenderButtonsPanel, bpy.types.Panel):
 
         gs = context.scene.game_settings
 
 
         gs = context.scene.game_settings
 
-        layout.prop(gs, "show_fullscreen")
+        row = layout.row()
+        row.prop(gs, "show_fullscreen")
+        row.prop(gs, "show_mouse")
 
         split = layout.split()
 
 
         split = layout.split()
 
index f214598f6057ce5bb10668297337ae0eeda68131..f87d10b1f7d0c212c9f2c4274e22cd6e4dd338e7 100644 (file)
@@ -492,6 +492,7 @@ typedef struct GameData {
 #define GAME_GLSL_NO_EXTRA_TEX                         (1 << 11)
 #define GAME_IGNORE_DEPRECATION_WARNINGS       (1 << 12)
 #define GAME_ENABLE_ANIMATION_RECORD           (1 << 13)
 #define GAME_GLSL_NO_EXTRA_TEX                         (1 << 11)
 #define GAME_IGNORE_DEPRECATION_WARNINGS       (1 << 12)
 #define GAME_ENABLE_ANIMATION_RECORD           (1 << 13)
+#define GAME_SHOW_MOUSE                                                (1 << 14)
 
 /* GameData.matmode */
 #define GAME_MAT_TEXFACE       0
 
 /* GameData.matmode */
 #define GAME_MAT_TEXFACE       0
index 720b12879895c88f5df58fdf53390a9db940faea..d0c7bc3ca2b97c30ac11d7ae200aaccd4ac5c42b 100644 (file)
@@ -1811,6 +1811,10 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
        RNA_def_property_boolean_sdna(prop, NULL, "flag", GAME_SHOW_PHYSICS);
        RNA_def_property_ui_text(prop, "Show Physics Visualization", "Show a visualization of physics bounds and interactions");
 
        RNA_def_property_boolean_sdna(prop, NULL, "flag", GAME_SHOW_PHYSICS);
        RNA_def_property_ui_text(prop, "Show Physics Visualization", "Show a visualization of physics bounds and interactions");
 
+       prop= RNA_def_property(srna, "show_mouse", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag", GAME_SHOW_MOUSE);
+       RNA_def_property_ui_text(prop, "Show Mouse", "Start player with a visible mouse cursor");
+
        prop= RNA_def_property(srna, "use_frame_rate", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_ENABLE_ALL_FRAMES);
        RNA_def_property_ui_text(prop, "Use Frame Rate", "Respect the frame rate rather than rendering as many frames as possible");
        prop= RNA_def_property(srna, "use_frame_rate", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_ENABLE_ALL_FRAMES);
        RNA_def_property_ui_text(prop, "Use Frame Rate", "Respect the frame rate rather than rendering as many frames as possible");
index e5179e8926f1839a641a0d27b4b8a50cbaef0fed..f6e29fe0dbb9f144cbf35f50ebf1cbf38e85d9c5 100644 (file)
@@ -176,11 +176,18 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c
                bool nodepwarnings = (SYS_GetCommandLineInt(syshandle, "ignore_deprecation_warnings", 0) != 0);
 #endif
                bool novertexarrays = (SYS_GetCommandLineInt(syshandle, "novertexarrays", 0) != 0);
                bool nodepwarnings = (SYS_GetCommandLineInt(syshandle, "ignore_deprecation_warnings", 0) != 0);
 #endif
                bool novertexarrays = (SYS_GetCommandLineInt(syshandle, "novertexarrays", 0) != 0);
+               bool mouse_state = startscene->gm.flag & GAME_SHOW_MOUSE;
+
                if(animation_record) usefixed= true; /* override since you's always want fixed time for sim recording */
 
                // create the canvas, rasterizer and rendertools
                RAS_ICanvas* canvas = new KX_BlenderCanvas(win, area_rect, ar);
                if(animation_record) usefixed= true; /* override since you's always want fixed time for sim recording */
 
                // create the canvas, rasterizer and rendertools
                RAS_ICanvas* canvas = new KX_BlenderCanvas(win, area_rect, ar);
-               canvas->SetMouseState(RAS_ICanvas::MOUSE_INVISIBLE);
+               
+               // default mouse state set on render panel
+               if (mouse_state)
+                       canvas->SetMouseState(RAS_ICanvas::MOUSE_NORMAL);
+               else
+                       canvas->SetMouseState(RAS_ICanvas::MOUSE_INVISIBLE);
                RAS_IRenderTools* rendertools = new KX_BlenderRenderTools();
                RAS_IRasterizer* rasterizer = NULL;
                
                RAS_IRenderTools* rendertools = new KX_BlenderRenderTools();
                RAS_IRasterizer* rasterizer = NULL;
                
index d1dee0521730ac1e25616cf2ac27f10e4db6c6c4..060f2f6c3c415d7960bdbfba580c764a69451860 100644 (file)
@@ -546,7 +546,10 @@ bool GPG_Application::initEngine(GHOST_IWindow* window, const int stereoMode)
                if (!m_canvas)
                        return false;
                                
                if (!m_canvas)
                        return false;
                                
-               m_canvas->Init();                               
+               m_canvas->Init();
+               if (gm->flag & GAME_SHOW_MOUSE)
+                       m_canvas->SetMouseState(RAS_ICanvas::MOUSE_NORMAL);                             
+
                m_rendertools = new GPC_RenderTools();
                if (!m_rendertools)
                        goto initFailed;
                m_rendertools = new GPC_RenderTools();
                if (!m_rendertools)
                        goto initFailed;