- Cal3D 0.9 API Reference -

Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class 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 Wed Apr 7 16:57:16 2004 by The Cal3D Team with 1.3.6 © 1997-2001 Dimitri van Heesch