58 cache_file->
scale = 1.0f;
64 std::optional<Library *> ,
72 cache_file_dst->
handle =
nullptr;
99 cache_file->
handle =
nullptr;
116 cache_file->
handle =
nullptr;
155#if defined(WITH_ALEMBIC) || defined(WITH_USD)
163 const char *object_path)
165#if defined(WITH_ALEMBIC) || defined(WITH_USD)
169 if (cache_file->
handle ==
nullptr) {
173 switch (cache_file->
type) {
185 cache_file->
handle, *reader,
object, object_path);
193 std::lock_guard
lock(cache_mutex);
206 UNUSED_VARS(cache_file, reader,
object, object_path);
212#if defined(WITH_ALEMBIC) || defined(WITH_USD)
215 std::lock_guard
lock(cache_mutex);
216 if (*reader !=
nullptr) {
220 switch (cache_file->
type) {
249#if defined(WITH_ALEMBIC) || defined(WITH_USD)
254 std::lock_guard
lock(cache_mutex);
259 if (*reader !=
nullptr) {
260 switch (cache_file->
type) {
287 switch (cache_file->
type) {
302 cache_file->
handle =
nullptr;
322 if (cache_file_eval) {
406 const double time_offset = double(cache_file->
frame_offset) / fps;
408 return cache_file->
is_sequence ? frame : frame / fps - time_offset;
413 const double time_offset = double(cache_file->
frame_offset);
415 return cache_file->
is_sequence ? frame : frame - time_offset;
421 if (
STREQ(layer->filepath, filepath)) {
void ABC_CacheReader_free(struct CacheReader *reader)
void ABC_free_handle(struct CacheArchiveHandle *handle)
struct CacheReader * CacheReader_open_alembic_object(struct CacheArchiveHandle *handle, struct CacheReader *reader, struct Object *object, const char *object_path, bool is_sequence)
struct CacheArchiveHandle * ABC_create_handle(const struct Main *bmain, const char *filepath, const struct CacheFileLayer *layers, struct ListBase *object_paths)
bool BKE_bpath_foreach_path_fixed_process(BPathForeachPathData *bpath_data, char *path, size_t path_maxncpy)
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
void * BKE_id_new(Main *bmain, short type, const char *name)
void BKE_id_blend_write(BlendWriter *writer, ID *id)
float BKE_scene_ctime_get(const Scene *scene)
File and directory operations.
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
GSet * BLI_gset_ptr_new(const char *info)
BLI_INLINE void * BLI_gsetIterator_getKey(GSetIterator *gsi)
bool BLI_gset_reinsert(GSet *gs, void *key, GSetKeyFreeFP keyfreefp)
#define GSET_ITER(gs_iter_, gset_)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
bool BLI_gset_remove(GSet *gs, const void *key, GSetKeyFreeFP keyfreefp)
void * BLI_findlink(const ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void void void void void BLI_duplicatelist(ListBase *dst, const ListBase *src) ATTR_NONNULL(1
bool BLI_path_abs(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1
bool void BLI_path_frame_strip(char *path, char *r_ext, size_t ext_maxncpy) ATTR_NONNULL(1
bool BLI_path_frame_get(const char *path, int *r_frame, int *r_digits_len) ATTR_NONNULL(1
bool BLI_path_extension_ensure(char *path, size_t path_maxncpy, const char *ext) ATTR_NONNULL(1
bool BLI_path_frame(char *path, size_t path_maxncpy, int frame, int digits) ATTR_NONNULL(1)
bool BLI_path_extension_check_glob(const char *path, const char *ext_fnmatch) ATTR_NONNULL(1
char * STRNCPY(char(&dst)[N], const char *src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_write_struct(writer, struct_name, data_ptr)
#define BLO_read_struct_list(reader, struct_name, list)
#define BLT_I18NCONTEXT_ID_CACHEFILE
void DEG_id_tag_update(ID *id, unsigned int flags)
bool DEG_is_active(const Depsgraph *depsgraph)
Scene * DEG_get_evaluated_scene(const Depsgraph *graph)
T * DEG_get_original(T *id)
T * DEG_get_evaluated(const Depsgraph *depsgraph, T *id)
#define ID_BLEND_PATH(_bmain, _id)
@ CACHEFILE_VELOCITY_UNIT_SECOND
@ CACHE_FILE_TYPE_INVALID
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
static float frame_len(const Frame *frame)
BPy_StructRNA * depsgraph
double BKE_cachefile_time_offset(const CacheFile *cache_file, const double time, const double fps)
static void cachefile_handle_free(CacheFile *cache_file)
void BKE_cachefile_reader_free(CacheFile *cache_file, CacheReader **reader)
static void cache_file_free_data(ID *id)
static void cache_file_copy_data(Main *, std::optional< Library * >, ID *id_dst, const ID *id_src, const int)
void BKE_cachefile_remove_layer(CacheFile *cache_file, CacheFileLayer *layer)
CacheFileLayer * BKE_cachefile_get_active_layer(CacheFile *cache_file)
static void cache_file_init_data(ID *id)
static void cache_file_blend_write(BlendWriter *writer, ID *id, const void *id_address)
CacheFileLayer * BKE_cachefile_add_layer(CacheFile *cache_file, const char filepath[1024])
static void cache_file_foreach_path(ID *id, BPathForeachPathData *bpath_data)
void * BKE_cachefile_add(Main *bmain, const char *name)
static void cache_file_blend_read_data(BlendDataReader *reader, ID *id)
double BKE_cachefile_frame_offset(const CacheFile *cache_file, const double time)
bool BKE_cachefile_filepath_get(const Main *bmain, const Depsgraph *depsgraph, const CacheFile *cache_file, char r_filepath[FILE_MAX])
void BKE_cachefile_reload(Depsgraph *depsgraph, CacheFile *cache_file)
void BKE_cachefile_eval(Main *bmain, Depsgraph *depsgraph, CacheFile *cache_file)
void BKE_cachefile_reader_open(CacheFile *cache_file, CacheReader **reader, Object *object, const char *object_path)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
CacheArchiveHandle * USD_create_handle(Main *, const char *filepath, ListBase *object_paths)
CacheReader * CacheReader_open_usd_object(CacheArchiveHandle *handle, CacheReader *reader, Object *object, const char *object_path)
void USD_free_handle(CacheArchiveHandle *handle)
void USD_CacheReader_free(CacheReader *reader)
struct CacheArchiveHandle * handle
char handle_filepath[1024]
struct GSet * handle_readers