diff options
Diffstat (limited to 'source/blender/editors/animation/anim_channels_defines.c')
-rw-r--r-- | source/blender/editors/animation/anim_channels_defines.c | 286 |
1 files changed, 268 insertions, 18 deletions
diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index df114bab367..07743f3b4bd 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -35,6 +35,7 @@ #include "DNA_armature_types.h" #include "DNA_cachefile_types.h" #include "DNA_camera_types.h" +#include "DNA_hair_types.h" #include "DNA_object_types.h" #include "DNA_particle_types.h" #include "DNA_screen_types.h" @@ -48,6 +49,8 @@ #include "DNA_material_types.h" #include "DNA_meta_types.h" #include "DNA_node_types.h" +#include "DNA_pointcloud_types.h" +#include "DNA_volume_types.h" #include "DNA_world_types.h" #include "DNA_gpencil_types.h" #include "DNA_speaker_types.h" @@ -699,6 +702,12 @@ static int acf_object_icon(bAnimListElem *ale) return ICON_OUTLINER_OB_FONT; case OB_SURF: return ICON_OUTLINER_OB_SURFACE; + case OB_HAIR: + return ICON_OUTLINER_OB_HAIR; + case OB_POINTCLOUD: + return ICON_OUTLINER_OB_POINTCLOUD; + case OB_VOLUME: + return ICON_OUTLINER_OB_VOLUME; case OB_EMPTY: return ICON_OUTLINER_OB_EMPTY; case OB_GPENCIL: @@ -2785,6 +2794,244 @@ static bAnimChannelType ACF_DSSPK = { acf_dsspk_setting_ptr, /* pointer for setting */ }; +/* Hair Expander ------------------------------------------- */ + +// TODO: just get this from RNA? +static int acf_dshair_icon(bAnimListElem *UNUSED(ale)) +{ + return ICON_HAIR_DATA; +} + +/* get the appropriate flag(s) for the setting when it is valid */ +static int acf_dshair_setting_flag(bAnimContext *UNUSED(ac), + eAnimChannel_Settings setting, + bool *neg) +{ + /* clear extra return data first */ + *neg = false; + + switch (setting) { + case ACHANNEL_SETTING_EXPAND: /* expanded */ + return VO_DS_EXPAND; + + case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */ + return ADT_NLA_EVAL_OFF; + + case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph Editor) */ + *neg = true; + return ADT_CURVES_NOT_VISIBLE; + + case ACHANNEL_SETTING_SELECT: /* selected */ + return ADT_UI_SELECTED; + + default: /* unsupported */ + return 0; + } +} + +/* get pointer to the setting */ +static void *acf_dshair_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *type) +{ + Hair *hair = (Hair *)ale->data; + + /* clear extra return data first */ + *type = 0; + + switch (setting) { + case ACHANNEL_SETTING_EXPAND: /* expanded */ + return GET_ACF_FLAG_PTR(hair->flag, type); + + case ACHANNEL_SETTING_SELECT: /* selected */ + case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */ + case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor only) */ + if (hair->adt) + return GET_ACF_FLAG_PTR(hair->adt->flag, type); + return NULL; + + default: /* unsupported */ + return NULL; + } +} + +/* hair expander type define */ +static bAnimChannelType ACF_DSHAIR = { + "Hair Expander", /* type name */ + ACHANNEL_ROLE_EXPANDER, /* role */ + + acf_generic_dataexpand_color, /* backdrop color */ + acf_generic_dataexpand_backdrop, /* backdrop */ + acf_generic_indention_1, /* indent level */ + acf_generic_basic_offset, /* offset */ + + acf_generic_idblock_name, /* name */ + acf_generic_idblock_name_prop, /* name prop */ + acf_dshair_icon, /* icon */ + + acf_generic_dataexpand_setting_valid, /* has setting */ + acf_dshair_setting_flag, /* flag for setting */ + acf_dshair_setting_ptr /* pointer for setting */ +}; + +/* PointCloud Expander ------------------------------------------- */ + +// TODO: just get this from RNA? +static int acf_dspointcloud_icon(bAnimListElem *UNUSED(ale)) +{ + return ICON_POINTCLOUD_DATA; +} + +/* get the appropriate flag(s) for the setting when it is valid */ +static int acf_dspointcloud_setting_flag(bAnimContext *UNUSED(ac), + eAnimChannel_Settings setting, + bool *neg) +{ + /* clear extra return data first */ + *neg = false; + + switch (setting) { + case ACHANNEL_SETTING_EXPAND: /* expanded */ + return VO_DS_EXPAND; + + case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */ + return ADT_NLA_EVAL_OFF; + + case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph Editor) */ + *neg = true; + return ADT_CURVES_NOT_VISIBLE; + + case ACHANNEL_SETTING_SELECT: /* selected */ + return ADT_UI_SELECTED; + + default: /* unsupported */ + return 0; + } +} + +/* get pointer to the setting */ +static void *acf_dspointcloud_setting_ptr(bAnimListElem *ale, + eAnimChannel_Settings setting, + short *type) +{ + PointCloud *pointcloud = (PointCloud *)ale->data; + + /* clear extra return data first */ + *type = 0; + + switch (setting) { + case ACHANNEL_SETTING_EXPAND: /* expanded */ + return GET_ACF_FLAG_PTR(pointcloud->flag, type); + + case ACHANNEL_SETTING_SELECT: /* selected */ + case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */ + case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor only) */ + if (pointcloud->adt) + return GET_ACF_FLAG_PTR(pointcloud->adt->flag, type); + return NULL; + + default: /* unsupported */ + return NULL; + } +} + +/* pointcloud expander type define */ +static bAnimChannelType ACF_DSPOINTCLOUD = { + "PointCloud Expander", /* type name */ + ACHANNEL_ROLE_EXPANDER, /* role */ + + acf_generic_dataexpand_color, /* backdrop color */ + acf_generic_dataexpand_backdrop, /* backdrop */ + acf_generic_indention_1, /* indent level */ + acf_generic_basic_offset, /* offset */ + + acf_generic_idblock_name, /* name */ + acf_generic_idblock_name_prop, /* name prop */ + acf_dspointcloud_icon, /* icon */ + + acf_generic_dataexpand_setting_valid, /* has setting */ + acf_dspointcloud_setting_flag, /* flag for setting */ + acf_dspointcloud_setting_ptr /* pointer for setting */ +}; + +/* Volume Expander ------------------------------------------- */ + +// TODO: just get this from RNA? +static int acf_dsvolume_icon(bAnimListElem *UNUSED(ale)) +{ + return ICON_VOLUME_DATA; +} + +/* get the appropriate flag(s) for the setting when it is valid */ +static int acf_dsvolume_setting_flag(bAnimContext *UNUSED(ac), + eAnimChannel_Settings setting, + bool *neg) +{ + /* clear extra return data first */ + *neg = false; + + switch (setting) { + case ACHANNEL_SETTING_EXPAND: /* expanded */ + return VO_DS_EXPAND; + + case ACHANNEL_SETTING_MUTE: /* mute (only in NLA) */ + return ADT_NLA_EVAL_OFF; + + case ACHANNEL_SETTING_VISIBLE: /* visible (only in Graph Editor) */ + *neg = true; + return ADT_CURVES_NOT_VISIBLE; + + case ACHANNEL_SETTING_SELECT: /* selected */ + return ADT_UI_SELECTED; + + default: /* unsupported */ + return 0; + } +} + +/* get pointer to the setting */ +static void *acf_dsvolume_setting_ptr(bAnimListElem *ale, + eAnimChannel_Settings setting, + short *type) +{ + Volume *volume = (Volume *)ale->data; + + /* clear extra return data first */ + *type = 0; + + switch (setting) { + case ACHANNEL_SETTING_EXPAND: /* expanded */ + return GET_ACF_FLAG_PTR(volume->flag, type); + + case ACHANNEL_SETTING_SELECT: /* selected */ + case ACHANNEL_SETTING_MUTE: /* muted (for NLA only) */ + case ACHANNEL_SETTING_VISIBLE: /* visible (for Graph Editor only) */ + if (volume->adt) + return GET_ACF_FLAG_PTR(volume->adt->flag, type); + return NULL; + + default: /* unsupported */ + return NULL; + } +} + +/* volume expander type define */ +static bAnimChannelType ACF_DSVOLUME = { + "Volume Expander", /* type name */ + ACHANNEL_ROLE_EXPANDER, /* role */ + + acf_generic_dataexpand_color, /* backdrop color */ + acf_generic_dataexpand_backdrop, /* backdrop */ + acf_generic_indention_1, /* indent level */ + acf_generic_basic_offset, /* offset */ + + acf_generic_idblock_name, /* name */ + acf_generic_idblock_name_prop, /* name prop */ + acf_dsvolume_icon, /* icon */ + + acf_generic_dataexpand_setting_valid, /* has setting */ + acf_dsvolume_setting_flag, /* flag for setting */ + acf_dsvolume_setting_ptr /* pointer for setting */ +}; + /* GPencil Expander ------------------------------------------- */ // TODO: just get this from RNA? @@ -3780,24 +4027,27 @@ static void ANIM_init_channel_typeinfo_data(void) animchannelTypeInfo[type++] = &ACF_FILLACTD; /* Object Action Expander */ animchannelTypeInfo[type++] = &ACF_FILLDRIVERS; /* Drivers Expander */ - animchannelTypeInfo[type++] = &ACF_DSMAT; /* Material Channel */ - animchannelTypeInfo[type++] = &ACF_DSLIGHT; /* Light Channel */ - animchannelTypeInfo[type++] = &ACF_DSCAM; /* Camera Channel */ - animchannelTypeInfo[type++] = &ACF_DSCACHEFILE; /* CacheFile Channel */ - animchannelTypeInfo[type++] = &ACF_DSCUR; /* Curve Channel */ - animchannelTypeInfo[type++] = &ACF_DSSKEY; /* ShapeKey Channel */ - animchannelTypeInfo[type++] = &ACF_DSWOR; /* World Channel */ - animchannelTypeInfo[type++] = &ACF_DSNTREE; /* NodeTree Channel */ - animchannelTypeInfo[type++] = &ACF_DSPART; /* Particle Channel */ - animchannelTypeInfo[type++] = &ACF_DSMBALL; /* MetaBall Channel */ - animchannelTypeInfo[type++] = &ACF_DSARM; /* Armature Channel */ - animchannelTypeInfo[type++] = &ACF_DSMESH; /* Mesh Channel */ - animchannelTypeInfo[type++] = &ACF_DSTEX; /* Texture Channel */ - animchannelTypeInfo[type++] = &ACF_DSLAT; /* Lattice Channel */ - animchannelTypeInfo[type++] = &ACF_DSLINESTYLE; /* LineStyle Channel */ - animchannelTypeInfo[type++] = &ACF_DSSPK; /* Speaker Channel */ - animchannelTypeInfo[type++] = &ACF_DSGPENCIL; /* GreasePencil Channel */ - animchannelTypeInfo[type++] = &ACF_DSMCLIP; /* MovieClip Channel */ + animchannelTypeInfo[type++] = &ACF_DSMAT; /* Material Channel */ + animchannelTypeInfo[type++] = &ACF_DSLIGHT; /* Light Channel */ + animchannelTypeInfo[type++] = &ACF_DSCAM; /* Camera Channel */ + animchannelTypeInfo[type++] = &ACF_DSCACHEFILE; /* CacheFile Channel */ + animchannelTypeInfo[type++] = &ACF_DSCUR; /* Curve Channel */ + animchannelTypeInfo[type++] = &ACF_DSSKEY; /* ShapeKey Channel */ + animchannelTypeInfo[type++] = &ACF_DSWOR; /* World Channel */ + animchannelTypeInfo[type++] = &ACF_DSNTREE; /* NodeTree Channel */ + animchannelTypeInfo[type++] = &ACF_DSPART; /* Particle Channel */ + animchannelTypeInfo[type++] = &ACF_DSMBALL; /* MetaBall Channel */ + animchannelTypeInfo[type++] = &ACF_DSARM; /* Armature Channel */ + animchannelTypeInfo[type++] = &ACF_DSMESH; /* Mesh Channel */ + animchannelTypeInfo[type++] = &ACF_DSTEX; /* Texture Channel */ + animchannelTypeInfo[type++] = &ACF_DSLAT; /* Lattice Channel */ + animchannelTypeInfo[type++] = &ACF_DSLINESTYLE; /* LineStyle Channel */ + animchannelTypeInfo[type++] = &ACF_DSSPK; /* Speaker Channel */ + animchannelTypeInfo[type++] = &ACF_DSGPENCIL; /* GreasePencil Channel */ + animchannelTypeInfo[type++] = &ACF_DSMCLIP; /* MovieClip Channel */ + animchannelTypeInfo[type++] = &ACF_DSHAIR; /* Hair Channel */ + animchannelTypeInfo[type++] = &ACF_DSPOINTCLOUD; /* PointCloud Channel */ + animchannelTypeInfo[type++] = &ACF_DSVOLUME; /* Volume Channel */ animchannelTypeInfo[type++] = &ACF_SHAPEKEY; /* ShapeKey */ |