oops. I sent way too much files :/ going to revert the extra ones now ... sorry<br><br><div class="gmail_quote">2010/3/2 Dalai Felinto <span dir="ltr"><<a href="mailto:dfelinto@gmail.com">dfelinto@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Revision: 27231<br>
          <a href="http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27231" target="_blank">http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27231</a><br>

Author:   dfelinto<br>
Date:     2010-03-03 07:38:47 +0100 (Wed, 03 Mar 2010)<br>
<br>
Log Message:<br>
-----------<br>
BGE 2D Filters: filters run per scene now (fix for [#18152]) - it (slightly) breaks backward compatibility !!!<br>
<br>
Originally we had 2DFilters (m_filtermanager) stored in RenderTools. That way filters were stored globally and were being called once per each scene. This was producing two big problems: (1) performance and (2) flexibility of use.<br>

<br>
(1) Performance - To run the filters 2X == 2X slower<br>
(2) flexibility of use - Very often we want the filter in the scene but not in the UI for example.<br>
<br>
For those reasons I believe that 2DFilters with multiple scenes was very useless or unpredictable. I hope they work fine now.<br>
To make it work as before (2.4) you can simply recreate the 2dfilter actuators across the scenes.<br>
<br>
* * * * *<br>
<br>
Imagine that we have:<br>
(a) Main Scene<br>
(b) Overlay Scene<br>
<br>
in Main Scene the Z Buffer and RGB will be from the main scene.<br>
in Overlay Scene the Z Buffer will be from the Overlay Scene and the RBG buffer is from both [(a + 2D Filter) + b].<br>
<br>
So in pseudo code if we have a,b,c,d,e scenes we have: (2DFilterE(2DFilterD(2DFilterC(2DFilterB(2DFilterA(a) + b) + c) + d) + e)<br>
<br>
Modified Paths:<br>
--------------<br>
    trunk/blender/CMakeLists.txt<br>
    trunk/blender/source/blender/editors/screen/screen_ops.c<br>
    trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp<br>
    trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h<br>
    trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp<br>
    trunk/blender/source/gameengine/GameLogic/CMakeLists.txt<br>
    trunk/blender/source/gameengine/GameLogic/Makefile<br>
    trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp<br>
    trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h<br>
    trunk/blender/source/gameengine/GameLogic/SConscript<br>
    trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp<br>
    trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.h<br>
    trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp<br>
    trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.h<br>
    trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp<br>
    trunk/blender/source/gameengine/Ketsji/KX_Scene.h<br>
    trunk/blender/source/gameengine/Rasterizer/CMakeLists.txt<br>
    trunk/blender/source/gameengine/Rasterizer/Makefile<br>
    trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.h<br>
    trunk/blender/source/gameengine/Rasterizer/RAS_IRenderTools.h<br>
<br>
Modified: trunk/blender/CMakeLists.txt<br>
===================================================================<br>
--- trunk/blender/CMakeLists.txt        2010-03-03 00:32:51 UTC (rev 27230)<br>
+++ trunk/blender/CMakeLists.txt        2010-03-03 06:38:47 UTC (rev 27231)<br>
@@ -261,7 +261,7 @@<br>
        # this file is included anyway when building under Windows with cl.exe<br>
        #  INCLUDE(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)<br>
<br>
-       SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)<br>
+       SET(LIBDIR ${CMAKE_SOURCE_DIR}/../../../lib/windows)<br>
<br>
        # Setup 64bit and 64bit windows systems<br>
        IF(CMAKE_CL_64)<br>
<br>
Modified: trunk/blender/source/blender/editors/screen/screen_ops.c<br>
===================================================================<br>
--- trunk/blender/source/blender/editors/screen/screen_ops.c    2010-03-03 00:32:51 UTC (rev 27230)<br>
+++ trunk/blender/source/blender/editors/screen/screen_ops.c    2010-03-03 06:38:47 UTC (rev 27231)<br>
@@ -2250,7 +2250,53 @@<br>
        ot->poll= ED_operator_areaactive;<br>
        ot->flag= 0;<br>
 }<br>
+/* ************** header pan to left + mouse over editor changes operator ***************************** */<br>
+// This is a hacky, or a workaround if you prefer<br>
+// I like being able to quickly switch Editors (ALT+MOUSEWHEEL)<br>
+// Since the editor switcher is not always visible (and it should IMHO) this operator helps you with that :)<br>
<br>
+static int header_focus_exec(bContext *C, wmOperator *op)<br>
+{<br>
+       int i;<br>
+       int bounds[4] = {0,20,0,0};<br>
+       ARegion *ar= CTX_wm_region(C);<br>
+<br>
+       /* find the header region<br>
+        *      - try context first, but upon failing, search all regions in area...<br>
+        */<br>
+       if((ar == NULL) || (ar->regiontype != RGN_TYPE_HEADER)) {<br>
+               ScrArea *sa= CTX_wm_area(C);<br>
+<br>
+               /* loop over all regions until a matching one is found */<br>
+               for (ar= sa->regionbase.first; ar; ar= ar->next) {<br>
+                       if(ar->regiontype == RGN_TYPE_HEADER)<br>
+                               break;<br>
+               }<br>
+<br>
+               /* don't do anything if no region */<br>
+               if(ar == NULL)<br>
+                       return OPERATOR_CANCELLED;<br>
+       }<br>
+       for (i =0; i <40; i++){<br>
+               WM_operator_name_call(C, "VIEW2D_OT_scroll_left", WM_OP_INVOKE_DEFAULT, NULL);<br>
+       }<br>
+<br>
+       return OPERATOR_FINISHED;<br>
+}<br>
+<br>
+static void SCREEN_OT_header_focus(wmOperatorType *ot)<br>
+{<br>
+       /* identifiers */<br>
+       ot->name= "Header Focus";<br>
+       ot->idname= "SCREEN_OT_header_focus";<br>
+<br>
+       /* api callbacks */<br>
+       ot->exec= header_focus_exec;<br>
+<br>
+       ot->poll= ED_operator_areaactive;<br>
+       ot->flag= 0;<br>
+}<br>
+<br>
 /* ************** header flip operator ***************************** */<br>
<br>
 /* flip a header region alignment */<br>
@@ -2325,7 +2371,7 @@<br>
                uiItemO(layout, "Flip to Bottom", 0, "SCREEN_OT_header_flip");<br>
        else<br>
                uiItemO(layout, "Flip to Top", 0, "SCREEN_OT_header_flip");<br>
-<br>
+       uiItemO(layout, "Focus on Editor Type", 0, "SCREEN_OT_header_focus");<br>
        uiItemS(layout);<br>
<br>
        /* file browser should be fullscreen all the time, but other regions can be maximised/restored... */<br>
@@ -3996,6 +4042,7 @@<br>
        WM_operatortype_append(SCREEN_OT_region_flip);<br>
        WM_operatortype_append(SCREEN_OT_header_flip);<br>
        WM_operatortype_append(SCREEN_OT_header_toolbox);<br>
+       WM_operatortype_append(SCREEN_OT_header_focus);<br>
        WM_operatortype_append(SCREEN_OT_screen_set);<br>
        WM_operatortype_append(SCREEN_OT_screen_full_area);<br>
        WM_operatortype_append(SCREEN_OT_back_to_previous);<br>
@@ -4080,6 +4127,7 @@<br>
        keymap= WM_keymap_find(keyconf, "Header", 0, 0);<br>
<br>
        WM_keymap_add_item(keymap, "SCREEN_OT_header_toolbox", RIGHTMOUSE, KM_PRESS, 0, 0);<br>
+       WM_keymap_add_item(keymap, "SCREEN_OT_header_focus", MIDDLEMOUSE, KM_PRESS, KM_ALT, 0);<br>
<br>
        /* Screen General ------------------------------------------------ */<br>
        keymap= WM_keymap_find(keyconf, "Screen", 0, 0);<br>
<br>
Modified: trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp<br>
===================================================================<br>
--- trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp   2010-03-03 00:32:51 UTC (rev 27230)<br>
+++ trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp   2010-03-03 06:38:47 UTC (rev 27231)<br>
@@ -379,13 +379,3 @@<br>
                }<br>
        }<br>
 }<br>
