This repository has been archived on 2023-10-09. You can view files and clone it, but cannot push or open issues or pull requests.
Files
blender-archive/source/blender/makesrna/intern/rna_constraint.c
Campbell Barton 04428d6750 added "description" and "readonly" properties to RNA Structs (also accessible via python)
Many descriptions are not written, grep for DOC_BROKEN if you have some spare time to write struct descriptions.
2008-12-19 04:06:24 +00:00

139 lines
5.6 KiB
C

/**
* $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Contributor(s): Blender Foundation (2008), Juho Vepsäläinen
*
* ***** END GPL LICENSE BLOCK *****
*/
#include <stdlib.h>
#include "RNA_define.h"
#include "RNA_types.h"
#include "rna_internal.h"
#include "DNA_constraint_types.h"
#ifdef RNA_RUNTIME
#else
/* base struct for constraints */
void rna_def_constraint_basedata(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
static EnumPropertyItem type_items[] ={
{CONSTRAINT_TYPE_NULL, "NULL", "Null", ""},
{CONSTRAINT_TYPE_CHILDOF, "CHILDOF", "Child Of", ""},
{CONSTRAINT_TYPE_TRACKTO, "TRACKTO", "Track To", ""},
{CONSTRAINT_TYPE_KINEMATIC, "IK", "IK", ""},
{CONSTRAINT_TYPE_FOLLOWPATH, "FOLLOWPATH", "Follow Path", ""},
{CONSTRAINT_TYPE_ROTLIMIT, "LIMITROT", "Limit Rotation", ""},
{CONSTRAINT_TYPE_LOCLIMIT, "LIMITLOC", "Limit Location", ""},
{CONSTRAINT_TYPE_SIZELIMIT, "LIMITSCALE", "Limit Scale", ""},
{CONSTRAINT_TYPE_ROTLIKE, "COPYROT", "Copy Rotation", ""},
{CONSTRAINT_TYPE_LOCLIKE, "COPYLOC", "Copy Location", ""},
{CONSTRAINT_TYPE_SIZELIKE, "COPYSCALE", "Copy Scale", ""},
{CONSTRAINT_TYPE_PYTHON, "SCRIPT", "Script", ""},
{CONSTRAINT_TYPE_ACTION, "ACTION", "Action", ""},
{CONSTRAINT_TYPE_LOCKTRACK, "LOCKTRACK", "Locked Track", ""},
{CONSTRAINT_TYPE_DISTLIMIT, "LIMITDIST", "Limit Distance", ""},
{CONSTRAINT_TYPE_STRETCHTO, "STRETCHTO", "Stretch To", ""},
{CONSTRAINT_TYPE_MINMAX, "FLOOR", "Floor", ""},
{CONSTRAINT_TYPE_RIGIDBODYJOINT, "RIGIDBODYJOINT", "Rigid Body Joint", ""},
{CONSTRAINT_TYPE_CLAMPTO, "CLAMPTO", "Clamp To", ""},
{CONSTRAINT_TYPE_TRANSFORM, "TRANSFORM", "Transformation", ""},
{0, NULL, NULL, NULL}};
static EnumPropertyItem space_items[] ={
{CONSTRAINT_SPACE_WORLD, "WORLD", "World Space", "World/Global space."},
{CONSTRAINT_SPACE_LOCAL, "LOCAL", "Local", "For objects (relative to parent/without parent influence). | For bones (along normals of bone, without parent/restpositions)."},
{CONSTRAINT_SPACE_POSE, "POSE", "Pose", "Pose/Armature space (only for Pose Channels)."},
{CONSTRAINT_SPACE_PARLOCAL, "PARLOCAL", "Local With Parent", "'Local' space with Parent transform taken into account (only for Pose Channels)."},
{0, NULL, NULL, NULL}};
/* data */
srna= RNA_def_struct(brna, "Constraint", NULL );
RNA_def_struct_ui_text(srna, "Constraint", "alter the transformation of 'Objects' or 'Bones' from a number of predefined constraints");
RNA_def_struct_sdna(srna, "bConstraint");
/* strings */
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Name", "");
RNA_def_struct_name_property(srna, prop);
/* enums */
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
RNA_def_property_enum_sdna(prop, NULL, "type");
RNA_def_property_enum_items(prop, type_items);
RNA_def_property_ui_text(prop, "Type", "");
/* flags */
// XXX do we want to wrap this?
prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_EXPAND);
RNA_def_property_ui_text(prop, "Expanded", "Constraint's panel is expanded in UI.");
// XXX this is really an internal flag, but it may be useful for some tools to be able to access this...
prop= RNA_def_property(srna, "disabled", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_DISABLE);
RNA_def_property_ui_text(prop, "Disabled", "Constraint has invalid settings and will not be evaluated.");
// TODO: setting this to true must ensure that all others in stack are turned off too...
prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_ACTIVE);
RNA_def_property_ui_text(prop, "Active", "Constraint is the one being edited ");
prop= RNA_def_property(srna, "own_ipo", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_OWN_IPO);
RNA_def_property_ui_text(prop, "Local IPO", "Constraint has its own IPO data.");
prop= RNA_def_property(srna, "proxy_local", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_PROXY_LOCAL);
RNA_def_property_ui_text(prop, "Proxy Local", "Constraint was added in this proxy instance (i.e. did not belong to source Armature).");
/* pointers */
// err... how to enable this to work, since data pointer can be of various types?
//prop= RNA_def_property(srna, "data", PROP_POINTER, PROP_NONE);
//RNA_def_property_ui_text(prop, "Settings", "Settings specific to this constraint type.");
prop= RNA_def_property(srna, "ipo", PROP_POINTER, PROP_NONE);
RNA_def_property_ui_text(prop, "IPO", "Local IPO data.");
}
/* ---- */
/* ---- */
void RNA_def_constraint(BlenderRNA *brna)
{
/* basic constraint struct (inherited data) */
rna_def_constraint_basedata(brna);
/* add data for specific constraint struct types here... */
}
#endif