59 cache_file->
scale = 1.0f;
105 if (cache_file->
adt) {
137 .name_plural =
"cache_files",
140 .asset_type_info =
NULL,
147 .foreach_cache =
NULL,
153 .blend_read_lib =
NULL,
154 .blend_read_expand =
NULL,
156 .blend_read_undo_preserve =
NULL,
158 .lib_override_apply_post =
NULL,
177 const char *object_path)
179 #if defined(WITH_ALEMBIC) || defined(WITH_USD)
187 switch (cache_file->
type) {
219 UNUSED_VARS(cache_file, reader,
object, object_path);
225 #if defined(WITH_ALEMBIC) || defined(WITH_USD)
229 if (*reader !=
NULL) {
233 switch (cache_file->
type) {
263 #if defined(WITH_ALEMBIC) || defined(WITH_USD)
272 if (*reader !=
NULL) {
273 switch (cache_file->
type) {
300 switch (cache_file->
type) {
335 if (cache_file_eval) {
417 return cache_file->
is_sequence ? frame : frame / fps - time_offset;
435 if (
STREQ(layer->filepath, filename)) {
struct CacheArchiveHandle * ABC_create_handle(struct Main *bmain, const char *filename, const struct CacheFileLayer *layers, struct ListBase *object_paths)
struct CacheReader * CacheReader_open_alembic_object(struct CacheArchiveHandle *handle, struct CacheReader *reader, struct Object *object, const char *object_path)
void ABC_CacheReader_free(struct CacheReader *reader)
void ABC_free_handle(struct CacheArchiveHandle *handle)
void BKE_animdata_blend_read_data(struct BlendDataReader *reader, struct AnimData *adt)
void BKE_animdata_blend_write(struct BlendWriter *writer, struct AnimData *adt)
bool BKE_bpath_foreach_path_fixed_process(struct BPathForeachPathData *bpath_data, char *path)
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
void BKE_id_blend_write(struct BlendWriter *writer, struct ID *id)
void * BKE_id_new(struct Main *bmain, short type, const char *name)
float BKE_scene_ctime_get(const struct Scene *scene)
File and directory operations.
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool BLI_gset_reinsert(GSet *gh, void *key, GSetKeyFreeFP keyfreefp)
GSet * BLI_gset_ptr_new(const char *info)
#define GSET_ITER(gs_iter_, gset_)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
BLI_INLINE void * BLI_gsetIterator_getKey(GSetIterator *gsi)
bool BLI_gset_remove(GSet *gs, const void *key, GSetKeyFreeFP keyfreefp)
#define LISTBASE_FOREACH(type, var, list)
void void void void void BLI_duplicatelist(struct ListBase *dst, const struct ListBase *src) ATTR_NONNULL(1
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
bool BLI_path_frame(char *path, int frame, int digits) ATTR_NONNULL()
bool BLI_path_extension_ensure(char *path, size_t maxlen, const char *ext) ATTR_NONNULL()
bool BLI_path_extension_check_glob(const char *str, const char *ext_fnmatch) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
bool BLI_path_frame_get(char *path, int *r_frame, int *r_digits_len) ATTR_NONNULL()
void BLI_path_frame_strip(char *path, char *r_ext, size_t ext_maxlen) ATTR_NONNULL()
bool BLI_path_abs(char *path, const char *basepath) ATTR_NONNULL()
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
pthread_spinlock_t SpinLock
void BLI_spin_init(SpinLock *spin)
void BLI_spin_unlock(SpinLock *spin)
void BLI_spin_lock(SpinLock *spin)
void BLI_spin_end(SpinLock *spin)
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define BLO_read_data_address(reader, ptr_p)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_write_struct(writer, struct_name, data_ptr)
void BLO_read_list(BlendDataReader *reader, struct ListBase *list)
#define BLT_I18NCONTEXT_ID_CACHEFILE
typedef double(DMatrix)[4][4]
struct Depsgraph Depsgraph
bool DEG_is_active(const struct Depsgraph *depsgraph)
void DEG_id_tag_update(struct ID *id, int flag)
struct ID * DEG_get_evaluated_id(const struct Depsgraph *depsgraph, struct ID *id)
struct ID * DEG_get_original_id(struct ID *id)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
@ ID_RECALC_COPY_ON_WRITE
#define ID_BLEND_PATH(_bmain, _id)
@ LIB_TAG_COPIED_ON_WRITE
struct CacheFile CacheFile
@ CACHE_FILE_TYPE_INVALID
@ CACHEFILE_VELOCITY_UNIT_SECOND
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
static float frame_len(const Frame *frame)
bool BKE_cache_file_uses_render_procedural(const CacheFile *cache_file, Scene *scene)
CacheFileLayer * BKE_cachefile_add_layer(CacheFile *cache_file, const char filename[1024])
double BKE_cachefile_time_offset(const CacheFile *cache_file, const double time, const double fps)
static void cachefile_handle_free(CacheFile *cache_file)
CacheFileLayer * BKE_cachefile_get_active_layer(CacheFile *cache_file)
static void cache_file_free_data(ID *id)
void BKE_cachefiles_init(void)
void BKE_cachefile_remove_layer(CacheFile *cache_file, CacheFileLayer *layer)
static void cache_file_init_data(ID *id)
static void cache_file_blend_write(BlendWriter *writer, ID *id, const void *id_address)
static void cache_file_foreach_path(ID *id, BPathForeachPathData *bpath_data)
static void cache_file_blend_read_data(BlendDataReader *reader, ID *id)
void BKE_cachefile_reader_free(CacheFile *cache_file, struct CacheReader **reader)
void * BKE_cachefile_add(Main *bmain, const char *name)
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, struct CacheReader **reader, Object *object, const char *object_path)
static void cache_file_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int UNUSED(flag))
void BKE_cachefiles_exit(void)
const Depsgraph * depsgraph
RenderEngineType * RE_engines_find(const char *idname)
bool RE_engine_supports_alembic_procedural(const RenderEngineType *render_type, Scene *scene)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
struct CacheArchiveHandle * handle
char handle_filepath[1024]
struct GSet * handle_readers
char use_render_procedural
CacheArchiveHandle * USD_create_handle(struct Main *, const char *filepath, ListBase *object_paths)
void USD_CacheReader_free(CacheReader *reader)
CacheReader * CacheReader_open_usd_object(CacheArchiveHandle *handle, CacheReader *reader, Object *object, const char *object_path)
void USD_free_handle(CacheArchiveHandle *handle)