-<br>
-void KX_BlenderRenderTools::Update2DFilter(vector<STR_String>& propNames, void* gameObj, RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass, STR_String& text)<br>
-{<br>
-       m_filtermanager.EnableFilter(propNames, gameObj, filtermode, pass, text);<br>
-}<br>
-<br>
-void KX_BlenderRenderTools::Render2DFilters(RAS_ICanvas* canvas)<br>
-{<br>
-       m_filtermanager.RenderFilters(canvas);<br>
-}<br>
<br>
Modified: trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h<br>
===================================================================<br>
--- trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h     2010-03-03 00:32:51 UTC (rev 27230)<br>
+++ trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h     2010-03-03 06:38:47 UTC (rev 27231)<br>
@@ -94,10 +94,6 @@<br>
<br>
        virtual void MotionBlur(RAS_IRasterizer* rasterizer);<br>
<br>
-       virtual void Update2DFilter(vector<STR_String>& propNames, void* gameObj, RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass, STR_String& text);<br>
-<br>
-       virtual void Render2DFilters(RAS_ICanvas* canvas);<br>
-<br>
        virtual void SetClientObject(RAS_IRasterizer *rasty, void* obj);<br>
<br>
<br>
<br>
Modified: trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp<br>
===================================================================<br>
--- trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp   2010-03-03 00:32:51 UTC (rev 27230)<br>
+++ trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp   2010-03-03 06:38:47 UTC (rev 27231)<br>
@@ -969,7 +969,7 @@<br>
                        }<br>
