Changeset View
Changeset View
Standalone View
Standalone View
source/blender/modifiers/intern/MOD_edgesplit.c
| Show All 26 Lines | |||||
| */ | */ | ||||
| #include "BLI_utildefines.h" | #include "BLI_utildefines.h" | ||||
| #include "BLI_math.h" | #include "BLI_math.h" | ||||
| #include "BLT_translation.h" | #include "BLT_translation.h" | ||||
| #include "DNA_defaults.h" | |||||
| #include "DNA_mesh_types.h" | #include "DNA_mesh_types.h" | ||||
| #include "DNA_object_types.h" | #include "DNA_object_types.h" | ||||
| #include "DNA_screen_types.h" | #include "DNA_screen_types.h" | ||||
| #include "BKE_context.h" | #include "BKE_context.h" | ||||
| #include "BKE_mesh.h" | #include "BKE_mesh.h" | ||||
| #include "BKE_modifier.h" | #include "BKE_modifier.h" | ||||
| #include "BKE_screen.h" | #include "BKE_screen.h" | ||||
| ▲ Show 20 Lines • Show All 71 Lines • ▼ Show 20 Lines | static Mesh *doEdgeSplit(Mesh *mesh, EdgeSplitModifierData *emd) | ||||
| result->runtime.cd_dirty_vert |= CD_MASK_NORMAL; | result->runtime.cd_dirty_vert |= CD_MASK_NORMAL; | ||||
| return result; | return result; | ||||
| } | } | ||||
| static void initData(ModifierData *md) | static void initData(ModifierData *md) | ||||
| { | { | ||||
| EdgeSplitModifierData *emd = (EdgeSplitModifierData *)md; | EdgeSplitModifierData *emd = (EdgeSplitModifierData *)md; | ||||
| /* default to 30-degree split angle, sharpness from both angle & flag */ | BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(emd, modifier)); | ||||
| emd->split_angle = DEG2RADF(30.0f); | |||||
| emd->flags = MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG; | MEMCPY_STRUCT_AFTER(emd, DNA_struct_default_get(EdgeSplitModifierData), modifier); | ||||
| } | } | ||||
| static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh) | static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh) | ||||
| { | { | ||||
| Mesh *result; | Mesh *result; | ||||
| EdgeSplitModifierData *emd = (EdgeSplitModifierData *)md; | EdgeSplitModifierData *emd = (EdgeSplitModifierData *)md; | ||||
| if (!(emd->flags & (MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG))) { | if (!(emd->flags & (MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG))) { | ||||
| ▲ Show 20 Lines • Show All 69 Lines • Show Last 20 Lines | |||||