21#define DNA_DEPRECATED_ALLOW
81#define U (*((const UserDef *)&U))
86 uint *mcol, *mcoln, *mcolmain;
89 if (mesh->totface_legacy == 0 || mesh->mcol ==
nullptr) {
93 mcoln = mcolmain =
static_cast<uint *
>(
95 mcol = (
uint *)mesh->mcol;
97 for (a = mesh->totface_legacy; a > 0; a--, mface++) {
98 mcoln[0] = mcol[mface->
v1];
99 mcoln[1] = mcol[mface->
v2];
100 mcoln[2] = mcol[mface->
v3];
101 mcoln[3] = mcol[mface->
v4];
106 mesh->mcol = (
MCol *)mcolmain;
129 if (bone->rad_tail == 0.0f && bone->rad_head == 0.0f) {
130 bone->rad_head = 0.25f * bone->length;
131 bone->rad_tail = 0.1f * bone->length;
133 bone->dist -= bone->rad_head;
134 if (bone->dist <= 0.0f) {
145 if (bone->layer == 0) {
156 if (node->type == CMP_NODE_BLUR) {
157 if (node->storage ==
nullptr) {
160 nbd->
sizex = node->custom1;
161 nbd->
sizey = node->custom2;
166 else if (node->type == CMP_NODE_VECBLUR) {
167 if (node->storage ==
nullptr) {
184 if (node->type == CMP_NODE_HUE_SAT) {
187 if (nhs->
val == 0.0f) {
205 if (node->type == CMP_NODE_ALPHAOVER) {
206 if (!node->storage) {
216 nodeid =
static_cast<ID *
>(
218 if (node->storage && nodeid &&
GS(nodeid->
name) ==
ID_IM) {
219 image = (
Image *)nodeid;
220 iuser =
static_cast<ImageUser *
>(node->storage);
222 iuser->
flag &= ~IMA_OLD_PREMUL;
224 if (iuser->
flag & IMA_DO_PREMUL) {
225 image->flag &= ~IMA_OLD_PREMUL;
239 loop = loop->
next, i++)
246 if (prop->
len != i) {
247 printf(
"Found and fixed bad id property group length.\n");
256 for (
id =
static_cast<ID *
>(idlist.
first); id;
id =
static_cast<ID *
>(
id->next)) {
257 if (id->properties) {
269 int a, mtfacen, mcoln;
271 if (!mesh->vert_data.totlayer) {
273 &mesh->vert_data, CD_MVERT, mesh->mvert, mesh->verts_num,
nullptr);
277 &mesh->vert_data,
CD_MDEFORMVERT, mesh->dvert, mesh->verts_num,
nullptr);
281 if (!mesh->edge_data.totlayer) {
283 &mesh->edge_data, CD_MEDGE, mesh->medge, mesh->edges_num,
nullptr);
286 if (!mesh->fdata_legacy.totlayer) {
288 &mesh->fdata_legacy,
CD_MFACE, mesh->mface, mesh->totface_legacy,
nullptr);
304 for (a = 0; a < mesh->totface_legacy; a++, mtf++, tf++, mcol += 4) {
305 memcpy(mcol, tf->col,
sizeof(tf->col));
306 memcpy(mtf->uv, tf->uv,
sizeof(tf->uv));
310 mesh->tface =
nullptr;
312 else if (mesh->mcol) {
314 &mesh->fdata_legacy,
CD_MCOL, mesh->mcol, mesh->totface_legacy,
nullptr);
320 mesh->tface =
nullptr;
323 for (a = 0, mtfacen = 0, mcoln = 0; a < mesh->fdata_legacy.totlayer; a++) {
324 layer = &mesh->fdata_legacy.layers[a];
327 if (layer->name[0] == 0) {
332 SNPRINTF(layer->name,
"UVMap.%.3d", mtfacen);
337 else if (layer->type ==
CD_MCOL) {
338 if (layer->name[0] == 0) {
343 SNPRINTF(layer->name,
"Col.%.3d", mcoln);
357 for (a = 0; a < mesh->fdata_legacy.totlayer; a++) {
358 layer = &mesh->fdata_legacy.layers[a];
368 if (
ELEM(node->type, CMP_NODE_IMAGE, CMP_NODE_VIEWER)) {
375 iuser->
frames = nia->frames;
376 iuser->
sfra = nia->sfra;
377 iuser->
offset = nia->nr - 1;
378 iuser->
cycl = nia->cyclic;
380 node->storage = iuser;
427 ct->
space = con->tarspace;
434 data->subtarget[0] =
'\0';
442 con->headtail = 1.0f;
458 data->reserved2 = ob->
upflag;
524 for (a = 0; a < ob->
totcol; a++) {
526 ob->colbits |= (1 << a);
552 mesh =
static_cast<Mesh *
>(mesh->id.next);
586 screen =
static_cast<bScreen *
>(screen->id.next);
640 mesh->smoothresh_legacy = 30;
641 mesh =
static_cast<Mesh *
>(mesh->id.next);
657 for (j = 0; j < 4; j++) {
659 cp = ((
char *)&tface->col[j]) + 1;
660 for (k = 0; k < 3; k++) {
661 cp[k] = (cp[k] > 126) ? 255 : cp[k] * 2;
668 mesh =
static_cast<Mesh *
>(mesh->id.next);
675 if (mesh->subdiv == 0) {
678 mesh =
static_cast<Mesh *
>(mesh->id.next);
691 sipo->v2d.max[0] = 15000.0;
697 screen =
static_cast<bScreen *
>(screen->id.next);
730 screen =
static_cast<bScreen *
>(screen->id.next);
739 TFace *tface = mesh->tface;
740 for (a = 0; a < mesh->totface_legacy; a++, tface++) {
741 for (
b = 0;
b < 4;
b++) {
742 tface->uv[
b][0] /= 32767.0f;
743 tface->uv[
b][1] /= 32767.0f;
747 mesh =
static_cast<Mesh *
>(mesh->id.next);
756 if (sound->
volume < 0.01f) {
774 sound->
flags |= SOUND_FLAGS_3D;
777 sound->
flags &= ~SOUND_FLAGS_3D;
788 mesh =
static_cast<Mesh *
>(mesh->id.next))
792 ME_SUBSURF = (1 << 7),
794 if (mesh->flag & ME_SMESH) {
795 mesh->flag &= ~ME_SMESH;
796 mesh->flag |= ME_SUBSURF;
801 if (mesh->subdiv < 2) {
819 mesh =
static_cast<Mesh *
>(mesh->id.next))
824 for (i = 0; i < mesh->totface_legacy * 4; i++) {
825 MCol *mcol = &mesh->mcol[i];
832 for (i = 0; i < mesh->totface_legacy; i++) {
833 TFace *tf = &((TFace *)mesh->tface)[i];
835 for (j = 0; j < 4; j++) {
836 char *
col = (
char *)&tf->col[j];
872 mesh =
static_cast<Mesh *
>(mesh->id.next))
874 enum { ME_SUBSURF = (1 << 7) };
875 if ((mesh->flag & ME_SUBSURF) && (mesh->subdivr == 0)) {
876 mesh->subdivr = mesh->subdiv;
882 screen =
static_cast<bScreen *
>(screen->id.next))
888 sseq->v2d.keeptot = 0;
917 data->reserved2 = ob->
upflag;
929 data->reserved2 = ob->
upflag;
951 screen =
static_cast<bScreen *
>(screen->id.next))
957 sac->v2d.max[0] = 32000;
961 sla->v2d.max[0] = 32000;
989 data->reserved2 = ob->
upflag;
1001 data->reserved2 = ob->
upflag;
1013 screen =
static_cast<bScreen *
>(screen->id.next))
1020 sbuts->v2d.maxzoom = 1.2f;
1022 if (sbuts->
mainb == BUTS_LAMP) {
1023 sbuts->
mainb = CONTEXT_SHADING;
1026 else if (sbuts->
mainb == BUTS_MAT) {
1027 sbuts->
mainb = CONTEXT_SHADING;
1030 else if (sbuts->
mainb == BUTS_TEX) {
1031 sbuts->
mainb = CONTEXT_SHADING;
1034 else if (sbuts->
mainb == BUTS_ANIM) {
1035 sbuts->
mainb = CONTEXT_OBJECT;
1037 else if (sbuts->
mainb == BUTS_WORLD) {
1038 sbuts->
mainb = CONTEXT_SCENE;
1041 else if (sbuts->
mainb == BUTS_RENDER) {
1042 sbuts->
mainb = CONTEXT_SCENE;
1045 else if (sbuts->
mainb == BUTS_FPAINT) {
1046 sbuts->
mainb = CONTEXT_EDITING;
1048 else if (sbuts->
mainb == BUTS_RADIO) {
1049 sbuts->
mainb = CONTEXT_SHADING;
1052 else if (sbuts->
mainb == BUTS_CONSTRAINT) {
1053 sbuts->
mainb = CONTEXT_OBJECT;
1055 else if (sbuts->
mainb == BUTS_SCRIPT) {
1056 sbuts->
mainb = CONTEXT_OBJECT;
1058 else if (sbuts->
mainb == BUTS_EDIT) {
1059 sbuts->
mainb = CONTEXT_EDITING;
1062 sbuts->
mainb = CONTEXT_SCENE;
1080 screen =
static_cast<bScreen *
>(screen->id.next))
1087 sac->v2d.maxzoom = 50;
1118 screen =
static_cast<bScreen *
>(screen->id.next);
1150 if (wrld->
aodist == 0.0f) {
1162 screen =
static_cast<bScreen *
>(screen->id.next))
1169 snla->v2d.maxzoom = 50;
1180 screen =
static_cast<bScreen *
>(screen->id.next))
1197 screen =
static_cast<bScreen *
>(screen->id.next))
1241 printf(
"NOTE: ortho render has changed, tweak new Camera 'scale' value.\n");
1308 enum { ARM_DRAWXRAY = (1 << 1) };
1309 if (arm->
flag & ARM_DRAWXRAY) {
1318 ME_SUBSURF = (1 << 7),
1319 ME_OPT_EDGES = (1 << 8),
1322 if (mesh->flag & ME_SUBSURF) {
1326 smd->
levels = std::max<short>(1, mesh->subdiv);
1331 if (mesh->subdiv != 0) {
1334 if (mesh->subdivr != 0) {
1338 if (mesh->flag & ME_OPT_EDGES) {
1387 if (lt->
fu == 0.0f && lt->
fv == 0.0f && lt->
fw == 0.0f) {
1430 if (pchan->limitmin[0] == 0.0f && pchan->limitmax[0] == 0.0f) {
1431 pchan->limitmin[0] = pchan->limitmin[1] = pchan->limitmin[2] = -180.0f;
1432 pchan->limitmax[0] = pchan->limitmax[1] = pchan->limitmax[2] = 180.0f;
1437 data->weight = 1.0f;
1438 data->orientweight = 1.0f;
1439 data->flag &= ~CONSTRAINT_IK_ROT;
1442 data->rootbone = -1;
1454 if (paf->
disp == 0) {
1460 if (paf->
omat == 0) {
1474 mesh =
static_cast<Mesh *
>(mesh->id.next))
1491 if (kb->name[0] == 0) {
1496 if (kb->name[0] == 0) {
1497 SNPRINTF(kb->name,
"Key %d", index);
1510 int set_passepartout = 0;
1534 if (arm->layer == 0) {
1539 for (; sce; sce =
static_cast<Scene *
>(sce->
id.
next)) {
1541 set_passepartout = 1;
1546 for (; cam; cam =
static_cast<Camera *
>(cam->
id.
next)) {
1547 if (set_passepartout) {
1574 if (arm->layer == 0) {
1653 screen =
static_cast<bScreen *
>(screen->id.next))
1656 area =
static_cast<ScrArea *
>(screen->areabase.first);
1674 R_THREADS = (1 << 19),
1680 if (sce->
r.
mode & R_THREADS) {
1704 for (bezt = nu->bezt, a = 0; a < nu->pntsu; a++, bezt++) {
1711 for (bp = nu->bp, a = 0; a < nu->pntsu * nu->pntsv; a++, bp++) {
1731 switch (curcon->type) {
1736 if (data->flag == 0) {
1750 switch (curcon->type) {
1763 if (data->flag == 0) {
1795 mesh =
static_cast<Mesh *
>(mesh->id.next))
1801 collection =
static_cast<Collection *
>(collection->id.next))
1803 if (collection->layer == 0) {
1804 collection->layer = (1 << 20) - 1;
1837 TEX_ANIMCYCLIC = (1 << 6),
1838 TEX_ANIM5 = (1 << 7),
1842 ima =
static_cast<Image *
>(
1892 if (curdef->name[0] ==
'\0') {
1903 switch (mmd->axis) {
1925 mesh =
static_cast<Mesh *
>(mesh->id.next))
1938 screen =
static_cast<bScreen *
>(screen->id.next))
1941 area =
static_cast<ScrArea *
>(screen->areabase.first);
1947 saction->v2d.tot.ymin = -1000.0;
1948 saction->v2d.tot.ymax = 0.0;
1950 saction->v2d.cur.ymin = -75.0;
1951 saction->v2d.cur.ymax = 5.0;
1983 if (curcon->flag & 0x20) {
1988 switch (curcon->type) {
2011 if (curcon->flag & 0x20) {
2016 switch (curcon->type) {
2052 if (ob->
soft && !ob->
soft->pointcache) {
2057 if (psys->pointcache) {
2061 printf(
"Old memory cache isn't supported for particles, so re-bake the simulation!\n");
2062 psys->pointcache->flag &= ~PTCACHE_BAKED;
2084 if (ma->gloss_mir == 0.0f) {
2085 ma->gloss_mir = 1.0f;
2092 if (part->child_render_percent == 0) {
2093 part->child_render_percent = part->child_percent;
2121 ima->
flag &= ~IMA_OLD_PREMUL;
2133 ima =
static_cast<Image *
>(
2136 ima->
flag &= ~IMA_OLD_PREMUL;
2215 for (k = 0; k < sb->
totkey; k++) {
2241 for (k = 0; k < sb->
totkey; k++) {
2272 part->id.lib = ob->
id.
lib;
2290 part->totpart = std::min(paf->
totpart, 100000);
2291 part->sta = paf->
sta;
2292 part->end = paf->
end;
2296 part->disp = paf->
disp;
2297 part->omat = paf->
mat[0];
2298 part->hair_step = paf->
totkey;
2300 part->force_group = paf->
group;
2303 part->draw_step = part->ren_step = 0;
2306 part->normfac = paf->
normfac * 25.0f;
2307 part->obfac = paf->
obfac;
2308 part->randfac = paf->
randfac * 25.0f;
2309 part->dampfac = paf->
damp;
2316 float fac = paf->
lifetime / 100.0f;
2322 part->normfac *= fac;
2323 part->randfac *= fac;
2328 part->draw_line[1] = 0.04f;
2340 part->draw |= (paf->
flag &
PAF_SHOWE) ? PART_DRAW_EMITTER : 0;
2350 for (; dup; dup =
static_cast<Object *
>(dup->
id.
next)) {
2352 part->instance_object = dup;
2374 printf(
"Old particle system converted to new system.\n");
2420 float length, actlength, repeat;
2426 repeat = strip->repeat;
2429 length = strip->end - strip->start;
2430 if (length == 0.0f) {
2433 actlength = strip->actend - strip->actstart;
2435 strip->
scale = length / (repeat * actlength);
2436 if (strip->scale == 0.0f) {
2437 strip->scale = 1.0f;
2495 if (ob->fluidsimSettings) {
2532 nu->radius_interp = 3;
2538 if (nu->pntsv > 1) {
2539 nu->
resolu = std::max(1,
int((
float(nu->resolu) /
float(nu->pntsu)) + 0.5f));
2540 nu->resolv = std::max(1,
int((
float(nu->resolv) /
float(nu->pntsv)) + 0.5f));
2563 screen =
static_cast<bScreen *
>(screen->id.next))
2567 switch (sl->spacetype) {
2611 if (seq->strip && seq->strip->proxy) {
2612 seq->strip->proxy->quality = 90;
Blender kernel action and pose functionality.
void BKE_pose_tag_recalc(Main *bmain, bPose *pose) ATTR_NONNULL(1
void BKE_armature_where_is(bArmature *arm)
struct bConstraint * BKE_constraint_add_for_object(struct Object *ob, const char *name, short type)
CustomData interface, see also DNA_customdata_types.h.
const void * CustomData_add_layer_with_data(CustomData *data, eCustomDataType type, void *layer_data, int totelem, const blender::ImplicitSharingInfo *sharing_info)
void * CustomData_add_layer(CustomData *data, eCustomDataType type, eCDAllocType alloctype, int totelem)
void calc_lat_fudu(int flag, int res, float *r_fu, float *r_du)
#define MAIN_VERSION_FILE_ATLEAST(main, ver, subver)
void BKE_mesh_strip_loose_faces(Mesh *mesh)
void BKE_mesh_calc_edges_legacy(Mesh *mesh)
ModifierData * BKE_modifiers_findby_type(const Object *ob, ModifierType type)
const ModifierTypeInfo * BKE_modifier_get_info(ModifierType type)
void BKE_modifier_unique_name(ListBase *modifiers, ModifierData *md)
ModifierData * BKE_modifier_new(int type)
General operations, lookup, etc. for blender objects.
PartEff * BKE_object_do_version_give_parteff_245(Object *ob)
struct ParticleSettings * BKE_particlesettings_add(struct Main *bmain, const char *name)
struct PointCache * BKE_ptcache_add(struct ListBase *ptcaches)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_insertlinkbefore(struct ListBase *listbase, void *vnextlink, void *vnewlink) ATTR_NONNULL(1)
void * BLI_pophead(ListBase *listbase) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void unit_m4(float m[4][4])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
int bool bool BLI_str_endswith(const char *__restrict str, const char *__restrict end) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
Platform independent time functions.
double BLI_time_now_seconds(void)
#define STREQLEN(a, b, n)
Compatibility-like things for windows.
external readfile function prototypes.
#define ID_IS_LINKED(_id)
Object groups, one object can be in many groups at once.
@ CONSTRAINT_TYPE_TRACKTO
@ CONSTRAINT_TYPE_LOCLIKE
@ CONSTRAINT_TYPE_ROTLIKE
@ CONSTRAINT_TYPE_KINEMATIC
@ CONSTRAINT_TYPE_LOCLIMIT
@ CONSTRAINT_TYPE_FOLLOWPATH
@ eModifierType_ParticleSystem
@ eSubsurfModifierFlag_Incremental
@ eSubsurfModifierFlag_DebugIncr
@ eSubsurfModifierFlag_ControlEdges
Object is a sort of wrapper for general info.
@ UVCALC_UNWRAP_METHOD_CONFORMAL
@ UVCALC_UNWRAP_METHOD_ANGLE
Read Guarded memory(de)allocation.
SIMD_FORCE_INLINE btScalar length() const
Return the length of the vector.
input_tx image(0, GPU_RGBA16F, Qualifier::WRITE, ImageType::FLOAT_2D, "preview_img") .compute_source("compositor_compute_preview.glsl") .do_static_compilation(true)
local_group_size(16, 16) .push_constant(Type b
void SEQ_for_each_callback(ListBase *seqbase, SeqForEachFunc callback, void *user_data)
void *(* MEM_malloc_arrayN)(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_dupallocN)(const void *vmemh)
ccl_device_inline float3 ceil(const float3 a)
void blo_do_versions_oldnewmap_insert(OldNewMap *onm, const void *oldaddr, void *newaddr, int nr)
void * blo_do_versions_newlibadr(FileData *fd, ID *self_id, const bool is_linked_only, const void *adr)
ListBase * SEQ_active_seqbase_get(const Editing *ed)
struct PointCache * point_cache
struct FluidsimSettings * fss
struct FluidVertexVelocity * meshVelocities
struct PreviewImage * preview
bool is_locked_for_linking
struct bNodeTree * nodetree
struct ModifierData * next
float instance_faces_scale
struct Collection * group
ParticleBrushData brush[7]
struct ParticleSystem * psys
struct PointCache * pointcache
float motion_blur_shutter
struct bNodeTree * nodetree
struct ToolSettings * toolsettings
struct PackedFile * packedfile
struct PackedFile * newpackedfile
static void bone_version_239(ListBase *lb)
static void do_version_free_effects_245(ListBase *lb)
static void ntree_version_245(FileData *fd, Library *, bNodeTree *ntree)
static void idproperties_fix_groups_lengths_recurse(IDProperty *prop)
void blo_do_version_old_trackto_to_constraints(Object *ob)
static void ntree_version_242(bNodeTree *ntree)
static bool seq_set_alpha_mode_cb(Sequence *seq, void *)
static void ntree_version_241(bNodeTree *ntree)
static void customdata_version_242(Mesh *mesh)
static void vcol_to_fcol(Mesh *mesh)
static void do_version_constraints_245(ListBase *lb)
static void do_version_bone_head_tail_237(Bone *bone)
static void bone_version_238(ListBase *lb)
static void do_version_free_effect_245(Effect *eff)
static bool seq_set_blend_mode_cb(Sequence *seq, void *)
static void customdata_version_243(Mesh *mesh)
static void do_version_ntree_242_2(bNodeTree *ntree)
static void idproperties_fix_group_lengths(ListBase idlist)
void blo_do_versions_pre250(FileData *fd, Library *lib, Main *bmain)
static DynamicLibrary lib