[Bf-blender-cvs] [9ec7e23c447] temp-geometry-nodes-fields--fields-jacques: support modifier inputs again

Jacques Lucke noreply at git.blender.org
Tue Aug 31 13:22:57 CEST 2021


Commit: 9ec7e23c44791e4d20b7ec40d228fdd4b028d702
Author: Jacques Lucke
Date:   Tue Aug 31 12:41:13 2021 +0200
Branches: temp-geometry-nodes-fields--fields-jacques
https://developer.blender.org/rB9ec7e23c44791e4d20b7ec40d228fdd4b028d702

support modifier inputs again

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

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 9d8630b21e7..b2e2e97a961 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -85,6 +85,7 @@
 #include "NOD_geometry.h"
 #include "NOD_geometry_nodes_eval_log.hh"
 
+#include "FN_field.hh"
 #include "FN_multi_function.hh"
 
 using blender::destruct_ptr;
@@ -410,24 +411,30 @@ static void init_socket_cpp_value_from_property(const IDProperty &property,
 {
   switch (socket_value_type) {
     case SOCK_FLOAT: {
+      float value = 0.0f;
       if (property.type == IDP_FLOAT) {
-        *(float *)r_value = IDP_Float(&property);
+        value = IDP_Float(&property);
       }
       else if (property.type == IDP_DOUBLE) {
-        *(float *)r_value = (float)IDP_Double(&property);
+        value = (float)IDP_Double(&property);
       }
+      new (r_value) blender::fn::Field<float>(blender::fn::make_constant_field(value));
       break;
     }
     case SOCK_INT: {
-      *(int *)r_value = IDP_Int(&property);
+      int value = IDP_Int(&property);
+      new (r_value) blender::fn::Field<int>(blender::fn::make_constant_field(value));
       break;
     }
     case SOCK_VECTOR: {
-      copy_v3_v3((float *)r_value, (const float *)IDP_Array(&property));
+      float3 value;
+      copy_v3_v3(value, (const float *)IDP_Array(&property));
+      new (r_value) blender::fn::Field<float3>(blender::fn::make_constant_field(value));
       break;
     }
     case SOCK_BOOLEAN: {
-      *(bool *)r_value = IDP_Int(&property) != 0;
+      bool value = IDP_Int(&property) != 0;
+      new (r_value) blender::fn::Field<bool>(blender::fn::make_constant_field(value));
       break;
     }
     case SOCK_STRING: {



More information about the Bf-blender-cvs mailing list