1 //****************************************************************************// 2 // cal3d_wrapper.h // 3 // Copyright (C) 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_CAL3D_WRAPPER_H 12 #define CAL_CAL3D_WRAPPER_H 13 14 #ifdef __cplusplus 15 #include "cal3d/global.h" 16 #endif 17 18 //****************************************************************************// 19 // Defines for Win32 and MingW32 // 20 //****************************************************************************// 21 22 #ifdef _WIN32 23 24 #ifdef __MINGW32__ 25 26 #define CAL3D_WRAPPER_API 27 28 #else 29 30 #pragma warning(disable : 4251) 31 #pragma warning(disable : 4786) 32 #pragma warning(disable : 4099) 33 34 #ifdef CAL3D_WRAPPER_EXPORTS 35 #define CAL3D_WRAPPER_API __declspec(dllexport) 36 #else 37 #define CAL3D_WRAPPER_API __declspec(dllimport) 38 #endif 39 40 #endif 41 42 #else 43 44 //****************************************************************************// 45 // Defines for Linux, Cygwin, FreeBSD Sun and Mips... // 46 //****************************************************************************// 47 48 #define CAL3D_WRAPPER_API 49 50 #endif 51 52 //****************************************************************************// 53 // Forward declarations // 54 //****************************************************************************// 55 56 #ifndef CAL3D_WRAPPER_EXPORTS 57 58 struct CalAnimation; 59 struct CalAnimationAction; 60 struct CalAnimationCycle; 61 struct CalBone; 62 struct CalCoreAnimation; 63 struct CalCoreMorphAnimation; 64 struct CalCoreBone; 65 struct CalCoreKeyframe; 66 struct CalCoreMaterial; 67 struct CalCoreMesh; 68 struct CalCoreModel; 69 struct CalCoreSkeleton; 70 struct CalCoreSubmesh; 71 struct CalCoreTrack; 72 struct CalLoader; 73 struct CalMatrix; 74 struct CalMesh; 75 struct CalMixer; 76 struct CalMorphTargetMixer; 77 struct CalModel; 78 struct CalPhysique; 79 struct CalPlatform; 80 struct CalQuaternion; 81 struct CalRenderer; 82 struct CalSaver; 83 struct CalSkeleton; 84 struct CalSpringSystem; 85 struct CalSubmesh; 86 struct CalVector; 87 88 #ifndef __cplusplus 89 typedef int CalIndex; 90 #endif 91 92 #endif 93 94 95 96 typedef void *CalUserData; 97 98 //****************************************************************************// 99 // Substitute for the C++ 'bool' type // 100 //****************************************************************************// 101 102 #undef True 103 #undef False 104 105 enum Boolean 106 { 107 False = 0, 108 True = 1 109 }; 110 111 //****************************************************************************// 112 // "C" wrapper functions declaration // 113 //****************************************************************************// 114 115 #ifdef __cplusplus 116 extern "C" 117 { 118 #endif 119 120 //****************************************************************************// 121 // CalAnimation wrapper functions declaration // 122 //****************************************************************************// 123 124 CAL3D_WRAPPER_API enum CalAnimationType 125 { 126 ANIMATION_TYPE_NONE = 0, 127 ANIMATION_TYPE_CYCLE, 128 ANIMATION_TYPE_POSE, 129 ANIMATION_TYPE_ACTION 130 }; 131 132 CAL3D_WRAPPER_API enum CalAnimationState 133 { 134 ANIMATION_STATE_NONE = 0, 135 ANIMATION_STATE_SYNC, 136 ANIMATION_STATE_ASYNC, 137 ANIMATION_STATE_IN, 138 ANIMATION_STATE_STEADY, 139 ANIMATION_STATE_OUT 140 }; 141 142 CAL3D_WRAPPER_API void CalAnimation_Delete(struct CalAnimation *self); 143 CAL3D_WRAPPER_API struct CalCoreAnimation *CalAnimation_GetCoreAnimation(struct CalAnimation *self); 144 CAL3D_WRAPPER_API enum CalAnimationState CalAnimation_GetState(struct CalAnimation *self); 145 CAL3D_WRAPPER_API float CalAnimation_GetTime(struct CalAnimation *self); 146 CAL3D_WRAPPER_API enum CalAnimationType CalAnimation_GetType(struct CalAnimation *self); 147 CAL3D_WRAPPER_API float CalAnimation_GetWeight(struct CalAnimation *self); 148 149 //****************************************************************************// 150 // CalAnimationAction wrapper functions declaration // 151 //****************************************************************************// 152 153 CAL3D_WRAPPER_API void CalAnimationAction_Delete(struct CalAnimationAction *self); 154 CAL3D_WRAPPER_API enum Boolean CalAnimationAction_Execute(struct CalAnimationAction *self, float delayIn, float delayOut); 155 CAL3D_WRAPPER_API struct CalAnimationAction *CalAnimationAction_New(struct CalCoreAnimation *pCoreAnimation); 156 CAL3D_WRAPPER_API enum Boolean CalAnimationAction_Update(struct CalAnimationAction *self, float deltaTime); 157 CAL3D_WRAPPER_API void CalCoreAnimation_Scale(struct CalCoreAnimation *self, float factor); 158 159 //****************************************************************************// 160 // CalAnimationCycle wrapper functions declaration // 161 //****************************************************************************// 162 163 CAL3D_WRAPPER_API enum Boolean CalAnimationCycle_Blend(struct CalAnimationCycle *self, float weight, float delay); 164 CAL3D_WRAPPER_API void CalAnimationCycle_Delete(struct CalAnimationCycle *self); 165 CAL3D_WRAPPER_API struct CalAnimationCycle *CalAnimationCycle_New(struct CalCoreAnimation *pCoreAnimation); 166 CAL3D_WRAPPER_API void CalAnimationCycle_SetAsync(struct CalAnimationCycle *self, float time, float duration); 167 CAL3D_WRAPPER_API enum Boolean CalAnimationCycle_Update(struct CalAnimationCycle *self, float deltaTime); 168 169 //****************************************************************************// 170 // CalBone wrapper functions declaration // 171 //****************************************************************************// 172 173 CAL3D_WRAPPER_API void CalBone_BlendState(struct CalBone *self, float weight, struct CalVector *pTranslation, struct CalQuaternion *pRotation); 174 CAL3D_WRAPPER_API void CalBone_CalculateState(struct CalBone *self); 175 CAL3D_WRAPPER_API void CalBone_ClearState(struct CalBone *self); 176 CAL3D_WRAPPER_API void CalBone_Delete(struct CalBone *self); 177 CAL3D_WRAPPER_API struct CalCoreBone *CalBone_GetCoreBone(struct CalBone *self); 178 CAL3D_WRAPPER_API struct CalQuaternion *CalBone_GetRotation(struct CalBone *self); 179 CAL3D_WRAPPER_API struct CalQuaternion *CalBone_GetRotationAbsolute(struct CalBone *self); 180 CAL3D_WRAPPER_API struct CalQuaternion *CalBone_GetRotationBoneSpace(struct CalBone *self); 181 CAL3D_WRAPPER_API struct CalVector *CalBone_GetTranslation(struct CalBone *self); 182 CAL3D_WRAPPER_API struct CalVector *CalBone_GetTranslationAbsolute(struct CalBone *self); 183 CAL3D_WRAPPER_API struct CalVector *CalBone_GetTranslationBoneSpace(struct CalBone *self); 184 CAL3D_WRAPPER_API void CalBone_LockState(struct CalBone *self); 185 CAL3D_WRAPPER_API struct CalBone *CalBone_New(struct CalCoreBone* coreBone); 186 CAL3D_WRAPPER_API void CalBone_SetSkeleton(struct CalBone *self, struct CalSkeleton *pSkeleton); 187 CAL3D_WRAPPER_API void CalBone_SetTranslation(struct CalBone *self, struct CalVector *pTranslation); 188 CAL3D_WRAPPER_API void CalBone_SetRotation(struct CalBone *self, struct CalQuaternion *pRotation); 189 CAL3D_WRAPPER_API void CalBone_SetCoreState(struct CalBone *self); 190 CAL3D_WRAPPER_API void CalBone_SetCoreStateRecursive(struct CalBone *self); 191 192 193 //****************************************************************************// 194 // CalCoreAnimation wrapper functions declaration // 195 //****************************************************************************// 196 197 CAL3D_WRAPPER_API struct CalCoreAnimation *CalCoreAnimation_New(); 198 CAL3D_WRAPPER_API void CalCoreAnimation_Delete(struct CalCoreAnimation* self); 199 200 CAL3D_WRAPPER_API float CalCoreAnimation_GetDuration(struct CalCoreAnimation *self); 201 CAL3D_WRAPPER_API void CalCoreAnimation_SetDuration(struct CalCoreAnimation *self, float duration); 202 CAL3D_WRAPPER_API void CalCoreAnimation_Scale(struct CalCoreAnimation *self, float factor); 203 204 //****************************************************************************// 205 // CalCoreMorphAnimation wrapper functions declaration // 206 //****************************************************************************// 207 208 CAL3D_WRAPPER_API struct CalCoreMorphAnimation *CalCoreMorphAnimation_New(); 209 CAL3D_WRAPPER_API void CalCoreMorphAnimation_Delete(struct CalCoreMorphAnimation* self); 210 CAL3D_WRAPPER_API enum Boolean CalCoreMorphAnimation_AddMorphTarget(struct CalCoreMorphAnimation* self, int meshID, int morphID); 211 212 //****************************************************************************// 213 // CalCoreBone wrapper functions declaration // 214 //****************************************************************************// 215 216 CAL3D_WRAPPER_API enum Boolean CalCoreBone_AddChildId(struct CalCoreBone *self, int childId); 217 CAL3D_WRAPPER_API void CalCoreBone_CalculateState(struct CalCoreBone *self); 218 CAL3D_WRAPPER_API void CalCoreBone_Delete(struct CalCoreBone *self); 219 // CAL3D_WRAPPER_API std::list<int>& CalCoreBone_GetListChildId(struct CalCoreBone *self); 220 CAL3D_WRAPPER_API char *CalCoreBone_GetName(struct CalCoreBone *self); 221 CAL3D_WRAPPER_API int CalCoreBone_GetParentId(struct CalCoreBone *self); 222 CAL3D_WRAPPER_API struct CalQuaternion *CalCoreBone_GetRotation(struct CalCoreBone *self); 223 CAL3D_WRAPPER_API struct CalQuaternion *CalCoreBone_GetRotationAbsolute(struct CalCoreBone *self); 224 CAL3D_WRAPPER_API struct CalQuaternion *CalCoreBone_GetRotationBoneSpace(struct CalCoreBone *self); 225 CAL3D_WRAPPER_API struct CalVector *CalCoreBone_GetTranslation(struct CalCoreBone *self); 226 CAL3D_WRAPPER_API struct CalVector *CalCoreBone_GetTranslationAbsolute(struct CalCoreBone *self); 227 CAL3D_WRAPPER_API struct CalVector *CalCoreBone_GetTranslationBoneSpace(struct CalCoreBone *self); 228 CAL3D_WRAPPER_API CalUserData CalCoreBone_GetUserData(struct CalCoreBone *self); 229 CAL3D_WRAPPER_API struct CalCoreBone *CalCoreBone_New(const char* name); 230 CAL3D_WRAPPER_API void CalCoreBone_SetCoreSkeleton(struct CalCoreBone *self, struct CalCoreSkeleton *pCoreSkeleton); 231 CAL3D_WRAPPER_API void CalCoreBone_SetParentId(struct CalCoreBone *self, int parentId); 232 CAL3D_WRAPPER_API void CalCoreBone_SetRotation(struct CalCoreBone *self, struct CalQuaternion *pRotation); 233 CAL3D_WRAPPER_API void CalCoreBone_SetRotationBoneSpace(struct CalCoreBone *self, struct CalQuaternion *pRotation); 234 CAL3D_WRAPPER_API void CalCoreBone_SetTranslation(struct CalCoreBone *self, struct CalVector *pTranslation); 235 CAL3D_WRAPPER_API void CalCoreBone_SetTranslationBoneSpace(struct CalCoreBone *self, struct CalVector *pTranslation); 236 CAL3D_WRAPPER_API void CalCoreBone_SetUserData(struct CalCoreBone *self, CalUserData userData); 237 238 //****************************************************************************// 239 // CalCoreMaterial wrapper functions declaration // 240 //****************************************************************************// 241 242 CAL3D_WRAPPER_API struct CalCoreMaterial *CalCoreMaterial_New(); 243 CAL3D_WRAPPER_API void CalCoreMaterial_Delete(struct CalCoreMaterial *self); 244 245 // CAL3D_WRAPPER_API CalCoreMaterial::Color *CalCoreMaterial_GetAmbientColor(struct CalCoreMaterial *self); 246 // CAL3D_WRAPPER_API CalCoreMaterial::Color *CalCoreMaterial_GetDiffuseColor(struct CalCoreMaterial *self); 247 CAL3D_WRAPPER_API int CalCoreMaterial_GetMapCount(struct CalCoreMaterial *self); 248 CAL3D_WRAPPER_API char *CalCoreMaterial_GetMapFilename(struct CalCoreMaterial *self, int mapId); 249 CAL3D_WRAPPER_API CalUserData CalCoreMaterial_GetMapUserData(struct CalCoreMaterial *self, int mapId); 250 CAL3D_WRAPPER_API float CalCoreMaterial_GetShininess(struct CalCoreMaterial *self); 251 // CAL3D_WRAPPER_API CalCoreMaterial::Color *CalCoreMaterial_GetSpecularColor(struct CalCoreMaterial *self); 252 CAL3D_WRAPPER_API CalUserData CalCoreMaterial_GetUserData(struct CalCoreMaterial *self); 253 // CAL3D_WRAPPER_API std::vector<Map>& CalCoreMaterial_GetVectorMap(struct CalCoreMaterial *self); 254 CAL3D_WRAPPER_API enum Boolean CalCoreMaterial_Reserve(struct CalCoreMaterial *self, int mapCount); 255 // CAL3D_WRAPPER_API void CalCoreMaterial_SetAmbientColor(struct CalCoreMaterial *self, struct CalCoreMaterial::Color *pAmbientColor); 256 // CAL3D_WRAPPER_API void CalCoreMaterial_SetDiffuseColor(struct CalCoreMaterial *self, struct CalCoreMaterial::Color *pDiffuseColor); 257 // CAL3D_WRAPPER_API enum Boolean CalCoreMaterial_SetMap(struct CalCoreMaterial *self, int mapId, struct CalCoreMaterial::Map *pMap); 258 CAL3D_WRAPPER_API enum Boolean CalCoreMaterial_SetMapUserData(struct CalCoreMaterial *self, int mapId, CalUserData userData); 259 CAL3D_WRAPPER_API void CalCoreMaterial_SetShininess(struct CalCoreMaterial *self, float shininess); 260 // CAL3D_WRAPPER_API void CalCoreMaterial_SetSpecularColor(struct CalCoreMaterial *self, struct CalCoreMaterial::Color *pSpecularColor); 261 CAL3D_WRAPPER_API void CalCoreMaterial_SetUserData(struct CalCoreMaterial *self, CalUserData userData); 262 263 //****************************************************************************// 264 // CalCoreMesh wrapper functions declaration // 265 //****************************************************************************// 266 267 CAL3D_WRAPPER_API struct CalCoreMesh *CalCoreMesh_New(); 268 CAL3D_WRAPPER_API void CalCoreMesh_Delete(struct CalCoreMesh *self); 269 270 CAL3D_WRAPPER_API int CalCoreMesh_AddCoreSubmesh(struct CalCoreMesh *self, struct CalCoreSubmesh *pCoreSubmesh); 271 CAL3D_WRAPPER_API struct CalCoreSubmesh *CalCoreMesh_GetCoreSubmesh(struct CalCoreMesh *self, int id); 272 CAL3D_WRAPPER_API int CalCoreMesh_GetCoreSubmeshCount(struct CalCoreMesh *self); 273 // CAL3D_WRAPPER_API std::vector<CalCoreSubmesh *>& CalCoreMesh_GetVectorCoreSubmesh(struct CalCoreMesh *self); 274 CAL3D_WRAPPER_API void CalCoreMesh_Scale(struct CalCoreMesh *self,float factor); 275 CAL3D_WRAPPER_API int CalCoreMesh_AddAsMorphTarget(struct CalCoreMesh *self, struct CalCoreMesh *target); 276 277 //****************************************************************************// 278 // CalCoreModel wrapper functions declaration // 279 //****************************************************************************// 280 281 CAL3D_WRAPPER_API int CalCoreModel_AddCoreAnimation(struct CalCoreModel *self, struct CalCoreAnimation *pCoreAnimation); 282 CAL3D_WRAPPER_API int CalCoreModel_AddCoreMorphAnimation(struct CalCoreModel *self, struct CalCoreMorphAnimation *pCoreAnimation); 283 CAL3D_WRAPPER_API int CalCoreModel_AddCoreMaterial(struct CalCoreModel *self, struct CalCoreMaterial *pCoreMaterial); 284 CAL3D_WRAPPER_API int CalCoreModel_AddCoreMesh(struct CalCoreModel *self, struct CalCoreMesh *pCoreMesh); 285 CAL3D_WRAPPER_API enum Boolean CalCoreModel_CreateCoreMaterialThread(struct CalCoreModel *self, int coreMaterialThreadId); 286 CAL3D_WRAPPER_API void CalCoreModel_Delete(struct CalCoreModel *self); 287 CAL3D_WRAPPER_API struct CalCoreAnimation *CalCoreModel_GetCoreAnimation(struct CalCoreModel *self, int coreAnimationId); 288 CAL3D_WRAPPER_API int CalCoreModel_GetCoreAnimationCount(struct CalCoreModel *self); 289 CAL3D_WRAPPER_API struct CalCoreMaterial *CalCoreModel_GetCoreMaterial(struct CalCoreModel *self, int coreMaterialId); 290 CAL3D_WRAPPER_API int CalCoreModel_GetCoreMaterialCount(struct CalCoreModel *self); 291 CAL3D_WRAPPER_API int CalCoreModel_GetCoreMaterialId(struct CalCoreModel *self, int coreMaterialThreadId, int coreMaterialSetId); 292 CAL3D_WRAPPER_API struct CalCoreMesh *CalCoreModel_GetCoreMesh(struct CalCoreModel *self, int coreMeshId); 293 CAL3D_WRAPPER_API int CalCoreModel_GetCoreMeshCount(struct CalCoreModel *self); 294 CAL3D_WRAPPER_API struct CalCoreSkeleton *CalCoreModel_GetCoreSkeleton(struct CalCoreModel *self); 295 CAL3D_WRAPPER_API CalUserData CalCoreModel_GetUserData(struct CalCoreModel *self); 296 CAL3D_WRAPPER_API int CalCoreModel_GetCoreMorphAnimationCount(struct CalCoreModel *self); 297 CAL3D_WRAPPER_API int CalCoreModel_LoadCoreAnimation(struct CalCoreModel *self, char *strFilename); 298 CAL3D_WRAPPER_API int CalCoreModel_LoadCoreMaterial(struct CalCoreModel *self, char *strFilename); 299 CAL3D_WRAPPER_API int CalCoreModel_LoadCoreMesh(struct CalCoreModel *self, char *strFilename); 300 CAL3D_WRAPPER_API enum Boolean CalCoreModel_LoadCoreSkeleton(struct CalCoreModel *self, char *strFilename); 301 CAL3D_WRAPPER_API struct CalCoreModel *CalCoreModel_New(const char* name); 302 CAL3D_WRAPPER_API enum Boolean CalCoreModel_SaveCoreAnimation(struct CalCoreModel *self, char *strFilename, int coreAnimtionId); 303 CAL3D_WRAPPER_API enum Boolean CalCoreModel_SaveCoreMaterial(struct CalCoreModel *self, char *strFilename, int coreMaterialId); 304 CAL3D_WRAPPER_API enum Boolean CalCoreModel_SaveCoreMesh(struct CalCoreModel *self, char *strFilename, int coreMeshId); 305 CAL3D_WRAPPER_API enum Boolean CalCoreModel_SaveCoreSkeleton(struct CalCoreModel *self, char *strFilename); 306 CAL3D_WRAPPER_API enum Boolean CalCoreModel_SetCoreMaterialId(struct CalCoreModel *self, int coreMaterialThreadId, int coreMaterialSetId, int coreMaterialId); 307 CAL3D_WRAPPER_API void CalCoreModel_SetCoreSkeleton(struct CalCoreModel *self, struct CalCoreSkeleton *pCoreSkeleton); 308 CAL3D_WRAPPER_API void CalCoreModel_SetUserData(struct CalCoreModel *self, CalUserData userData); 309 310 //****************************************************************************// 311 // CalCoreSkeleton wrapper functions declaration // 312 //****************************************************************************// 313 314 CAL3D_WRAPPER_API struct CalCoreSkeleton *CalCoreSkeleton_New(); 315 CAL3D_WRAPPER_API void CalCoreSkeleton_Delete(struct CalCoreSkeleton* self); 316 317 CAL3D_WRAPPER_API int CalCoreSkeleton_AddCoreBone(struct CalCoreSkeleton *self, struct CalCoreBone *pCoreBone); 318 CAL3D_WRAPPER_API void CalCoreSkeleton_CalculateState(struct CalCoreSkeleton *self); 319 // CAL3D_WRAPPER_API void CalCoreSkeleton_Delete(struct CalCoreSkeleton *self); 320 CAL3D_WRAPPER_API struct CalCoreBone *CalCoreSkeleton_GetCoreBone(struct CalCoreSkeleton *self, int coreBoneId); 321 CAL3D_WRAPPER_API int CalCoreSkeleton_GetCoreBoneId(struct CalCoreSkeleton *self, char *strName); 322 // CAL3D_WRAPPER_API std::list<int>& CalCoreSkeleton_GetListRootCoreBoneId(struct CalCoreSkeleton *self); 323 // CAL3D_WRAPPER_API std::vector<CalCoreBone *>& CalCoreSkeleton_GetVectorCoreBone(struct CalCoreSkeleton *self); 324 CAL3D_WRAPPER_API void CalCoreSkeleton_Scale(struct CalCoreSkeleton *self,float factor); 325 CAL3D_WRAPPER_API void CalSkeleton_GetBoneBoundingBox(struct CalSkeleton *self, float *min, float *max); 326 CAL3D_WRAPPER_API void CalSkeleton_CalculateBoundingBoxes(struct CalSkeleton *self); 327 328 //****************************************************************************// 329 // CalCoreSubmesh wrapper functions declaration // 330 //****************************************************************************// 331 332 CAL3D_WRAPPER_API void CalCoreSubmesh_Delete(struct CalCoreSubmesh *self); 333 CAL3D_WRAPPER_API int CalCoreSubmesh_GetCoreMaterialThreadId(struct CalCoreSubmesh *self); 334 CAL3D_WRAPPER_API int CalCoreSubmesh_GetFaceCount(struct CalCoreSubmesh *self); 335 CAL3D_WRAPPER_API int CalCoreSubmesh_GetLodCount(struct CalCoreSubmesh *self); 336 CAL3D_WRAPPER_API int CalCoreSubmesh_GetSpringCount(struct CalCoreSubmesh *self); 337 // CAL3D_WRAPPER_API std::vector<CalCoreSubmesh::Face>& CalCoreSubmesh_GetVectorFace(struct CalCoreSubmesh *self); 338 // CAL3D_WRAPPER_API std::vector<CalCoreSubmesh::PhysicalProperty>& CalCoreSubmesh_GetVectorPhysicalProperty(struct CalCoreSubmesh *self); 339 // CAL3D_WRAPPER_API std::vector<CalCoreSubmesh::Spring>& CalCoreSubmesh_GetVectorSpring(struct CalCoreSubmesh *self); 340 // CAL3D_WRAPPER_API std::vector<std::vector<CalCoreSubmesh::TextureCoordinate> >& CalCoreSubmesh_GetVectorVectorTextureCoordinate(struct CalCoreSubmesh *self); 341 // CAL3D_WRAPPER_API std::vector<CalCoreSubmesh::Vertex>& CalCoreSubmesh_GetVectorVertex(struct CalCoreSubmesh *self); 342 CAL3D_WRAPPER_API int CalCoreSubmesh_GetVertexCount(struct CalCoreSubmesh *self); 343 CAL3D_WRAPPER_API struct CalCoreSubmesh *CalCoreSubmesh_New(); 344 CAL3D_WRAPPER_API enum Boolean CalCoreSubmesh_Reserve(struct CalCoreSubmesh *self, int vertexCount, int textureCoordinateCount, int faceCount, int springCount); 345 CAL3D_WRAPPER_API void CalCoreSubmesh_SetCoreMaterialThreadId(struct CalCoreSubmesh *self, int coreMaterialThreadId); 346 // CAL3D_WRAPPER_API enum Boolean CalCoreSubmesh_SetFace(struct CalCoreSubmesh *self, int faceId, struct CalCoreSubmesh::Face *pFace); 347 CAL3D_WRAPPER_API void CalCoreSubmesh_SetLodCount(struct CalCoreSubmesh *self, int lodCount); 348 // CAL3D_WRAPPER_API enum Boolean CalCoreSubmesh_SetPhysicalProperty(struct CalCoreSubmesh *self, int vertexId, struct CalCoreSubmesh::PhysicalProperty *pPhysicalProperty); 349 // CAL3D_WRAPPER_API enum Boolean CalCoreSubmesh_SetSpring(struct CalCoreSubmesh *self, int springId, struct CalCoreSubmesh::Spring *pSpring); 350 // CAL3D_WRAPPER_API enum Boolean CalCoreSubmesh_SetTextureCoordinate(struct CalCoreSubmesh *self, int vertexId, int textureCoordinateId, struct CalCoreSubmesh::TextureCoordinate *pTextureCoordinate); 351 // CAL3D_WRAPPER_API enum Boolean CalCoreSubmesh_SetVertex(struct CalCoreSubmesh *self, int vertexId, struct CalCoreSubmesh::Vertex *pVertex); 352 CAL3D_WRAPPER_API enum Boolean CalCoreSubmesh_IsTangentsEnabled(struct CalCoreSubmesh *self, int mapId); 353 CAL3D_WRAPPER_API enum Boolean CalCoreSubmesh_EnableTangents(struct CalCoreSubmesh *self, int mapId, enum Boolean enabled); 354 355 //****************************************************************************// 356 // CalError wrapper functions declaration // 357 //****************************************************************************// 358 359 CAL3D_WRAPPER_API enum CalErrorCode 360 { 361 ERROR_CODE_OK = 0, 362 ERROR_CODE_INTERNAL, 363 ERROR_CODE_INVALID_HANDLE, 364 ERROR_CODE_MEMORY_ALLOCATION_FAILED, 365 ERROR_CODE_FILE_NOT_FOUND, 366 ERROR_CODE_INVALID_FILE_FORMAT, 367 ERROR_CODE_FILE_PARSER_FAILED, 368 ERROR_CODE_INDEX_BUILD_FAILED, 369 ERROR_CODE_NO_PARSER_DOCUMENT, 370 ERROR_CODE_INVALID_ANIMATION_DURATION, 371 ERROR_CODE_BONE_NOT_FOUND, 372 ERROR_CODE_INVALID_ATTRIBUTE_VALUE, 373 ERROR_CODE_INVALID_KEYFRAME_COUNT, 374 ERROR_CODE_INVALID_ANIMATION_TYPE, 375 ERROR_CODE_FILE_CREATION_FAILED, 376 ERROR_CODE_FILE_WRITING_FAILED, 377 ERROR_CODE_INCOMPATIBLE_FILE_VERSION, 378 ERROR_CODE_NO_MESH_IN_MODEL, 379 ERROR_CODE_MAX_ERROR_CODE 380 }; 381 382 CAL3D_WRAPPER_API enum CalErrorCode CalError_GetLastErrorCode(); 383 CAL3D_WRAPPER_API char *CalError_GetLastErrorDescription(); 384 CAL3D_WRAPPER_API char *CalError_GetLastErrorFile(); 385 CAL3D_WRAPPER_API int CalError_GetLastErrorLine(); 386 CAL3D_WRAPPER_API char *CalError_GetLastErrorText(); 387 CAL3D_WRAPPER_API void CalError_PrintLastError(); 388 // CAL3D_WRAPPER_API void CalError_SetLastError(enum CalErrorCode code, char *strFile, int line, char *strText); 389 390 //****************************************************************************// 391 // CalLoader wrapper functions declaration // 392 //****************************************************************************// 393 394 CAL3D_WRAPPER_API struct CalLoader *CalLoader_New(); 395 CAL3D_WRAPPER_API void CalLoader_Delete(struct CalLoader *self); 396 CAL3D_WRAPPER_API struct CalCoreAnimation *CalLoader_LoadCoreAnimation(struct CalLoader *self, char *strFilename); 397 CAL3D_WRAPPER_API struct CalCoreMaterial *CalLoader_LoadCoreMaterial(struct CalLoader *self, char *strFilename); 398 CAL3D_WRAPPER_API struct CalCoreMesh *CalLoader_LoadCoreMesh(struct CalLoader *self, char *strFilename); 399 CAL3D_WRAPPER_API struct CalCoreSkeleton *CalLoader_LoadCoreSkeleton(struct CalLoader *self, char *strFilename); 400 401 //****************************************************************************// 402 // CalMesh wrapper functions declaration // 403 //****************************************************************************// 404 405 CAL3D_WRAPPER_API void CalMesh_Delete(struct CalMesh *self); 406 CAL3D_WRAPPER_API struct CalCoreMesh *CalMesh_GetCoreMesh(struct CalMesh *self); 407 CAL3D_WRAPPER_API struct CalSubmesh *CalMesh_GetSubmesh(struct CalMesh *self, int id); 408 CAL3D_WRAPPER_API int CalMesh_GetSubmeshCount(struct CalMesh *self); 409 // CAL3D_WRAPPER_API std::vector<CalSubmesh *>& CalMesh_GetVectorSubmesh(struct CalMesh *self); 410 CAL3D_WRAPPER_API struct CalMesh *CalMesh_New(struct CalCoreMesh *pCoreMesh); 411 CAL3D_WRAPPER_API void CalMesh_SetLodLevel(struct CalMesh *self, float lodLevel); 412 CAL3D_WRAPPER_API void CalMesh_SetMaterialSet(struct CalMesh *self, int setId); 413 CAL3D_WRAPPER_API void CalMesh_SetModel(struct CalMesh *self, struct CalModel *pModel); 414 415 //****************************************************************************// 416 // CalMixer wrapper functions declaration // 417 //****************************************************************************// 418 419 CAL3D_WRAPPER_API enum Boolean CalMixer_BlendCycle(struct CalMixer *self, int id, float weight, float delay); 420 CAL3D_WRAPPER_API enum Boolean CalMixer_ClearCycle(struct CalMixer *self, int id, float delay); 421 CAL3D_WRAPPER_API void CalMixer_Delete(struct CalMixer *self); 422 CAL3D_WRAPPER_API enum Boolean CalMixer_ExecuteAction(struct CalMixer *self, int id, float delayIn, float delayOut, enum Boolean autoLock); 423 CAL3D_WRAPPER_API struct CalMixer *CalMixer_New(struct CalModel *pModel); 424 CAL3D_WRAPPER_API void CalMixer_UpdateAnimation(struct CalMixer *self, float deltaTime); 425 CAL3D_WRAPPER_API void CalMixer_UpdateSkeleton(struct CalMixer *self); 426 CAL3D_WRAPPER_API void CalMixer_RemoveAction(struct CalMixer *self,int id); 427 428 //****************************************************************************// 429 // CalMorphTargetMixer wrapper functions declaration // 430 //****************************************************************************// 431 432 CAL3D_WRAPPER_API enum Boolean CalMorphTargetMixer_Blend(struct CalMorphTargetMixer *self, int id, float weight, float delay); 433 CAL3D_WRAPPER_API enum Boolean CalMorphTargetMixer_Clear(struct CalMorphTargetMixer *self, int id, float delay); 434 CAL3D_WRAPPER_API void CalMorphTargetMixer_Delete(struct CalMorphTargetMixer *self); 435 CAL3D_WRAPPER_API struct CalMorphTargetMixer *CalMorphTargetMixer_New(struct CalModel *pModel); 436 CAL3D_WRAPPER_API void CalMorphTargetMixer_Update(struct CalMorphTargetMixer *self, float deltaTime); 437 CAL3D_WRAPPER_API int CalMorphTargetMixer_GetMorphTargetCount(struct CalMorphTargetMixer *self); 438 439 //****************************************************************************// 440 // CalModel wrapper functions declaration // 441 //****************************************************************************// 442 443 CAL3D_WRAPPER_API enum Boolean CalModel_AttachMesh(struct CalModel *self, int coreMeshId); 444 CAL3D_WRAPPER_API void CalModel_Delete(struct CalModel *self); 445 CAL3D_WRAPPER_API enum Boolean CalModel_DetachMesh(struct CalModel *self, int coreMeshId); 446 CAL3D_WRAPPER_API struct CalCoreModel *CalModel_GetCoreModel(struct CalModel *self); 447 CAL3D_WRAPPER_API struct CalMesh *CalModel_GetMesh(struct CalModel *self, int coreMeshId); 448 CAL3D_WRAPPER_API struct CalMixer *CalModel_GetMixer(struct CalModel *self); 449 CAL3D_WRAPPER_API struct CalMorphTargetMixer *CalModel_GetMorphTargetMixer(struct CalModel *self); 450 CAL3D_WRAPPER_API struct CalPhysique *CalModel_GetPhysique(struct CalModel *self); 451 CAL3D_WRAPPER_API struct CalRenderer *CalModel_GetRenderer(struct CalModel *self); 452 CAL3D_WRAPPER_API struct CalSkeleton *CalModel_GetSkeleton(struct CalModel *self); 453 CAL3D_WRAPPER_API struct CalSpringSystem *CalModel_GetSpringSystem(struct CalModel *self); 454 CAL3D_WRAPPER_API CalUserData CalModel_GetUserData(struct CalModel *self); 455 // CAL3D_WRAPPER_API std::vector<CalMesh *>& CalModel_GetVectorMesh(struct CalModel *self); 456 CAL3D_WRAPPER_API struct CalModel *CalModel_New(struct CalCoreModel* pCoreModel); 457 CAL3D_WRAPPER_API void CalModel_SetLodLevel(struct CalModel *self, float lodLevel); 458 CAL3D_WRAPPER_API void CalModel_SetMaterialSet(struct CalModel *self, int setId); 459 CAL3D_WRAPPER_API void CalModel_SetUserData(struct CalModel *self, CalUserData userData); 460 CAL3D_WRAPPER_API void CalModel_Update(struct CalModel *self, float deltaTime); 461 462 //****************************************************************************// 463 // CalPhysique wrapper functions declaration // 464 //****************************************************************************// 465 466 CAL3D_WRAPPER_API int CalPhysique_CalculateNormals(struct CalPhysique *self, struct CalSubmesh *pSubmesh, float *pNormalBuffer); 467 CAL3D_WRAPPER_API int CalPhysique_CalculateVertices(struct CalPhysique *self, struct CalSubmesh *pSubmesh, float *pVertexBuffer); 468 CAL3D_WRAPPER_API int CalPhysique_CalculateVerticesAndNormals(struct CalPhysique *self, struct CalSubmesh *pSubmesh, float *pVertexBuffer); 469 CAL3D_WRAPPER_API int CalPhysique_CalculateVerticesNormalsAndTexCoords(struct CalPhysique *self, struct CalSubmesh *pSubmesh, float *pVertexBuffer, int NumTexCoords); 470 CAL3D_WRAPPER_API int CalPhysique_CalculateTangentSpaces(struct CalPhysique *self, struct CalSubmesh *pSubmesh, int mapId, float *pTangentSpaceBuffer); 471 CAL3D_WRAPPER_API void CalPhysique_Delete(struct CalPhysique *self); 472 CAL3D_WRAPPER_API struct CalPhysique *CalPhysique_New(struct CalModel* pModel); 473 CAL3D_WRAPPER_API void CalPhysique_Update(struct CalPhysique *self); 474 475 //****************************************************************************// 476 // CalPlatform wrapper functions declaration // 477 //****************************************************************************// 478 479 //****************************************************************************// 480 // CalQuaternion wrapper functions declaration // 481 //****************************************************************************// 482 483 CAL3D_WRAPPER_API void CalQuaternion_Blend(struct CalQuaternion *self, float d, struct CalQuaternion *pQ); 484 CAL3D_WRAPPER_API void CalQuaternion_Clear(struct CalQuaternion *self); 485 CAL3D_WRAPPER_API void CalQuaternion_Conjugate(struct CalQuaternion *self); 486 CAL3D_WRAPPER_API void CalQuaternion_Delete(struct CalQuaternion *self); 487 CAL3D_WRAPPER_API void CalQuaternion_Equal(struct CalQuaternion *self, struct CalQuaternion *pQ); 488 CAL3D_WRAPPER_API float *CalQuaternion_Get(struct CalQuaternion *self); 489 CAL3D_WRAPPER_API void CalQuaternion_Multiply(struct CalQuaternion *self, struct CalQuaternion *pQ); 490 CAL3D_WRAPPER_API void CalQuaternion_MultiplyVector(struct CalQuaternion *self, struct CalVector *pV); 491 CAL3D_WRAPPER_API struct CalQuaternion *CalQuaternion_New(); 492 CAL3D_WRAPPER_API void CalQuaternion_Op_Multiply(struct CalQuaternion *pResult, struct CalQuaternion *pQ, struct CalQuaternion *pR); 493 CAL3D_WRAPPER_API void CalQuaternion_Set(struct CalQuaternion *self, float qx, float qy, float qz, float qw); 494 495 //****************************************************************************// 496 // CalRenderer wrapper functions declaration // 497 //****************************************************************************// 498 499 CAL3D_WRAPPER_API enum Boolean CalRenderer_BeginRendering(struct CalRenderer *self); 500 CAL3D_WRAPPER_API void CalRenderer_Delete(struct CalRenderer *self); 501 CAL3D_WRAPPER_API void CalRenderer_EndRendering(struct CalRenderer *self); 502 CAL3D_WRAPPER_API void CalRenderer_GetAmbientColor(struct CalRenderer *self, unsigned char *pColorBuffer); 503 CAL3D_WRAPPER_API void CalRenderer_GetDiffuseColor(struct CalRenderer *self, unsigned char *pColorBuffer); 504 CAL3D_WRAPPER_API int CalRenderer_GetFaceCount(struct CalRenderer *self); 505 CAL3D_WRAPPER_API int CalRenderer_GetFaces(struct CalRenderer *self, CalIndex *pFaceBuffer); 506 CAL3D_WRAPPER_API int CalRenderer_GetMapCount(struct CalRenderer *self); 507 CAL3D_WRAPPER_API CalUserData CalRenderer_GetMapUserData(struct CalRenderer *self, int mapId); 508 CAL3D_WRAPPER_API int CalRenderer_GetMeshCount(struct CalRenderer *self); 509 CAL3D_WRAPPER_API int CalRenderer_GetNormals(struct CalRenderer *self, float *pNormalBuffer); 510 CAL3D_WRAPPER_API float CalRenderer_GetShininess(struct CalRenderer *self); 511 CAL3D_WRAPPER_API void CalRenderer_GetSpecularColor(struct CalRenderer *self, unsigned char *pColorBuffer); 512 CAL3D_WRAPPER_API int CalRenderer_GetSubmeshCount(struct CalRenderer *self, int meshId); 513 CAL3D_WRAPPER_API int CalRenderer_GetTextureCoordinates(struct CalRenderer *self, int mapId, float *pTextureCoordinateBuffer); 514 CAL3D_WRAPPER_API int CalRenderer_GetVertexCount(struct CalRenderer *self); 515 CAL3D_WRAPPER_API int CalRenderer_GetVertices(struct CalRenderer *self, float *pVertexBuffer); 516 CAL3D_WRAPPER_API int CalRenderer_GetVerticesAndNormals(struct CalRenderer *self, float *pVertexBuffer); 517 CAL3D_WRAPPER_API int CalRenderer_GetVerticesNormalsAndTexCoords(struct CalRenderer *self, float *pVertexBuffer, int NumTexCoords); 518 CAL3D_WRAPPER_API int CalRenderer_GetTangentSpaces(struct CalRenderer *self, int mapId, float *pTangentSpaceBuffer); 519 CAL3D_WRAPPER_API enum Boolean CalRenderer_IsTangentsEnabled(struct CalRenderer *self, int mapId); 520 CAL3D_WRAPPER_API struct CalRenderer *CalRenderer_New(struct CalModel* pModel); 521 CAL3D_WRAPPER_API enum Boolean CalRenderer_SelectMeshSubmesh(struct CalRenderer *self, int meshId, int submeshId); 522 523 //****************************************************************************// 524 // CalSaver wrapper functions declaration // 525 //****************************************************************************// 526 527 CAL3D_WRAPPER_API void CalSaver_Delete(struct CalSaver *self); 528 CAL3D_WRAPPER_API struct CalSaver *CalSaver_New(); 529 CAL3D_WRAPPER_API enum Boolean CalSaver_SaveCoreAnimation(struct CalSaver *self, char *strFilename, struct CalCoreAnimation *pCoreAnimation); 530 CAL3D_WRAPPER_API enum Boolean CalSaver_SaveCoreMaterial(struct CalSaver *self, char *strFilename, struct CalCoreMaterial *pCoreMaterial); 531 CAL3D_WRAPPER_API enum Boolean CalSaver_SaveCoreMesh(struct CalSaver *self, char *strFilename, struct CalCoreMesh *pCoreMesh); 532 CAL3D_WRAPPER_API enum Boolean CalSaver_SaveCoreSkeleton(struct CalSaver *self, char *strFilename, struct CalCoreSkeleton *pCoreSkeleton); 533 534 //****************************************************************************// 535 // CalSkeleton wrapper functions declaration // 536 //****************************************************************************// 537 538 CAL3D_WRAPPER_API void CalSkeleton_CalculateState(struct CalSkeleton *self); 539 CAL3D_WRAPPER_API void CalSkeleton_ClearState(struct CalSkeleton *self); 540 CAL3D_WRAPPER_API void CalSkeleton_Delete(struct CalSkeleton *self); 541 CAL3D_WRAPPER_API struct CalBone *CalSkeleton_GetBone(struct CalSkeleton *self, int boneId); 542 CAL3D_WRAPPER_API struct CalCoreSkeleton *CalSkeleton_GetCoreSkeleton(struct CalSkeleton *self); 543 // CAL3D_WRAPPER_API std::vector<CalBone *>& CalSkeleton_GetVectorBone(struct CalSkeleton *self); 544 CAL3D_WRAPPER_API void CalSkeleton_LockState(struct CalSkeleton *self); 545 CAL3D_WRAPPER_API struct CalSkeleton *CalSkeleton_New(struct CalCoreSkeleton* pCoreSkeleton); 546 547 // DEBUG-CODE 548 CAL3D_WRAPPER_API int CalSkeleton_GetBonePoints(struct CalSkeleton *self, float *pPoints); 549 CAL3D_WRAPPER_API int CalSkeleton_GetBonePointsStatic(struct CalSkeleton *self, float *pPoints); 550 CAL3D_WRAPPER_API int CalSkeleton_GetBoneLines(struct CalSkeleton *self, float *pLines); 551 CAL3D_WRAPPER_API int CalSkeleton_GetBoneLinesStatic(struct CalSkeleton *self, float *pLines); 552 553 //****************************************************************************// 554 // CalSpringSystem wrapper functions declaration // 555 //****************************************************************************// 556 557 CAL3D_WRAPPER_API void CalSpringSystem_CalculateForces(struct CalSpringSystem *self, struct CalSubmesh *pSubmesh, float deltaTime); 558 CAL3D_WRAPPER_API void CalSpringSystem_CalculateVertices(struct CalSpringSystem *self, struct CalSubmesh *pSubmesh, float deltaTime); 559 CAL3D_WRAPPER_API void CalSpringSystem_Delete(struct CalSpringSystem *self); 560 CAL3D_WRAPPER_API struct CalSpringSystem *CalSpringSystem_New(struct CalModel *pModel); 561 CAL3D_WRAPPER_API void CalSpringSystem_Update(struct CalSpringSystem *self, float deltaTime); 562 563 //****************************************************************************// 564 // CalSubmesh wrapper functions declaration // 565 //****************************************************************************// 566 567 CAL3D_WRAPPER_API void CalSubmesh_Delete(struct CalSubmesh *self); 568 CAL3D_WRAPPER_API struct CalCoreSubmesh *CalSubmesh_GetCoreSubmesh(struct CalSubmesh *self); 569 CAL3D_WRAPPER_API int CalSubmesh_GetCoreMaterialId(struct CalSubmesh *self); 570 CAL3D_WRAPPER_API int CalSubmesh_GetFaceCount(struct CalSubmesh *self); 571 CAL3D_WRAPPER_API int CalSubmesh_GetFaces(struct CalSubmesh *self, CalIndex *pFaceBuffer); 572 573 // CAL3D_WRAPPER_API std::vector<CalVector>& CalSubmesh_GetVectorNormal(struct CalSubmesh *self); 574 // CAL3D_WRAPPER_API std::vector<CalSubmesh::PhysicalProperty>& CalSubmesh_GetVectorPhysicalProperty(struct CalSubmesh *self); 575 // CAL3D_WRAPPER_API std::vector<CalVector>& CalSubmesh_GetVectorVertex(struct CalSubmesh *self); 576 CAL3D_WRAPPER_API int CalSubmesh_GetVertexCount(struct CalSubmesh *self); 577 CAL3D_WRAPPER_API enum Boolean CalSubmesh_HasInternalData(struct CalSubmesh *self); 578 CAL3D_WRAPPER_API struct CalSubmesh *CalSubmesh_New(struct CalCoreSubmesh* coreSubmesh); 579 CAL3D_WRAPPER_API void CalSubmesh_SetCoreMaterialId(struct CalSubmesh *self, int coreMaterialId); 580 CAL3D_WRAPPER_API void CalSubmesh_SetLodLevel(struct CalSubmesh *self, float lodLevel); 581 582 //****************************************************************************// 583 // CalVector wrapper functions declaration // 584 //****************************************************************************// 585 586 CAL3D_WRAPPER_API void CalVector_Add(struct CalVector *self, struct CalVector *pV); 587 CAL3D_WRAPPER_API void CalVector_Blend(struct CalVector *self, float d, struct CalVector *pV); 588 CAL3D_WRAPPER_API void CalVector_Clear(struct CalVector *self); 589 CAL3D_WRAPPER_API void CalVector_Delete(struct CalVector *self); 590 CAL3D_WRAPPER_API void CalVector_Equal(struct CalVector *self, struct CalVector *pV); 591 CAL3D_WRAPPER_API void CalVector_InverseScale(struct CalVector *self, float d); 592 CAL3D_WRAPPER_API float *CalVector_Get(struct CalVector *self); 593 CAL3D_WRAPPER_API float CalVector_Length(struct CalVector *self); 594 CAL3D_WRAPPER_API struct CalVector *CalVector_New(); 595 CAL3D_WRAPPER_API float CalVector_Normalize(struct CalVector *self); 596 CAL3D_WRAPPER_API void CalVector_Op_Add(struct CalVector *pResult, struct CalVector *pV, struct CalVector *pU); 597 CAL3D_WRAPPER_API void CalVector_Op_Subtract(struct CalVector *pResult, struct CalVector *pV, struct CalVector *pU); 598 CAL3D_WRAPPER_API void CalVector_CalVector_Op_Scale(struct CalVector *pResult, struct CalVector *pV, float d); 599 CAL3D_WRAPPER_API void CalVector_CalVector_Op_InverseScale(struct CalVector *pResult, struct CalVector *pV, float d); 600 CAL3D_WRAPPER_API float CalVector_Op_Scalar(struct CalVector *pV, struct CalVector *pU); 601 CAL3D_WRAPPER_API void CalVector_Op_Cross(struct CalVector *pResult, struct CalVector *pV, struct CalVector *pU); 602 CAL3D_WRAPPER_API void CalVector_Scale(struct CalVector *self, float d); 603 CAL3D_WRAPPER_API void CalVector_Set(struct CalVector *self, float vx, float vy, float vz); 604 CAL3D_WRAPPER_API void CalVector_Subtract(struct CalVector *self, struct CalVector *pV); 605 CAL3D_WRAPPER_API void CalVector_Transform(struct CalVector *self, struct CalQuaternion *pQ); 606 607 #ifdef __cplusplus 608 } 609 #endif 610 611 #endif 612 613 //****************************************************************************// 614