10#define DNA_DEPRECATED_ALLOW
125 cumap->
flag &= ~CUMA_EXTEND_EXTRAPOLATE;
149 const char *colorspace_name;
157 STRNCPY(scene->r.bake.filepath,
U.renderdir);
159 mblur_shutter_curve = &scene->r.mblur_shutter_curve;
163 &mblur_shutter_curve->
clipr,
169 scene->toolsettings->autokey_mode =
uchar(
U.autokey_mode);
173 CurveMapping *gp_falloff_curve = scene->toolsettings->gp_sculpt.cur_falloff;
179 CurveMapping *gp_primitive_curve = scene->toolsettings->gp_sculpt.cur_primitive;
182 &gp_primitive_curve->
clipr,
187 scene->unit.scale_length = 1.0f;
191 scene->unit.temperature_unit =
uchar(
195 scene->grease_pencil_settings.smaa_threshold = 1.0f;
199 pset = &scene->toolsettings->particle;
229 &scene->view_settings, &scene->display_settings,
"AgX");
230 STRNCPY(scene->sequencer_colorspace_settings.name, colorspace_name);
241 for (
size_t i = 0; i <
ARRAY_SIZE(scene->orientation_slots); i++) {
242 scene->orientation_slots[i].index_custom = -1;
250 scene->runtime = MEM_new<SceneRuntime>(__func__);
257 if (marker->prop !=
nullptr) {
264 std::optional<Library *> owner_library,
270 const Scene *scene_src = (
const Scene *)id_src;
274 const int flag_embedded_id_data = flag_subdata & ~LIB_ID_CREATE_NO_ALLOCATE;
276 scene_dst->
ed =
nullptr;
287 flag_embedded_id_data);
298 view_layer_src = view_layer_src->next, view_layer_dst = view_layer_dst->next)
314 reinterpret_cast<ID **
>(&scene_dst->
nodetree),
315 flag_embedded_id_data);
320 (
void *)(&scene_src->
id),
353 scene_dst->
ed = MEM_cnew<Editing>(__func__);
378 scene_dst->
runtime = MEM_new<SceneRuntime>(__func__);
384 if (marker->prop !=
nullptr) {
395 const bool do_id_user =
false;
404 if (scene->nodetree) {
407 scene->nodetree =
nullptr;
410 if (scene->rigidbody_world) {
414 scene->rigidbody_world->constraints =
nullptr;
415 scene->rigidbody_world->group =
nullptr;
424 scene->toolsettings =
nullptr;
449 if (scene->master_collection) {
453 scene->master_collection =
nullptr;
456 if (scene->display.shading.prop) {
458 scene->display.shading.prop =
nullptr;
462 BLI_assert(scene->layer_properties ==
nullptr);
464 MEM_delete(scene->runtime);
499 ID *id_old = *id_old_p;
506 if (id_old_new == id_old) {
509 if (id_old_new !=
nullptr) {
511 *id_old_p = id_old_new;
527 ID *id_new =
id !=
nullptr ?
537 std::swap(*id_p, *id_old_p);
542 std::swap(*id_p, *id_old_p);
550#define BKE_LIB_FOREACHID_UNDO_PRESERVE_PROCESS_IDSUPER_P( \
551 _data, _id_p, _do_undo_restore, _action, _reader, _id_old_p, _cb_flag) \
553 if (_do_undo_restore) { \
554 scene_foreach_toolsettings_id_pointer_process( \
555 (ID **)(_id_p), _action, _reader, (ID **)(_id_old_p), _cb_flag); \
558 BLI_assert((_data) != nullptr); \
559 BKE_LIB_FOREACHID_PROCESS_IDSUPER_P(_data, _id_p, _cb_flag); \
564#define BKE_LIB_FOREACHID_UNDO_PRESERVE_PROCESS_FUNCTION_CALL( \
565 _data, _do_undo_restore, _func_call) \
567 if (_do_undo_restore) { \
571 BLI_assert((_data) != nullptr); \
572 BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(_data, _func_call); \
579 const bool do_undo_restore,
590 Brush *brush_tmp =
nullptr;
591 Brush **brush_p = paint ? &paint->
brush : &brush_tmp;
600 Brush *eraser_brush_tmp =
nullptr;
610 Palette *palette_tmp =
nullptr;
623 const bool do_undo_restore,
632 BLI_assert(do_undo_restore || (toolsett == toolsett_old));
685 Paint *paint, *paint_old;
687 if (toolsett_old->
vpaint) {
695 if (toolsett_old->
wpaint) {
703 if (toolsett_old->
sculpt) {
776#undef BKE_LIB_FOREACHID_UNDO_PRESERVE_PROCESS_IDSUPER
777#undef BKE_LIB_FOREACHID_UNDO_PRESERVE_PROCESS_FUNCTION_CALL
781 const bool is_master)
801#define FOREACHID_PROCESS_ID_NOCHECK(_data, _id_super, _cb_flag) \
803 BKE_lib_query_foreachid_process((_data), reinterpret_cast<ID **>(&(_id_super)), (_cb_flag)); \
804 if (BKE_lib_query_foreachid_iter_stop(_data)) { \
810#define FOREACHID_PROCESS_IDSUPER(_data, _id_super, _cb_flag) \
812 CHECK_TYPE(&((_id_super)->id), ID *); \
813 FOREACHID_PROCESS_ID_NOCHECK(_data, _id_super, _cb_flag); \
823 BKE_lib_query_idpropertiesForeachIDLink_callback(prop, data);
838#undef FOREACHID_PROCESS_IDSUPER
839#undef FOREACHID_PROCESS_ID_NOCHECK
855 if (scene->nodetree) {
869 if (scene->master_collection !=
nullptr) {
880 BKE_lib_query_idpropertiesForeachIDLink_callback(prop, data);
908 BKE_lib_query_idpropertiesForeachIDLink_callback(prop, data);
918 if (scene->rigidbody_world) {
966 for (i = 0; i <
len; i++, se++) {
986 if (scene->ed !=
nullptr) {
996 if (scene->ed !=
nullptr) {
1001 function_callback(
id, &key, (
void **)&scene->ed->runtime.thumbnail_cache, 0, user_data);
1108 if (marker->prop !=
nullptr) {
1129 temp_nodetree->chunksize = 256;
1200 else if (seq->seqbase.first) {
1221 sce->
runtime = MEM_new<SceneRuntime>(__func__);
1314 ed->
cache =
nullptr;
1331 void *channels_poin;
1340 static_assert(seqbase_offset == 264,
"Sequence seqbase member offset cannot be changed");
1341 static_assert(channels_offset == 280,
"Sequence channels member offset cannot be changed");
1343 static_assert(seqbase_offset == 204,
"Sequence seqbase member offset cannot be changed");
1344 static_assert(channels_offset == 212,
"Sequence channels member offset cannot be changed");
1348 if (ed->
seqbasep == old_seqbasep) {
1373 if (channels_poin) {
1387 if (ms->oldbasep == old_seqbasep) {
1393 reader, seqbase_poin,
sizeof(
Sequence));
1402 if (
ELEM(ms->old_channels, old_displayed_channels,
nullptr)) {
1406 channels_poin =
POINTER_OFFSET(ms->old_channels, -channels_offset);
1410 if (channels_poin) {
1421#ifdef DURIAN_CAMERA_SWITCH
1423 sce->
r.
mode &= ~R_NO_CAMERA_SWITCH;
1452 if (rbw->
shared ==
nullptr) {
1460 if (rbw->pointcache) {
1461 rbw->
ltime =
float(rbw->pointcache->startframe);
1511 if (base_legacy->object ==
nullptr) {
1514 RPT_(
"LIB: object lost from scene: '%s'"),
1517 if (base_legacy == sce->basact) {
1518 sce->basact =
nullptr;
1528#ifdef USE_SETSCENE_CHECK
1529 if (sce->
set !=
nullptr) {
1537 sce->
flag &= ~SCE_NLA_EDIT_ON;
1561 if (scene->rigidbody_world !=
nullptr) {
1580 info.struct_size =
sizeof(
Scene);
1581 info.name =
"Scene";
1582 info.name_plural =
"scenes";
1585 info.asset_type_info =
nullptr;
1592 info.make_local =
nullptr;
1596 info.owner_pointer_get =
nullptr;
1618 if (adt && adt->
action) {
1620 if ((fcu->rna_path) && strstr(fcu->rna_path,
"sequences_all")) {
1630 if (toolsettings ==
nullptr) {
1702 if (toolsettings ==
nullptr) {
1705 if (toolsettings->
vpaint) {
1709 if (toolsettings->
wpaint) {
1713 if (toolsettings->
sculpt) {
1791 sce_copy->
r = sce->
r;
1825 sce_copy->
gpd =
nullptr;
1844 const bool is_subprocess =
false;
1845 const bool is_root_id =
true;
1848 if (!is_subprocess) {
1902 if (!is_subprocess) {
1947 if (other_scene != scene && !
ID_IS_LINKED(other_scene)) {
1979 if (
STREQ(base->object->id.name + 2, name)) {
1980 return base->object;
1994 ob->flag &= ~SELECT;
2025 bool run_again =
true;
2030 iter->
dupob =
nullptr;
2046 *ob = (*base)->object;
2051 while ((*scene)->set) {
2052 (*scene) = (*scene)->set;
2056 if (object_bases->
first) {
2057 *base =
static_cast<Base *
>(object_bases->
first);
2058 *ob = (*base)->object;
2067 *base = (*base)->
next;
2069 *ob = (*base)->object;
2074 while ((*scene)->set) {
2075 (*scene) = (*scene)->
set;
2079 if (object_bases->
first) {
2080 *base =
static_cast<Base *
>(object_bases->
first);
2081 *ob = (*base)->object;
2090 if (*base ==
nullptr) {
2099 if ((*base)->object->instance_collection ==
nullptr) {
2133 (*base)->flag_legacy &= ~OB_FROMDUPLI;
2170#ifdef DURIAN_CAMERA_SWITCH
2180 Object *camera =
nullptr;
2181 Object *first_camera =
nullptr;
2184 if (m->camera && (m->camera->visibility_flag &
OB_HIDE_RENDER) == 0) {
2185 if ((m->frame <= ctime) && (m->frame > frame)) {
2189 if (frame == ctime) {
2194 if (m->frame < min_frame) {
2195 first_camera = m->camera;
2196 min_frame = m->frame;
2201 if (camera ==
nullptr) {
2206 return first_camera;
2215#ifdef DURIAN_CAMERA_SWITCH
2216 Object *camera = BKE_scene_camera_switch_find(scene);
2217 if (camera && (camera != scene->camera)) {
2239 if (m1->
frame == frame) {
2247 if (m2->
frame == frame) {
2260 if (marker->frame == frame) {
2261 return marker->
name;
2264 if (marker->frame > best_frame && marker->frame < frame) {
2265 best_marker = marker;
2266 best_frame = marker->
frame;
2270 return best_marker ? best_marker->
name :
nullptr;
2276 const int second_prev = frame -
mod_i(frame, fps);
2277 const int second_next = second_prev + fps;
2278 const int delta_prev = frame - second_prev;
2279 const int delta_next = second_next - frame;
2280 return (delta_prev < delta_next) ? second_prev : second_next;
2300 if (sce->
set ==
nullptr) {
2305 for (a = 0, sce_iter = sce; sce_iter->
set; sce_iter = sce_iter->
set, a++) {
2324 float ctime = frame;
2325 ctime += scene->r.subframe;
2326 ctime *= scene->r.framelen;
2333 return scene->r.cfra + scene->r.subframe;
2339 scene->r.subframe = modf(
double(frame), &intpart);
2340 scene->r.cfra =
int(intpart);
2349 if ((scene->orientation_slots[slot_index].flag &
SELECT) == 0) {
2352 return &scene->orientation_slots[slot_index];
2405 Scene *scene = window->scene;
2408 if (type->draw_engine || !type->render) {
2413 View3D *v3d =
static_cast<View3D *
>(area->spacedata.first);
2447 BMesh *
bm = mesh->runtime->edit_mesh->bm;
2449 params.calc_object_remap =
true;
2450 params.update_shapekey_indices =
true;
2461 const int recalc = scene->id.recalc;
2505 bool used_multiple_passes =
false;
2508 if (run_callbacks) {
2512 for (
int pass = 0; pass < 2; pass++) {
2525 if (run_callbacks) {
2551 const bool backup =
true;
2553 used_multiple_passes =
true;
2554 run_callbacks =
false;
2558 if (used_multiple_passes) {
2561 const bool is_time_update =
false;
2564 const bool backup =
false;
2582 bool used_multiple_passes =
false;
2587 for (
int pass = 0; pass < 2; pass++) {
2626 const bool backup =
true;
2628 used_multiple_passes =
true;
2632 if (used_multiple_passes) {
2636 const bool is_time_update =
true;
2642 const bool backup =
false;
2662 name =
DATA_(
"RenderView");
2669 DATA_(
"RenderView"),
2685 if (scene->r.views.first == scene->r.views.last) {
2693 scene->r.actview = 0;
2728 if (base && base->
next) {
2732 if ((base ==
nullptr) && (view_layer !=
nullptr)) {
2737 if (object_bases->
first) {
2738 return static_cast<Base *
>(object_bases->
first);
2746 while ((*sce_iter = (*sce_iter)->
set)) {
2831 const char *none_display_name;
2846 return scene && scene->rigidbody_world && scene->rigidbody_world->group &&
2869 return max_ii(threads, 1);
2879 *r_width = (r->
xsch * r->
size) / 100;
2880 *r_height = (r->
ysch * r->
size) / 100;
2895 return (
U.pixelsize > 1.5f) ? 2 : 1;
2907 switch (unit_type) {
2911 return value *
double(unit->scale_length);
2914 return value *
pow(unit->scale_length, 2);
2916 return value *
pow(unit->scale_length, 3);
2918 return value *
pow(unit->scale_length, 3);
2972 return (srv[0] && ((srv[0]->viewflag &
SCE_VIEW_DISABLE) == 0) && srv[1] &&
2978 if (srv ==
nullptr) {
3008 if ((!viewname) || (!viewname[0])) {
3014 return STREQ(viewname, srv->name);
3027 if ((!viewname) || (!viewname[0])) {
3033 return STREQ(viewname, srv->name);
3051 if (nr++ == view_id) {
3079 if ((!viewname) || (!viewname[0])) {
3097 const char *filepath,
3105 const char *filepath,
3106 const char *viewname,
3129 if ((viewname ==
nullptr) || (viewname[0] ==
'\0')) {
3153 const char *filepath,
3158 const char delims[] = {
'.',
'\0'};
3164 if (*r_ext ==
nullptr) {
3172 const size_t suffix_len = strlen(srv->suffix);
3173 if (basename_len >= suffix_len &&
3174 STREQLEN(filepath + basename_len - suffix_len, srv->suffix, suffix_len))
3176 BLI_strncpy(r_prefix, filepath, basename_len - suffix_len + 1);
3185 const size_t height,
3255 Depsgraph *
depsgraph =
static_cast<Depsgraph *
>(value);
3267 if (scene->depsgraph_hash ==
nullptr) {
3274 if (scene->depsgraph_hash ==
nullptr) {
3278 scene->depsgraph_hash =
nullptr;
3283 if (scene->depsgraph_hash !=
nullptr) {
3293 const bool allocate_ghash_entry)
3301 if (allocate_ghash_entry) {
3304 if (scene->depsgraph_hash ==
nullptr) {
3311 Depsgraph **depsgraph_ptr;
3312 if (!allocate_ghash_entry) {
3314 return depsgraph_ptr;
3319 scene->depsgraph_hash, &key, (
void ***)&key_ptr, (
void ***)&depsgraph_ptr))
3321 return depsgraph_ptr;
3325 *key_ptr = MEM_cnew<DepsgraphKey>(__func__);
3328 *depsgraph_ptr =
nullptr;
3329 return depsgraph_ptr;
3337 if (depsgraph_ptr ==
nullptr) {
3341 if (*depsgraph_ptr !=
nullptr) {
3343 return depsgraph_ptr;
3355 SNPRINTF(name,
"%s :: %s", scene->id.name, view_layer->
name);
3361 return depsgraph_ptr;
3368 if (scene->depsgraph_hash ==
nullptr) {
3374 return static_cast<Depsgraph *
>(
BLI_ghash_lookup(scene->depsgraph_hash, &key));
3380 return (depsgraph_ptr !=
nullptr) ? *depsgraph_ptr :
nullptr;
3385 if (key_full ==
nullptr) {
3392 key_full + key_full_offset, scene->id.lib->filepath,
FILE_MAX);
3406 if (scene->depsgraph_hash ==
nullptr) {
3426 return depsgraph_extract;
3436 Depsgraph **depsgraph_extract_ptr = (Depsgraph **)
BLI_ghash_lookup_p(depsgraph_extract,
3438 if (depsgraph_extract_ptr ==
nullptr) {
3441 BLI_assert(*depsgraph_extract_ptr !=
nullptr);
3448 Depsgraph *
depsgraph = *depsgraph_extract_ptr;
3455 *depsgraph_extract_ptr =
nullptr;
3470 for (
int i = 0; i <
ARRAY_SIZE(scene->orientation_slots); i++) {
3477 else if (orient_slot->
index_custom > orientation_index) {
3494 return BLI_findindex(&scene->transform_spaces, orientation);
3508 if (this->rotation_mode > 0) {
3525 if (this->rotation_mode > 0) {
3526 eulO_to_quat(&quat.
w, this->rotation_euler, this->rotation_mode);
3537void View3DCursor::set_matrix(
const blender::float3x3 &mat,
const bool use_compat)
3541 switch (this->rotation_mode) {
3547 copy_v4_v4(quat_orig, this->rotation_quaternion);
3562 this->rotation_euler, this->rotation_euler, this->rotation_mode, mat.
ptr());
3576 switch (this->rotation_mode) {
3580 copy_v4_v4(quat_orig, this->rotation_quaternion);
3595 this->rotation_euler, this->rotation_euler, this->rotation_mode, &quat.
w);
3598 quat_to_eulO(this->rotation_euler, this->rotation_mode, &quat.
w);
3612void View3DCursor::set_matrix(
const blender::float4x4 &mat,
const bool use_compat)
Blender kernel action and pose functionality.
void action_groups_remove_channel(bAction *act, FCurve *fcu)
AnimData * BKE_animdata_from_id(const ID *id)
void BKE_animdata_duplicate_id_action(Main *bmain, ID *id, uint duplicate_flags)
void BKE_keyingsets_free(struct ListBase *list)
void BKE_keyingsets_copy(struct ListBase *newlist, const struct ListBase *list)
void BKE_keyingsets_blend_read_data(struct BlendDataReader *reader, struct ListBase *list)
void BKE_keyingsets_blend_write(struct BlendWriter *writer, struct ListBase *list)
void BKE_keyingsets_foreach_id(struct LibraryForeachIDData *data, const struct ListBase *keyingsets)
bool BKE_bpath_foreach_path_dirfile_fixed_process(BPathForeachPathData *bpath_data, char *path_dir, size_t path_dir_maxncpy, char *path_file, size_t path_file_maxncpy)
bool BKE_bpath_foreach_path_fixed_process(BPathForeachPathData *bpath_data, char *path, size_t path_maxncpy)
@ BKE_BPATH_FOREACH_PATH_SKIP_MULTIFILE
void BKE_callback_exec_id(Main *bmain, ID *id, eCbEvent evt)
@ BKE_CB_EVT_DEPSGRAPH_UPDATE_PRE
@ BKE_CB_EVT_FRAME_CHANGE_PRE
@ BKE_CB_EVT_FRAME_CHANGE_POST
@ BKE_CB_EVT_DEPSGRAPH_UPDATE_POST
void BKE_callback_exec_id_depsgraph(Main *bmain, ID *id, Depsgraph *depsgraph, eCbEvent evt)
Collection * BKE_collection_master_add(Scene *scene)
void BKE_collection_blend_write_nolib(BlendWriter *writer, Collection *collection)
void BKE_collection_blend_write_prepare_nolib(BlendWriter *writer, Collection *collection)
void BKE_collection_free_data(Collection *collection)
Collection * BKE_collection_duplicate(Main *bmain, Collection *parent, CollectionChild *child_old, Collection *collection, uint duplicate_flags, uint duplicate_options)
struct CurveProfile * BKE_curveprofile_copy(const struct CurveProfile *profile)
void BKE_curveprofile_blend_read(struct BlendDataReader *reader, struct CurveProfile *profile)
struct CurveProfile * BKE_curveprofile_add(eCurveProfilePresets preset)
void BKE_curveprofile_blend_write(struct BlendWriter *writer, const struct CurveProfile *profile)
void BKE_curveprofile_free(struct CurveProfile *profile)
ListBase * object_duplilist(Depsgraph *depsgraph, Scene *sce, Object *ob)
void free_object_duplilist(ListBase *lb)
struct EffectorWeights * BKE_effector_add_weights(struct Collection *collection)
void BKE_fcurve_free(FCurve *fcu)
void IDP_foreach_property(IDProperty *id_property_root, int type_filter, blender::FunctionRef< void(IDProperty *id_property)> callback)
#define IDP_BlendDataRead(reader, prop)
void IDP_FreeProperty(IDProperty *prop)
void IDP_FreePropertyContent_ex(IDProperty *prop, bool do_id_user)
IDProperty * IDP_CopyProperty_ex(const IDProperty *prop, int flag) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
IDProperty * IDP_CopyProperty(const IDProperty *prop) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_BlendWrite(BlendWriter *writer, const IDProperty *prop)
@ IDTYPE_FLAGS_NEVER_UNUSED
void(*)(ID *id, const IDCacheKey *cache_key, void **cache_p, uint flags, void *user_data) IDTypeForeachCacheFunctionCallback
void BKE_image_editors_update_frame(const Main *bmain, int cfra)
void BKE_view_layer_blend_write(BlendWriter *writer, const Scene *scene, ViewLayer *view_layer)
bool BKE_view_layer_has_collection(const ViewLayer *view_layer, const Collection *collection)
void BKE_view_layer_blend_read_data(BlendDataReader *reader, ViewLayer *view_layer)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
void BKE_view_layer_blend_read_after_liblink(BlendLibReader *reader, ID *self_id, ViewLayer *view_layer)
void BKE_view_layer_free_ex(ViewLayer *view_layer, bool do_id_user)
ViewLayer * BKE_view_layer_add(Scene *scene, const char *name, ViewLayer *view_layer_source, int type)
ViewLayer * BKE_view_layer_context_active_PLACEHOLDER(const Scene *scene)
void BKE_main_collection_sync(const Main *bmain)
void BKE_view_layer_copy_data(Scene *scene_dst, const Scene *scene_src, ViewLayer *view_layer_dst, const ViewLayer *view_layer_src, int flag)
ViewLayer * BKE_view_layer_default_render(const Scene *scene)
ListBase * BKE_view_layer_object_bases_get(ViewLayer *view_layer)
Object * BKE_view_layer_edit_object_get(const ViewLayer *view_layer)
ID * BKE_id_copy_for_duplicate(Main *bmain, ID *id, eDupli_ID_Flags duplicate_flags, int copy_flags)
ID * BKE_libblock_find_name(Main *bmain, short type, const char *name, const std::optional< Library * > lib=std::nullopt) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BKE_libblock_free_data_py(ID *id)
@ LIB_ID_CREATE_NO_USER_REFCOUNT
void BKE_main_id_newptr_and_tag_clear(Main *bmain)
struct ID * BKE_id_copy_in_lib(Main *bmain, std::optional< Library * > owner_library, const ID *id, const ID *new_owner_id, ID **new_id_p, int flag)
void id_us_ensure_real(ID *id)
ID * BKE_id_copy(Main *bmain, const ID *id)
void * BKE_id_new(Main *bmain, short type, const char *name)
void id_us_plus_no_lib(ID *id)
@ LIB_ID_DUPLICATE_IS_SUBPROCESS
void BKE_id_blend_write(BlendWriter *writer, ID *id)
void BKE_lib_query_foreachid_process(LibraryForeachIDData *data, ID **id_pp, int cb_flag)
#define BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(data_, func_call_)
#define BKE_LIB_FOREACHID_PROCESS_IDSUPER(data_, id_super_, cb_flag_)
void BKE_library_foreach_ID_embedded(LibraryForeachIDData *data, ID **id_pp)
@ IDWALK_CB_OVERRIDE_LIBRARY_NOT_OVERRIDABLE
@ IDWALK_CB_EMBEDDED_NOT_OWNING
@ IDWALK_CB_DIRECT_WEAK_LINK
int BKE_lib_query_foreachid_process_flags_get(const LibraryForeachIDData *data)
@ IDWALK_DO_DEPRECATED_POINTERS
@ IDWALK_NO_ORIG_POINTERS_ACCESS
@ ID_REMAP_SKIP_USER_CLEAR
@ ID_REMAP_SKIP_NEVER_NULL_USAGE
void BKE_libblock_relink_to_newid(Main *bmain, ID *id, int remap_flag) ATTR_NONNULL()
void BKE_libblock_relink_ex(Main *bmain, void *idv, void *old_idv, void *new_idv, int remap_flags) ATTR_NONNULL(2)
#define FOREACH_MAIN_ID_END
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
void BKE_paint_free(Paint *paint)
CurveMapping * BKE_sculpt_default_cavity_curve()
void BKE_paint_copy(const Paint *src, Paint *dst, int flag)
void BKE_sculpt_check_cavity_curves(Sculpt *sd)
void BKE_paint_blend_read_data(BlendDataReader *reader, const Scene *scene, Paint *paint)
void BKE_paint_blend_write(BlendWriter *writer, Paint *paint)
void BKE_ptcache_id_from_rigidbody(PTCacheID *pid, struct Object *ob, struct RigidBodyWorld *rbw)
void BKE_ptcache_blend_read_data(struct BlendDataReader *reader, struct ListBase *ptcaches, struct PointCache **ocache, int force_disk)
void BKE_ptcache_blend_write(struct BlendWriter *writer, struct ListBase *ptcaches)
void BKE_previewimg_blend_write(BlendWriter *writer, const PreviewImage *prv)
void BKE_previewimg_free(PreviewImage **prv)
void BKE_previewimg_blend_read(BlendDataReader *reader, PreviewImage *prv)
void BKE_previewimg_id_copy(ID *new_id, const ID *old_id)
API for Blender-side Rigid Body stuff.
void BKE_rigidbody_remove_constraint(struct Main *bmain, struct Scene *scene, struct Object *ob, bool free_us)
void BKE_rigidbody_remove_object(struct Main *bmain, struct Scene *scene, struct Object *ob, bool free_us)
void BKE_rigidbody_free_world(struct Scene *scene)
void BKE_rigidbody_world_id_loop(struct RigidBodyWorld *rbw, RigidbodyWorldIDFunc func, void *userdata)
struct RigidBodyWorld * BKE_rigidbody_world_copy(struct RigidBodyWorld *rbw, int flag)
void BKE_rigidbody_world_groups_relink(struct RigidBodyWorld *rbw)
void BKE_render_resolution(const RenderData *r, const bool use_crop, int *r_width, int *r_height)
Scene * BKE_scene_set_name(Main *bmain, const char *name)
int BKE_scene_transform_orientation_get_index(const Scene *scene, const TransformOrientation *orientation)
void BKE_scene_graph_evaluated_ensure(Depsgraph *depsgraph, Main *bmain)
void BKE_scene_disable_color_management(Scene *scene)
bool BKE_scene_uses_cycles(const Scene *scene)
void BKE_scene_copy_data_eevee(Scene *sce_dst, const Scene *sce_src)
float BKE_scene_ctime_get(const Scene *scene)
int get_render_subsurf_level(const RenderData *r, int lvl, bool for_render)
void BKE_scene_undo_depsgraphs_restore(Main *bmain, GHash *depsgraph_extract)
Object * BKE_scene_object_find_by_name(const Scene *scene, const char *name)
int BKE_scene_num_threads(const Scene *scene)
int get_render_child_particle_number(const RenderData *r, int child_num, bool for_render)
void BKE_scene_allocate_depsgraph_hash(Scene *scene)
void BKE_scene_free_view_layer_depsgraph(Scene *scene, ViewLayer *view_layer)
void BKE_toolsettings_free(ToolSettings *toolsettings)
void BKE_scene_graph_update_for_newframe_ex(Depsgraph *depsgraph, bool clear_recalc)
void BKE_scene_free_depsgraph_hash(Scene *scene)
int BKE_scene_multiview_num_views_get(const RenderData *rd)
bool BKE_scene_multiview_is_render_view_active(const RenderData *rd, const SceneRenderView *srv)
int BKE_scene_frame_snap_by_seconds(Scene *scene, double interval_in_seconds, int frame)
TransformOrientationSlot * BKE_scene_orientation_slot_get(Scene *scene, int slot_index)
void BKE_scene_transform_orientation_remove(Scene *scene, TransformOrientation *orientation)
bool BKE_scene_check_rigidbody_active(const Scene *scene)
int BKE_render_preview_pixel_size(const RenderData *r)
void BKE_scene_view_layer_graph_evaluated_ensure(Main *bmain, Scene *scene, ViewLayer *view_layer)
const char * BKE_scene_multiview_view_id_suffix_get(const RenderData *rd, int view_id)
bool BKE_scene_has_view_layer(const Scene *scene, const ViewLayer *layer)
TransformOrientationSlot * BKE_scene_orientation_slot_get_from_flag(Scene *scene, int flag)
int BKE_render_num_threads(const RenderData *r)
void BKE_scene_frame_set(Scene *scene, float frame)
void BKE_scene_multiview_view_prefix_get(Scene *scene, const char *filepath, char *r_prefix, const char **r_ext)
void BKE_scene_remove_rigidbody_object(Main *bmain, Scene *scene, Object *ob, bool free_us)
int BKE_scene_base_iter_next(Depsgraph *depsgraph, SceneBaseIter *iter, Scene **scene, int val, Base **base, Object **ob)
const char * BKE_scene_multiview_view_suffix_get(const RenderData *rd, const char *viewname)
bool BKE_scene_camera_switch_update(Scene *scene)
TransformOrientation * BKE_scene_transform_orientation_find(const Scene *scene, int index)
Depsgraph * BKE_scene_ensure_depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer)
bool BKE_scene_uses_cycles_experimental_features(Scene *scene)
bool BKE_scene_multiview_is_stereo3d(const RenderData *rd)
bool BKE_scene_multiview_is_render_view_first(const RenderData *rd, const char *viewname)
GHash * BKE_scene_undo_depsgraphs_extract(Main *bmain)
ToolSettings * BKE_toolsettings_copy(ToolSettings *toolsettings, int flag)
int BKE_scene_orientation_slot_get_index(const TransformOrientationSlot *orient_slot)
float BKE_scene_frame_get(const Scene *scene)
void BKE_scene_groups_relink(Scene *sce)
bool BKE_scene_can_be_removed(const Main *bmain, const Scene *scene)
void BKE_scene_multiview_videos_dimensions_get(const RenderData *rd, size_t width, size_t height, size_t *r_width, size_t *r_height)
bool BKE_scene_multiview_is_render_view_last(const RenderData *rd, const char *viewname)
bool BKE_scene_use_spherical_stereo(Scene *scene)
Scene * BKE_scene_duplicate(Main *bmain, Scene *sce, eSceneCopyMethod type)
void BKE_scene_ensure_depsgraph_hash(Scene *scene)
void BKE_scene_update_sound(Depsgraph *depsgraph, Main *bmain)
void BKE_scene_multiview_view_filepath_get(const RenderData *rd, const char *filepath, const char *view, char *r_filepath)
void BKE_scene_update_tag_audio_volume(Depsgraph *, Scene *scene)
bool BKE_scene_uses_shader_previews(const Scene *scene)
SceneRenderView * BKE_scene_multiview_render_view_findindex(const RenderData *rd, int view_id)
int BKE_scene_orientation_get_index_from_flag(Scene *scene, int flag)
bool BKE_scene_validate_setscene(Main *bmain, Scene *sce)
int BKE_scene_multiview_num_videos_get(const RenderData *rd)
Scene * BKE_scene_add(Main *bmain, const char *name)
int BKE_scene_orientation_get_index(Scene *scene, int slot_index)
bool BKE_scene_object_find(Scene *scene, Object *ob)
void BKE_scene_orientation_slot_set_index(TransformOrientationSlot *orient_slot, int orientation)
const char * BKE_scene_find_last_marker_name(const Scene *scene, int frame)
void BKE_scene_graph_update_tagged(Depsgraph *depsgraph, Main *bmain)
bool BKE_scene_use_shading_nodes_custom(Scene *scene)
double BKE_scene_unit_scale(const UnitSettings *unit, int unit_type, double value)
void BKE_scene_multiview_filepath_get(const SceneRenderView *srv, const char *filepath, char *r_filepath)
int BKE_scene_multiview_view_id_get(const RenderData *rd, const char *viewname)
void BKE_scene_graph_update_for_newframe(Depsgraph *depsgraph)
Depsgraph * BKE_scene_get_depsgraph(const Scene *scene, const ViewLayer *view_layer)
void BKE_scene_set_background(Main *bmain, Scene *sce)
void BKE_scene_base_flag_to_objects(const Scene *scene, ViewLayer *view_layer)
bool BKE_scene_remove_render_view(Scene *scene, SceneRenderView *srv)
SceneRenderView * BKE_scene_add_render_view(Scene *sce, const char *name)
Base * _setlooper_base_step(Scene **sce_iter, ViewLayer *view_layer, Base *base)
float BKE_scene_frame_to_ctime(const Scene *scene, int frame)
Scene * BKE_scene_find_from_collection(const Main *bmain, const Collection *collection)
void BKE_scene_object_base_flag_sync_from_base(Base *base)
bool BKE_scene_uses_blender_workbench(const Scene *scene)
const char * BKE_scene_multiview_render_view_name_get(const RenderData *rd, int view_id)
bool BKE_scene_uses_blender_eevee(const Scene *scene)
const char * BKE_scene_find_marker_name(const Scene *scene, int frame)
void BKE_screen_view3d_shading_blend_read_data(BlendDataReader *reader, View3DShading *shading)
void BKE_screen_view3d_shading_blend_write(BlendWriter *writer, View3DShading *shading)
void BKE_sound_seek_scene(struct Main *bmain, struct Scene *scene)
void BKE_sound_set_scene_volume(struct Scene *scene, float volume)
void BKE_sound_mute_scene(struct Scene *scene, int muted)
void BKE_sound_ensure_scene(struct Scene *scene)
void BKE_sound_reset_scene_runtime(struct Scene *scene)
void BKE_sound_update_scene_listener(struct Scene *scene)
void BKE_sound_destroy_scene(struct Scene *scene)
void BKE_sound_update_scene(struct Depsgraph *depsgraph, struct Scene *scene)
void BKE_sound_update_fps(struct Main *bmain, struct Scene *scene)
int BKE_unit_base_of_type_get(int system, int type)
bScreen * BKE_workspace_active_screen_get(const WorkSpaceInstanceHook *hook) GETTER_ATTRS
bool BLI_ghashutil_strcmp(const void *a, const void *b)
unsigned int BLI_ghashutil_ptrhash(const void *key)
unsigned int BLI_ghashutil_strhash_p(const void *ptr)
GHash * BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void ** BLI_ghash_lookup_p(GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
bool BLI_ghash_remove(GHash *gh, const void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void * BLI_ghash_lookup(const GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
bool BLI_ghash_ensure_p_ex(GHash *gh, const void *key, void ***r_key, void ***r_val) ATTR_WARN_UNUSED_RESULT
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
void void void void void void BLI_duplicatelist(struct ListBase *dst, const struct ListBase *src) ATTR_NONNULL(1
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
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_findptr(const struct ListBase *listbase, const void *ptr, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
#define BLI_ASSERT_UNIT_M3(m)
MINLINE int mod_i(int i, int n)
#define BLI_ASSERT_UNIT_QUAT(q)
MINLINE int round_db_to_int(double a)
void copy_m4_m4(float m1[4][4], const float m2[4][4])
void quat_to_compatible_eulO(float eul[3], const float oldrot[3], short order, const float quat[4])
void axis_angle_to_quat(float r[4], const float axis[3], float angle)
void quat_to_mat3(float m[3][3], const float q[4])
void quat_to_eulO(float e[3], short order, const float q[4])
void eulO_to_quat(float q[4], const float e[3], short order)
float normalize_qt_qt(float r[4], const float q[4])
void quat_to_axis_angle(float axis[3], float *angle, const float q[4])
void mat3_to_compatible_eulO(float eul[3], const float oldrot[3], short order, const float mat[3][3])
void eulO_to_mat3(float M[3][3], const float e[3], short order)
void mat3_to_axis_angle(float axis[3], float *angle, const float mat[3][3])
void copy_qt_qt(float q[4], const float a[4])
void quat_to_compatible_quat(float q[4], const float a[4], const float old[4])
void axis_angle_to_mat3(float R[3][3], const float axis[3], float angle)
void mat3_to_eulO(float eul[3], short order, const float m[3][3])
void mat3_normalized_to_quat(float q[4], const float mat[3][3])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void zero_v3(float r[3])
bool bool BLI_path_suffix(char *path, size_t path_maxncpy, const char *suffix, const char *sep) ATTR_NONNULL(1
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
int bool bool bool size_t size_t BLI_str_rpartition(const char *str, const char delim[], const char **sep, const char **suf) ATTR_NONNULL(1
char char size_t BLI_strncpy_rlen(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
void BLI_uniquename(const struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t name_maxncpy) ATTR_NONNULL(1
int BLI_system_thread_count(void)
int BLI_system_num_threads_override_get(void)
#define STREQLEN(a, b, n)
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define POINTER_OFFSET(v, ofs)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define BLO_read_data_address(reader, ptr_p)
ID * BLO_read_get_new_id_address_from_session_uid(BlendLibReader *reader, uint session_uid) ATTR_NONNULL(1)
void * BLO_read_get_new_data_address_no_us(BlendDataReader *reader, const void *old_address, size_t expected_size)
BlendFileReadReport * BLO_read_data_reports(BlendDataReader *reader)
BLO_Write_IDBuffer * BLO_write_allocate_id_buffer()
void BLO_read_glob_list(BlendDataReader *reader, ListBase *list)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_write_struct(writer, struct_name, data_ptr)
BlendFileReadReport * BLO_read_lib_reports(BlendLibReader *reader)
void BLO_write_init_id_buffer_from_id(BLO_Write_IDBuffer *id_buffer, ID *id, const bool is_undo)
void BLO_write_destroy_id_buffer(BLO_Write_IDBuffer **id_buffer)
ID * BLO_write_get_id_buffer_temp_id(BLO_Write_IDBuffer *id_buffer)
#define BLO_read_struct_list(reader, struct_name, list)
#define BLO_read_struct(reader, struct_name, ptr_p)
bool BLO_write_is_undo(BlendWriter *writer)
void BLO_reportf_wrap(BlendFileReadReport *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
#define BLO_write_struct_at_address(writer, struct_name, address, data_ptr)
external readfile function prototypes.
#define BLT_I18NCONTEXT_ID_SCENE
typedef double(DMatrix)[4][4]
void DEG_id_tag_update(ID *id, unsigned int flags)
@ DEG_EVALUATE_SYNC_WRITEBACK_YES
void DEG_editors_update(Depsgraph *depsgraph, bool time)
void DEG_enable_editors_update(Depsgraph *depsgraph)
void DEG_ids_clear_recalc(Depsgraph *depsgraph, bool backup)
Depsgraph * DEG_graph_new(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode)
void DEG_evaluate_on_refresh(Depsgraph *graph, DepsgraphEvaluateSyncWriteback sync_writeback=DEG_EVALUATE_SYNC_WRITEBACK_NO)
void DEG_graph_replace_owners(Depsgraph *depsgraph, Main *bmain, Scene *scene, ViewLayer *view_layer)
void DEG_graph_free(Depsgraph *graph)
void DEG_ids_restore_recalc(Depsgraph *depsgraph)
void DEG_make_active(Depsgraph *depsgraph)
void DEG_evaluate_on_framechange(Depsgraph *graph, float frame, DepsgraphEvaluateSyncWriteback sync_writeback=DEG_EVALUATE_SYNC_WRITEBACK_NO)
void DEG_graph_tag_relations_update(Depsgraph *graph)
void DEG_graph_relations_update(Depsgraph *graph)
void DEG_debug_name_set(Depsgraph *depsgraph, const char *name)
bool DEG_is_fully_evaluated(const Depsgraph *depsgraph)
bool DEG_is_evaluated_id(const ID *id)
Scene * DEG_get_evaluated_scene(const Depsgraph *graph)
eEvaluationMode DEG_get_mode(const Depsgraph *graph)
ViewLayer * DEG_get_evaluated_view_layer(const Depsgraph *graph)
ViewLayer * DEG_get_input_view_layer(const Depsgraph *graph)
Main * DEG_get_bmain(const Depsgraph *graph)
bool DEG_id_type_any_updated(const Depsgraph *depsgraph)
Scene * DEG_get_input_scene(const Depsgraph *graph)
#define FILTER_ID_GD_LEGACY
@ ID_RECALC_AUDIO_LISTENER
#define ID_IS_LINKED(_id)
Object groups, one object can be in many groups at once.
#define DNA_struct_default_get(struct_name)
#define DNA_struct_default_alloc(struct_name)
Object is a sort of wrapper for general info.
@ PTCACHE_FLAG_INFO_DIRTY
Types and defines for representing Rigid Body entities.
@ SCE_VIEWS_FORMAT_STEREO_3D
@ SCE_VIEWS_FORMAT_MULTIVIEW
@ SCE_READFILE_LIBLINK_NEED_SETSCENE_CHECK
#define STEREO_LEFT_SUFFIX
#define STEREO_RIGHT_NAME
#define STEREO_RIGHT_SUFFIX
#define SEQ_HAS_PATH(_seq)
@ V3D_GIZMO_SHOW_OBJECT_ROTATE
@ V3D_GIZMO_SHOW_OBJECT_SCALE
@ V3D_GIZMO_SHOW_OBJECT_TRANSLATE
void DRW_drawdata_free(ID *id)
const char * IMB_colormanagement_display_get_none_name()
const char * IMB_colormanagement_view_get_raw_or_default_name(const char *display_name)
const char * IMB_colormanagement_role_colorspace_name_get(int role)
@ COLOR_ROLE_DEFAULT_SEQUENCER
void IMB_stereo3d_write_dimensions(char mode, bool is_squeezed, size_t width, size_t height, size_t *r_width, size_t *r_height)
Read Guarded memory(de)allocation.
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between camera
@ RE_USE_SHADING_NODES_CUSTOM
@ RE_USE_SPHERICAL_STEREO
ATTR_WARN_UNUSED_RESULT BMesh * bm
void BM_mesh_bm_to_me(Main *bmain, BMesh *bm, Mesh *mesh, const BMeshToMeshParams *params)
Depsgraph * preview_depsgraph
pow(value.r - subtrahend, 2.0)") .do_static_compilation(true)
const Depsgraph * depsgraph
draw_view in_light_buf[] float
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
const vector< Marker > & markers
RenderEngineType * RE_engines_find(const char *idname)
void SEQ_for_each_callback(ListBase *seqbase, SeqForEachFunc callback, void *user_data)
size_t(* MEM_allocN_len)(const void *vmemh)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_dupallocN)(const void *vmemh)
void node_tree_blend_write(BlendWriter *writer, bNodeTree *ntree)
void node_tree_free_embedded_tree(bNodeTree *ntree)
VecBase< float, 3 > float3
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
bool RNA_pointer_is_null(const PointerRNA *ptr)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PointerRNA RNA_id_pointer_create(ID *id)
static bool seq_foreach_member_id_cb(Sequence *seq, void *user_data)
#define BKE_LIB_FOREACHID_UNDO_PRESERVE_PROCESS_FUNCTION_CALL(_data, _do_undo_restore, _func_call)
static void scene_undo_preserve(BlendLibReader *reader, ID *id_new, ID *id_old)
static uint depsgraph_key_hash(const void *key_v)
static void scene_graph_update_tagged(Depsgraph *depsgraph, Main *bmain, bool only_if_tagged)
static void depsgraph_key_free(void *key_v)
const char * RE_engine_id_CYCLES
static void scene_blend_read_data(BlendDataReader *reader, ID *id)
static void direct_link_paint_helper(BlendDataReader *reader, const Scene *scene, Paint **paint)
const char * RE_engine_id_BLENDER_EEVEE_NEXT
eSceneForeachUndoPreserveProcess
@ SCENE_FOREACH_UNDO_NO_RESTORE
@ SCENE_FOREACH_UNDO_RESTORE
static void link_recurs_seq(BlendDataReader *reader, ListBase *lb)
#define FOREACHID_PROCESS_IDSUPER(_data, _id_super, _cb_flag)
static void scene_blend_read_after_liblink(BlendLibReader *reader, ID *id)
static bool depsgraph_key_compare(const void *key_a_v, const void *key_b_v)
#define FOREACHID_PROCESS_ID_NOCHECK(_data, _id_super, _cb_flag)
static void scene_free_markers(Scene *scene, bool do_id_user)
static void scene_copy_markers(Scene *scene_dst, const Scene *scene_src, const int flag)
static void remove_sequencer_fcurves(Scene *sce)
static void scene_blend_write(BlendWriter *writer, ID *id, const void *id_address)
@ CYCLES_FEATURES_SUPPORTED
@ CYCLES_FEATURES_EXPERIMENTAL
const char * RE_engine_id_BLENDER_WORKBENCH
static void scene_init_data(ID *id)
static char * scene_undo_depsgraph_gen_key(Scene *scene, ViewLayer *view_layer, char *key_full)
static void scene_foreach_toolsettings_id_pointer_process(ID **id_p, const eSceneForeachUndoPreserveProcess action, BlendLibReader *reader, ID **id_old_p, const uint cb_flag)
static void prepare_mesh_for_viewport_render(Main *bmain, const Scene *scene, ViewLayer *view_layer)
static Depsgraph ** scene_ensure_depsgraph_p(Main *bmain, Scene *scene, ViewLayer *view_layer)
static void scene_copy_data(Main *bmain, std::optional< Library * > owner_library, ID *id_dst, const ID *id_src, const int flag)
static void scene_foreach_rigidbodyworldSceneLooper(RigidBodyWorld *, ID **id_pointer, void *user_data, int cb_flag)
const char * RE_engine_id_BLENDER_EEVEE
static void scene_foreach_layer_collection(LibraryForeachIDData *data, ListBase *lb, const bool is_master)
static Depsgraph ** scene_get_depsgraph_p(Scene *scene, ViewLayer *view_layer, const bool allocate_ghash_entry)
#define BKE_LIB_FOREACHID_UNDO_PRESERVE_PROCESS_IDSUPER_P(_data, _id_p, _do_undo_restore, _action, _reader, _id_old_p, _cb_flag)
static void scene_foreach_id(ID *id, LibraryForeachIDData *data)
static void scene_free_data(ID *id)
static bool seq_foreach_path_callback(Sequence *seq, void *user_data)
static void scene_foreach_cache(ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data)
static void scene_foreach_toolsettings(LibraryForeachIDData *data, ToolSettings *toolsett, const bool do_undo_restore, BlendLibReader *reader, ToolSettings *toolsett_old)
static void scene_foreach_path(ID *id, BPathForeachPathData *bpath_data)
static bool check_rendered_viewport_visible(Main *bmain)
static void depsgraph_key_value_free(void *value)
static void scene_foreach_paint(LibraryForeachIDData *data, Paint *paint, const bool do_undo_restore, BlendLibReader *reader, Paint *paint_old)
static void scene_lib_override_apply_post(ID *id_dst, ID *)
void SEQ_tool_settings_free(SequencerToolSettings *tool_settings)
void SEQ_sequence_base_dupli_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *nseqbase, const ListBase *seqbase, int dupe_flag, const int flag)
void SEQ_editing_free(Scene *scene, const bool do_id_user)
SequencerToolSettings * SEQ_tool_settings_init()
SequencerToolSettings * SEQ_tool_settings_copy(SequencerToolSettings *tool_settings)
void SEQ_blend_read(BlendDataReader *reader, ListBase *seqbase)
bool SEQ_is_valid_strip_channel(const Sequence *seq)
void SEQ_blend_write(BlendWriter *writer, ListBase *seqbase)
constexpr IDTypeInfo get_type_info()
struct ImageFormatData im_format
int sequence_strips_skipped
struct BlendFileReadReport::@128 count
const ViewLayer * view_layer
ThumbnailCache * thumbnail_cache
MediaPresence * media_presence
struct SequenceLookup * sequence_lookup
struct PrefetchJob * prefetch_job
int show_missing_media_flag
ListBase * displayed_channels
struct CurveMapping * custom_ipo
struct Object * reference_object
struct GP_Sculpt_Guide guide
struct CurveMapping * cur_primitive
struct CurveMapping * cur_falloff
unsigned int id_session_uid
void set(const SocketType &input, bool value)
ObjectRuntimeHandle * runtime
struct RigidBodyOb * rigidbody_object
struct RigidBodyCon * rigidbody_constraint
struct ListBase * ptcaches
struct Brush * eraser_brush
ParticleBrushData brush[7]
struct Object * shape_object
struct CurveMapping mblur_shutter_curve
float simplify_particles_render
struct ImageFormatData im_format
short simplify_subsurf_render
struct PointCache * pointcache
struct Collection * constraints
struct Collection * group
struct RigidBodyWorld_Shared * shared
struct EffectorWeights * effector_weights
struct SceneRenderView * next
struct bNodeTree * nodetree
struct Collection * master_collection
struct GHash * depsgraph_hash
struct PhysicsSettings physics_settings
struct RigidBodyWorld * rigidbody_world
IDProperty * layer_properties
struct SceneDisplay display
struct CustomData_MeshMasks customdata_mask
struct ToolSettings * toolsettings
ColorManagedViewSettings view_settings
struct PreviewImage * preview
SceneRuntimeHandle * runtime
struct CustomData_MeshMasks customdata_mask_modal
ListBase transform_spaces
ColorManagedColorspaceSettings sequencer_colorspace_settings
ColorManagedDisplaySettings display_settings
struct Object * gravity_object
struct CurveMapping * automasking_cavity_curve_op
struct CurveMapping * automasking_cavity_curve
struct Object * scene_camera
struct CurveMapping * strength_curve
const c_style_mat & ptr() const