packages feed

cal3d-0.1: c++/cal3d_c.h

/* File: cal3d_c.h */

#ifndef CAL3D_C_H
#define CAL3D_C_H

#ifdef __cplusplus
extern "C" {
#endif

  /* ----------------------------------------------------------------------
     All object types declared here 
     ---------------------------------------------------------------------- */

  typedef struct CoreModelS CoreModelS;
  typedef CoreModelS * CoreModelP;

  typedef struct MixerS MixerS;
  typedef MixerS * MixerP;

  typedef struct ModelS ModelS;
  typedef ModelS * ModelP;

  typedef struct RendererS RendererS;
  typedef RendererS * RendererP;


  /* ----------------------------------------------------------------------
  /* Methods of class CalCoreModel 
     (see coremodel.h in the Cal3D source code) 
     ---------------------------------------------------------------------- */


  CoreModelP newCoreModel (char * name);
  void deleteCoreModel (CoreModelP model);

  int loadCoreSkeleton (CoreModelP model, char * path);
  int loadCoreAnimation (CoreModelP model, char * path);
  int loadCoreMesh (CoreModelP model, char * path);
  int loadCoreMaterial(CoreModelP model, char * path);
  int createCoreMaterialThread(CoreModelP model, int matl_thread_id);
  int setCoreMaterialId(CoreModelP model, int matl_thread, int matl_set,
			int matl_id);

  /* ----------------------------------------------------------------------
     Methods of class CalMixer
     (see mixer.h in the Cal3D source code) 
     ---------------------------------------------------------------------- */



  MixerP newMixer (ModelP model);
  void deleteMixer (MixerP mixer);

  int blendCycle(MixerP mixer, int id, float weight, float delay);
  int clearCycle (MixerP mixer, int id, float delay);
  int executeAction (MixerP mixer, int id, float delayIn, float delayOut,
		     float weightTarget, int autoLock);

  /* ----------------------------------------------------------------------
     Methods of class CalModel 
     (see model.h in the Cal3D source code) 
     ---------------------------------------------------------------------- */

  ModelP newModel (CoreModelP coreModel);
  void deleteModel (ModelP model);

  int attachMesh (ModelP model, int coreMeshId);
  void setLodLevel (ModelP model, float lodLevel);
  void setMaterialSet (ModelP model, int setId);
  
  MixerP getMixer (ModelP model);

  void update (ModelP model, float deltaTime); /* seconds */

  RendererP getRenderer (ModelP model);

  /* ----------------------------------------------------------------------
     Methods of class CalRenderer
     (see renderer.h in the Cal3D source code)
     ---------------------------------------------------------------------- */

  RendererP newRenderer (ModelP model);
  void deleteRenderer(RendererP renderer);

  int beginRendering (RendererP renderer);
  void endRendering (RendererP renderer);

  void getAmbientColor(RendererP renderer, unsigned char *pColorBuffer);
  void getDiffuseColor(RendererP renderer, unsigned char *pColorBuffer);
  void getSpecularColor(RendererP renderer, unsigned char *pColorBuffer);

  float getShininess (RendererP renderer);

  /*
  int getMapCount(RendererP renderer);
  Cal::UserData getMapUserData(RendererP renderer, int mapId);
  */

  int getMeshCount(RendererP renderer);

  /*
  float getShininess(RendererP renderer);
  void getSpecularColor(RendererP renderer, unsigned char *pColorBuffer);
  */

  int getSubmeshCount(RendererP renderer, int meshId);

  /*
  int getTextureCoordinates(RendererP renderer, int mapId, 
			    float *pTextureCoordinateBuffer, int stride);
  */


  int getFaceCount(RendererP renderer);
  int getFaces(RendererP renderer, CalIndex *pFaceBuffer);

  int getVertexCount(RendererP renderer);
  /* C++ default stride = 0 */
  int getVertices(RendererP renderer, float *pVertexBuffer, int stride);
  /* C++ default stride = 0 */
  int getNormals(RendererP renderer, float *pNormalBuffer, int stride); 

  /*
  int getTangentSpaces(RendererP renderer, int mapId, 
		       float *pTangentSpaceBuffer, int stride);
  int getVerticesAndNormals(RendererP renderer, 
			    float *pVertexBuffer, int stride);
  int getVerticesNormalsAndTexCoords(RendererP renderer, 
				     float *pVertexBuffer,int NumTexCoords);
  bool isTangentsEnabled(RendererP renderer, int mapId);
  */

  /* int interpreted as bool */
  int selectMeshSubmesh(RendererP renderer, int meshId, int submeshId);

  /*
  void setNormalization(RendererP renderer, bool normalize);
  */

  /* --------------------------------------------------------------------
     DEBUG AID
     -------------------------------------------------------------------- */


  int calVectorSize ();

  void dumpVertices (RendererP renderer);


#ifdef __cplusplus
}
#endif

#endif