- Cal3D 0.9 API Reference -

Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   Related Pages  

submesh.h

00001 //****************************************************************************//
00002 // submesh.h                                                                  //
00003 // Copyright (C) 2001, 2002 Bruno 'Beosil' Heidelberger                       //
00004 //****************************************************************************//
00005 // This library is free software; you can redistribute it and/or modify it    //
00006 // under the terms of the GNU Lesser General Public License as published by   //
00007 // the Free Software Foundation; either version 2.1 of the License, or (at    //
00008 // your option) any later version.                                            //
00009 //****************************************************************************//
00010 
00011 #ifndef CAL_SUBMESH_H
00012 #define CAL_SUBMESH_H
00013 
00014 //****************************************************************************//
00015 // Includes                                                                   //
00016 //****************************************************************************//
00017 
00018 #include "cal3d/global.h"
00019 #include "cal3d/vector.h"
00020 
00021 //****************************************************************************//
00022 // Forward declarations                                                       //
00023 //****************************************************************************//
00024 
00025 class CalCoreSubmesh;
00026 
00027 //****************************************************************************//
00028 // Class declaration                                                          //
00029 //****************************************************************************//
00030 
00031  /*****************************************************************************/
00035 class CAL3D_API CalSubmesh
00036 {
00037 // misc
00038 public:
00040   typedef struct
00041   {
00042     CalVector position;
00043     CalVector positionOld;
00044     CalVector force;
00045   } PhysicalProperty;
00046 
00048   struct TangentSpace
00049   {
00050     CalVector tangent;
00051     float crossFactor;
00052   };
00053 
00054 
00056   typedef struct
00057   {
00058     CalIndex vertexId[3];
00059   } Face;
00060 
00061 // member variables
00062 protected:
00063   CalCoreSubmesh *m_pCoreSubmesh;
00064   std::vector<float> m_vectorMorphTargetWeight;
00065   std::vector<CalVector> m_vectorVertex;
00066   std::vector<CalVector> m_vectorNormal;
00067   std::vector<std::vector<TangentSpace> > m_vectorvectorTangentSpace;
00068   std::vector<Face> m_vectorFace;
00069   std::vector<PhysicalProperty> m_vectorPhysicalProperty;
00070   int m_vertexCount;
00071   int m_faceCount;
00072   int m_coreMaterialId;
00073   bool m_bInternalData;
00074 
00075 // constructors/destructor
00076 public:
00077   CalSubmesh();
00078   virtual ~CalSubmesh();
00079 
00080 // member functions 
00081 public:
00082   bool create(CalCoreSubmesh *pCoreSubmesh);
00083   void destroy();
00084   CalCoreSubmesh *getCoreSubmesh();
00085   int getCoreMaterialId();
00086   int getFaceCount();
00087   int getFaces(CalIndex *pFaceBuffer);
00088   std::vector<CalVector>& getVectorNormal();
00089   std::vector<std::vector<TangentSpace> >& getVectorVectorTangentSpace();
00090   std::vector<PhysicalProperty>& getVectorPhysicalProperty();
00091   std::vector<CalVector>& getVectorVertex();
00092   int getVertexCount();
00093   bool hasInternalData();
00094   void disableInternalData();
00095   void setCoreMaterialId(int coreMaterialId);
00096   void setLodLevel(float lodLevel);
00097   bool isTangentsEnabled(int mapId);
00098   bool enableTangents(int mapId, bool enabled);
00099   std::vector<float>& getVectorWeight();
00100   void setMorphTargetWeight(int blendId,float weight);
00101   float getMorphTargetWeight(int blendId);
00102   float getBaseWeight();
00103   int getMorphTargetWeightCount();
00104   std::vector<float>& getVectorMorphTargetWeight();
00105 
00106 };
00107 
00108 #endif
00109 
00110 //****************************************************************************//

Generated at Sun Oct 12 18:38:48 2003 by The Cal3D Team with doxygen 1.2.14 © 1997-2001 Dimitri van Heesch