Changeset View
Changeset View
Standalone View
Standalone View
source/blender/python/bmesh/bmesh_py_types.c
| Show First 20 Lines • Show All 935 Lines • ▼ Show 20 Lines | static PyObject *bpy_bmesh_from_object(BPy_BMesh *self, PyObject *args, PyObject *kw) | ||||
| Object *ob, *ob_eval; | Object *ob, *ob_eval; | ||||
| struct Depsgraph *depsgraph; | struct Depsgraph *depsgraph; | ||||
| struct Scene *scene_eval; | struct Scene *scene_eval; | ||||
| Mesh *me_eval; | Mesh *me_eval; | ||||
| BMesh *bm; | BMesh *bm; | ||||
| bool use_deform = true; | bool use_deform = true; | ||||
| bool use_cage = false; | bool use_cage = false; | ||||
| bool use_fnorm = true; | bool use_fnorm = true; | ||||
| const int mask = CD_MASK_BMESH; | CustomData_MeshMasks data_masks = CD_MASK_BMESH; | ||||
| BPY_BM_CHECK_OBJ(self); | BPY_BM_CHECK_OBJ(self); | ||||
| if (!PyArg_ParseTupleAndKeywords( | if (!PyArg_ParseTupleAndKeywords( | ||||
| args, kw, "OO|O&O&O&:from_object", (char **)kwlist, | args, kw, "OO|O&O&O&:from_object", (char **)kwlist, | ||||
| &py_object, &py_depsgraph, | &py_object, &py_depsgraph, | ||||
| PyC_ParseBool, &use_deform, | PyC_ParseBool, &use_deform, | ||||
| PyC_ParseBool, &use_cage, | PyC_ParseBool, &use_cage, | ||||
| Show All 18 Lines | static PyObject *bpy_bmesh_from_object(BPy_BMesh *self, PyObject *args, PyObject *kw) | ||||
| if (use_deform) { | if (use_deform) { | ||||
| if (use_render) { | if (use_render) { | ||||
| if (use_cage) { | if (use_cage) { | ||||
| PyErr_SetString(PyExc_ValueError, | PyErr_SetString(PyExc_ValueError, | ||||
| "from_object(...): cage arg is unsupported when dependency graph evaluation mode is RENDER"); | "from_object(...): cage arg is unsupported when dependency graph evaluation mode is RENDER"); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| else { | else { | ||||
| me_eval = mesh_create_eval_final_render(depsgraph, scene_eval, ob_eval, mask); | me_eval = mesh_create_eval_final_render(depsgraph, scene_eval, ob_eval, &data_masks); | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| if (use_cage) { | if (use_cage) { | ||||
| me_eval = mesh_get_eval_deform(depsgraph, scene_eval, ob_eval, mask); | me_eval = mesh_get_eval_deform(depsgraph, scene_eval, ob_eval, &data_masks); | ||||
| } | } | ||||
| else { | else { | ||||
| me_eval = mesh_get_eval_final(depsgraph, scene_eval, ob_eval, mask); | me_eval = mesh_get_eval_final(depsgraph, scene_eval, ob_eval, &data_masks); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| /* !use_deform */ | /* !use_deform */ | ||||
| if (use_cage) { | if (use_cage) { | ||||
| PyErr_SetString(PyExc_ValueError, | PyErr_SetString(PyExc_ValueError, | ||||
| "from_object(...): cage arg is unsupported when deform=False"); | "from_object(...): cage arg is unsupported when deform=False"); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| else if (use_render) { | else if (use_render) { | ||||
| me_eval = mesh_create_eval_no_deform_render(depsgraph, scene_eval, ob, NULL, mask); | me_eval = mesh_create_eval_no_deform_render(depsgraph, scene_eval, ob, NULL, &data_masks); | ||||
| } | } | ||||
| else { | else { | ||||
| me_eval = mesh_create_eval_no_deform(depsgraph, scene_eval, ob, NULL, mask); | me_eval = mesh_create_eval_no_deform(depsgraph, scene_eval, ob, NULL, &data_masks); | ||||
| } | } | ||||
| } | } | ||||
| if (me_eval == NULL) { | if (me_eval == NULL) { | ||||
| PyErr_Format(PyExc_ValueError, | PyErr_Format(PyExc_ValueError, | ||||
| "from_object(...): Object '%s' has no usable mesh data", ob->id.name + 2); | "from_object(...): Object '%s' has no usable mesh data", ob->id.name + 2); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 3,061 Lines • Show Last 20 Lines | |||||