[Bf-blender-cvs] [e1a5d15d95d] functions: set more operation hashes

Jacques Lucke noreply at git.blender.org
Sun Jan 19 12:46:10 CET 2020


Commit: e1a5d15d95da6b24a1e268e39c87b15fdc767046
Author: Jacques Lucke
Date:   Sun Jan 19 12:05:54 2020 +0100
Branches: functions
https://developer.blender.org/rBe1a5d15d95da6b24a1e268e39c87b15fdc767046

set more operation hashes

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

M	source/blender/functions/intern/multi_functions/constants.h
M	source/blender/functions/intern/multi_functions/mixed.cc
M	source/blender/functions/intern/multi_functions/surface_hook.cc

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

diff --git a/source/blender/functions/intern/multi_functions/constants.h b/source/blender/functions/intern/multi_functions/constants.h
index 02a91d07c64..9ffb1b975df 100644
--- a/source/blender/functions/intern/multi_functions/constants.h
+++ b/source/blender/functions/intern/multi_functions/constants.h
@@ -5,6 +5,7 @@
 #include <sstream>
 
 #include "BLI_hash.h"
+#include "BLI_rand_cxx.h"
 
 namespace FN {
 
@@ -59,6 +60,11 @@ template<typename T> class MF_ConstantValue : public MultiFunction {
       uint32_t hash = BLI_hash_string(((std::string *)&m_value)->c_str());
       signature.operation_hash(hash);
     }
+    else if (CPP_TYPE<T>() == CPP_TYPE<BKE::ObjectIDHandle>()) {
+      BKE::ObjectIDHandle object_handle = *(BKE::ObjectIDHandle *)&m_value;
+      uint32_t hash = object_handle.internal_identifier() ^ BLI_RAND_PER_LINE_UINT32;
+      signature.operation_hash(hash);
+    }
   }
 
   void call(IndexMask mask, MFParams params, MFContext UNUSED(context)) const override
diff --git a/source/blender/functions/intern/multi_functions/mixed.cc b/source/blender/functions/intern/multi_functions/mixed.cc
index 21233c674a8..80ca798383d 100644
--- a/source/blender/functions/intern/multi_functions/mixed.cc
+++ b/source/blender/functions/intern/multi_functions/mixed.cc
@@ -289,6 +289,7 @@ MF_ObjectWorldLocation::MF_ObjectWorldLocation()
   signature.use_global_context<IDHandleLookup>();
   signature.single_input<ObjectIDHandle>("Object");
   signature.single_output<float3>("Location");
+  signature.constant_operation_hash();
 }
 
 void MF_ObjectWorldLocation::call(IndexMask mask, MFParams params, MFContext context) const
diff --git a/source/blender/functions/intern/multi_functions/surface_hook.cc b/source/blender/functions/intern/multi_functions/surface_hook.cc
index 0a24b8edb28..f6c549e0069 100644
--- a/source/blender/functions/intern/multi_functions/surface_hook.cc
+++ b/source/blender/functions/intern/multi_functions/surface_hook.cc
@@ -42,6 +42,7 @@ MF_ClosestSurfaceHookOnObject::MF_ClosestSurfaceHookOnObject()
   signature.single_input<ObjectIDHandle>("Object");
   signature.single_input<float3>("Position");
   signature.single_output<SurfaceHook>("Closest Location");
+  signature.constant_operation_hash();
 }
 
 static BVHTreeNearest get_nearest_point(BVHTreeFromMesh *bvhtree_data, float3 point)
@@ -127,6 +128,7 @@ MF_GetPositionOnSurface::MF_GetPositionOnSurface()
   signature.use_global_context<IDHandleLookup>();
   signature.single_input<SurfaceHook>("Surface Hook");
   signature.single_output<float3>("Position");
+  signature.constant_operation_hash();
 }
 
 void MF_GetPositionOnSurface::call(IndexMask mask, MFParams params, MFContext context) const
@@ -192,6 +194,7 @@ MF_GetNormalOnSurface::MF_GetNormalOnSurface()
   signature.use_global_context<IDHandleLookup>();
   signature.single_input<SurfaceHook>("Surface Hook");
   signature.single_output<float3>("Normal");
+  signature.constant_operation_hash();
 }
 
 static float3 short_normal_to_float3(const short normal[3])
@@ -264,6 +267,7 @@ MF_GetWeightOnSurface::MF_GetWeightOnSurface()
   signature.single_input<SurfaceHook>("Surface Hook");
   signature.single_input<std::string>("Group Name");
   signature.single_output<float>("Weight");
+  signature.constant_operation_hash();
 }
 
 void MF_GetWeightOnSurface::call(IndexMask mask, MFParams params, MFContext context) const
@@ -343,6 +347,7 @@ MF_GetImageColorOnSurface::MF_GetImageColorOnSurface()
   signature.single_input<SurfaceHook>("Surface Hook");
   signature.single_input<ImageIDHandle>("Image");
   signature.single_output<rgba_f>("Color");
+  signature.constant_operation_hash();
 }
 
 static void get_colors_on_surface(IndexMask indices,
@@ -457,6 +462,7 @@ MF_SampleObjectSurface::MF_SampleObjectSurface(bool use_vertex_weights)
     signature.single_input<std::string>("Vertex Group Name");
   }
   signature.vector_output<SurfaceHook>("Surface Hooks");
+  signature.constant_operation_hash();
 }
 
 static BLI_NOINLINE void compute_triangle_areas(Mesh *mesh,



More information about the Bf-blender-cvs mailing list