VertRen *RE_vertren_copy(ObjectRen *obr, VertRen *ver) { VertRen *v1= RE_findOrAddVert(obr, obr->totvert++); float *fp1, *fp2; int *int1, *int2; int index= v1->index; *v1= *ver; v1->index= index; fp1= RE_vertren_get_stress(obr, ver, 0); if (fp1) { fp2= RE_vertren_get_stress(obr, v1, 1); memcpy(fp2, fp1, RE_STRESS_ELEMS*sizeof(float)); } fp1= RE_vertren_get_rad(obr, ver, 0); if (fp1) { fp2= RE_vertren_get_rad(obr, v1, 1); memcpy(fp2, fp1, RE_RAD_ELEMS*sizeof(float)); } fp1= RE_vertren_get_strand(obr, ver, 0); if (fp1) { fp2= RE_vertren_get_strand(obr, v1, 1); memcpy(fp2, fp1, RE_STRAND_ELEMS*sizeof(float)); } fp1= RE_vertren_get_tangent(obr, ver, 0); if (fp1) { fp2= RE_vertren_get_tangent(obr, v1, 1); memcpy(fp2, fp1, RE_TANGENT_ELEMS*sizeof(float)); } int1= RE_vertren_get_origindex(obr, ver, 0); if (int1) { int2= RE_vertren_get_origindex(obr, v1, 1); memcpy(int2, int1, RE_VERT_ORIGINDEX_ELEMS*sizeof(int)); } return v1; }
static void bake_single_vertex(BakeShade *bs, VertRen *vert, float u, float v) { int *origindex, i; MLoopCol *basevcol; MLoop *mloop; origindex = RE_vertren_get_origindex(bs->obi->obr, vert, 0); if (!origindex || *origindex == ORIGINDEX_NONE) return; /* Search for matching vertex index and apply shading. */ for (i = 0; i < bs->mpoly->totloop; i++) { mloop = bs->mloop + i; if (mloop->v != *origindex) continue; basevcol = bs->vcol; bs->vcol = basevcol + i; do_bake_shade(bs, 0, 0, u, v); bs->vcol = basevcol; break; } }