#ifndef TCACONSTRAINT_H__
#define TCACONSTRAINT_H__

enum
{
	ID_CA_CONSTRAINT_TAG_PSR_OFFSET_GROUP = 5000,
	ID_CA_CONSTRAINT_TAG_PSR_CONSTRAIN_GROUP,
	ID_CA_CONSTRAINT_TAG_AIM_OFFSET_GROUP,
	ID_CA_CONSTRAINT_TAG_AIM_CONSTRAIN_GROUP,
	ID_CA_CONSTRAINT_TAG_UP_OFFSET_GROUP,
	ID_CA_CONSTRAINT_TAG_UP_CONSTRAIN_GROUP,
	ID_CA_CONSTRAINT_TAG_PARENT_OFFSET_GROUP,
	ID_CA_CONSTRAINT_TAG_MIRROR_OFFSET_GROUP,
	ID_CA_CONSTRAINT_TAG_SPRING_OFFSET_GROUP,
	ID_CA_CONSTRAINT_TAG_GROUP,

	ID_CA_CONSTRAINT_TAG_PSR_GROUP = 6000, // order must be kept to match ID_CA_CONSTRAINT_TAG_xxx_ADD
	ID_CA_CONSTRAINT_TAG_AIM_GROUP,
	ID_CA_CONSTRAINT_TAG_PARENT_GROUP,
	ID_CA_CONSTRAINT_TAG_UP_GROUP,
	ID_CA_CONSTRAINT_TAG_CLAMP_GROUP,
	ID_CA_CONSTRAINT_TAG_SPRING_GROUP,
	ID_CA_CONSTRAINT_TAG_MIRROR_GROUP,
	ID_CA_CONSTRAINT_TAG_COLLISION_GROUP,

	ID_CA_CONSTRAINT_TAG_PSR = 1000, // order must be kept to match ID_CA_CONSTRAINT_TAG_xxx_ADD
	ID_CA_CONSTRAINT_TAG_AIM,
	ID_CA_CONSTRAINT_TAG_PARENT,
	ID_CA_CONSTRAINT_TAG_UP,
	ID_CA_CONSTRAINT_TAG_CLAMP,
	ID_CA_CONSTRAINT_TAG_SPRING,
	ID_CA_CONSTRAINT_TAG_MIRROR,
	ID_CA_CONSTRAINT_TAG_COLLISION,
	ID_CA_CONSTRAINT_TAG_END,

	ID_CA_CONSTRAINT_TAG_FRAMEUPDATE = 1500,

	ID_CA_CONSTRAINT_TAG_AIM_MAINTAIN = 2000,
	ID_CA_CONSTRAINT_TAG_AIM_CONSTRAIN_X,
	ID_CA_CONSTRAINT_TAG_AIM_CONSTRAIN_Y,
	ID_CA_CONSTRAINT_TAG_AIM_CONSTRAIN_Z,
	ID_CA_CONSTRAINT_TAG_AIM_OFFSET,
	ID_CA_CONSTRAINT_TAG_AIM_AXIS,
	ID_CA_CONSTRAINT_TAG_AIM_TWEIGHT,

	ID_CA_CONSTRAINT_TAG_PSR_MAINTAIN = 2100,
	ID_CA_CONSTRAINT_TAG_PSR_CONSTRAIN_P_X,
	ID_CA_CONSTRAINT_TAG_PSR_CONSTRAIN_P_Y,
	ID_CA_CONSTRAINT_TAG_PSR_CONSTRAIN_P_Z,
	ID_CA_CONSTRAINT_TAG_PSR_CONSTRAIN_S_X,
	ID_CA_CONSTRAINT_TAG_PSR_CONSTRAIN_S_Y,
	ID_CA_CONSTRAINT_TAG_PSR_CONSTRAIN_S_Z,
	ID_CA_CONSTRAINT_TAG_PSR_CONSTRAIN_R_X,
	ID_CA_CONSTRAINT_TAG_PSR_CONSTRAIN_R_Y,
	ID_CA_CONSTRAINT_TAG_PSR_CONSTRAIN_R_Z,
	ID_CA_CONSTRAINT_TAG_PSR_P_OFFSET,
	ID_CA_CONSTRAINT_TAG_PSR_S_OFFSET,
	ID_CA_CONSTRAINT_TAG_PSR_R_OFFSET,
	ID_CA_CONSTRAINT_TAG_PSR_P,
	ID_CA_CONSTRAINT_TAG_PSR_S,
	ID_CA_CONSTRAINT_TAG_PSR_R,
	ID_CA_CONSTRAINT_TAG_PSR_TWEIGHT,
	ID_CA_CONSTRAINT_TAG_LOCAL_P,
	ID_CA_CONSTRAINT_TAG_LOCAL_S,
	ID_CA_CONSTRAINT_TAG_LOCAL_R,

