66 cache_file->
scale = 1.0f;
104 if (cache_file->
adt) {
129 .name_plural =
"cache_files",
138 .foreach_cache =
NULL,
143 .blend_read_lib =
NULL,
144 .blend_read_expand =
NULL,
146 .blend_read_undo_preserve =
NULL,
148 .lib_override_apply_post =
NULL,
167 const char *object_path)
194 UNUSED_VARS(cache_file, reader,
object, object_path);
201 if (*reader !=
NULL) {
231 if (*reader !=
NULL) {
265 if (cache_file_eval) {
334 const float time_offset = cache_file->
frame_offset / fps;
336 return cache_file->
is_sequence ? frame : frame / fps - time_offset;
struct CacheReader * CacheReader_open_alembic_object(struct AbcArchiveHandle *handle, struct CacheReader *reader, struct Object *object, const char *object_path)
AbcArchiveHandle * ABC_create_handle(struct Main *bmain, const char *filename, struct ListBase *object_paths)
void CacheReader_free(struct CacheReader *reader)
void ABC_free_handle(AbcArchiveHandle *handle)
void BKE_animdata_blend_read_data(struct BlendDataReader *reader, struct AnimData *adt)
void BKE_animdata_blend_write(struct BlendWriter *writer, struct AnimData *adt)
void BKE_id_blend_write(struct BlendWriter *writer, struct ID *id)
void * BKE_id_new(struct Main *bmain, const short type, const char *name)
float BKE_scene_frame_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)
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)
bool BLI_path_frame(char *path, int frame, int digits) ATTR_NONNULL()
bool BLI_path_frame_get(char *path, int *r_frame, int *numdigits) ATTR_NONNULL()
void BLI_path_frame_strip(char *path, char *ext) ATTR_NONNULL()
bool BLI_path_extension_ensure(char *path, size_t maxlen, const char *ext) ATTR_NONNULL()
bool BLI_path_abs(char *path, const char *basepath) ATTR_NONNULL()
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const 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)
bool BLO_write_is_undo(BlendWriter *writer)
#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
@ LIB_TAG_COPIED_ON_WRITE
#define ID_BLEND_PATH(_bmain, _id)
@ CACHEFILE_VELOCITY_UNIT_SECOND
struct CacheFile CacheFile
Object is a sort of wrapper for general info.
static void init_data(ModifierData *md)
static float frame_len(const Frame *frame)
float BKE_cachefile_time_offset(const CacheFile *cache_file, const float time, const float fps)
static void cachefile_handle_free(CacheFile *cache_file)
static void cache_file_free_data(ID *id)
void BKE_cachefiles_init(void)
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_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
char handle_filepath[1024]
struct GSet * handle_readers
struct AbcArchiveHandle * handle
The CacheReader struct is only used for anonymous pointers, to interface between C and C++ code....