12 #include <sys/types.h>
66 # ifdef WITH_SYSTEM_LZO
67 # include <lzo/lzo1x.h>
71 # define LZO_HEAP_ALLOC(var, size) \
72 lzo_align_t __LZO_MMODEL var[((size) + (sizeof(lzo_align_t) - 1)) / sizeof(lzo_align_t)]
75 #define LZO_OUT_LEN(size) ((size) + (size) / 16 + 64 + 3)
88 #define PTCACHE_DATA_FROM(data, type, from) \
90 memcpy(data[type], from, ptcache_data_size[type]); \
94 #define PTCACHE_DATA_TO(data, type, index, to) \
97 (char *)(data)[type] + ((index) ? (index)*ptcache_data_size[type] : 0), \
98 ptcache_data_size[type]); \
103 #define DURIAN_POINTCACHE_LIB_OK 1
108 sizeof(
unsigned int),
127 PTCacheFile *
pf,
unsigned char *in,
unsigned int in_len,
unsigned char *
out,
int mode);
137 if (!
error && !fread(&
pf->totpoint,
sizeof(
unsigned int), 1,
pf->fp)) {
141 if (!
error && !fread(&
pf->data_types,
sizeof(
unsigned int), 1,
pf->fp)) {
150 if (!fwrite(&
pf->totpoint,
sizeof(
unsigned int), 1,
pf->fp)) {
154 if (!fwrite(&
pf->data_types,
sizeof(
unsigned int), 1,
pf->fp)) {
189 int index,
void *soft_v,
void **
data,
float UNUSED(cfra),
const float *old_data)
195 memcpy(bp->
pos,
data,
sizeof(
float[3]));
196 memcpy(bp->
vec,
data + 3,
sizeof(
float[3]));
209 const float *old_data)
216 if (cfra1 == cfra2) {
224 memcpy(keys[2].co, old_data,
sizeof(
float[3]));
225 memcpy(keys[2].vel, old_data + 3,
sizeof(
float[3]));
231 dfra = cfra2 - cfra1;
250 const char *
UNUSED(message))
285 if (cfra < pa->
time - step) {
291 const int pa_sfra = (int)pa->
time - step;
292 const int pa_efra = ((
int)pa->
dietime - 1) + step;
293 if (!(cfra >= pa_sfra && cfra <= pa_efra)) {
320 int index,
void *psys_v,
void **
data,
float cfra,
const float *old_data)
347 if (cfra < pa->
time) {
393 const float *old_data)
411 if (!(cfra1 >= pa_sfra && cfra1 <= pa_efra)) {
419 if (cfra1 == cfra2) {
448 if (cfra > pa->
time) {
452 dfra = cfra2 - cfra1;
473 const char *
UNUSED(message))
491 for (p = 0; p < psys->
totpart; p++, pa++) {
492 const int pa_sfra = (int)pa->
time - step;
493 totwrite += (cfra >= pa_sfra);
497 for (p = 0; p < psys->
totpart; p++, pa++) {
499 const int pa_sfra = (int)pa->
time - step;
500 const int pa_efra = ((
int)pa->
dietime - 1) + step;
501 totwrite += (cfra >= pa_sfra) && (cfra <= pa_efra);
525 for (; extra; extra = extra->
next) {
526 switch (extra->
type) {
554 int index,
void *cloth_v,
void **
data,
float UNUSED(cfra),
const float *old_data)
561 memcpy(vert->
x,
data,
sizeof(
float[3]));
562 memcpy(vert->
xconst,
data + 3,
sizeof(
float[3]));
563 memcpy(vert->
v,
data + 6,
sizeof(
float[3]));
577 const float *old_data)
585 if (cfra1 == cfra2) {
593 memcpy(keys[2].co, old_data,
sizeof(
float[3]));
594 memcpy(keys[2].vel, old_data + 6,
sizeof(
float[3]));
600 dfra = cfra2 - cfra1;
632 for (; extra; extra = extra->
next) {
633 switch (extra->
type) {
666 return surface->data->total_points;
671 const char *
UNUSED(message))
676 #define DPAINT_CACHE_VERSION "1.01"
681 int cache_compress = 1;
687 int total_points =
surface->data->total_points;
698 in_len =
sizeof(
float) * total_points;
710 pf, (
unsigned char *)
surface->data->type_data, in_len,
out, cache_compress);
728 unsigned int data_len;
734 if (surface_type !=
surface->type) {
743 data_len =
sizeof(
float);
753 pf, (
unsigned char *)
surface->data->type_data, data_len *
surface->data->total_points);
784 int index,
void *rb_v,
void **
data,
float UNUSED(cfra),
const float *old_data)
799 memcpy(rbo->
pos,
data,
sizeof(
float[3]));
800 memcpy(rbo->
orn,
data + 3,
sizeof(
float[4]));
815 const float *old_data)
831 float pos[3], orn[4];
834 memcpy(
pos,
data,
sizeof(
float[3]));
835 memcpy(orn,
data + 3,
sizeof(
float[4]));
842 const float t = (cfra - cfra1) / (cfra2 - cfra1);
857 const char *
UNUSED(message))
1100 if (pid->cache == cache) {
1125 void *callback_user_data)
1129 if (psys->part ==
NULL) {
1146 if (!
callback(&pid, callback_user_data)) {
1155 void *callback_user_data)
1161 if (!
callback(&pid, callback_user_data)) {
1169 if (!
callback(&pid, callback_user_data)) {
1180 if (!
callback(&pid, callback_user_data)) {
1196 if (
object !=
NULL) {
1200 if (!
callback(&pid, callback_user_data)) {
1217 if (current_object ==
object) {
1230 if (!
callback(&pid, callback_user_data)) {
1254 data.list_base = lb;
1285 const int ext_len =
frame_len + strlen(ext);
1286 const int len = strlen(filename);
1289 if (
len > ext_len) {
1306 #define MAX_PTCACHE_PATH FILE_MAX
1307 #define MAX_PTCACHE_FILE (FILE_MAX * 2)
1327 if ((blendfile_path[0] !=
'\0') ||
lib) {
1354 const size_t filename_len,
1355 const bool use_frame_number,
1358 size_t len = filename_len;
1360 filename_ext = filename + filename_len;
1361 *filename_ext =
'\0';
1370 if (use_frame_number) {
1405 PTCacheID *pid,
char *filename,
int cfra,
const bool do_path,
const bool do_ext)
1415 if (blendfile_path[0] ==
'\0') {
1428 while (
'\0' != *idname) {
1435 int temp = (int)strlen(pid->
cache->
name);
1457 #ifndef DURIAN_POINTCACHE_LIB_OK
1465 if (blendfile_path[0] ==
'\0') {
1508 unsigned char compressed = 0;
1511 size_t out_len =
len;
1514 unsigned char *props =
MEM_callocN(
sizeof(
char[16]),
"tmp");
1520 in_len = (size_t)
size;
1525 in = (
unsigned char *)
MEM_callocN(
sizeof(
unsigned char) * in_len,
1526 "pointcache_compressed_buffer");
1529 if (compressed == 1) {
1530 r = lzo1x_decompress_safe(in, (lzo_uint)in_len,
result, (lzo_uint *)&out_len,
NULL);
1534 if (compressed == 2) {
1536 size_t leni = in_len, leno =
len;
1538 sizeOfIt = (size_t)
size;
1540 r = LzmaUncompress(
result, &leno, in, &leni, props, sizeOfIt);
1555 PTCacheFile *
pf,
unsigned char *in,
unsigned int in_len,
unsigned char *
out,
int mode)
1558 unsigned char compressed = 0;
1560 unsigned char *props =
MEM_callocN(
sizeof(
char[16]),
"tmp");
1561 size_t sizeOfIt = 5;
1568 LZO_HEAP_ALLOC(wrkmem, LZO1X_MEM_COMPRESS);
1570 r = lzo1x_1_compress(in, (lzo_uint)in_len,
out, (lzo_uint *)&out_len, wrkmem);
1571 if (!(
r == LZO_E_OK) || (out_len >= in_len)) {
1582 r = LzmaCompress(
out,
1596 if (!(
r == SZ_OK) || (out_len >= in_len)) {
1607 unsigned int size = out_len;
1615 if (compressed == 2) {
1616 unsigned int size = sizeOfIt;
1627 return (fread(f,
size, tot,
pf->fp) == tot);
1631 return (fwrite(f,
size, tot,
pf->fp) == tot);
1638 if ((
pf->data_types & (1 << i)) &&
1651 if ((
pf->data_types & (1 << i)) &&
1661 unsigned int typeflag = 0;
1667 if (fread(bphysics,
sizeof(
char), 8,
pf->fp) != 8) {
1675 if (!
error && !fread(&typeflag,
sizeof(
unsigned int), 1,
pf->fp)) {
1691 const char *bphysics =
"BPHYSICS";
1692 unsigned int typeflag =
pf->type +
pf->flag;
1694 if (fwrite(bphysics,
sizeof(
char), 8,
pf->fp) != 8) {
1698 if (!fwrite(&typeflag,
sizeof(
unsigned int), 1,
pf->fp)) {
1714 int data_types =
pf->data_types;
1733 if (index < *data || index > *(
data +
high)) {
1739 return index - *
data;
1745 if (
data[mid] > index) {
1748 else if (
data[mid] < index) {
1759 return (index < pm->totpoint ? index : -1);
1768 cur[i] = ((data_types & (1 << i)) ? pm->
data[i] :
NULL);
1809 if (data_types & (1 << i)) {
1831 if (
from[i] && to[i]) {
1842 for (; extra; extra = extra->
next) {
1861 return sizeof(
float[6]);
1867 return sizeof(
float[9]);
1876 int cfra1 = frame, cfra2 = frame + 1;
1882 if (cfra1 < pid->cache->startframe) {
1894 if (cfra1 && !cfra2) {
1911 if (pm2->
frame < frame) {
1935 unsigned int i,
error = 0;
1961 if (
pf->data_types & (1 << i)) {
1971 for (i = 0; i < pm->
totpoint; i++) {
1983 unsigned int extratype = 0;
1988 extra->
type = extratype;
1993 "Pointcache extradata->data");
1997 (
unsigned char *)(extra->
data),
2017 printf(
"Error reading from disk cache\n");
2025 unsigned int i,
error = 0;
2033 printf(
"Error opening disk cache file for writing\n");
2061 "pointcache_lzo_buffer");
2073 for (i = 0; i < pm->
totpoint; i++) {
2087 for (; extra; extra = extra->
next) {
2098 "pointcache_lzo_buffer");
2112 printf(
"Error writing to disk cache\n");
2129 printf(
"Error opening disk cache file for reading\n");
2138 else if (
pf->type != pid->
type) {
2179 while (pm && pm->
frame != cfra) {
2191 if (totpoint != pid_totpoint) {
2193 totpoint =
MIN2(totpoint, pid_totpoint);
2200 for (i = 0; i < totpoint; i++) {
2236 while (pm && pm->
frame != cfra2) {
2248 if (totpoint != pid_totpoint) {
2250 totpoint =
MIN2(totpoint, pid_totpoint);
2257 for (i = 0; i < totpoint; i++) {
2282 int cfrai = (int)
floor(cfra), cfra1 = 0, cfra2 = 0;
2305 if (cfra1 == 0 && cfra2 == 0) {
2310 if (no_extrapolate_old) {
2311 if (cfra1 == 0 && cfra2 && cfra2 <= pid->cache->simframe) {
2314 if (cfra1 && cfra1 == cfra2) {
2320 if (cfra1 && cfra1 == cfra2) {
2366 if (cfra <= pid->cache->last_exact) {
2386 printf(
"Error opening disk cache file for writing\n");
2392 pf->totpoint = totpoint;
2407 printf(
"Error writing to disk cache\n");
2445 for (i = 0; i < totpoint; i++) {
2489 int ofra = 0, efra = cache->
endframe;
2529 if (efra >= cache->
startframe && cfra > efra) {
2530 if (ofra >= cache->
startframe && efra - ofra < cache->step) {
2550 int overwrite = 0,
error = 0;
2595 unsigned int sta, end;
2616 #ifndef DURIAN_POINTCACHE_LIB_OK
2640 if (
len <
sizeof(filename) - 2) {
2648 if (strstr(de->
d_name, ext)) {
2686 for (; pm; pm = pm->
next) {
2725 for (; pm; pm = pm->
next) {
2726 if (pm->
frame == cfra) {
2748 if (cfra < pid->cache->startframe || cfra > pid->
cache->
endframe) {
2766 for (; pm; pm = pm->
next) {
2767 if (pm->
frame == cfra) {
2774 PTCacheID *pid,
Scene *
scene,
float cfra,
int *startframe,
int *endframe,
float *timescale)
2779 float time, nexttime;
2799 *timescale =
MAX2(nexttime -
time, 0.0f);
2802 if (startframe && endframe) {
2818 unsigned int end = cache->
endframe;
2822 "cached frames array");
2845 if (strstr(de->
d_name, ext)) {
2850 if ((frame != -1) && (frame >= sta && frame <= end)) {
2952 else if (psys->
clmd) {
2963 if (skip == 0 && psys->
part) {
3034 for (; pm; pm = pm->
next) {
3069 if (copy_data ==
false) {
3112 for (; cache; cache = cache->
next) {
3116 return ptcaches_new->
first;
3128 memset(&baker, 0,
sizeof(baker));
3129 baker.
bmain = bmain;
3143 if (dtime > 3600.0) {
3145 str,
"%ih %im %is", (
int)(dtime / 3600), ((
int)(dtime / 60)) % 60, ((
int)dtime) % 60);
3148 sprintf(
str,
"%im %is", ((
int)(dtime / 60)) % 60, ((
int)dtime) % 60);
3152 sprintf(
str,
"%is", ((
int)dtime) % 60);
3170 int render = baker->
render;
3194 for (pid2 = pidlist2.
first; pid2; pid2 = pid2->
next) {
3232 for (pid = pidlist.
first; pid; pid = pid->
next) {
3260 if (
bake || render) {
3280 bool use_timer =
false;
3281 double stime, ptime, ctime, fetd;
3282 char run[32], cur[32], etd[32];
3296 printf(
"bake: frame %d :: %d\n",
scene->
r.
cfra, endframe);
3303 if (use_timer || fetd > 60.0) {
3310 printf(
"Baked for %s, current frame: %i/%i (%.3fs), ETC: %s\r",
3313 endframe - startframe + 1,
3322 if (cancel ||
G.is_break) {
3332 printf(
"\nBake %s %s (%i frames simulated).\n",
3333 (cancel ?
"canceled after" :
"finished in"),
3367 for (pid = pidlist.
first; pid; pid = pid->
next) {
3435 cache->
flag |= baked;
3437 for (cfra = sfra; cfra <= efra; cfra++) {
3458 cache->
flag |= baked;
3460 for (; pm; pm = pm->
next) {
3478 if (blendfile_path[0] ==
'\0') {
3481 printf(
"File must be saved before using disk cache!\n");
3531 if (
STREQ(name_src, name_dst)) {
3556 if (strstr(de->
d_name, ext)) {
3605 if (cache->
index >= 0) {
3613 if (strstr(de->
d_name, ext)) {
3620 start =
MIN2(start, frame);
3621 end =
MAX2(end, frame);
3699 for (; cfra <= cache->
endframe; cfra++) {
3709 else if (totframes && cache->
totpoint) {
3724 mem_info,
sizeof(mem_info),
TIP_(
"%i cells + High Resolution cached"), totpoint);
3727 BLI_snprintf(mem_info,
sizeof(mem_info),
TIP_(
"%i cells cached"), totpoint);
3733 for (; cfra <= cache->
endframe; cfra++) {
3739 BLI_snprintf(mem_info,
sizeof(mem_info),
TIP_(
"%i frames on disk"), totframes);
3744 char formatted_tot[16];
3745 char formatted_mem[15];
3746 long long int bytes = 0.0f;
3749 for (; pm; pm = pm->
next) {
3769 TIP_(
"%s frames in memory (%s)"),
3779 sizeof(cache->
info),
3780 TIP_(
"%s, not exact since frame %i"),
3866 int *poin = pm->
data[i];
3901 if (ptcaches->
first) {
3919 (*ocache)->step = 1;
3922 ptcaches->
first = ptcaches->
last = *ocache;
typedef float(TangentPoint)[2]
void BIK_clear_cache(struct bPose *pose)
void cloth_free_modifier(struct ClothModifierData *clmd)
#define FOREACH_COLLECTION_OBJECT_RECURSIVE_END
#define FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN(_collection, _object)
struct PaintPoint PaintPoint
struct PaintWavePoint PaintWavePoint
void dynamicPaint_clearSurface(const struct Scene *scene, struct DynamicPaintSurface *surface)
const char * BKE_main_blendfile_path_from_global(void)
void BKE_modifier_set_error(const struct Object *ob, struct ModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(3
General operations, lookup, etc. for blender objects.
int BKE_object_insert_ptcache(struct Object *ob)
void BKE_object_delete_ptcache(struct Object *ob, int index)
struct ParticleSystem * psys_eval_get(struct Depsgraph *depsgraph, struct Object *object, struct ParticleSystem *psys)
void psys_get_pointcache_start_end(struct Scene *scene, ParticleSystem *psys, int *sfra, int *efra)
void psys_interpolate_particle(short type, struct ParticleKey keys[4], float dt, struct ParticleKey *result, bool velocity)
void psys_reset(struct ParticleSystem *psys, int mode)
#define PSYS_RESET_DEPSGRAPH
#define PTCACHE_TYPEFLAG_TYPEMASK
#define PTCACHE_FILE_READ
#define PTCACHE_TYPE_SMOKE_HIGHRES
#define PTCACHE_VEL_PER_SEC
#define PTCACHE_FILE_WRITE
#define PTCACHE_CLEAR_BEFORE
#define PTCACHE_CLEAR_AFTER
#define PTCACHE_TYPE_CLOTH
#define PTCACHE_TYPE_DYNAMICPAINT
#define PTCACHE_CLEAR_ALL
#define PTCACHE_READ_INTERPOLATED
#define PTCACHE_TYPE_PARTICLES
#define PTCACHE_TYPEFLAG_FLAGMASK
#define PTCACHE_TYPE_SOFTBODY
#define PTCACHE_TYPEFLAG_COMPRESS
#define PTCACHE_FILE_UPDATE
#define PTCACHE_CLEAR_FRAME
#define PTCACHE_TYPE_SMOKE_DOMAIN
#define PTCACHE_RESET_OUTDATED
#define PTCACHE_TYPE_RIGIDBODY
#define PTCACHE_RESET_DEPSGRAPH
#define PTCACHE_RESET_BAKED
#define PTCACHE_READ_EXACT
#define PTCACHE_TYPEFLAG_EXTRADATA
void BKE_scene_graph_update_for_newframe(struct Depsgraph *depsgraph)
float BKE_scene_ctime_get(const struct Scene *scene)
#define SETLOOPER_VIEW_LAYER(_sce_basis, _view_layer, _sce_iter, _base)
float BKE_scene_frame_to_ctime(const struct Scene *scene, int frame)
void sbFreeSimulation(struct SoftBody *sb)
void BLI_endian_switch_int32_array(int *val, int size) ATTR_NONNULL(1)
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
FILE * BLI_fopen(const char *filepath, const char *mode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_delete(const char *file, bool dir, bool recursive) ATTR_NONNULL()
int BLI_rename(const char *from, const char *to) ATTR_NONNULL()
int BLI_fseek(FILE *stream, int64_t offset, int whence)
void * BLI_pophead(ListBase *listbase) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) 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 interp_qt_qtqt(float q[4], const float a[4], const float b[4], float t)
void vec_to_quat(float q[4], const float vec[3], short axis, short upflag)
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE bool is_zero_v3(const float a[3]) ATTR_WARN_UNUSED_RESULT
void interp_v3_v3v3(float r[3], const float a[3], const float b[3], float t)
MINLINE void zero_v3(float r[3])
bool BLI_path_is_rel(const char *path) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
bool BLI_make_existing_file(const char *name)
int BLI_path_slash_ensure(char *string) ATTR_NONNULL()
void BLI_split_file_part(const char *string, char *file, size_t filelen)
bool BLI_path_abs(char *path, const char *basepath) ATTR_NONNULL()
void BLI_join_dirfile(char *__restrict dst, size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
size_t BLI_snprintf_rlen(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
size_t BLI_str_format_int_grouped(char dst[16], int num) ATTR_NONNULL()
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
void BLI_str_format_byte_unit(char dst[15], long long int bytes, bool base_10) ATTR_NONNULL()
#define STREQLEN(a, b, n)
Compatibility-like things for windows.
struct dirent * readdir(DIR *dp)
DIR * opendir(const char *path)
#define BLO_read_data_address(reader, ptr_p)
#define BLO_write_struct(writer, struct_name, data_ptr)
void BLO_read_list(BlendDataReader *reader, struct ListBase *list)
void BLO_read_list_cb(BlendDataReader *reader, struct ListBase *list, BlendReadListFn callback)
void BLO_write_struct_array_by_name(BlendWriter *writer, const char *struct_name, int array_size, const void *data_ptr)
bool BLO_read_requires_endian_switch(BlendDataReader *reader)
void BLO_write_raw(BlendWriter *writer, size_t size_in_bytes, const void *data_ptr)
#define CLOG_ERROR(clg_ref,...)
struct Depsgraph Depsgraph
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
ID and Library types, which are fundamental for sdna.
Object groups, one object can be in many groups at once.
@ MOD_DPAINT_SURFACE_T_WEIGHT
@ MOD_DPAINT_SURFACE_T_PAINT
@ MOD_DPAINT_SURFACE_T_DISPLACE
@ MOD_DPAINT_SURFACE_T_WAVE
@ MOD_DPAINT_SURFACE_F_IMAGESEQ
@ FLUID_DOMAIN_CACHE_REPLAY
@ eModifierType_DynamicPaint
Object is a sort of wrapper for general info.
#define SPH_VISCOELASTIC_SPRINGS
#define PSYS_HAIR_DYNAMICS
struct ParticleKey ParticleKey
struct ParticleSpring ParticleSpring
struct PTCacheMem PTCacheMem
#define BPHYS_DATA_LOCATION
#define BPHYS_EXTRA_FLUID_SPRINGS
#define BPHYS_DATA_DYNAMICPAINT
struct PTCacheExtra PTCacheExtra
#define BPHYS_DATA_VELOCITY
@ PTCACHE_FLAG_INFO_DIRTY
@ PTCACHE_SIMULATION_VALID
#define BPHYS_DATA_ROTATION
#define BPHYS_DATA_AVELOCITY
#define BPHYS_EXTRA_CLOTH_ACCELERATION
#define BPHYS_DATA_XCONST
Types and defines for representing Rigid Body entities.
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
Read Guarded memory(de)allocation.
static float frame_len(const Frame *frame)
Platform independent time functions.
Rigid Body API for interfacing with external Physics Engines.
__forceinline ssef low(const avxf &a)
__forceinline ssef high(const avxf &a)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
const Depsgraph * depsgraph
DEGForeachIDComponentCallback callback
SyclQueue void void size_t num_bytes void
struct @211::@212 surface
#define pf(_x, _i)
Prefetch 64.
void * BKE_tempdir_session
ccl_gpu_kernel_postfix ccl_global float int int int int float bool reset
clear internal cached data and reset random seed
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
size_t(* MEM_allocN_len)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void error(const char *str)
static void clear(Message *msg)
static const pxr::TfToken out("out", pxr::TfToken::Immortal)
static int bake(const BakeAPIRender *bkr, Object *ob_low, const ListBase *selected_objects, ReportList *reports)
static int ptcache_file_read(PTCacheFile *pf, void *f, unsigned int tot, unsigned int size)
int BKE_ptcache_data_size(int data_type)
static int ptcache_dynamicpaint_totpoint(void *sd, int UNUSED(cfra))
struct PTCacheIDsFromObjectData PTCacheIDsFromObjectData
#define PTCACHE_DATA_FROM(data, type, from)
static int ptcache_basic_header_read(PTCacheFile *pf)
static void ptcache_data_copy(void *from[], void *to[])
void BKE_ptcache_disk_to_mem(PTCacheID *pid)
void BKE_ptcache_mem_pointers_incr(void *cur[BPHYS_TOT_DATA])
static bool foreach_object_modifier_ptcache(Object *object, ForeachPtcacheCb callback, void *callback_user_data)
static size_t ptcache_filename_ext_append(PTCacheID *pid, char *filename, const size_t filename_len, const bool use_frame_number, const int cfra)
bool(* ForeachPtcacheCb)(PTCacheID *pid, void *userdata)
static bool ptcache_ids_from_object_cb(PTCacheID *pid, void *userdata)
static int ptcache_particle_totwrite(void *psys_v, int cfra)
int BKE_ptcache_mem_index_find(PTCacheMem *pm, unsigned int index)
static void ptcache_particle_interpolate(int index, void *psys_v, void **data, float cfra, float cfra1, float cfra2, const float *old_data)
PTCacheID BKE_ptcache_id_find(Object *ob, Scene *scene, PointCache *cache)
void BKE_ptcache_invalidate(PointCache *cache)
void BKE_ptcache_load_external(PTCacheID *pid)
static void ptcache_file_close(PTCacheFile *pf)
static int ptcache_read(PTCacheID *pid, int cfra)
bool BKE_ptcache_object_has(struct Scene *scene, struct Object *ob, int duplis)
static int ptcache_filename(PTCacheID *pid, char *filename, int cfra, const bool do_path, const bool do_ext)
void BKE_ptcache_mem_to_disk(PTCacheID *pid)
void BKE_ptcache_make_particle_key(ParticleKey *key, int index, void **data, float time)
static int ptcache_path(PTCacheID *pid, char *filename)
static PTCacheMem * ptcache_disk_frame_to_mem(PTCacheID *pid, int cfra)
static int ptcache_dynamicpaint_write(PTCacheFile *pf, void *dp_v)
static int ptcache_data_size[]
void BKE_ptcache_id_from_rigidbody(PTCacheID *pid, Object *ob, RigidBodyWorld *rbw)
void BKE_ptcache_id_from_dynamicpaint(PTCacheID *pid, Object *ob, DynamicPaintSurface *surface)
PointCache * BKE_ptcache_add(ListBase *ptcaches)
static void ptcache_data_alloc(PTCacheMem *pm)
static int ptcache_write(PTCacheID *pid, int cfra, int overwrite)
void BKE_ptcache_update_info(PTCacheID *pid)
static int ptcache_mem_frame_to_disk(PTCacheID *pid, PTCacheMem *pm)
static const char * ptcache_file_extension(const PTCacheID *pid)
static int ptcache_write_stream(PTCacheID *pid, int cfra, int totpoint)
static PointCache * ptcache_copy(PointCache *cache, const bool copy_data)
static int ptcache_softbody_write(int index, void *soft_v, void **data, int UNUSED(cfra))
static void ptcache_rigidbody_read(int index, void *rb_v, void **data, float UNUSED(cfra), const float *old_data)
static void direct_link_pointcache_cb(BlendDataReader *reader, void *data)
void BKE_ptcache_id_time(PTCacheID *pid, Scene *scene, float cfra, int *startframe, int *endframe, float *timescale)
static int ptcache_rigidbody_totpoint(void *rb_v, int UNUSED(cfra))
static void direct_link_pointcache(BlendDataReader *reader, PointCache *cache)
static const char * ptcache_extra_struct[]
static int ptcache_file_data_write(PTCacheFile *pf)
static void ptcache_file_pointers_init(PTCacheFile *pf)
bool BKE_ptcache_id_exist(PTCacheID *pid, int cfra)
static int ptcache_file_write(PTCacheFile *pf, const void *f, unsigned int tot, unsigned int size)
void BKE_ptcache_free_mem(ListBase *mem_cache)
static int ptcache_file_compressed_read(PTCacheFile *pf, unsigned char *result, unsigned int len)
void BKE_ptcache_free_list(ListBase *ptcaches)
static int ptcache_read_stream(PTCacheID *pid, int cfra)
static void ptcache_cloth_extra_write(void *cloth_v, PTCacheMem *pm, int UNUSED(cfra))
static int ptcache_cloth_write(int index, void *cloth_v, void **data, int UNUSED(cfra))
static void ptcache_cloth_interpolate(int index, void *cloth_v, void **data, float cfra, float cfra1, float cfra2, const float *old_data)
void BKE_ptcache_quick_cache_all(Main *bmain, Scene *scene, ViewLayer *view_layer)
static bool foreach_object_ptcache(Scene *scene, Object *object, int duplis, ForeachPtcacheCb callback, void *callback_user_data)
void BKE_ptcache_mem_pointers_init(PTCacheMem *pm, void *cur[BPHYS_TOT_DATA])
static int ptcache_dynamicpaint_read(PTCacheFile *pf, void *dp_v)
void BKE_ptcache_id_from_cloth(PTCacheID *pid, Object *ob, ClothModifierData *clmd)
static void ptcache_softbody_error(const ID *UNUSED(owner_id), void *UNUSED(soft_v), const char *UNUSED(message))
static int ptcache_extra_datasize[]
static int ptcache_frame_from_filename(const char *filename, const char *ext)
void BKE_ptcache_blend_read_data(BlendDataReader *reader, ListBase *ptcaches, PointCache **ocache, int force_disk)
static PTCacheFile * ptcache_file_open(PTCacheID *pid, int mode, int cfra)
static void ptcache_find_frames_around(PTCacheID *pid, unsigned int frame, int *fra1, int *fra2)
int BKE_ptcache_mem_pointers_seek(int point_index, PTCacheMem *pm, void *cur[BPHYS_TOT_DATA])
static void ptcache_particle_extra_read(void *psys_v, PTCacheMem *pm, float UNUSED(cfra))
void BKE_ptcache_bake(PTCacheBaker *baker)
static int ptcache_file_compressed_write(PTCacheFile *pf, unsigned char *in, unsigned int in_len, unsigned char *out, int mode)
int BKE_ptcache_read(PTCacheID *pid, float cfra, bool no_extrapolate_old)
static int ptcache_softbody_totpoint(void *soft_v, int UNUSED(cfra))
void BKE_ptcache_ids_from_object(ListBase *lb, Object *ob, Scene *scene, int duplis)
static void ptcache_particle_read(int index, void *psys_v, void **data, float cfra, const float *old_data)
static void ptcache_rigidbody_error(const struct ID *UNUSED(owner_id), void *UNUSED(rb_v), const char *UNUSED(message))
static void ptcache_cloth_error(const ID *owner_id, void *cloth_v, const char *message)
static void ptcache_add_extra_data(PTCacheMem *pm, unsigned int type, unsigned int count, void *data)
void BKE_ptcache_free(PointCache *cache)
static void ptcache_particle_error(const ID *UNUSED(owner_id), void *UNUSED(psys_v), const char *UNUSED(message))
static void ptcache_cloth_extra_read(void *cloth_v, PTCacheMem *pm, float UNUSED(cfra))
static const char * ptcache_data_struct[]
void BKE_ptcache_id_clear(PTCacheID *pid, int mode, unsigned int cfra)
static int ptcache_old_elemsize(PTCacheID *pid)
static int ptcache_rigidbody_write(int index, void *rb_v, void **data, int UNUSED(cfra))
void BKE_ptcache_disk_cache_rename(PTCacheID *pid, const char *name_src, const char *name_dst)
static void ptcache_dynamicpaint_error(const ID *UNUSED(owner_id), void *UNUSED(sd), const char *UNUSED(message))
static int ptcache_cloth_totpoint(void *cloth_v, int UNUSED(cfra))
int BKE_ptcache_write(PTCacheID *pid, unsigned int cfra)
static int ptcache_interpolate(PTCacheID *pid, float cfra, int cfra1, int cfra2)
void BKE_ptcache_id_from_softbody(PTCacheID *pid, Object *ob, SoftBody *sb)
void BKE_ptcache_toggle_disk_cache(PTCacheID *pid)
int BKE_ptcache_id_reset(Scene *scene, PTCacheID *pid, int mode)
PointCache * BKE_ptcache_copy_list(ListBase *ptcaches_new, const ListBase *ptcaches_old, const int flag)
#define PTCACHE_DATA_TO(data, type, index, to)
static void ptcache_rigidbody_interpolate(int index, void *rb_v, void **data, float cfra, float cfra1, float cfra2, const float *old_data)
#define LZO_OUT_LEN(size)
static int ptcache_particle_write(int index, void *psys_v, void **data, int cfra)
void BKE_ptcache_id_from_smoke(PTCacheID *pid, struct Object *ob, struct FluidModifierData *fmd)
static void ptcache_particle_extra_write(void *psys_v, PTCacheMem *pm, int UNUSED(cfra))
static void ptcache_cloth_read(int index, void *cloth_v, void **data, float UNUSED(cfra), const float *old_data)
#define DPAINT_CACHE_VERSION
static bool ptcache_object_has_cb(PTCacheID *UNUSED(pid), void *UNUSED(userdata))
static int ptcache_file_header_begin_write(PTCacheFile *pf)
void BKE_ptcache_id_from_particles(PTCacheID *pid, Object *ob, ParticleSystem *psys)
static void ptcache_softbody_interpolate(int index, void *soft_v, void **data, float cfra, float cfra1, float cfra2, const float *old_data)
static bool foreach_object_particle_ptcache(Object *object, ForeachPtcacheCb callback, void *callback_user_data)
static void ptcache_mem_clear(PTCacheMem *pm)
static void ptcache_softbody_read(int index, void *soft_v, void **data, float UNUSED(cfra), const float *old_data)
static int ptcache_write_needed(PTCacheID *pid, int cfra, int *overwrite)
static void ptcache_dt_to_str(char *str, double dtime)
void BKE_ptcache_validate(PointCache *cache, int framenr)
static void ptcache_data_free(PTCacheMem *pm)
static int ptcache_file_header_begin_read(PTCacheFile *pf)
static void ptcache_extra_free(PTCacheMem *pm)
int BKE_ptcache_object_reset(Scene *scene, Object *ob, int mode)
static int ptcache_particle_totpoint(void *psys_v, int UNUSED(cfra))
static int ptcache_basic_header_write(PTCacheFile *pf)
void BKE_ptcache_blend_write(BlendWriter *writer, ListBase *ptcaches)
static int ptcache_file_data_read(PTCacheFile *pf)
void RB_body_get_orientation(rbRigidBody *object, float v_out[4])
void RB_body_get_position(rbRigidBody *object, float v_out[3])
struct ClothHairData * hairdata
struct Cloth * clothObject
struct PointCache * point_cache
float average_acceleration[3]
struct ClothVertex * verts
struct DynamicPaintCanvasSettings * canvas
struct ListBase ptcaches[2]
struct PointCache * point_cache[2]
struct FluidDomainSettings * domain
struct ModifierData * next
struct Collection * instance_collection
struct RigidBodyOb * rigidbody_object
struct RigidBodyCon * rigidbody_constraint
void(* update_progress)(void *data, float progress, int *cancel)
struct Depsgraph * depsgraph
struct ViewLayer * view_layer
struct PointCache ** cache_ptr
int(* write_stream)(PTCacheFile *pf, void *calldata)
int(* write_point)(int index, void *calldata, void **data, int cfra)
int(* write_header)(PTCacheFile *pf)
void(* read_point)(int index, void *calldata, void **data, float cfra, const float *old_data)
void(* interpolate_extra_data)(void *calldata, struct PTCacheMem *pm, float cfra, float cfra1, float cfra2)
struct ListBase * ptcaches
void(* read_extra_data)(void *calldata, struct PTCacheMem *pm, float cfra)
void(* interpolate_point)(int index, void *calldata, void **data, float cfra, float cfra1, float cfra2, const float *old_data)
unsigned int default_step
int(* totpoint)(void *calldata, int cfra)
int(* totwrite)(void *calldata, int cfra)
void(* write_extra_data)(void *calldata, struct PTCacheMem *pm, int cfra)
int(* read_stream)(PTCacheFile *pf, void *calldata)
void(* error)(const struct ID *owner_id, void *calldata, const char *message)
int(* read_header)(PTCacheFile *pf)
struct PointCache * cache
struct ListBase extradata
struct SPHFluidSettings * fluid
ParticleSpring * fluid_springs
struct ParticleSystem * next
struct PointCache * pointcache
struct ClothModifierData * clmd
struct ListBase mem_cache
struct PTCacheEdit * edit
void(* free_edit)(struct PTCacheEdit *edit)
struct RigidBodyOb_Shared * shared
struct PointCache * pointcache
struct RigidBodyWorld_Shared * shared
struct PhysicsSettings physics_settings
struct RigidBodyWorld * rigidbody_world
struct PointCache * pointcache
struct SoftBody_Shared * shared
struct BodyPoint * bpoint
double PIL_check_seconds_timer(void)