Changeset View
Changeset View
Standalone View
Standalone View
source/blender/makesrna/intern/rna_modifier.c
| Show All 24 Lines | |||||
| */ | */ | ||||
| #include <float.h> | #include <float.h> | ||||
| #include <limits.h> | #include <limits.h> | ||||
| #include <stdlib.h> | #include <stdlib.h> | ||||
| #include "DNA_armature_types.h" | #include "DNA_armature_types.h" | ||||
| #include "DNA_cachefile_types.h" | |||||
| #include "DNA_mesh_types.h" | #include "DNA_mesh_types.h" | ||||
| #include "DNA_modifier_types.h" | #include "DNA_modifier_types.h" | ||||
| #include "DNA_object_types.h" | #include "DNA_object_types.h" | ||||
| #include "DNA_object_force.h" | #include "DNA_object_force.h" | ||||
| #include "DNA_scene_types.h" | #include "DNA_scene_types.h" | ||||
| #include "MEM_guardedalloc.h" | #include "MEM_guardedalloc.h" | ||||
| Show All 19 Lines | |||||
| #include "WM_api.h" | #include "WM_api.h" | ||||
| #include "WM_types.h" | #include "WM_types.h" | ||||
| EnumPropertyItem rna_enum_object_modifier_type_items[] = { | EnumPropertyItem rna_enum_object_modifier_type_items[] = { | ||||
| {0, "", 0, N_("Modify"), ""}, | {0, "", 0, N_("Modify"), ""}, | ||||
| {eModifierType_DataTransfer, "DATA_TRANSFER", ICON_MOD_DATA_TRANSFER, "Data Transfer", ""}, | {eModifierType_DataTransfer, "DATA_TRANSFER", ICON_MOD_DATA_TRANSFER, "Data Transfer", ""}, | ||||
| {eModifierType_MeshCache, "MESH_CACHE", ICON_MOD_MESHDEFORM, "Mesh Cache", ""}, | {eModifierType_MeshCache, "MESH_CACHE", ICON_MOD_MESHDEFORM, "Mesh Cache", ""}, | ||||
| {eModifierType_MeshSequenceCache, "MESH_SEQUENCE_CACHE", ICON_MOD_MESHDEFORM, "Mesh Sequence Cache", ""}, | |||||
| {eModifierType_NormalEdit, "NORMAL_EDIT", ICON_MOD_NORMALEDIT, "Normal Edit", ""}, | {eModifierType_NormalEdit, "NORMAL_EDIT", ICON_MOD_NORMALEDIT, "Normal Edit", ""}, | ||||
| {eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""}, | {eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""}, | ||||
| {eModifierType_UVWarp, "UV_WARP", ICON_MOD_UVPROJECT, "UV Warp", ""}, | {eModifierType_UVWarp, "UV_WARP", ICON_MOD_UVPROJECT, "UV Warp", ""}, | ||||
| {eModifierType_WeightVGEdit, "VERTEX_WEIGHT_EDIT", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Edit", ""}, | {eModifierType_WeightVGEdit, "VERTEX_WEIGHT_EDIT", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Edit", ""}, | ||||
| {eModifierType_WeightVGMix, "VERTEX_WEIGHT_MIX", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Mix", ""}, | {eModifierType_WeightVGMix, "VERTEX_WEIGHT_MIX", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Mix", ""}, | ||||
| {eModifierType_WeightVGProximity, "VERTEX_WEIGHT_PROXIMITY", ICON_MOD_VERTEX_WEIGHT, | {eModifierType_WeightVGProximity, "VERTEX_WEIGHT_PROXIMITY", ICON_MOD_VERTEX_WEIGHT, | ||||
| "Vertex Weight Proximity", ""}, | "Vertex Weight Proximity", ""}, | ||||
| {0, "", 0, N_("Generate"), ""}, | {0, "", 0, N_("Generate"), ""}, | ||||
| ▲ Show 20 Lines • Show All 200 Lines • ▼ Show 20 Lines | |||||
| }; | }; | ||||
| #ifdef RNA_RUNTIME | #ifdef RNA_RUNTIME | ||||
| #include "DNA_particle_types.h" | #include "DNA_particle_types.h" | ||||
| #include "DNA_curve_types.h" | #include "DNA_curve_types.h" | ||||
| #include "DNA_smoke_types.h" | #include "DNA_smoke_types.h" | ||||
| #include "BKE_cachefile.h" | |||||
| #include "BKE_context.h" | #include "BKE_context.h" | ||||
| #include "BKE_depsgraph.h" | #include "BKE_depsgraph.h" | ||||
| #include "BKE_library.h" | #include "BKE_library.h" | ||||
| #include "BKE_modifier.h" | #include "BKE_modifier.h" | ||||
| #include "BKE_object.h" | #include "BKE_object.h" | ||||
| #include "BKE_particle.h" | #include "BKE_particle.h" | ||||
| #ifdef WITH_ALEMBIC | |||||
| # include "ABC_alembic.h" | |||||
| #endif | |||||
| static void rna_UVProject_projectors_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) | static void rna_UVProject_projectors_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) | ||||
| { | { | ||||
| UVProjectModifierData *uvp = (UVProjectModifierData *)ptr->data; | UVProjectModifierData *uvp = (UVProjectModifierData *)ptr->data; | ||||
| rna_iterator_array_begin(iter, (void *)uvp->projectors, sizeof(Object *), uvp->num_projectors, 0, NULL); | rna_iterator_array_begin(iter, (void *)uvp->projectors, sizeof(Object *), uvp->num_projectors, 0, NULL); | ||||
| } | } | ||||
| static StructRNA *rna_Modifier_refine(struct PointerRNA *ptr) | static StructRNA *rna_Modifier_refine(struct PointerRNA *ptr) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 95 Lines • ▼ Show 20 Lines | switch ((ModifierType)md->type) { | ||||
| case eModifierType_Wireframe: | case eModifierType_Wireframe: | ||||
| return &RNA_WireframeModifier; | return &RNA_WireframeModifier; | ||||
| case eModifierType_DataTransfer: | case eModifierType_DataTransfer: | ||||
| return &RNA_DataTransferModifier; | return &RNA_DataTransferModifier; | ||||
| case eModifierType_NormalEdit: | case eModifierType_NormalEdit: | ||||
| return &RNA_NormalEditModifier; | return &RNA_NormalEditModifier; | ||||
| case eModifierType_CorrectiveSmooth: | case eModifierType_CorrectiveSmooth: | ||||
| return &RNA_CorrectiveSmoothModifier; | return &RNA_CorrectiveSmoothModifier; | ||||
| case eModifierType_MeshSequenceCache: | |||||
| return &RNA_MeshSequenceCacheModifier; | |||||
| /* Default */ | /* Default */ | ||||
| case eModifierType_None: | case eModifierType_None: | ||||
| case eModifierType_ShapeKey: | case eModifierType_ShapeKey: | ||||
| case NUM_MODIFIER_TYPES: | case NUM_MODIFIER_TYPES: | ||||
| return &RNA_Modifier; | return &RNA_Modifier; | ||||
| } | } | ||||
| return &RNA_Modifier; | return &RNA_Modifier; | ||||
| ▲ Show 20 Lines • Show All 705 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| static int rna_CorrectiveSmoothModifier_is_bind_get(PointerRNA *ptr) | static int rna_CorrectiveSmoothModifier_is_bind_get(PointerRNA *ptr) | ||||
| { | { | ||||
| CorrectiveSmoothModifierData *csmd = (CorrectiveSmoothModifierData *)ptr->data; | CorrectiveSmoothModifierData *csmd = (CorrectiveSmoothModifierData *)ptr->data; | ||||
| return (csmd->bind_coords != NULL); | return (csmd->bind_coords != NULL); | ||||
| } | } | ||||
| static void rna_MeshSequenceCacheModifier_velocity_get(PointerRNA *ptr, float *values) | |||||
| { | |||||
| #ifdef WITH_ALEMBIC | |||||
| MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *)ptr->data; | |||||
| Scene *scene = mcmd->modifier.scene; | |||||
| const float time = BKE_cachefile_time_offset(mcmd->cache_file, CFRA, FPS); | |||||
| ABC_get_velocity_cache(mcmd->cache_file->handle, mcmd->abc_object_path, values, time); | |||||
| #else | |||||
| UNUSED_VARS(ptr, values); | |||||
| #endif | |||||
| } | |||||
| static int rna_MeshSequenceCacheModifier_has_velocity_get(PointerRNA *ptr) | |||||
| { | |||||
| #ifdef WITH_ALEMBIC | |||||
| MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *)ptr->data; | |||||
| Scene *scene = mcmd->modifier.scene; | |||||
| const float time = BKE_cachefile_time_offset(mcmd->cache_file, CFRA, FPS); | |||||
| return ABC_has_velocity_cache(mcmd->cache_file->handle, mcmd->abc_object_path, time); | |||||
| #else | |||||
| return false; | |||||
| UNUSED_VARS(ptr); | |||||
| #endif | |||||
| } | |||||
| #else | #else | ||||
| static PropertyRNA *rna_def_property_subdivision_common(StructRNA *srna, const char type[]) | static PropertyRNA *rna_def_property_subdivision_common(StructRNA *srna, const char type[]) | ||||
| { | { | ||||
| static EnumPropertyItem prop_subdivision_type_items[] = { | static EnumPropertyItem prop_subdivision_type_items[] = { | ||||
| {0, "CATMULL_CLARK", 0, "Catmull-Clark", ""}, | {0, "CATMULL_CLARK", 0, "Catmull-Clark", ""}, | ||||
| {1, "SIMPLE", 0, "Simple", ""}, | {1, "SIMPLE", 0, "Simple", ""}, | ||||
| {0, NULL, 0, NULL, NULL} | {0, NULL, 0, NULL, NULL} | ||||
| ▲ Show 20 Lines • Show All 3,080 Lines • ▼ Show 20 Lines | static void rna_def_modifier_meshcache(BlenderRNA *brna) | ||||
| prop = RNA_def_property(srna, "eval_factor", PROP_FLOAT, PROP_NONE); | prop = RNA_def_property(srna, "eval_factor", PROP_FLOAT, PROP_NONE); | ||||
| RNA_def_property_float_sdna(prop, NULL, "eval_factor"); | RNA_def_property_float_sdna(prop, NULL, "eval_factor"); | ||||
| RNA_def_property_range(prop, 0.0f, 1.0f); | RNA_def_property_range(prop, 0.0f, 1.0f); | ||||
| RNA_def_property_ui_text(prop, "Evaluation Factor", "Evaluation time in seconds"); | RNA_def_property_ui_text(prop, "Evaluation Factor", "Evaluation time in seconds"); | ||||
| RNA_def_property_update(prop, 0, "rna_Modifier_update"); | RNA_def_property_update(prop, 0, "rna_Modifier_update"); | ||||
| } | } | ||||
| static void rna_def_modifier_meshseqcache(BlenderRNA *brna) | |||||
| { | |||||
| StructRNA *srna; | |||||
| PropertyRNA *prop; | |||||
| srna = RNA_def_struct(brna, "MeshSequenceCacheModifier", "Modifier"); | |||||
| RNA_def_struct_ui_text(srna, "Cache Modifier", "Cache Mesh"); | |||||
| RNA_def_struct_sdna(srna, "MeshSeqCacheModifierData"); | |||||
| RNA_def_struct_ui_icon(srna, ICON_MOD_MESHDEFORM); /* XXX, needs own icon */ | |||||
| prop = RNA_def_property(srna, "cache_file", PROP_POINTER, PROP_NONE); | |||||
| RNA_def_property_pointer_sdna(prop, NULL, "cache_file"); | |||||
| RNA_def_property_struct_type(prop, "CacheFile"); | |||||
| RNA_def_property_ui_text(prop, "Cache File", ""); | |||||
| RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK); | |||||
| RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); | |||||
| prop = RNA_def_property(srna, "abc_object_path", PROP_STRING, PROP_NONE); | |||||
| RNA_def_property_ui_text(prop, "Object Path", "Path to the object in the Alembic archive used to lookup geometric data"); | |||||
| RNA_def_property_update(prop, 0, "rna_Modifier_update"); | |||||
| prop = RNA_def_property(srna, "velocity_cache", PROP_FLOAT, PROP_NONE); | |||||
| RNA_def_property_array(prop, 32); | |||||
| RNA_def_property_clear_flag(prop, PROP_EDITABLE); | |||||
| RNA_def_property_float_funcs(prop, "rna_MeshSequenceCacheModifier_velocity_get", NULL, NULL); | |||||
| RNA_def_property_ui_text(prop, "Velocity Cache", "Vertices velocity cache"); | |||||
| prop = RNA_def_property(srna, "has_velocity", PROP_BOOLEAN, PROP_NONE); | |||||
| RNA_def_property_ui_text(prop, "Has Velocity Cache", ""); | |||||
| RNA_def_property_boolean_funcs(prop, "rna_MeshSequenceCacheModifier_has_velocity_get", NULL); | |||||
| RNA_def_property_clear_flag(prop, PROP_EDITABLE); | |||||
| RNA_def_property_update(prop, 0, "rna_Modifier_update"); | |||||
| } | |||||
| static void rna_def_modifier_laplaciandeform(BlenderRNA *brna) | static void rna_def_modifier_laplaciandeform(BlenderRNA *brna) | ||||
| { | { | ||||
| StructRNA *srna; | StructRNA *srna; | ||||
| PropertyRNA *prop; | PropertyRNA *prop; | ||||
| srna = RNA_def_struct(brna, "LaplacianDeformModifier", "Modifier"); | srna = RNA_def_struct(brna, "LaplacianDeformModifier", "Modifier"); | ||||
| RNA_def_struct_ui_text(srna, "Laplacian Deform Modifier", "Mesh deform modifier"); | RNA_def_struct_ui_text(srna, "Laplacian Deform Modifier", "Mesh deform modifier"); | ||||
| RNA_def_struct_sdna(srna, "LaplacianDeformModifierData"); | RNA_def_struct_sdna(srna, "LaplacianDeformModifierData"); | ||||
| ▲ Show 20 Lines • Show All 513 Lines • ▼ Show 20 Lines | void RNA_def_modifier(BlenderRNA *brna) | ||||
| rna_def_modifier_skin(brna); | rna_def_modifier_skin(brna); | ||||
| rna_def_modifier_laplaciansmooth(brna); | rna_def_modifier_laplaciansmooth(brna); | ||||
| rna_def_modifier_triangulate(brna); | rna_def_modifier_triangulate(brna); | ||||
| rna_def_modifier_meshcache(brna); | rna_def_modifier_meshcache(brna); | ||||
| rna_def_modifier_laplaciandeform(brna); | rna_def_modifier_laplaciandeform(brna); | ||||
| rna_def_modifier_wireframe(brna); | rna_def_modifier_wireframe(brna); | ||||
| rna_def_modifier_datatransfer(brna); | rna_def_modifier_datatransfer(brna); | ||||
| rna_def_modifier_normaledit(brna); | rna_def_modifier_normaledit(brna); | ||||
| rna_def_modifier_meshseqcache(brna); | |||||
| } | } | ||||
| #endif | #endif | ||||