Blender V4.3
BKE_bake_items.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
8
10#include "BKE_geometry_set.hh"
12
13namespace blender::bke::bake {
14
21class BakeItem {
22 public:
27 std::string name;
28
29 virtual ~BakeItem() = default;
30
31 virtual void count_memory(MemoryCounter &memory) const;
32};
33
43
51
52class GeometryBakeItem : public BakeItem {
53 public:
55
57
58 void count_memory(MemoryCounter &memory) const override;
59
64 static void prepare_geometry_for_bake(GeometrySet &geometry, BakeDataBlockMap *data_block_map);
65
72 static void try_restore_data_blocks(GeometrySet &geometry, BakeDataBlockMap *data_block_map);
73};
74
81 private:
82 std::string name_;
83
84 public:
85 AttributeBakeItem(std::string name) : name_(std::move(name)) {}
86
88 {
89 return name_;
90 }
91};
92
93#ifdef WITH_OPENVDB
94class VolumeGridBakeItem : public BakeItem {
95 public:
97 std::unique_ptr<GVolumeGrid> grid;
98
99 VolumeGridBakeItem(std::unique_ptr<GVolumeGrid> grid);
100 ~VolumeGridBakeItem();
101
102 void count_memory(MemoryCounter &memory) const override;
103};
104#endif
105
108 private:
109 const CPPType &type_;
110 void *value_;
111
112 public:
113 PrimitiveBakeItem(const CPPType &type, const void *value);
115
116 const void *value() const
117 {
118 return value_;
119 }
120
121 const CPPType &type() const
122 {
123 return type_;
124 }
125};
126
127class StringBakeItem : public BakeItem {
128 private:
129 std::string value_;
130
131 public:
132 StringBakeItem(std::string value);
133
135 {
136 return value_;
137 }
138
139 void count_memory(MemoryCounter &memory) const override;
140};
141
142} // namespace blender::bke::bake
virtual void count_memory(MemoryCounter &memory) const
virtual ~BakeItem()=default
static void prepare_geometry_for_bake(GeometrySet &geometry, BakeDataBlockMap *data_block_map)
Definition bake_items.cc:57
GeometryBakeItem(GeometrySet geometry)
Definition bake_items.cc:26
void count_memory(MemoryCounter &memory) const override
Definition bake_items.cc:28
static void try_restore_data_blocks(GeometrySet &geometry, BakeDataBlockMap *data_block_map)
PrimitiveBakeItem(const CPPType &type, const void *value)
void count_memory(MemoryCounter &memory) const override
Map< int, const BakeItem * > items_by_id
Map< int, std::unique_ptr< BakeItem > > items_by_id
void count_memory(MemoryCounter &memory) const