[Bf-blender-cvs] [6ba6e97407e] geometry-nodes: Geometry Nodes: Move GeometrySet classes to global namespace
Jacques Lucke
noreply at git.blender.org
Mon Nov 16 12:15:34 CET 2020
Commit: 6ba6e97407e5b4d3feee6edf7b6b66caf8313491
Author: Jacques Lucke
Date: Mon Nov 16 12:07:51 2020 +0100
Branches: geometry-nodes
https://developer.blender.org/rB6ba6e97407e5b4d3feee6edf7b6b66caf8313491
Geometry Nodes: Move GeometrySet classes to global namespace
Brecht and I decided to move the GeometrySet classes
to the global namespace for now. This way we can use
the same type in C and C++ and don't have to use
reinterpret_cast as often.
===================================================================
M source/blender/blenkernel/BKE_geometry_set.h
M source/blender/blenkernel/BKE_geometry_set.hh
M source/blender/blenkernel/BKE_modifier.h
M source/blender/blenkernel/intern/geometry_set.cc
M source/blender/blenkernel/intern/pointcloud.cc
M source/blender/depsgraph/intern/depsgraph_query_iter.cc
M source/blender/makesdna/DNA_object_types.h
M source/blender/modifiers/intern/MOD_nodes.cc
M source/blender/nodes/NOD_geometry_exec.hh
M source/blender/nodes/geometry/node_geometry_exec.cc
M source/blender/nodes/geometry/nodes/node_geo_point_instance.cc
M source/blender/nodes/intern/node_socket.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_geometry_set.h b/source/blender/blenkernel/BKE_geometry_set.h
index be36ab47f85..902995f6aa5 100644
--- a/source/blender/blenkernel/BKE_geometry_set.h
+++ b/source/blender/blenkernel/BKE_geometry_set.h
@@ -25,15 +25,14 @@ extern "C" {
#endif
struct Object;
+struct GeometrySet;
-typedef struct GeometrySetC GeometrySetC;
+void BKE_geometry_set_user_add(struct GeometrySet *geometry_set);
+void BKE_geometry_set_user_remove(struct GeometrySet *geometry_set);
-void BKE_geometry_set_user_add(GeometrySetC *geometry_set_c);
-void BKE_geometry_set_user_remove(GeometrySetC *geometry_set_c);
+bool BKE_geometry_set_has_instances(const struct GeometrySet *geometry_set);
-bool BKE_geometry_set_has_instances(const GeometrySetC *geometry_set_c);
-
-int BKE_geometry_set_instances(const GeometrySetC *geometry_set_c,
+int BKE_geometry_set_instances(const struct GeometrySet *geometry_set,
float (**r_positions)[3],
struct Object ***r_objects);
diff --git a/source/blender/blenkernel/BKE_geometry_set.hh b/source/blender/blenkernel/BKE_geometry_set.hh
index e2200d79cb8..0bc9352de37 100644
--- a/source/blender/blenkernel/BKE_geometry_set.hh
+++ b/source/blender/blenkernel/BKE_geometry_set.hh
@@ -34,10 +34,8 @@ struct Mesh;
struct PointCloud;
struct Object;
-namespace blender::bke {
-
/* An automatically reference counted geometry set. */
-using GeometrySetPtr = UserCounter<class GeometrySet>;
+using GeometrySetPtr = blender::UserCounter<class GeometrySet>;
/* Each geometry component has a specific type. The type determines what kind of data the component
* stores. Functions modifying a geometry will usually just modify a subset of the component types.
@@ -57,20 +55,16 @@ enum class GeometryOwnershipType {
ReadOnly = 2,
};
-} // namespace blender::bke
-
/* Make it possible to use the component type as key in hash tables. */
namespace blender {
-template<> struct DefaultHash<bke::GeometryComponentType> {
- uint64_t operator()(const bke::GeometryComponentType &value) const
+template<> struct DefaultHash<GeometryComponentType> {
+ uint64_t operator()(const GeometryComponentType &value) const
{
return (uint64_t)value;
}
};
} // namespace blender
-namespace blender::bke {
-
/**
* This is the base class for specialized geometry component types.
*/
@@ -109,8 +103,8 @@ class GeometrySet {
* it is above 1, the geometry set is immutable. */
std::atomic<int> users_ = 1;
- using GeometryComponentPtr = UserCounter<class GeometryComponent>;
- Map<GeometryComponentType, GeometryComponentPtr> components_;
+ using GeometryComponentPtr = blender::UserCounter<class GeometryComponent>;
+ blender::Map<GeometryComponentType, GeometryComponentPtr> components_;
public:
GeometrySet() = default;
@@ -171,7 +165,7 @@ class MeshComponent : public GeometryComponent {
/* Due to historical design choices, vertex group data is stored in the mesh, but the vertex
* group names are stored on an object. Since we don't have an object here, we copy over the
* names into this map. */
- Map<std::string, int> vertex_group_names_;
+ blender::Map<std::string, int> vertex_group_names_;
public:
~MeshComponent();
@@ -183,7 +177,7 @@ class MeshComponent : public GeometryComponent {
Mesh *release();
void copy_vertex_group_names_from_object(const struct Object &object);
- int vertex_group_index(StringRef vertex_group_name) const;
+ int vertex_group_index(blender::StringRef vertex_group_name) const;
const Mesh *get_for_read() const;
Mesh *get_for_write();
@@ -216,42 +210,21 @@ class PointCloudComponent : public GeometryComponent {
/** A geometry component that stores instances. */
class InstancesComponent : public GeometryComponent {
private:
- Vector<float3> positions_;
- Vector<const Object *> objects_;
+ blender::Vector<blender::float3> positions_;
+ blender::Vector<const Object *> objects_;
public:
~InstancesComponent() = default;
GeometryComponent *copy() const override;
- void replace(Vector<float3> positions, Vector<const Object *> objects);
- void replace(Vector<float3> positions, const Object *object);
+ void replace(blender::Vector<blender::float3> positions,
+ blender::Vector<const Object *> objects);
+ void replace(blender::Vector<blender::float3> positions, const Object *object);
- Span<const Object *> objects() const;
- Span<float3> positions() const;
- MutableSpan<float3> positions();
+ blender::Span<const Object *> objects() const;
+ blender::Span<blender::float3> positions() const;
+ blender::MutableSpan<blender::float3> positions();
int instances_amount() const;
static constexpr inline GeometryComponentType type = GeometryComponentType::Instances;
};
-
-inline GeometrySetC *wrap(blender::bke::GeometrySet *geometry_set)
-{
- return reinterpret_cast<GeometrySetC *>(geometry_set);
-}
-
-inline const GeometrySetC *wrap(const blender::bke::GeometrySet *geometry_set)
-{
- return reinterpret_cast<const GeometrySetC *>(geometry_set);
-}
-
-inline blender::bke::GeometrySet *unwrap(GeometrySetC *geometry_set_c)
-{
- return reinterpret_cast<blender::bke::GeometrySet *>(geometry_set_c);
-}
-
-inline const blender::bke::GeometrySet *unwrap(const GeometrySetC *geometry_set_c)
-{
- return reinterpret_cast<const blender::bke::GeometrySet *>(geometry_set_c);
-}
-
-} // namespace blender::bke
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 868f13e3488..5032e1985c4 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -43,7 +43,7 @@ struct ModifierData;
struct Object;
struct Scene;
struct bArmature;
-struct GeometrySetC;
+struct GeometrySet;
typedef enum {
/* Should not be used, only for None modifier type */
@@ -247,9 +247,9 @@ typedef struct ModifierTypeInfo {
struct Hair *(*modifyHair)(struct ModifierData *md,
const struct ModifierEvalContext *ctx,
struct Hair *hair);
- struct GeometrySetC *(*modifyPointCloud)(struct ModifierData *md,
- const struct ModifierEvalContext *ctx,
- struct GeometrySetC *geometry_set_c);
+ struct GeometrySet *(*modifyPointCloud)(struct ModifierData *md,
+ const struct ModifierEvalContext *ctx,
+ struct GeometrySet *geometry_set);
struct Volume *(*modifyVolume)(struct ModifierData *md,
const struct ModifierEvalContext *ctx,
struct Volume *volume);
diff --git a/source/blender/blenkernel/intern/geometry_set.cc b/source/blender/blenkernel/intern/geometry_set.cc
index af07b66eb3c..6d7cce34e7e 100644
--- a/source/blender/blenkernel/intern/geometry_set.cc
+++ b/source/blender/blenkernel/intern/geometry_set.cc
@@ -23,7 +23,11 @@
#include "MEM_guardedalloc.h"
-namespace blender::bke {
+using blender::float3;
+using blender::MutableSpan;
+using blender::Span;
+using blender::StringRef;
+using blender::Vector;
/* -------------------------------------------------------------------- */
/** \name Geometry Component
@@ -462,34 +466,29 @@ int InstancesComponent::instances_amount() const
/** \} */
-} // namespace blender::bke
-
/* -------------------------------------------------------------------- */
/** \name C API
* \{ */
-void BKE_geometry_set_user_add(GeometrySetC *geometry_set_c)
+void BKE_geometry_set_user_add(GeometrySet *geometry_set)
{
- blender::bke::unwrap(geometry_set_c)->user_add();
+ geometry_set->user_add();
}
-void BKE_geometry_set_user_remove(GeometrySetC *geometry_set_c)
+void BKE_geometry_set_user_remove(GeometrySet *geometry_set)
{
- blender::bke::unwrap(geometry_set_c)->user_remove();
+ geometry_set->user_remove();
}
-bool BKE_geometry_set_has_instances(const GeometrySetC *geometry_set_c)
+bool BKE_geometry_set_has_instances(const GeometrySet *geometry_set)
{
- return blender::bke::unwrap(geometry_set_c)
- ->get_component_for_read<blender::bke::InstancesComponent>() != nullptr;
+ return geometry_set->get_component_for_read<InstancesComponent>() != nullptr;
}
-int BKE_geometry_set_instances(const GeometrySetC *geometry_set_c,
+int BKE_geometry_set_instances(const GeometrySet *geometry_set,
float (**r_positions)[3],
Object ***r_objects)
{
- using namespace blender::bke;
- const GeometrySet *geometry_set = unwrap(geometry_set_c);
const InstancesComponent *component = geometry_set->get_component_for_read<InstancesComponent>();
if (component == nullptr) {
return 0;
diff --git a/source/blender/blenkernel/intern/pointcloud.cc b/source/blender/blenkernel/intern/pointcloud.cc
index 1af9e8f84f0..677bd2e5201 100644
--- a/source/blender/blenkernel/intern/pointcloud.cc
+++ b/source/blender/blenkernel/intern/pointcloud.cc
@@ -332,14 +332,11 @@ PointCloud *BKE_pointcloud_copy_for_eval(struct PointCloud *pointcloud_src, bool
return result;
}
-static blender::bke::GeometrySetPtr pointcloud_evaluate_modifiers(
- struct Depsgraph *depsgraph,
- struct Scene *scene,
- Object *object,
- blender::bke::GeometrySetPtr geometry_set)
+static GeometrySetPtr pointcloud_evaluate_modifiers(struct Depsgraph *depsgraph,
+ struct Scene *scene,
+ Object *object,
+ GeometrySetPtr geometry_set)
{
- using namespace blender::bke;
-
/* Modifier evaluation modes. */
const bool use_render = (DEG_get_mode(depsgraph) == DAG_EVAL_RENDER);
const int required_mode = use_render ? eModifierMode_Render : eModifierMode_Realtime;
@@ -360,10 +357,10 @@ static blender::bke::GeometrySetPtr pointcloud_evaluate_modifiers(
}
if (mti->modifyPointCloud) {
- GeometrySetC *modifier_input_geometry_set = wrap(geometry_set.release());
- Geomet
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list