[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