	ID_CA_CONSTRAINT_TAG_PARENT_P = 2200,
	ID_CA_CONSTRAINT_TAG_PARENT_S,
	ID_CA_CONSTRAINT_TAG_PARENT_R,
	ID_CA_CONSTRAINT_TAG_PARENT_TWEIGHT,
	ID_CA_CONSTRAINT_TAG_PARENT_PDIRTY,
	ID_CA_CONSTRAINT_TAG_PARENT_PMATRIX,
	ID_CA_CONSTRAINT_TAG_PARENT_MAINTAIN,
	ID_CA_CONSTRAINT_TAG_PARENT_P_OFFSET,
	ID_CA_CONSTRAINT_TAG_PARENT_S_OFFSET,
	ID_CA_CONSTRAINT_TAG_PARENT_R_OFFSET,
	ID_CA_CONSTRAINT_TAG_PARENT_FROZEN,
	ID_CA_CONSTRAINT_TAG_PARENT_RESET,
	ID_CA_CONSTRAINT_TAG_PARENT_USEABSOLUTE,
	ID_CA_CONSTRAINT_TAG_PARENT_INTERACTIVEOFFSET,
	ID_CA_CONSTRAINT_TAG_PARENT_P_LOCALTRANFORM,
	ID_CA_CONSTRAINT_TAG_PARENT_S_LOCALTRANFORM,
	ID_CA_CONSTRAINT_TAG_PARENT_R_LOCALTRANFORM,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_ROTORDER,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_UPDATEBUTTON,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_RECORDBUTTON,

	ID_CA_CONSTRAINT_TAG_UP_MAINTAIN = 2300,
	ID_CA_CONSTRAINT_TAG_UP_CONSTRAIN_X,
	ID_CA_CONSTRAINT_TAG_UP_CONSTRAIN_Y,
	ID_CA_CONSTRAINT_TAG_UP_CONSTRAIN_Z,
	ID_CA_CONSTRAINT_TAG_UP_OFFSET,
	ID_CA_CONSTRAINT_TAG_UP_AXIS,
	ID_CA_CONSTRAINT_TAG_UP_TWEIGHT,
	ID_CA_CONSTRAINT_TAG_UP_ROT_AXIS,

	ID_CA_CONSTRAINT_TAG_CLAMP_TWEIGHT = 2400,
	ID_CA_CONSTRAINT_TAG_CLAMP_MODE,
	ID_CA_CONSTRAINT_TAG_CLAMP_TO,
	ID_CA_CONSTRAINT_TAG_CLAMP_ALIGN,
	ID_CA_CONSTRAINT_TAG_CLAMP_ALIGN_TO,
	ID_CA_CONSTRAINT_TAG_CLAMP_AXIS,
	ID_CA_CONSTRAINT_TAG_CLAMP_PLANE,
	ID_CA_CONSTRAINT_TAG_CLAMP_STICK,
	ID_CA_CONSTRAINT_TAG_CLAMP_DISTANCE,
	ID_CA_CONSTRAINT_TAG_CLAMP_COLOR,
	ID_CA_CONSTRAINT_TAG_CLAMP_SHOW,
	ID_CA_CONSTRAINT_TAG_CLAMP_NORMALS,

	ID_CA_CONSTRAINT_TAG_SPRING_TWEIGHT = 2500,
	ID_CA_CONSTRAINT_TAG_SPRING_LENGTH,
	ID_CA_CONSTRAINT_TAG_SPRING_STIFFNESS,
	ID_CA_CONSTRAINT_TAG_SPRING_DRAG,
	ID_CA_CONSTRAINT_TAG_SPRING_P,
	ID_CA_CONSTRAINT_TAG_SPRING_S,
	ID_CA_CONSTRAINT_TAG_SPRING_R,
	ID_CA_CONSTRAINT_TAG_DELETED_1,
	ID_CA_CONSTRAINT_TAG_SPRING_GRAVITY,
	ID_CA_CONSTRAINT_TAG_SPRING_P_OFFSET,
	ID_CA_CONSTRAINT_TAG_SPRING_S_OFFSET,
	ID_CA_CONSTRAINT_TAG_SPRING_R_OFFSET,

