raylib/examples/others/iqm_loader/riqm.h
Ray 92733d6695 BIG UPDATE: New models functions for animations!
Multiple functions added and some reviewed to adapt to the new multi-mesh, multi-material and animated models.
2019-04-05 13:15:56 +02:00

99 lines
3.8 KiB
C

/**********************************************************************************************
*
* riqm - InterQuake Model format (IQM) loader for animated meshes
*
* CONFIGURATION:
*
* #define RIQM_IMPLEMENTATION
* Generates the implementation of the library into the included file.
* If not defined, the library is in header only mode and can be included in other headers
* or source files without problems. But only ONE file should hold the implementation.
*
*
* LICENSE: zlib/libpng
*
* Copyright (c) 2018 Jonas Daeyaert (@culacant) and Ramon Santamaria (@raysan5)
*
* This software is provided "as-is", without any express or implied warranty. In no event
* will the authors be held liable for any damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose, including commercial
* applications, and to alter it and redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not claim that you
* wrote the original software. If you use this software in a product, an acknowledgment
* in the product documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be misrepresented
* as being the original software.
*
* 3. This notice may not be removed or altered from any source distribution.
*
**********************************************************************************************/
#ifndef RIQM_H
#define RIQM_H
//#define RIQM_STATIC
#ifdef RIQM_STATIC
#define RIQMDEF static // Functions just visible to module including this file
#else
#ifdef __cplusplus
#define RIQMDEF extern "C" // Functions visible from other files (no name mangling of functions in C++)
#else
#define RIQMDEF extern // Functions visible from other files
#endif
#endif
//----------------------------------------------------------------------------------
// Types and Structures Definition
//----------------------------------------------------------------------------------
#define BONE_NAME_LENGTH 32 // BoneInfo name string length
#define MESH_NAME_LENGTH 32 // Mesh name string length
//----------------------------------------------------------------------------------
// Module Functions Declaration
//----------------------------------------------------------------------------------
#endif // RIQM_H
/***********************************************************************************
*
* RIQM IMPLEMENTATION
*
************************************************************************************/
#if defined(RIQM_IMPLEMENTATION)
//#include "utils.h" // Required for: fopen() Android mapping
#include <stdio.h> // Required for: FILE, fopen(), fclose(), feof(), fseek(), fread()
#include <stdlib.h> // Required for: malloc(), free()
#include <string.h> // Required for: strncmp(),strcpy()
#include "raymath.h" // Required for: Vector3, Quaternion functions
//----------------------------------------------------------------------------------
// Defines and Macros
//----------------------------------------------------------------------------------
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
//----------------------------------------------------------------------------------
// Module specific Functions Declaration
//----------------------------------------------------------------------------------
#ifdef __cplusplus
extern "C" { // Prevents name mangling of functions
#endif
#endif