UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ufomodel.cpp File Reference

Starting point for model tool. More...

Go to the source code of this file.

Data Structures

struct  modelConfig_s
 

Macros

#define QGL_EXTERN
 
#define VERSION   "0.2"
 

Typedefs

typedef struct modelConfig_s modelConfig_t
 
typedef void(* modelWorker_t )(const byte *buf, const char *fileName, int bufSize, void *userData)
 

Enumerations

enum  ufoModelAction_t {
  ACTION_NONE, ACTION_MDX, ACTION_SKINEDIT, ACTION_SKINNUM,
  ACTION_CHECK, ACTION_INFO, ACTION_SKINFIX, ACTION_GLCMDSREMOVE
}
 

Functions

static void Exit (int exitCode) __attribute__((__noreturn__))
 
void Com_Printf (const char *format,...)
 
void Com_DPrintf (int level, const char *fmt,...)
 
image_tR_LoadImageData (const char *name, const byte *pic, int width, int height, imagetype_t type)
 Creates a new image from RGBA data. Stores it in the gltextures array and also uploads it. More...
 
image_tR_FindImage (const char *pname, imagetype_t type)
 Finds or loads the given image. More...
 
void Com_Error (int code, const char *fmt,...)
 
static model_tLoadModel (const char *name)
 Loads in a model for the given name. More...
 
static void WriteToFile (const model_t *mod, const mAliasMesh_t *mesh, const char *fileName)
 
static int PrecalcNormalsAndTangents (const char *filename)
 
static void PrecalcNormalsAndTangentsBatch (const char *pattern)
 
static void Usage (void)
 
static void UM_DefaultParameter (void)
 
static void UM_Parameter (int argc, char **argv)
 Parameter parsing. More...
 
static void ModelWorker (modelWorker_t worker, const char *fileName, void *userData)
 The caller has to ensure that the model is from the expected format. More...
 
static void MD2SkinFix (const byte *buf, const char *fileName, int bufSize, void *userData)
 
static void MD2Check (const byte *buf, const char *fileName, int bufSize, void *userData)
 
static void MD2Visitor (modelWorker_t worker, void *userData)
 
static void ModelCheck (void)
 
static void SkinFix (void)
 
static void GLCmdsRemove (void)
 
void R_ReallocateStateArrays (int size)
 Reallocate arrays of GL primitives if needed. More...
 
void R_ReallocateTexunitArray (gltexunit_t *texunit, int size)
 Reallocate texcoord array of the specified texunit, if needed. More...
 
int main (int argc, char **argv)
 

Variables

rstate_t r_state
 
image_tr_noTexture
 
static modelConfig_t config
 
memPool_tcom_genericPool
 
memPool_tcom_fileSysPool
 
memPool_tvid_modelPool
 
memPool_tvid_lightPool
 
memPool_tvid_imagePool
 

Detailed Description

Starting point for model tool.

Definition in file ufomodel.cpp.

Macro Definition Documentation

#define QGL_EXTERN

Definition at line 32 of file ufomodel.cpp.

#define VERSION   "0.2"

Definition at line 44 of file ufomodel.cpp.

Referenced by main().

Typedef Documentation

typedef struct modelConfig_s modelConfig_t
typedef void(* modelWorker_t)(const byte *buf, const char *fileName, int bufSize, void *userData)

Definition at line 395 of file ufomodel.cpp.

Enumeration Type Documentation

Enumerator
ACTION_NONE 
ACTION_MDX 
ACTION_SKINEDIT 
ACTION_SKINNUM 
ACTION_CHECK 
ACTION_INFO 
ACTION_SKINFIX 
ACTION_GLCMDSREMOVE 

Definition at line 49 of file ufomodel.cpp.

Function Documentation

void Com_DPrintf ( int  level,
const char *  fmt,
  ... 
)

Definition at line 99 of file ufomodel.cpp.

References Com_Printf(), Q_vsnprintf(), and modelConfig_s::verbose.

void Com_Error ( int  code,
const char *  fmt,
  ... 
)
Note
Both client and server can use this, and it will do the appropriate things.

Definition at line 172 of file ufomodel.cpp.

References Exit(), and Q_vsnprintf().

Referenced by LoadModel(), ModelWorker(), PrecalcNormalsAndTangents(), R_FindImage(), and R_LoadImageData().

static void Exit ( int  exitCode)
static

Definition at line 80 of file ufomodel.cpp.

References Mem_Shutdown().

Referenced by Com_Error(), main(), and UM_Parameter().

static void GLCmdsRemove ( void  )
static

Definition at line 556 of file ufomodel.cpp.

References Com_Printf(), MD2GLCmdsRemove(), MD2Visitor(), and UFO_SIZE_T.

Referenced by main().

static model_t* LoadModel ( const char *  name)
static

Loads in a model for the given name.

Parameters
[in]nameFilename relative to base dir and with extension (models/model.md2)

Definition at line 189 of file ufomodel.cpp.

References Com_Error(), Com_Printf(), ERR_FATAL, FS_FreeFile(), FS_LoadFile(), IDALIASHEADER, IDMD3HEADER, LittleLong, Mem_PoolAllocType, model_s::name, Q_strcasecmp, Q_strncpyz(), R_LoadObjModel(), R_ModLoadAliasMD2Model(), and R_ModLoadAliasMD3Model().

Referenced by PrecalcNormalsAndTangents().

static void MD2Check ( const byte buf,
const char *  fileName,
int  bufSize,
void userData 
)
static
static void MD2SkinFix ( const byte buf,
const char *  fileName,
int  bufSize,
void userData 
)
static
static void MD2Visitor ( modelWorker_t  worker,
void userData 
)
static