	ID_CA_CONSTRAINT_TAG_MIRROR_P_OFFSET = 2601,
	ID_CA_CONSTRAINT_TAG_MIRROR_R_OFFSET,
	ID_CA_CONSTRAINT_TAG_MIRROR_P,
	ID_CA_CONSTRAINT_TAG_MIRROR_R,
	ID_CA_CONSTRAINT_TAG_MIRROR_TWEIGHT,
	ID_CA_CONSTRAINT_TAG_MIRROR_ORIGIN_LINK,
	ID_CA_CONSTRAINT_TAG_MIRROR_ORIGIN,
	ID_CA_CONSTRAINT_TAG_MIRROR_PLANE,
	ID_CA_CONSTRAINT_TAG_MIRROR_AXIS,

	ID_CA_CONSTRAINT_TAG_COLLISION_TWEIGHT = 2700,
	ID_CA_CONSTRAINT_TAG_COLLISION_TARGETS,

	ID_CA_CONSTRAINT_TAG_GROUPS = 120000,	// FIX[25844] - clashed with ID 110050
	ID_CA_CONSTRAINT_TAG_GROUPS_END = 125000,

	ID_CA_CONSTRAINT_TAG_DYNAMIC_IDS = 130000,
	ID_CA_CONSTRAINT_TAG_DYNAMIC_IDS_END = 135000,

	//////////////////////////////////////////////////////////////////////////

	 // orders must be kept to match ID_CA_CONSTRAINT_TAG_xxx_ADD

	ID_CA_CONSTRAINT_TAG_PSR_CONTAINER = 6500,
	ID_CA_CONSTRAINT_TAG_AIM_CONTAINER,
	ID_CA_CONSTRAINT_TAG_PARENT_CONTAINER,
	ID_CA_CONSTRAINT_TAG_UP_CONTAINER,
	ID_CA_CONSTRAINT_TAG_CLAMP_CONTAINER,
	ID_CA_CONSTRAINT_TAG_SPRING_CONTAINER,
	ID_CA_CONSTRAINT_TAG_MIRROR_CONTAINER,

	ID_CA_CONSTRAINT_TAG_PSR_TARGETS_GROUP = 7000,
	ID_CA_CONSTRAINT_TAG_AIM_TARGETS_GROUP,
	ID_CA_CONSTRAINT_TAG_PARENT_TARGETS_GROUP,
	ID_CA_CONSTRAINT_TAG_UP_TARGETS_GROUP,
	ID_CA_CONSTRAINT_TAG_CLAMP_TARGETS_GROUP,
	ID_CA_CONSTRAINT_TAG_SPRING_TARGETS_GROUP,
	ID_CA_CONSTRAINT_TAG_MIRROR_TARGETS_GROUP,
	ID_CA_CONSTRAINT_TAG_COLLISION_TARGETS_GROUP,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANSFORM_GROUP,

	ID_CA_CONSTRAINT_TAG_PSR_SUBGROUP = 7500,
	ID_CA_CONSTRAINT_TAG_AIM_SUBGROUP,
	ID_CA_CONSTRAINT_TAG_PARENT_SUBGROUP,
	ID_CA_CONSTRAINT_TAG_UP_SUBGROUP,
	ID_CA_CONSTRAINT_TAG_CLAMP_SUBGROUP,
	ID_CA_CONSTRAINT_TAG_SPRING_SUBGROUP,
	ID_CA_CONSTRAINT_TAG_MIRROR_SUBGROUP,

	ID_CA_CONSTRAINT_TAG_PSR_LINK = 8000,
	ID_CA_CONSTRAINT_TAG_AIM_LINK,
	ID_CA_CONSTRAINT_TAG_PARENT_LINK,
	ID_CA_CONSTRAINT_TAG_UP_LINK,
	ID_CA_CONSTRAINT_TAG_CLAMP_LINK,
	ID_CA_CONSTRAINT_TAG_SPRING_LINK,
	ID_CA_CONSTRAINT_TAG_MIRROR_LINK,