<br>
                        tmp = new SCA_2DFilterActuator(gameobj, filtermode, _2dfilter->flag,<br>
-                               _2dfilter->float_arg,_2dfilter->int_arg,ketsjiEngine->GetRasterizer(),rendertools);<br>
+                               _2dfilter->float_arg,_2dfilter->int_arg,ketsjiEngine->GetRasterizer(),scene);<br>
<br>
                        if (_2dfilter->text)<br>
                        {<br>
<br>
Modified: trunk/blender/source/gameengine/GameLogic/CMakeLists.txt<br>
===================================================================<br>
--- trunk/blender/source/gameengine/GameLogic/CMakeLists.txt    2010-03-03 00:32:51 UTC (rev 27230)<br>
+++ trunk/blender/source/gameengine/GameLogic/CMakeLists.txt    2010-03-03 06:38:47 UTC (rev 27231)<br>
@@ -32,6 +32,7 @@<br>
        ../../../intern/string<br>
        ../../../source/gameengine/Expressions<br>
        ../../../source/gameengine/SceneGraph<br>
+       ../../../source/gameengine/Ketsji<br>
        ../../../intern/moto/include<br>
        ../../../source/gameengine/Rasterizer<br>
 )<br>
<br>
Modified: trunk/blender/source/gameengine/GameLogic/Makefile<br>
===================================================================<br>
--- trunk/blender/source/gameengine/GameLogic/Makefile  2010-03-03 00:32:51 UTC (rev 27230)<br>
+++ trunk/blender/source/gameengine/GameLogic/Makefile  2010-03-03 06:38:47 UTC (rev 27231)<br>
@@ -41,6 +41,7 @@<br>
 CPPFLAGS += -I../Expressions<br>
 CPPFLAGS += -I../SceneGraph<br>
 CPPFLAGS += -I../Rasterizer<br>
+CPPFLAGS += -I../Ketsji<br>
 CPPFLAGS += -I$(NAN_STRING)/include<br>
 CPPFLAGS += -I$(NAN_MOTO)/include<br>
 CPPFLAGS += -I../../blender/makesdna<br>
<br>
Modified: trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp<br>
===================================================================<br>
--- trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp  2010-03-03 00:32:51 UTC (rev 27230)<br>
+++ trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp  2010-03-03 06:38:47 UTC (rev 27231)<br>
@@ -42,14 +42,14 @@<br>
                float float_arg,<br>
                int int_arg,<br>
                RAS_IRasterizer* rasterizer,<br>
-               RAS_IRenderTools* rendertools)<br>
+               KX_Scene* scene)<br>
     : SCA_IActuator(gameobj, KX_ACT_2DFILTER),<br>
      m_type(type),<br>
         m_disableMotionBlur(flag),<br>
         m_float_arg(float_arg),<br>
         m_int_arg(int_arg),<br>
         m_rasterizer(rasterizer),<br>
