Author: eudoxos
Date: 2009-06-17 14:49:09 +0200 (Wed, 17 Jun 2009)
New Revision: 1802

Modified:
   trunk/gui/py/yadeControl.cpp
   trunk/gui/qt3/QtGUI.cpp
   trunk/gui/qt3/YadeQtMainWindow.cpp
   trunk/gui/qt3/YadeQtMainWindow.hpp
   trunk/pkg/common/Engine/MetaEngine/InteractionDispatchers.cpp
Log:
1. Handle groupMasks of bodies in InteractionDispatchers directly (not in 
geometry functors etc).
2. Fixes for qt3 started from within python
3. Add Body().dynamic flag to the wrapper, instead of using Body()['isDynamic'] 
all the time.


Modified: trunk/gui/py/yadeControl.cpp
===================================================================
--- trunk/gui/py/yadeControl.cpp        2009-06-16 20:20:22 UTC (rev 1801)
+++ trunk/gui/py/yadeControl.cpp        2009-06-17 12:49:09 UTC (rev 1802)
@@ -327,6 +327,7 @@
        unsigned id_get(){ensureAcc(); return proxee->getId();}
        int mask_get(){ensureAcc(); return proxee->groupMask;}
        void mask_set(int m){ensureAcc(); proxee->groupMask=m;}
+       bool dynamic_get(){ensureAcc(); return proxee->isDynamic;} void 
dynamic_set(bool dyn){ensureAcc(); proxee->isDynamic=dyn;}
        bool isStandalone(){ensureAcc(); return proxee->isStandalone();} bool 
isClumpMember(){ensureAcc(); return proxee->isClumpMember();} bool 
isClump(){ensureAcc(); return proxee->isClump();}
 BASIC_PY_PROXY_TAIL;
 
@@ -798,6 +799,7 @@
                .add_property("mold",&pyBody::mold_get,&pyBody::mold_set)
                .add_property("bound",&pyBody::bound_get,&pyBody::bound_set)
                .add_property("phys",&pyBody::phys_get,&pyBody::phys_set)
+               
.add_property("dynamic",&pyBody::dynamic_get,&pyBody::dynamic_set)
                .add_property("id",&pyBody::id_get)
                .add_property("mask",&pyBody::mask_get,&pyBody::mask_set)
                .add_property("isStandalone",&pyBody::isStandalone)

Modified: trunk/gui/qt3/QtGUI.cpp
===================================================================
--- trunk/gui/qt3/QtGUI.cpp     2009-06-16 20:20:22 UTC (rev 1801)
+++ trunk/gui/qt3/QtGUI.cpp     2009-06-17 12:49:09 UTC (rev 1802)
@@ -88,21 +88,10 @@
                XInitThreads();
           app=new QApplication(0,NULL);
                if(!YadeQtMainWindow::self){
+                       YadeQtMainWindow::guiMayDisappear=true;
                        mainWindow=new YadeQtMainWindow();
-                       mainWindow->guiMayDisappear=true;
                        mainWindow->hide();
-                       //app->setMainWidget(mainWindow);
                } else { LOG_ERROR("Main window was there, but not 
QtGUI::app??"); }
                boost::thread appThread(boost::bind(&QApplication::exec,app));
        }
-       //mainWindow->showSomeGui();
-#if 0
-       else if (!YadeQtMainWindow::self){ // app exists and runs, just reopen 
the main window
-               //LOG_INFO("Recreating main window "<<YadeQtMainWindow::self);
-               //mainWindow=new YadeQtMainWindow();
-               //mainWindow->guiMayDisappear=true;
-               mainWindow->showSomeGui();
-               //app->setMainWidget(mainWindow);
-       }
-#endif
 }

Modified: trunk/gui/qt3/YadeQtMainWindow.cpp
===================================================================
--- trunk/gui/qt3/YadeQtMainWindow.cpp  2009-06-16 20:20:22 UTC (rev 1801)
+++ trunk/gui/qt3/YadeQtMainWindow.cpp  2009-06-17 12:49:09 UTC (rev 1802)
@@ -36,11 +36,11 @@
 CREATE_LOGGER(YadeQtMainWindow);
 
 YadeQtMainWindow* YadeQtMainWindow::self=NULL;
+bool YadeQtMainWindow::guiMayDisappear=false;
 
 YadeQtMainWindow::YadeQtMainWindow() : YadeQtGeneratedMainWindow()
 {
        self=this;
-       guiMayDisappear=false;
 
        QGLFormat format;
        format.setStencil(TRUE);
@@ -76,19 +76,13 @@
        move(preferences->mainWindowPositionX,preferences->mainWindowPositionY);
 
        // HACK
-       if(Omega::instance().getSimulationFileName()!="") createController();
+       if(!guiMayDisappear && Omega::instance().getSimulationFileName()!="") 
createController();
 
 
        // updates GL views, may also hide/show this window as needed
        startTimer(100);
 }
 
-void YadeQtMainWindow::showSomeGui(){
-       if(controller||player||generator) return;
-       LOG_INFO("Showing main window");
-       this->show();
-}
-
 void YadeQtMainWindow::timerEvent(QTimerEvent* evt){
        #if 1
        //shared_ptr<MetaBody> rb=Omega::instance().getRootBody();

Modified: trunk/gui/qt3/YadeQtMainWindow.hpp
===================================================================
--- trunk/gui/qt3/YadeQtMainWindow.hpp  2009-06-16 20:20:22 UTC (rev 1801)
+++ trunk/gui/qt3/YadeQtMainWindow.hpp  2009-06-17 12:49:09 UTC (rev 1802)
@@ -41,7 +41,6 @@
                void loadSimulation(string file);
                void redrawAll(bool force=false);
                void lookDown(shared_ptr<GLViewer> glv);
-               void showSomeGui();
 
        protected :
                shared_ptr<QtGUIPreferences> preferences;
@@ -51,7 +50,7 @@
                YadeQtMainWindow ();
                virtual ~YadeQtMainWindow ();
                static YadeQtMainWindow* self; // retrieve instance pointer 
form elsewhere
-               bool guiMayDisappear;
+               static bool guiMayDisappear;
 
                DECLARE_LOGGER;
        public slots :

Modified: trunk/pkg/common/Engine/MetaEngine/InteractionDispatchers.cpp
===================================================================
--- trunk/pkg/common/Engine/MetaEngine/InteractionDispatchers.cpp       
2009-06-16 20:20:22 UTC (rev 1801)
+++ trunk/pkg/common/Engine/MetaEngine/InteractionDispatchers.cpp       
2009-06-17 12:49:09 UTC (rev 1802)
@@ -32,6 +32,9 @@
                        const shared_ptr<Body>& 
b1_=Body::byId(I->getId1(),rootBody);
                        const shared_ptr<Body>& 
b2_=Body::byId(I->getId2(),rootBody);
 
+                       // go fast if this pair of bodies cannot interact at all
+                       if((b1_->getGroupMask() & b2_->getGroupMask())==0) 
continue;
+
                        // we know there is no geometry functor already, take 
the short path
                        if(!I->functorCache.geomExists) { assert(!I->isReal()); 
continue; }
                        // no interaction geometry for either of bodies; no 
interaction possible


_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to