	ID_CA_CONSTRAINT_TAG_PSR_WEIGHT = 8500,
	ID_CA_CONSTRAINT_TAG_AIM_WEIGHT,
	ID_CA_CONSTRAINT_TAG_PARENT_WEIGHT,
	ID_CA_CONSTRAINT_TAG_UP_WEIGHT,
	ID_CA_CONSTRAINT_TAG_CLAMP_WEIGHT,
	ID_CA_CONSTRAINT_TAG_SPRING_WEIGHT,
	ID_CA_CONSTRAINT_TAG_MIRROR_WEIGHT,

	ID_CA_CONSTRAINT_TAG_PSR_ADD = 9000,
	ID_CA_CONSTRAINT_TAG_AIM_ADD,
	ID_CA_CONSTRAINT_TAG_PARENT_ADD,
	ID_CA_CONSTRAINT_TAG_UP_ADD,
	ID_CA_CONSTRAINT_TAG_CLAMP_ADD,
	ID_CA_CONSTRAINT_TAG_SPRING_ADD,
	ID_CA_CONSTRAINT_TAG_MIRROR_ADD,
	ID_CA_CONSTRAINT_TAG_COLLISION_ADD,

	ID_CA_CONSTRAINT_TAG_ADD_END,

	ID_CA_CONSTRAINT_TAG_PSR_REMOVE = 9500,
	ID_CA_CONSTRAINT_TAG_AIM_REMOVE,
	ID_CA_CONSTRAINT_TAG_PARENT_REMOVE,
	ID_CA_CONSTRAINT_TAG_UP_REMOVE,
	ID_CA_CONSTRAINT_TAG_CLAMP_REMOVE,
	ID_CA_CONSTRAINT_TAG_SPRING_REMOVE,
	ID_CA_CONSTRAINT_TAG_MIRROR_REMOVE,

	ID_CA_CONSTRAINT_TAG_REMOVE_END,

	ID_CA_CONSTRAINT_TAG_PSR_TARGET_COUNT = 10000,
	ID_CA_CONSTRAINT_TAG_PSR_TARGET_COUNT_END = 19999,

	ID_CA_CONSTRAINT_TAG_AIM_TARGET_COUNT = 20000,
	ID_CA_CONSTRAINT_TAG_AIM_TARGET_COUNT_END = 29999,

	ID_CA_CONSTRAINT_TAG_PARENT_TARGET_COUNT = 30000,
	ID_CA_CONSTRAINT_TAG_PARENT_TARGET_COUNT_END = 39999,

	ID_CA_CONSTRAINT_TAG_UP_TARGET_COUNT = 40000,
	ID_CA_CONSTRAINT_TAG_UP_TARGET_COUNT_END = 49999,

	ID_CA_CONSTRAINT_TAG_CLAMP_TARGET_COUNT = 50000,
	ID_CA_CONSTRAINT_TAG_CLAMP_TARGET_COUNT_END = 59999,

	ID_CA_CONSTRAINT_TAG_SPRING_TARGET_COUNT = 60000,
	ID_CA_CONSTRAINT_TAG_SPRING_TARGET_COUNT_END = 69999,

	ID_CA_CONSTRAINT_TAG_MIRROR_TARGET_COUNT = 70000,
	ID_CA_CONSTRAINT_TAG_MIRROR_TARGET_COUNT_END = 79999,

	//////////////////////////////////////////////////////////////////////////

	ID_CA_CONSTRAINT_TAG_AXIS_XP = 0,
	ID_CA_CONSTRAINT_TAG_AXIS_YP = 1,
	ID_CA_CONSTRAINT_TAG_AXIS_ZP = 2,
	ID_CA_CONSTRAINT_TAG_AXIS_XM = 3,
	ID_CA_CONSTRAINT_TAG_AXIS_YM = 4,
	ID_CA_CONSTRAINT_TAG_AXIS_ZM = 5,

	ID_CA_CONSTRAINT_TAG_AXIS_X = 0,
	ID_CA_CONSTRAINT_TAG_AXIS_Y = 1,
	ID_CA_CONSTRAINT_TAG_AXIS_Z = 2,