Definition at line 533 of file ufomodel.cpp.

References FS_BuildFileList(), FS_NextFileFromFileList(), and ModelWorker().

Referenced by GLCmdsRemove(), ModelCheck(), and SkinFix().

static void ModelCheck ( void  )
static

Definition at line 546 of file ufomodel.cpp.

References MD2Check(), and MD2Visitor().

Referenced by main().

static void ModelWorker ( modelWorker_t  worker,
const char *  fileName,
void userData 
)
static

The caller has to ensure that the model is from the expected format.

Parameters
workerThe worker callback
fileNameThe file name of the model to load
userDataUser data that is passed to the worker function

Definition at line 403 of file ufomodel.cpp.

References Com_Error(), ERR_DROP, ERR_FATAL, FS_FreeFile(), FS_LoadFile(), IDALIASHEADER, IDBSPHEADER, IDMD3HEADER, LittleLong, and Q_strcasecmp.

Referenced by main(), and MD2Visitor().

static int PrecalcNormalsAndTangents ( const char *  filename)
static
static void PrecalcNormalsAndTangentsBatch ( const char *  pattern)
static

Definition at line 291 of file ufomodel.cpp.

References Com_Printf(), FS_BuildFileList(), FS_NextFileFromFileList(), and PrecalcNormalsAndTangents().

Referenced by main().

image_t* R_FindImage ( const char *  pname,
imagetype_t  type 
)

Finds or loads the given image.

See also
R_RegisterImage
Parameters
[in]pnameImage name Path relative to the game dir (e.g. textures/tex_common/nodraw)
[in]typeThe type of the image. This has influence on image filters and texture parameters when uploading the image data
Note
the image name has to be at least 5 chars long
See also
R_LoadTGA
R_LoadJPG
R_LoadPNG
Todo:
should also check the mipmapping

Definition at line 140 of file ufomodel.cpp.

References Com_Error(), Com_Printf(), Com_StripExtension(), ERR_FATAL, image_s::glowmap, Img_LoadImage(), it_glowmap, it_normalmap, it_roughnessmap, it_specularmap, it_world, MAX_QPATH, image_s::name, image_s::normalmap, R_ChangeImageType(), R_FindImage(), R_GetImage(), R_IsClampedImageType(), R_LoadImageData(), r_noTexture, image_s::roughnessmap, image_s::specularmap, image_s::type, and va().

image_t* R_LoadImageData ( const char *  name,
const byte pic,
int  width,
int  height,
imagetype_t  type 
)

Creates a new image from RGBA data. Stores it in the gltextures array and also uploads it.

Note
This is also used as an entry point for the generated r_noTexture
Parameters
[in]nameThe name of the newly created image
[in]picThe RGBA data of the image
[in]widthThe width of the image (power of two, please)
[in]heightThe height of the image (power of two, please)
[in]typeThe image type
See also
imagetype_t
Todo:
Instead of this hack, unit tests' build should link to the dummy GL driver

Definition at line 113 of file ufomodel.cpp.

References Com_Error(), Com_HashKey(), Com_Printf(), defaultMaterial, ERR_DROP, FOR_EACH_IMAGE, glGenTextures(), image_s::has_alpha, hash, HASH_Add, image_s::height, i, IMAGE_ARRAY_SIZE, imageArray_s::images, len, image_s::material, MAX_IMAGEHASH, Mem_AllocType, Mem_PoolAllocType, image_s::name, imageArray_s::next, OBJZERO, Q_strncpyz(), R_BindTexture, R_GetImage(), r_numImages, R_UploadTexture(), image_s::texnum, image_s::type, type, and image_s::width.

Referenced by R_FindImage().

void R_ReallocateTexunitArray ( gltexunit_t texunit,
int  size 
)

Reallocate texcoord array of the specified texunit, if needed.

Parameters
texunitPointer to texunit (TODO: remove this comment as obvious and redundant)
sizeThe new array size
Note
Also resets active texunit
See also
R_ReallocateStateArrays

Definition at line 579 of file ufomodel.cpp.

References rstate_s::active_texunit, gltexunit_s::array_size, COMPONENTS_TEXCOORD_ARRAY, Mem_SafeReAlloc, R_BindDefaultArray(), r_state, and gltexunit_s::texcoord_array.

static void SkinFix ( void  )
static

Definition at line 551 of file ufomodel.cpp.

References MD2SkinFix(), and MD2Visitor().

Referenced by main().

static void UM_DefaultParameter ( void  )
static

Definition at line 327 of file ufomodel.cpp.

References modelConfig_s::smoothness.

Referenced by main().

static void Usage ( void  )
static

Definition at line 310 of file ufomodel.cpp.

References Com_Printf().

Referenced by main(), and UM_Parameter().

static void WriteToFile ( const model_t mod,
const mAliasMesh_t mesh,
const char *  fileName 
)
static

Variable Documentation

memPool_t* com_fileSysPool

Definition at line 73 of file ufomodel.cpp.

memPool_t* com_genericPool

Definition at line 72 of file ufomodel.cpp.

modelConfig_t config
static

Definition at line 70 of file ufomodel.cpp.

rstate_t r_state

Definition at line 46 of file ufomodel.cpp.

memPool_t* vid_imagePool

Definition at line 76 of file ufomodel.cpp.

memPool_t* vid_lightPool

lightmap - wiped with every new map

Definition at line 75 of file ufomodel.cpp.

memPool_t* vid_modelPool

modeldata - wiped with every new map

Definition at line 74 of file ufomodel.cpp.