25 std::destroy_at(
this);
31 std::destroy_at(
this);
37 std::destroy_at(
this);
43 if (this->frames.is_empty()) {
46 const int start_frame = this->frames.
first()->frame.frame();
47 const int end_frame = this->frames.last()->frame.frame();
54 return ptr ? (*ptr).get() :
nullptr;
60 return ptr ? (*ptr).get() :
nullptr;
95 for (
auto item : nmd->
runtime->cache->simulation_cache_by_id.items()) {
120 return absolute_bake_dir;
146 if (
bake ==
nullptr) {
166 if (!modifier_bake_path) {
171 bake_dir,
sizeof(bake_dir), modifier_bake_path->c_str(), std::to_string(node_id).c_str());
177 const int num_frames = std::max(1, end - start + 1);
187 if (
bake ==
nullptr) {
194 return fix_frame_range(scene.simulation_frame_start, scene.simulation_frame_end);
205 std::stringstream ss;
206 for (
const char c : name) {
208 if ((
'a' <= c && c <=
'z') || (
'A' <= c && c <=
'Z')) {
228 blend_name[type_start_index] =
'\0';
229 return "blendcache_" +
StringRef(blend_name);
234 const std::string object_name_escaped =
escape_name(
object.
id.name + 2);
236 return object_name_escaped +
"_" + modifier_name_escaped;
264 std::to_string(node_id).c_str());
#define FOREACH_SCENE_OBJECT_END
#define FOREACH_SCENE_OBJECT_BEGIN(scene, _instance)
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
File and directory operations.
#define LISTBASE_FOREACH(type, var, list)
bool BLI_path_abs(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1
#define BLI_path_join(...)
void void void BLI_path_split_file_part(const char *filepath, char *file, size_t file_maxncpy) ATTR_NONNULL(1
bool BLI_path_is_rel(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
#define STRNCPY(dst, src)
#define ID_BLEND_PATH(_bmain, _id)
@ NODES_MODIFIER_BAKE_TARGET_PACKED
@ NODES_MODIFIER_BAKE_TARGET_INHERIT
@ NODES_MODIFIER_BAKE_CUSTOM_PATH
@ NODES_MODIFIER_BAKE_CUSTOM_SIMULATION_FRAME_RANGE
@ SCE_CUSTOM_SIMULATION_RANGE
constexpr int64_t first() const
static constexpr IndexRange from_begin_end_inclusive(const int64_t begin, const int64_t last)
static constexpr int64_t not_found
constexpr int64_t rfind(char c, int64_t pos=INT64_MAX) const
constexpr bool is_empty() const
constexpr const char * c_str() const
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
std::optional< NodesModifierBakeTarget > get_node_bake_target(const Object &object, const NodesModifierData &nmd, int node_id)
std::string get_default_modifier_bake_directory(const Main &bmain, const Object &object, const NodesModifierData &nmd)
std::optional< BakePath > get_node_bake_path(const Main &bmain, const Object &object, const NodesModifierData &nmd, int node_id)
static IndexRange fix_frame_range(const int start, const int end)
std::optional< IndexRange > get_node_bake_frame_range(const Scene &scene, const Object &object, const NodesModifierData &nmd, int node_id)
static std::string escape_name(const StringRef name)
void scene_simulation_states_reset(Scene &scene)
static std::string get_blend_file_name(const Main &bmain)
std::optional< std::string > get_modifier_bake_path(const Main &bmain, const Object &object, const NodesModifierData &nmd)
static std::string get_modifier_directory_name(const Object &object, const ModifierData &md)
std::string get_default_node_bake_directory(const Main &bmain, const Object &object, const NodesModifierData &nmd, int node_id)
NodesModifierRuntimeHandle * runtime
static BakePath from_single_root(StringRefNull root_dir)
BakeNodeCache * get_bake_node_cache(const int id)
Map< int, std::unique_ptr< SimulationNodeCache > > simulation_cache_by_id
Map< int, std::unique_ptr< BakeNodeCache > > bake_cache_by_id
SimulationNodeCache * get_simulation_node_cache(const int id)
NodeBakeCache * get_node_bake_cache(const int id)
IndexRange frame_range() const