1 //****************************************************************************// 2 // coreskeleton.h // 3 // Copyright (C) 2001, 2002 Bruno 'Beosil' Heidelberger // 4 //****************************************************************************// 5 // This library is free software; you can redistribute it and/or modify it // 6 // under the terms of the GNU Lesser General Public License as published by // 7 // the Free Software Foundation; either version 2.1 of the License, or (at // 8 // your option) any later version. // 9 //****************************************************************************// 10 11 #ifndef CAL_CORESKELETON_H 12 #define CAL_CORESKELETON_H 13 14 #include "cal3d/global.h" 15 #include "cal3d/refcounted.h" 16 #include "cal3d/refptr.h" 17 18 19 class CalCoreBone; 20 class CalCoreModel; 21 22 23 class CAL3D_API CalCoreSkeleton : public cal3d::RefCounted 24 { 25 protected: 26 ~CalCoreSkeleton(); 27 28 public: 29 CalCoreSkeleton(); 30 31 int addCoreBone(CalCoreBone *pCoreBone); 32 void calculateState(); 33 CalCoreBone* getCoreBone(int coreBoneId); 34 CalCoreBone* getCoreBone(const std::string& strName); 35 int getCoreBoneId(const std::string& strName); 36 bool mapCoreBoneName(int coreBoneId, const std::string& strName); 37 std::vector<int>& getVectorRootCoreBoneId(); 38 std::vector<CalCoreBone *>& getVectorCoreBone(); 39 void calculateBoundingBoxes(CalCoreModel * pCoreModel); 40 void scale(float factor); 41 42 private: 43 std::vector<CalCoreBone *> m_vectorCoreBone; 44 std::map< std::string, int > m_mapCoreBoneNames; 45 std::vector<int> m_vectorRootCoreBoneId; 46 }; 47 typedef cal3d::RefPtr<CalCoreSkeleton> CalCoreSkeletonPtr; 48 49 #endif 50 51 //****************************************************************************// 52