HBone.h

Go to the documentation of this file.
00001 // BC  12/1/2004  \BobL120\Include\SDK\HBone.h
00002 
00003 #define __HBONE_H
00004 
00005 #ifndef __HPROPERT_H
00006 #include "HPropert.h"
00007 #endif
00008 
00009 #ifndef _SMALLPDB
00010 
00011 enum  RollMethod { Z_SINGULARITY, Y_POLES_SINGULARITY, ROLL_HISTORY };
00012 
00013 //*********************************************************
00014 //** HBoneCache
00015 //*********************************************************
00016 class PLUGINEXPORT HBoneCache : public HHashObject
00017 {
00018 public:
00019 // Properties
00020    HTypeProperty   *GetRollMethod(); enum RollMethod { Z_SINGULARITY, Y_POLES_SINGULARITY, ROLL_HISTORY };
00021    HBoolProperty   *GetChained();
00022    HTypeProperty   *GetManipulationMethod(); enum { MANIP_STANDARD, MANIP_TRANSLATEONLY, MANIP_ROTATEONLY };
00023    //missing some
00024    HBoolCategoryProperty* GetLimitManipulators();
00025    HBoolProperty   *GetAllowXTranslate();
00026    HBoolProperty   *GetAllowYTranslate();
00027    HBoolProperty   *GetAllowZTranslate();
00028    HBoolProperty   *GetAllowXScale();
00029    HBoolProperty   *GetAllowYScale();
00030    HBoolProperty   *GetAllowZScale();
00031    HBoolProperty   *GetAllowXRotate();
00032    HBoolProperty   *GetAllowYRotate();
00033    HBoolProperty   *GetAllowZRotate();
00034    
00035    HBoolProperty   *GetStop();
00036    //new way
00037    HVectorProperty *GetPivot();
00038    HVectorProperty *GetEnd();
00039    HRotateProperty *GetRotate();//maybe needs a better name sets the angle of bone with no motion
00040    HFloatProperty  *GetLength();
00041    Vector           GetRollHandle(); // For 8.5 backward compatibility
00042    
00043    void SetBoneColor(ColorBuf &color);
00044    ColorBuf GetBoneColor();
00045 
00046    Vector *GetBounds();
00047          
00048 // Traversal
00049    HBoneCache *GetSiblingBoneCache();
00050    HBoneCache *GetChildBoneCache();
00051    HBoneCache *GetParentBoneCache();
00052 
00053 // Operations
00054    const Matrix34 &GetBoneToStandard();
00055 
00056    HBone *GetCurrentBone();  // returns the state variable containing the instance currently being drawn.
00057 };
00058 
00059 //*********************************************************
00060 //** HBoneCacheContainer
00061 //*********************************************************
00062 class PLUGINEXPORT HBoneCacheContainer : public HHashObject
00063 {
00064 public:
00065    static HBoneCacheContainer *New();
00066    HBoneCache *GetChildBoneCache();
00067 };
00068 
00069 //*********************************************************
00070 //** HBone
00071 //*********************************************************
00072 class PLUGINEXPORT HBone : public HHashObject
00073 {
00074 public:
00075 // Properties
00076    HTransformProperty *GetTransform();
00077    HTypeProperty  *GetRollMethod();
00078    HBoolProperty  *GetStop();
00079    HBoolProperty  *GetHidden();
00080    
00081    
00082 //Traversal
00083    HBone *GetSiblingBone();
00084    HBone *GetChildBone();
00085    HBone *GetParentBone();
00086    HBoneCache *GetBoneCache();
00087    
00088    Matrix34 GetLocalMatrix();
00089    Matrix34 GetGlobalMatrix();
00090    void GetLocalTSQ(Vector &translate, Vector &scale, Quaternion &quat);
00091    void GetLocalTSE(Vector &translate, Vector &scale, RotateEuler &re);
00092 
00093    void ComputeBoneDirections(Vector &bonedir, Vector &rolldir, Vector &parentbonedir, Vector &parentrolldir);
00094    const Matrix34 &GetStandardToAction();
00095 
00096    void SetLocalMatrix(Time time, const Matrix34 &matrix);
00097    void SetLocalTSQ(Time time, const Vector &translate, const Vector &scale, const Quaternion &quat);
00098    void SetLocalTSE(Time time, const Vector &translate, const Vector &scale, const RotateEuler &re);
00099    
00100    Vector *GetBounds(); //   Vector        bounds[8]; 
00101 
00102    const Matrix34 &GetBoneToStandardMatrix();
00103    const Matrix34 &GetStandardToBoneMatrix();
00104    const Matrix34 &GetModelToWorldMatrix();
00105    const Matrix34 &GetWorldToModelMatrix();
00106    const Matrix34 &GetModelToScreenMatrix();
00107    const Matrix34 &GetScreenToModelMatrix();
00108 };
00109 
00110 //*********************************************************
00111 //** HBoneContainer
00112 //*********************************************************
00113 class PLUGINEXPORT HBoneContainer : public HHashObject
00114 {
00115 public:
00116    HBone *GetChildBone();
00117 };
00118 
00119 #endif

This A:M SDK v12.0 documentation is maintained by Hash Inc. Please address any comments concerning this documentation to AMReports. If you have any information, knowledge, or documentation to share with the A:M developer community, please post them on the Hash SDK forum.

Generated on Thu Oct 27 11:46:45 2005 with doxygen 1.4.5 written by Dimitri van Heesch, © 1997-2001