00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef _CONSTRAINT_H
00013 #define _CONSTRAINT_H
00014
00015 #include "Template.h"
00016
00017
00018 class CSLModel;
00019
00020
00024 class XSIEXPORT CSLConstraint
00025 : public CSLTemplate
00026 {
00027 public:
00031 enum EConstraintType
00032 {
00033 SI_SCALING,
00034 SI_ORIENTATION,
00035 SI_DIRECTION,
00036 SI_POSITION,
00037 SI_INTEREST,
00038 SI_UP_VECTOR,
00039 SI_PREFERED_AXIS,
00040 };
00041
00048 CSLConstraint(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate, EConstraintType in_ConstraintType);
00049
00052 virtual ~CSLConstraint();
00053
00057 CSLModel* GetReference();
00058
00062 EConstraintType GetConstraintType();
00063
00068 SI_Error AddConstrainingObject(CSLModel* in_pConstrainingObject);
00069
00073 SI_Int GetConstrainingObjectCount();
00074
00078 CSLModel** ConstrainingObjects();
00079
00084 SI_Error RemoveConstrainingObject(SI_Int in_nIndex);
00085
00090 SI_Error RemoveConstrainingObject(CSLModel* in_pConstrainingObject);
00091
00095 SI_Error ClearConstrainingObjects();
00096
00100 CSLConstraint* CreateUpVector();
00101
00105 CSLConstraint* UpVector();
00106
00110 SI_Error DestroyUpVector();
00111
00112
00117 CSLConstraint* ConnectUpVector(CSLConstraint* in_pUpVector);
00118
00123 CSLModel* ConnectConstrainingObject(CSLModel* in_pModel);
00124
00129 virtual SI_Error Synchronize();
00130
00134 virtual ETemplateType Type() { return CSLTemplate::SI_CONSTRAINT; }
00135
00136 private:
00137 CSLStrEnumProxy<EConstraintType, SI_PREFERED_AXIS> m_ConstraintType;
00138 CSIBCArray<CSLModel *> m_ConstrainingModels;
00139 CSLConstraint* m_pUpVector;
00140
00141 void *m_pReserved;
00142 };
00143
00144 #endif