Cleanup: split BKE_anim.h
and anim.c
into smaller pieces
The files are now split up into the following sections: - `BKE_anim_path.h` and `anim_path.c` for path/curve functions. - `BKE_anim_visualization.h` and `anim_visualizationanim_path.c` for animation visualization (mostly motion paths). - `BKE_duplilist.h` for DupliList function declarations. These were already implemented in `object_dupli.c`, so they were rather out of place being declared in `BKE_anim.h` in the first place. No functional changes.
This commit is contained in:
parent
736f9f5a69
commit
b5253159b6
51
source/blender/blenkernel/BKE_anim_path.h
Normal file
51
source/blender/blenkernel/BKE_anim_path.h
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
||||
* All rights reserved.
|
||||
*/
|
||||
#ifndef __BKE_ANIM_PATH_H__
|
||||
#define __BKE_ANIM_PATH_H__
|
||||
|
||||
/** \file
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct ListBase;
|
||||
struct Object;
|
||||
struct Path;
|
||||
|
||||
/* ---------------------------------------------------- */
|
||||
/* Curve Paths */
|
||||
|
||||
void free_path(struct Path *path);
|
||||
void calc_curvepath(struct Object *ob, struct ListBase *nurbs);
|
||||
int where_on_path(struct Object *ob,
|
||||
float ctime,
|
||||
float vec[4],
|
||||
float dir[3],
|
||||
float quat[4],
|
||||
float *radius,
|
||||
float *weight);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
56
source/blender/blenkernel/BKE_anim_visualization.h
Normal file
56
source/blender/blenkernel/BKE_anim_visualization.h
Normal file
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
||||
* All rights reserved.
|
||||
*/
|
||||
#ifndef __BKE_ANIM_VISUALIZATION_H__
|
||||
#define __BKE_ANIM_VISUALIZATION_H__
|
||||
|
||||
/** \file
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct Object;
|
||||
struct ReportList;
|
||||
struct Scene;
|
||||
struct bAnimVizSettings;
|
||||
struct bMotionPath;
|
||||
struct bPoseChannel;
|
||||
|
||||
/* ---------------------------------------------------- */
|
||||
/* Animation Visualization */
|
||||
|
||||
void animviz_settings_init(struct bAnimVizSettings *avs);
|
||||
|
||||
struct bMotionPath *animviz_copy_motionpath(const struct bMotionPath *mpath_src);
|
||||
|
||||
void animviz_free_motionpath_cache(struct bMotionPath *mpath);
|
||||
void animviz_free_motionpath(struct bMotionPath *mpath);
|
||||
|
||||
struct bMotionPath *animviz_verify_motionpaths(struct ReportList *reports,
|
||||
struct Scene *scene,
|
||||
struct Object *ob,
|
||||
struct bPoseChannel *pchan);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
@ -16,8 +16,8 @@
|
||||
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
||||
* All rights reserved.
|
||||
*/
|
||||
#ifndef __BKE_ANIM_H__
|
||||
#define __BKE_ANIM_H__
|
||||
#ifndef __BKE_DUPLILIST_H__
|
||||
#define __BKE_DUPLILIST_H__
|
||||
|
||||
/** \file
|
||||
* \ingroup bke
|
||||
@ -31,40 +31,7 @@ struct Depsgraph;
|
||||
struct ListBase;
|
||||
struct Object;
|
||||
struct ParticleSystem;
|
||||
struct Path;
|
||||
struct ReportList;
|
||||
struct Scene;
|
||||
struct bAnimVizSettings;
|
||||
struct bMotionPath;
|
||||
struct bPoseChannel;
|
||||
|
||||
/* ---------------------------------------------------- */
|
||||
/* Animation Visualization */
|
||||
|
||||
void animviz_settings_init(struct bAnimVizSettings *avs);
|
||||
|
||||
struct bMotionPath *animviz_copy_motionpath(const struct bMotionPath *mpath_src);
|
||||
|
||||
void animviz_free_motionpath_cache(struct bMotionPath *mpath);
|
||||
void animviz_free_motionpath(struct bMotionPath *mpath);
|
||||
|
||||
struct bMotionPath *animviz_verify_motionpaths(struct ReportList *reports,
|
||||
struct Scene *scene,
|
||||
struct Object *ob,
|
||||
struct bPoseChannel *pchan);
|
||||
|
||||
/* ---------------------------------------------------- */
|
||||
/* Curve Paths */
|
||||
|
||||
void free_path(struct Path *path);
|
||||
void calc_curvepath(struct Object *ob, struct ListBase *nurbs);
|
||||
int where_on_path(struct Object *ob,
|
||||
float ctime,
|
||||
float vec[4],
|
||||
float dir[3],
|
||||
float quat[4],
|
||||
float *radius,
|
||||
float *weight);
|
||||
|
||||
/* ---------------------------------------------------- */
|
||||
/* Dupli-Geometry */
|
@ -70,8 +70,9 @@ set(SRC
|
||||
intern/DerivedMesh.c
|
||||
intern/action.c
|
||||
intern/addon.c
|
||||
intern/anim.c
|
||||
intern/anim_path.c
|
||||
intern/anim_sys.c
|
||||
intern/anim_visualization.c
|
||||
intern/appdir.c
|
||||
intern/armature.c
|
||||
intern/armature_update.c
|
||||
@ -250,7 +251,8 @@ set(SRC
|
||||
BKE_DerivedMesh.h
|
||||
BKE_action.h
|
||||
BKE_addon.h
|
||||
BKE_anim.h
|
||||
BKE_anim_path.h
|
||||
BKE_anim_visualization.h
|
||||
BKE_animsys.h
|
||||
BKE_appdir.h
|
||||
BKE_armature.h
|
||||
@ -286,6 +288,7 @@ set(SRC
|
||||
BKE_deform.h
|
||||
BKE_displist.h
|
||||
BKE_displist_tangent.h
|
||||
BKE_duplilist.h
|
||||
BKE_dynamicpaint.h
|
||||
BKE_editlattice.h
|
||||
BKE_editmesh.h
|
||||
|
@ -43,7 +43,7 @@
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "BKE_action.h"
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_visualization.h"
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_armature.h"
|
||||
#include "BKE_constraint.h"
|
||||
|
@ -23,236 +23,22 @@
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <float.h>
|
||||
|
||||
#include "BLI_dlrbTree.h"
|
||||
#include "BLI_listbase.h"
|
||||
#include "BLI_math.h"
|
||||
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "DNA_anim_types.h"
|
||||
#include "DNA_armature_types.h"
|
||||
#include "DNA_curve_types.h"
|
||||
#include "DNA_key_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
|
||||
#include "BKE_action.h"
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_animsys.h"
|
||||
#include "BLI_math_vector.h"
|
||||
|
||||
#include "BKE_anim_path.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_key.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_object.h"
|
||||
#include "BKE_particle.h"
|
||||
#include "BKE_report.h"
|
||||
#include "BKE_scene.h"
|
||||
|
||||
#include "DEG_depsgraph.h"
|
||||
#include "DEG_depsgraph_build.h"
|
||||
#include "DEG_depsgraph_query.h"
|
||||
|
||||
#include "GPU_batch.h"
|
||||
|
||||
#include "CLG_log.h"
|
||||
|
||||
static CLG_LogRef LOG = {"bke.anim"};
|
||||
|
||||
/* --------------------- */
|
||||
/* forward declarations */
|
||||
|
||||
/* ******************************************************************** */
|
||||
/* Animation Visualization */
|
||||
|
||||
/* Initialize the default settings for animation visualization */
|
||||
void animviz_settings_init(bAnimVizSettings *avs)
|
||||
{
|
||||
/* sanity check */
|
||||
if (avs == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* path settings */
|
||||
avs->path_bc = avs->path_ac = 10;
|
||||
|
||||
avs->path_sf = 1; /* xxx - take from scene instead? */
|
||||
avs->path_ef = 250; /* xxx - take from scene instead? */
|
||||
|
||||
avs->path_viewflag = (MOTIONPATH_VIEW_KFRAS | MOTIONPATH_VIEW_KFNOS);
|
||||
|
||||
avs->path_step = 1;
|
||||
|
||||
avs->path_bakeflag |= MOTIONPATH_BAKE_HEADS;
|
||||
}
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
/* Free the given motion path's cache */
|
||||
void animviz_free_motionpath_cache(bMotionPath *mpath)
|
||||
{
|
||||
/* sanity check */
|
||||
if (mpath == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* free the path if necessary */
|
||||
if (mpath->points) {
|
||||
MEM_freeN(mpath->points);
|
||||
}
|
||||
|
||||
GPU_VERTBUF_DISCARD_SAFE(mpath->points_vbo);
|
||||
GPU_BATCH_DISCARD_SAFE(mpath->batch_line);
|
||||
GPU_BATCH_DISCARD_SAFE(mpath->batch_points);
|
||||
|
||||
/* reset the relevant parameters */
|
||||
mpath->points = NULL;
|
||||
mpath->length = 0;
|
||||
}
|
||||
|
||||
/* Free the given motion path instance and its data
|
||||
* NOTE: this frees the motion path given!
|
||||
*/
|
||||
void animviz_free_motionpath(bMotionPath *mpath)
|
||||
{
|
||||
/* sanity check */
|
||||
if (mpath == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* free the cache first */
|
||||
animviz_free_motionpath_cache(mpath);
|
||||
|
||||
/* now the instance itself */
|
||||
MEM_freeN(mpath);
|
||||
}
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
/* Make a copy of motionpath data, so that viewing with copy on write works */
|
||||
bMotionPath *animviz_copy_motionpath(const bMotionPath *mpath_src)
|
||||
{
|
||||
bMotionPath *mpath_dst;
|
||||
|
||||
if (mpath_src == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
mpath_dst = MEM_dupallocN(mpath_src);
|
||||
mpath_dst->points = MEM_dupallocN(mpath_src->points);
|
||||
|
||||
/* should get recreated on draw... */
|
||||
mpath_dst->points_vbo = NULL;
|
||||
mpath_dst->batch_line = NULL;
|
||||
mpath_dst->batch_points = NULL;
|
||||
|
||||
return mpath_dst;
|
||||
}
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
/**
|
||||
* Setup motion paths for the given data.
|
||||
* \note Only used when explicitly calculating paths on bones which may/may not be consider already
|
||||
*
|
||||
* \param scene: Current scene (for frame ranges, etc.)
|
||||
* \param ob: Object to add paths for (must be provided)
|
||||
* \param pchan: Posechannel to add paths for (optional; if not provided, object-paths are assumed)
|
||||
*/
|
||||
bMotionPath *animviz_verify_motionpaths(ReportList *reports,
|
||||
Scene *scene,
|
||||
Object *ob,
|
||||
bPoseChannel *pchan)
|
||||
{
|
||||
bAnimVizSettings *avs;
|
||||
bMotionPath *mpath, **dst;
|
||||
|
||||
/* sanity checks */
|
||||
if (ELEM(NULL, scene, ob)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* get destination data */
|
||||
if (pchan) {
|
||||
/* paths for posechannel - assume that posechannel belongs to the object */
|
||||
avs = &ob->pose->avs;
|
||||
dst = &pchan->mpath;
|
||||
}
|
||||
else {
|
||||
/* paths for object */
|
||||
avs = &ob->avs;
|
||||
dst = &ob->mpath;
|
||||
}
|
||||
|
||||
/* avoid 0 size allocs */
|
||||
if (avs->path_sf >= avs->path_ef) {
|
||||
BKE_reportf(reports,
|
||||
RPT_ERROR,
|
||||
"Motion path frame extents invalid for %s (%d to %d)%s",
|
||||
(pchan) ? pchan->name : ob->id.name,
|
||||
avs->path_sf,
|
||||
avs->path_ef,
|
||||
(avs->path_sf == avs->path_ef) ? TIP_(", cannot have single-frame paths") : "");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* if there is already a motionpath, just return that,
|
||||
* provided it's settings are ok (saves extra free+alloc)
|
||||
*/
|
||||
if (*dst != NULL) {
|
||||
int expected_length = avs->path_ef - avs->path_sf;
|
||||
|
||||
mpath = *dst;
|
||||
|
||||
/* Path is "valid" if length is valid,
|
||||
* but must also be of the same length as is being requested. */
|
||||
if ((mpath->start_frame != mpath->end_frame) && (mpath->length > 0)) {
|
||||
/* outer check ensures that we have some curve data for this path */
|
||||
if (mpath->length == expected_length) {
|
||||
/* return/use this as it is already valid length */
|
||||
return mpath;
|
||||
}
|
||||
else {
|
||||
/* clear the existing path (as the range has changed), and reallocate below */
|
||||
animviz_free_motionpath_cache(mpath);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* create a new motionpath, and assign it */
|
||||
mpath = MEM_callocN(sizeof(bMotionPath), "bMotionPath");
|
||||
*dst = mpath;
|
||||
}
|
||||
|
||||
/* set settings from the viz settings */
|
||||
mpath->start_frame = avs->path_sf;
|
||||
mpath->end_frame = avs->path_ef;
|
||||
|
||||
mpath->length = mpath->end_frame - mpath->start_frame;
|
||||
|
||||
if (avs->path_bakeflag & MOTIONPATH_BAKE_HEADS) {
|
||||
mpath->flag |= MOTIONPATH_FLAG_BHEAD;
|
||||
}
|
||||
else {
|
||||
mpath->flag &= ~MOTIONPATH_FLAG_BHEAD;
|
||||
}
|
||||
|
||||
/* set default custom values */
|
||||
mpath->color[0] = 1.0; /* Red */
|
||||
mpath->color[1] = 0.0;
|
||||
mpath->color[2] = 0.0;
|
||||
|
||||
mpath->line_thickness = 2;
|
||||
mpath->flag |= MOTIONPATH_FLAG_LINES; /* draw lines by default */
|
||||
|
||||
/* allocate a cache */
|
||||
mpath->points = MEM_callocN(sizeof(bMotionPathVert) * mpath->length, "bMotionPathVerts");
|
||||
|
||||
/* tag viz settings as currently having some path(s) which use it */
|
||||
avs->path_bakeflag |= MOTIONPATH_BAKE_HAS_PATHS;
|
||||
|
||||
/* return it */
|
||||
return mpath;
|
||||
}
|
||||
|
||||
/* ******************************************************************** */
|
||||
/* Curve Paths - for curve deforms and/or curve following */
|
||||
|
228
source/blender/blenkernel/intern/anim_visualization.c
Normal file
228
source/blender/blenkernel/intern/anim_visualization.c
Normal file
@ -0,0 +1,228 @@
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
||||
* All rights reserved.
|
||||
*/
|
||||
|
||||
/** \file
|
||||
* \ingroup bke
|
||||
*/
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "DNA_action_types.h"
|
||||
#include "DNA_anim_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "BKE_anim_visualization.h"
|
||||
#include "BKE_report.h"
|
||||
|
||||
#include "GPU_batch.h"
|
||||
|
||||
/* ******************************************************************** */
|
||||
/* Animation Visualization */
|
||||
|
||||
/* Initialize the default settings for animation visualization */
|
||||
void animviz_settings_init(bAnimVizSettings *avs)
|
||||
{
|
||||
/* sanity check */
|
||||
if (avs == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* path settings */
|
||||
avs->path_bc = avs->path_ac = 10;
|
||||
|
||||
avs->path_sf = 1; /* xxx - take from scene instead? */
|
||||
avs->path_ef = 250; /* xxx - take from scene instead? */
|
||||
|
||||
avs->path_viewflag = (MOTIONPATH_VIEW_KFRAS | MOTIONPATH_VIEW_KFNOS);
|
||||
|
||||
avs->path_step = 1;
|
||||
|
||||
avs->path_bakeflag |= MOTIONPATH_BAKE_HEADS;
|
||||
}
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
/* Free the given motion path's cache */
|
||||
void animviz_free_motionpath_cache(bMotionPath *mpath)
|
||||
{
|
||||
/* sanity check */
|
||||
if (mpath == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* free the path if necessary */
|
||||
if (mpath->points) {
|
||||
MEM_freeN(mpath->points);
|
||||
}
|
||||
|
||||
GPU_VERTBUF_DISCARD_SAFE(mpath->points_vbo);
|
||||
GPU_BATCH_DISCARD_SAFE(mpath->batch_line);
|
||||
GPU_BATCH_DISCARD_SAFE(mpath->batch_points);
|
||||
|
||||
/* reset the relevant parameters */
|
||||
mpath->points = NULL;
|
||||
mpath->length = 0;
|
||||
}
|
||||
|
||||
/* Free the given motion path instance and its data
|
||||
* NOTE: this frees the motion path given!
|
||||
*/
|
||||
void animviz_free_motionpath(bMotionPath *mpath)
|
||||
{
|
||||
/* sanity check */
|
||||
if (mpath == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* free the cache first */
|
||||
animviz_free_motionpath_cache(mpath);
|
||||
|
||||
/* now the instance itself */
|
||||
MEM_freeN(mpath);
|
||||
}
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
/* Make a copy of motionpath data, so that viewing with copy on write works */
|
||||
bMotionPath *animviz_copy_motionpath(const bMotionPath *mpath_src)
|
||||
{
|
||||
bMotionPath *mpath_dst;
|
||||
|
||||
if (mpath_src == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
mpath_dst = MEM_dupallocN(mpath_src);
|
||||
mpath_dst->points = MEM_dupallocN(mpath_src->points);
|
||||
|
||||
/* should get recreated on draw... */
|
||||
mpath_dst->points_vbo = NULL;
|
||||
mpath_dst->batch_line = NULL;
|
||||
mpath_dst->batch_points = NULL;
|
||||
|
||||
return mpath_dst;
|
||||
}
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
/**
|
||||
* Setup motion paths for the given data.
|
||||
* \note Only used when explicitly calculating paths on bones which may/may not be consider already
|
||||
*
|
||||
* \param scene: Current scene (for frame ranges, etc.)
|
||||
* \param ob: Object to add paths for (must be provided)
|
||||
* \param pchan: Posechannel to add paths for (optional; if not provided, object-paths are assumed)
|
||||
*/
|
||||
bMotionPath *animviz_verify_motionpaths(ReportList *reports,
|
||||
Scene *scene,
|
||||
Object *ob,
|
||||
bPoseChannel *pchan)
|
||||
{
|
||||
bAnimVizSettings *avs;
|
||||
bMotionPath *mpath, **dst;
|
||||
|
||||
/* sanity checks */
|
||||
if (ELEM(NULL, scene, ob)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* get destination data */
|
||||
if (pchan) {
|
||||
/* paths for posechannel - assume that posechannel belongs to the object */
|
||||
avs = &ob->pose->avs;
|
||||
dst = &pchan->mpath;
|
||||
}
|
||||
else {
|
||||
/* paths for object */
|
||||
avs = &ob->avs;
|
||||
dst = &ob->mpath;
|
||||
}
|
||||
|
||||
/* avoid 0 size allocs */
|
||||
if (avs->path_sf >= avs->path_ef) {
|
||||
BKE_reportf(reports,
|
||||
RPT_ERROR,
|
||||
"Motion path frame extents invalid for %s (%d to %d)%s",
|
||||
(pchan) ? pchan->name : ob->id.name,
|
||||
avs->path_sf,
|
||||
avs->path_ef,
|
||||
(avs->path_sf == avs->path_ef) ? TIP_(", cannot have single-frame paths") : "");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* if there is already a motionpath, just return that,
|
||||
* provided it's settings are ok (saves extra free+alloc)
|
||||
*/
|
||||
if (*dst != NULL) {
|
||||
int expected_length = avs->path_ef - avs->path_sf;
|
||||
|
||||
mpath = *dst;
|
||||
|
||||
/* Path is "valid" if length is valid,
|
||||
* but must also be of the same length as is being requested. */
|
||||
if ((mpath->start_frame != mpath->end_frame) && (mpath->length > 0)) {
|
||||
/* outer check ensures that we have some curve data for this path */
|
||||
if (mpath->length == expected_length) {
|
||||
/* return/use this as it is already valid length */
|
||||
return mpath;
|
||||
}
|
||||
else {
|
||||
/* clear the existing path (as the range has changed), and reallocate below */
|
||||
animviz_free_motionpath_cache(mpath);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* create a new motionpath, and assign it */
|
||||
mpath = MEM_callocN(sizeof(bMotionPath), "bMotionPath");
|
||||
*dst = mpath;
|
||||
}
|
||||
|
||||
/* set settings from the viz settings */
|
||||
mpath->start_frame = avs->path_sf;
|
||||
mpath->end_frame = avs->path_ef;
|
||||
|
||||
mpath->length = mpath->end_frame - mpath->start_frame;
|
||||
|
||||
if (avs->path_bakeflag & MOTIONPATH_BAKE_HEADS) {
|
||||
mpath->flag |= MOTIONPATH_FLAG_BHEAD;
|
||||
}
|
||||
else {
|
||||
mpath->flag &= ~MOTIONPATH_FLAG_BHEAD;
|
||||
}
|
||||
|
||||
/* set default custom values */
|
||||
mpath->color[0] = 1.0; /* Red */
|
||||
mpath->color[1] = 0.0;
|
||||
mpath->color[2] = 0.0;
|
||||
|
||||
mpath->line_thickness = 2;
|
||||
mpath->flag |= MOTIONPATH_FLAG_LINES; /* draw lines by default */
|
||||
|
||||
/* allocate a cache */
|
||||
mpath->points = MEM_callocN(sizeof(bMotionPathVert) * mpath->length, "bMotionPathVerts");
|
||||
|
||||
/* tag viz settings as currently having some path(s) which use it */
|
||||
avs->path_bakeflag |= MOTIONPATH_BAKE_HAS_PATHS;
|
||||
|
||||
/* return it */
|
||||
return mpath;
|
||||
}
|
@ -51,7 +51,7 @@
|
||||
#include "DNA_scene_types.h"
|
||||
|
||||
#include "BKE_action.h"
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_visualization.h"
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_armature.h"
|
||||
#include "BKE_constraint.h"
|
||||
|
@ -35,7 +35,7 @@
|
||||
#include "DNA_scene_types.h"
|
||||
|
||||
#include "BKE_action.h"
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_path.h"
|
||||
#include "BKE_armature.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_displist.h"
|
||||
|
@ -52,7 +52,7 @@
|
||||
#include "DNA_tracking_types.h"
|
||||
|
||||
#include "BKE_action.h"
|
||||
#include "BKE_anim.h" /* for the curve calculation part */
|
||||
#include "BKE_anim_path.h"
|
||||
#include "BKE_armature.h"
|
||||
#include "BKE_bvhutils.h"
|
||||
#include "BKE_cachefile.h"
|
||||
|
@ -42,7 +42,7 @@
|
||||
#include "BLI_string.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_path.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_displist.h"
|
||||
#include "BKE_font.h"
|
||||
|
@ -49,7 +49,7 @@
|
||||
|
||||
#include "PIL_time.h"
|
||||
|
||||
#include "BKE_anim.h" /* needed for where_on_path */
|
||||
#include "BKE_anim_path.h" /* needed for where_on_path */
|
||||
#include "BKE_bvhutils.h"
|
||||
#include "BKE_collection.h"
|
||||
#include "BKE_collision.h"
|
||||
|
@ -48,7 +48,7 @@
|
||||
#include "DNA_packedFile_types.h"
|
||||
#include "DNA_vfont_types.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_path.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_font.h"
|
||||
#include "BKE_global.h"
|
||||
|
@ -45,7 +45,7 @@
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_path.h"
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_displist.h"
|
||||
|
@ -68,7 +68,8 @@
|
||||
|
||||
#include "BKE_DerivedMesh.h"
|
||||
#include "BKE_action.h"
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_path.h"
|
||||
#include "BKE_anim_visualization.h"
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_armature.h"
|
||||
#include "BKE_camera.h"
|
||||
@ -77,6 +78,7 @@
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_deform.h"
|
||||
#include "BKE_displist.h"
|
||||
#include "BKE_duplilist.h"
|
||||
#include "BKE_editmesh.h"
|
||||
#include "BKE_effect.h"
|
||||
#include "BKE_fcurve.h"
|
||||
|
@ -40,9 +40,9 @@
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_vfont_types.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_collection.h"
|
||||
#include "BKE_duplilist.h"
|
||||
#include "BKE_editmesh.h"
|
||||
#include "BKE_font.h"
|
||||
#include "BKE_global.h"
|
||||
|
@ -50,7 +50,7 @@
|
||||
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_path.h"
|
||||
#include "BKE_animsys.h"
|
||||
|
||||
#include "BKE_boids.h"
|
||||
|
@ -51,7 +51,6 @@
|
||||
|
||||
#include "PIL_time.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_appdir.h"
|
||||
#include "BKE_cloth.h"
|
||||
#include "BKE_collection.h"
|
||||
|
@ -59,13 +59,13 @@
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "BKE_action.h"
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_armature.h"
|
||||
#include "BKE_cachefile.h"
|
||||
#include "BKE_collection.h"
|
||||
#include "BKE_colortools.h"
|
||||
#include "BKE_curveprofile.h"
|
||||
#include "BKE_duplilist.h"
|
||||
#include "BKE_editmesh.h"
|
||||
#include "BKE_fcurve.h"
|
||||
#include "BKE_freestyle.h"
|
||||
|
@ -61,7 +61,7 @@
|
||||
#include "BLI_math.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_visualization.h"
|
||||
#include "BKE_armature.h"
|
||||
#include "BKE_colortools.h"
|
||||
#include "BKE_global.h" // for G
|
||||
|
@ -52,7 +52,7 @@
|
||||
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_visualization.h"
|
||||
#include "BKE_image.h"
|
||||
#include "BKE_main.h" // for Main
|
||||
#include "BKE_mesh.h" // for ME_ defines (patching)
|
||||
|
@ -29,7 +29,7 @@
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
extern "C" {
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_duplilist.h"
|
||||
#include "BKE_idprop.h"
|
||||
#include "BKE_layer.h"
|
||||
#include "BKE_node.h"
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
#include "UI_resources.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_path.h"
|
||||
#include "BKE_camera.h"
|
||||
#include "BKE_constraint.h"
|
||||
#include "BKE_curve.h"
|
||||
|
@ -32,7 +32,7 @@
|
||||
#include "DNA_modifier_types.h"
|
||||
#include "DNA_particle_types.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_duplilist.h"
|
||||
|
||||
#include "GPU_batch.h"
|
||||
#include "GPU_shader.h"
|
||||
|
@ -31,10 +31,10 @@
|
||||
|
||||
#include "BLF_api.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_colortools.h"
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_duplilist.h"
|
||||
#include "BKE_editmesh.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_gpencil.h"
|
||||
|
@ -22,8 +22,8 @@
|
||||
|
||||
#include "draw_manager.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_duplilist.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_image.h"
|
||||
#include "BKE_mesh.h"
|
||||
|
@ -33,7 +33,7 @@
|
||||
#include "DNA_scene_types.h"
|
||||
|
||||
#include "BKE_action.h"
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_visualization.h"
|
||||
#include "BKE_armature.h"
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_deform.h"
|
||||
|
@ -53,7 +53,6 @@
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "BKE_action.h"
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_armature.h"
|
||||
#include "BKE_camera.h"
|
||||
@ -62,6 +61,7 @@
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_displist.h"
|
||||
#include "BKE_duplilist.h"
|
||||
#include "BKE_effect.h"
|
||||
#include "BKE_font.h"
|
||||
#include "BKE_gpencil_geom.h"
|
||||
|
@ -54,7 +54,7 @@
|
||||
|
||||
#include "IMB_imbuf_types.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_anim_visualization.h"
|
||||
#include "BKE_collection.h"
|
||||
#include "BKE_constraint.h"
|
||||
#include "BKE_context.h"
|
||||
|
@ -40,7 +40,6 @@
|
||||
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_blender_version.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_displist.h"
|
||||
|
@ -44,8 +44,8 @@
|
||||
#include "GPU_immediate.h"
|
||||
#include "GPU_state.h"
|
||||
|
||||
#include "BKE_anim.h" /* for duplis */
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_duplilist.h"
|
||||
#include "BKE_editmesh.h"
|
||||
#include "BKE_layer.h"
|
||||
#include "BKE_main.h"
|
||||
|
@ -38,10 +38,10 @@
|
||||
#include "DNA_screen_types.h"
|
||||
#include "DNA_view3d_types.h"
|
||||
|
||||
#include "BKE_anim.h" /* for duplis */
|
||||
#include "BKE_armature.h"
|
||||
#include "BKE_bvhutils.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_duplilist.h"
|
||||
#include "BKE_editmesh.h"
|
||||
#include "BKE_layer.h"
|
||||
#include "BKE_main.h"
|
||||
|
@ -51,7 +51,7 @@ extern "C" {
|
||||
# include "BLI_winstuff.h"
|
||||
#endif
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_duplilist.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_idprop.h"
|
||||
#include "BKE_layer.h"
|
||||
|
@ -24,8 +24,8 @@
|
||||
#include <string>
|
||||
|
||||
extern "C" {
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_duplilist.h"
|
||||
#include "BKE_key.h"
|
||||
#include "BKE_particle.h"
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
#include <pxr/base/tf/stringUtils.h>
|
||||
|
||||
extern "C" {
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_duplilist.h"
|
||||
|
||||
#include "BLI_assert.h"
|
||||
|
||||
|
@ -27,7 +27,6 @@ extern "C" {
|
||||
#include "BLI_assert.h"
|
||||
#include "BLI_math_vector.h"
|
||||
|
||||
#include "BKE_anim.h"
|
||||
#include "BKE_customdata.h"
|
||||
#include "BKE_lib_id.h"
|
||||
#include "BKE_material.h"
|
||||
|
@ -43,7 +43,7 @@
|
||||
# include "BLI_iterator.h"
|
||||
# include "BLI_math.h"
|
||||
|
||||
# include "BKE_anim.h"
|
||||
# include "BKE_duplilist.h"
|
||||
# include "BKE_object.h"
|
||||
# include "BKE_scene.h"
|
||||
|
||||
|
@ -63,7 +63,6 @@ static const EnumPropertyItem space_items[] = {
|
||||
|
||||
# include "BLI_math.h"
|
||||
|
||||
# include "BKE_anim.h"
|
||||
# include "BKE_bvhutils.h"
|
||||
# include "BKE_constraint.h"
|
||||
# include "BKE_context.h"
|
||||
|
Loading…
Reference in New Issue
Block a user