-        m_rendertools(rendertools)<br>
+        m_scene(scene)<br>
 {<br>
        m_gameObj = NULL;<br>
        if(gameobj){<br>
@@ -87,7 +87,7 @@<br>
        }<br>
        else if(m_type < RAS_2DFilterManager::RAS_2DFILTER_NUMBER_OF_FILTERS)<br>
        {<br>
-               m_rendertools->Update2DFilter(m_propNames, m_gameObj, m_type, m_int_arg, m_shaderText);<br>
+               m_scene->Update2DFilter(m_propNames, m_gameObj, m_type, m_int_arg, m_shaderText);<br>
        }<br>
        // once the filter is in place, no need to update it again => disable the actuator<br>
     return false;<br>
<br>
Modified: trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h<br>
===================================================================<br>
--- trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h    2010-03-03 00:32:51 UTC (rev 27230)<br>
+++ trunk/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h    2010-03-03 06:38:47 UTC (rev 27231)<br>
@@ -29,8 +29,8 @@<br>
 #define __SCA_2DFILETRACTUATOR_H__<br>
<br>
 #include "RAS_IRasterizer.h"<br>
-#include "RAS_IRenderTools.h"<br>
 #include "SCA_IActuator.h"<br>
+#include "KX_Scene.h"<br>
<br>
 class SCA_2DFilterActuator : public SCA_IActuator<br>
 {<br>
@@ -45,7 +45,7 @@<br>
        int   m_int_arg;<br>
        STR_String      m_shaderText;<br>
        RAS_IRasterizer* m_rasterizer;<br>
-       RAS_IRenderTools* m_rendertools;<br>
+       KX_Scene* m_scene;<br>
<br>
 public:<br>
<br>
@@ -56,7 +56,7 @@<br>
                float float_arg,<br>
                int int_arg,<br>
                RAS_IRasterizer* rasterizer,<br>
-               RAS_IRenderTools* rendertools);<br>
+               KX_Scene* scene);<br>
<br>
        void    SetShaderText(const char *text);<br>
     virtual ~SCA_2DFilterActuator();<br>
<br>
Modified: trunk/blender/source/gameengine/GameLogic/SConscript<br>
===================================================================<br>
--- trunk/blender/source/gameengine/GameLogic/SConscript        2010-03-03 00:32:51 UTC (rev 27230)<br>
+++ trunk/blender/source/gameengine/GameLogic/SConscript        2010-03-03 06:38:47 UTC (rev 27231)<br>
@@ -6,6 +6,7 @@<br>
 incs = '. #/source/kernel/gen_system #/intern/string'<br>
 incs += ' #/source/gameengine/Expressions #/intern/moto/include'<br>
 incs += ' #/source/gameengine/Rasterizer #/source/gameengine/SceneGraph'<br>
+incs += ' #/source/gameengine/Ketsji'<br>
<br>
 defs = []<br>
<br>
<br>
Modified: trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp<br>
===================================================================<br>
--- trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp       2010-03-03 00:32:51 UTC (rev 27230)<br>
+++ trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp       2010-03-03 06:38:47 UTC (rev 27231)<br>
@@ -433,13 +433,3 @@<br>
        }<br>
 }<br>
<br>
-void GPC_RenderTools::Update2DFilter(vector<STR_String>& propNames, void* gameObj, RAS_2DFilterManager::RAS_2DFILTER_MODE filtermode, int pass, STR_String& text)<br>
-{<br>
-       m_filtermanager.EnableFilter(propNames, gameObj, filtermode, pass, text);<br>
-}<br>
-<br>
-void GPC_RenderTools::Render2DFilters(RAS_ICanvas* canvas)<br>
-{<br>
-       m_filtermanager.RenderFilters(canvas);<br>
-}<br>
-<br>
<br>
Modified: trunk/blender/source/gameengine/GamePlayer/common/GPC_RenderTools.h<br>
===================================================================<br>
<br>
@@ Diff output truncated at 10240 characters. @@<br>
<br>
_______________________________________________<br>
Bf-blender-cvs mailing list<br>
<a href="mailto:Bf-blender-cvs@blender.org">Bf-blender-cvs@blender.org</a><br>
<a href="http://lists.blender.org/mailman/listinfo/bf-blender-cvs" target="_blank">http://lists.blender.org/mailman/listinfo/bf-blender-cvs</a><br>
</blockquote></div><br>