	ID_CA_CONSTRAINT_TAG_CLAMP_ALIGN_NONE = 0,
	ID_CA_CONSTRAINT_TAG_CLAMP_ALIGN_TO_CONSTRAINT,
	ID_CA_CONSTRAINT_TAG_CLAMP_ALIGN_TO_NORMAL,
	ID_CA_CONSTRAINT_TAG_CLAMP_ALIGN_TO_TANGENT,
	ID_CA_CONSTRAINT_TAG_CLAMP_ALIGN_TO_PLYNORMAL,

	ID_CA_CONSTRAINT_TAG_CLAMP_TO_ORIGIN = 0,
	ID_CA_CONSTRAINT_TAG_CLAMP_TO_AXIS,
	ID_CA_CONSTRAINT_TAG_CLAMP_TO_PLANE,
	ID_CA_CONSTRAINT_TAG_CLAMP_TO_POINT,
	ID_CA_CONSTRAINT_TAG_CLAMP_TO_SURFACE,
	ID_CA_CONSTRAINT_TAG_CLAMP_TO_SPLINE,
	ID_CA_CONSTRAINT_TAG_CLAMP_TO_BOUNDS,

	ID_CA_CONSTRAINT_TAG_PLANE_XY = 0,
	ID_CA_CONSTRAINT_TAG_PLANE_YZ,
	ID_CA_CONSTRAINT_TAG_PLANE_XZ,
	ID_CA_CONSTRAINT_TAG_PLANE_MXY,
	ID_CA_CONSTRAINT_TAG_PLANE_MYZ,
	ID_CA_CONSTRAINT_TAG_PLANE_MXZ,

	ID_CA_CONSTRAINT_TAG_CLAMP_MODE_MIN = 0,
	ID_CA_CONSTRAINT_TAG_CLAMP_MODE_MAX,
	ID_CA_CONSTRAINT_TAG_CLAMP_MODE_FIX,
	ID_CA_CONSTRAINT_TAG_CLAMP_MODE_LOCK,

	ID_CA_CONSTRAINT_TAG_MIRROR_ORIGIN_WORLD = 0,
	ID_CA_CONSTRAINT_TAG_MIRROR_ORIGIN_ROOT,
	ID_CA_CONSTRAINT_TAG_MIRROR_ORIGIN_PARENT,
	ID_CA_CONSTRAINT_TAG_MIRROR_ORIGIN_OBJECT,

	ID_CA_CONSTRAINT_TAG_MIRROR_PLANE_XY = 0,
	ID_CA_CONSTRAINT_TAG_MIRROR_PLANE_YZ,
	ID_CA_CONSTRAINT_TAG_MIRROR_PLANE_ZX,

	ID_CA_CONSTRAINT_TAG_MIRROR_AXIS_XY = 0,
	ID_CA_CONSTRAINT_TAG_MIRROR_AXIS_YZ,
	ID_CA_CONSTRAINT_TAG_MIRROR_AXIS_ZX,

	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_ROTORDER_YXZ = 0,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_ROTORDER_YZX = 1,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_ROTORDER_ZYX = 2,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_ROTORDER_ZXY = 3,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_ROTORDER_XZY = 4,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_ROTORDER_XYZ = 5,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_ROTORDER_HPB = 6,

	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_UPDATEALL = 0,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_UPDATEPARENT = 1,

	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_RECORDOPTIMIZED = 0,
	ID_CA_CONSTRAINT_TAG_PARENT_LOCALTRANFORM_RECORDALL = 1,
	//////////////////////////////////////////////////////////////////////////

	ID_CA_CONSTRAINT_TAG_DUMMY,
	
	ID_CA_CONSTRAINT_INITIAL_STATE_MATRIX = 99999,
	ID_CA_CONSTRAINT_TAG_USE_INITIAL_STATE,
	ID_CA_CONSTRAINT_TAG_SET_INITIAL_STATE,
	ID_CA_CONSTRAINT_TAG_INITIAL_SATE_GROUP,
	ID_CA_CONSTRAINT_INITIAL_STATE_VECTOR_P,
	ID_CA_CONSTRAINT_INITIAL_STATE_VECTOR_S,
	ID_CA_CONSTRAINT_INITIAL_STATE_VECTOR_R,
	ID_CA_CONSTRAINT_INITIAL_STATE_VECTOR_SET,
};

#endif // TCACONSTRAINT_H__
