[Bf-blender-cvs] [8034b276ba6] master: Fix T86876: cannot modify float properties of geometry nodes modifier from Python

Jacques Lucke noreply at git.blender.org
Mon Mar 29 10:56:00 CEST 2021


Commit: 8034b276ba6c5369a356a1b8f5e858305f8b47b9
Author: Jacques Lucke
Date:   Mon Mar 29 10:54:04 2021 +0200
Branches: master
https://developer.blender.org/rB8034b276ba6c5369a356a1b8f5e858305f8b47b9

Fix T86876: cannot modify float properties of geometry nodes modifier from Python

Previously, the code expected the id property to have the `IDP_FLOAT` type.
However, when assigning a Python float (which is a double internally)
to an id property, it would change the type to `IDP_DOUBLE`.
The fix is to allow both types in the geometry nodes modifier.

===================================================================

M	source/blender/modifiers/intern/MOD_nodes.cc

===================================================================

diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index d2fb2e0260c..d6f7b4c8561 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -722,10 +722,17 @@ static const SocketPropertyType *get_socket_property_type(const bNodeSocket &bso
           [](const bNodeSocket &socket) {
             return (PropertyType)((bNodeSocketValueFloat *)socket.default_value)->subtype;
           },
-          [](const IDProperty &property) { return property.type == IDP_FLOAT; },
+          [](const IDProperty &property) { return ELEM(property.type, IDP_FLOAT, IDP_DOUBLE); },
           [](const IDProperty &property,
              const PersistentDataHandleMap &UNUSED(handles),
-             void *r_value) { *(float *)r_value = IDP_Float(&property); },
+             void *r_value) {
+            if (property.type == IDP_FLOAT) {
+              *(float *)r_value = IDP_Float(&property);
+            }
+            else if (property.type == IDP_DOUBLE) {
+              *(float *)r_value = (float)IDP_Double(&property);
+            }
+          },
       };
       return &float_type;
     }



More information about the Bf-blender-cvs mailing list