functionality fix
authorCampbell Barton <ideasman42@gmail.com>
Sun, 1 Jun 2008 16:13:04 +0000 (16:13 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 1 Jun 2008 16:13:04 +0000 (16:13 +0000)
Originally the only way to run scripts automatically was with scriptlinks, which could be disabled for loading untrusted blend files.
Since then PyDrivers and PyConstraints would run even when G.f&G_DOSCRIPTLINKS was disabled.
Gensher, Theeth and Ianwill agree its acceptable to reuse the flag for other areas python runs automatically.

PyNodes still have no way to be disabled, (todo before 2.46a)

source/blender/blenkernel/intern/constraint.c
source/blender/python/BPY_interface.c
source/creator/creator.c

index f60e39769a2a52403b40bcbbe09591c2cc7c9a90..068501780bced5d66ca6816daa008425ac1c3e93 100644 (file)
@@ -1882,7 +1882,7 @@ static void pycon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraintT
 {
        bPythonConstraint *data= con->data;
        
-       if (VALID_CONS_TARGET(ct)) {
+       if ((G.f & G_DOSCRIPTLINKS) && VALID_CONS_TARGET(ct)) {
                /* special exception for curves - depsgraph issues */
                if (ct->tar->type == OB_CURVE) {
                        Curve *cu= ct->tar->data;
@@ -1906,6 +1906,8 @@ static void pycon_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *targ
 {
        bPythonConstraint *data= con->data;
        
+       if ((G.f & G_DOSCRIPTLINKS)==0)  return;
+       
 /* currently removed, until I this can be re-implemented for multiple targets */
 #if 0
        /* Firstly, run the 'driver' function which has direct access to the objects involved 
index 257203908b1d671738cc5e00c47ca50eb5c6045b..279c3727442850f5213ba98eb66cae91d341f0bf 100644 (file)
@@ -1222,7 +1222,7 @@ static int bpy_pydriver_create_dict(void)
 {
        PyObject *d, *mod;
 
-       if (bpy_pydriver_Dict) return -1;
+       if (bpy_pydriver_Dict || (G.f&G_DOSCRIPTLINKS)==0) return -1;
 
        d = PyDict_New();
        if (!d) return -1;
@@ -1998,7 +1998,7 @@ float BPY_pydriver_eval(IpoDriver *driver)
        int setitem_retval;
        PyGILState_STATE gilstate;
 
-       if (!driver) return result;
+       if (!driver ||  (G.f&G_DOSCRIPTLINKS)==0) return result;
 
        expr = driver->name; /* the py expression to be evaluated */
        if (!expr || expr[0]=='\0') return result;
index a4588bb459721fe8ba5555675277fd2d79c9e182..2e6b5d7353ea65ce2066617d496c0e7f295c4cf6 100644 (file)
@@ -219,7 +219,7 @@ static void print_help(void)
        printf ("  -d\t\tTurn debugging on\n");
        printf ("  -noaudio\tDisable audio on systems that support audio\n");
        printf ("  -h\t\tPrint this help text\n");
-       printf ("  -y\t\tDisable script links, use -Y to find out why its -y\n");
+       printf ("  -y\t\tDisable automatic python script execution (scriptlinks, pydrivers, pyconstraints, pynodes)\n");
        printf ("  -P <filename>\tRun the given Python script (filename or Blender Text)\n");
 #ifdef WIN32
        printf ("  -R\t\tRegister .blend extension\n");