UFO: Alien Invasion
|
Starting point for model tool. More...
#include "../../shared/ufotypes.h"
#include "../../common/mem.h"
#include "../../shared/shared.h"
#include "../../common/filesys.h"
#include "../../shared/typedefs.h"
#include "../../client/renderer/r_gl.h"
#include "../../client/renderer/r_material.h"
#include "../../client/renderer/r_image.h"
#include "../../client/renderer/r_model.h"
#include "../../client/renderer/r_state.h"
#include "../../shared/images.h"
#include "../../common/common.h"
#include "md2.h"
#include <SDL_main.h>
#include <cstddef>
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_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. More... | |
image_t * | R_FindImage (const char *pname, imagetype_t type) |
Finds or loads the given image. More... | |
void | Com_Error (int code, const char *fmt,...) |
static model_t * | LoadModel (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_t * | r_noTexture |
static modelConfig_t | config |
memPool_t * | com_genericPool |
memPool_t * | com_fileSysPool |
memPool_t * | vid_modelPool |
memPool_t * | vid_lightPool |
memPool_t * | vid_imagePool |
Starting point for model tool.
Definition in file ufomodel.cpp.
#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 struct modelConfig_s modelConfig_t |
Definition at line 395 of file ufomodel.cpp.
enum ufoModelAction_t |
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.
Definition at line 99 of file ufomodel.cpp.
References Com_Printf(), Q_vsnprintf(), and modelConfig_s::verbose.
Definition at line 172 of file ufomodel.cpp.
References Exit(), and Q_vsnprintf().
Referenced by LoadModel(), ModelWorker(), PrecalcNormalsAndTangents(), R_FindImage(), and R_LoadImageData().
void Com_Printf | ( | const char * | format, |
... | |||
) |
Definition at line 87 of file ufomodel.cpp.
References Q_vsnprintf().
Referenced by Com_DPrintf(), GLCmdsRemove(), LoadModel(), main(), MD2Check(), MD2SkinFix(), PrecalcNormalsAndTangents(), PrecalcNormalsAndTangentsBatch(), R_FindImage(), R_LoadImageData(), UM_Parameter(), Usage(), and WriteToFile().
Definition at line 80 of file ufomodel.cpp.
References Mem_Shutdown().
Referenced by Com_Error(), main(), and UM_Parameter().
Definition at line 556 of file ufomodel.cpp.
References Com_Printf(), MD2GLCmdsRemove(), MD2Visitor(), and UFO_SIZE_T.
Referenced by main().
|
static |
Loads in a model for the given name.
[in] | name | Filename 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().
Definition at line 590 of file ufomodel.cpp.
References modelConfig_s::action, ACTION_CHECK, ACTION_GLCMDSREMOVE, ACTION_INFO, ACTION_MDX, ACTION_NONE, ACTION_SKINEDIT, ACTION_SKINFIX, ACTION_SKINNUM, Com_Printf(), Exit(), modelConfig_s::fileName, FS_InitFilesystem(), GLCmdsRemove(), modelConfig_s::inputName, MD2Info(), MD2SkinEdit(), MD2SkinNum(), Mem_CreatePool, Mem_Init(), Mem_PoolAllocType, Mem_Shutdown(), ModelCheck(), ModelWorker(), image_s::name, PrecalcNormalsAndTangents(), PrecalcNormalsAndTangentsBatch(), Q_strncpyz(), SkinFix(), Swap_Init(), UM_DefaultParameter(), UM_Parameter(), Usage(), and VERSION.
|
static |
Definition at line 492 of file ufomodel.cpp.
References Com_GetExtension(), Com_Printf(), i, LittleLong, MD2_MAX_SKINNAME, MD2HeaderCheck(), name, dMD2Model_t::num_skins, dMD2Model_t::ofs_skins, and R_AliasModelGetSkin().
Referenced by ModelCheck().
|
static |
Definition at line 430 of file ufomodel.cpp.
References Com_GetExtension(), Com_Printf(), Com_SkipPath(), Com_sprintf(), Com_StripExtension(), FS_WriteFile(), i, LittleLong, MD2_MAX_SKINNAME, MD2HeaderCheck(), Mem_Dup, Mem_Free, name, dMD2Model_t::num_skins, OBJZERO, dMD2Model_t::ofs_skins, and R_AliasModelGetSkin().
Referenced by SkinFix().
|
static |
Definition at line 533 of file ufomodel.cpp.
References FS_BuildFileList(), FS_NextFileFromFileList(), and ModelWorker().
Referenced by GLCmdsRemove(), ModelCheck(), and SkinFix().
Definition at line 546 of file ufomodel.cpp.
References MD2Check(), and MD2Visitor().
Referenced by main().
|
static |
The caller has to ensure that the model is from the expected format.
worker | The worker callback |
fileName | The file name of the model to load |
userData | User 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 |
Definition at line 257 of file ufomodel.cpp.
References model_s::alias, Com_Error(), Com_Printf(), Com_StripExtension(), ERR_DROP, FS_CheckFile(), i, LoadModel(), MAX_QPATH, mAliasModel_s::meshes, mAliasModel_s::num_frames, mAliasModel_s::num_meshes, modelConfig_s::overwrite, Q_strcat(), R_ModCalcUniqueNormalsAndTangents(), modelConfig_s::smoothness, and WriteToFile().
Referenced by main(), and PrecalcNormalsAndTangentsBatch().
|
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.
[in] | pname | Image name Path relative to the game dir (e.g. textures/tex_common/nodraw) |
[in] | type | The type of the image. This has influence on image filters and texture parameters when uploading the image data |
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.
[in] | name | The name of the newly created image |
[in] | pic | The RGBA data of the image |
[in] | width | The width of the image (power of two, please) |
[in] | height | The height of the image (power of two, please) |
[in] | type | The image type |
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().
Reallocate arrays of GL primitives if needed.
size | The new array size |
Definition at line 563 of file ufomodel.cpp.
References rstate_s::array_size, rstate_s::color_array, COMPONENTS_COLOR_ARRAY, COMPONENTS_INDEX_ARRAY, COMPONENTS_NORMAL_ARRAY, COMPONENTS_TANGENT_ARRAY, COMPONENTS_VERTEX_ARRAY2D, COMPONENTS_VERTEX_ARRAY3D, GL_NEXT_NORMAL_ARRAY, GL_NEXT_TANGENT_ARRAY, GL_NEXT_VERTEX_ARRAY, GL_TANGENT_ARRAY, rstate_s::index_array, Mem_SafeReAlloc, rstate_s::next_normal_array, rstate_s::next_tangent_array, rstate_s::next_vertex_array_3d, rstate_s::normal_array, R_BindDefaultArray(), r_state, rstate_s::tangent_array, rstate_s::vertex_array_2d, and rstate_s::vertex_array_3d.
void R_ReallocateTexunitArray | ( | gltexunit_t * | texunit, |
int | size | ||
) |
Reallocate texcoord array of the specified texunit, if needed.
texunit | Pointer to texunit (TODO: remove this comment as obvious and redundant) |
size | The new array size |
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.
Definition at line 551 of file ufomodel.cpp.
References MD2SkinFix(), and MD2Visitor().
Referenced by main().
Definition at line 327 of file ufomodel.cpp.
References modelConfig_s::smoothness.
Referenced by main().
Parameter parsing.
Definition at line 335 of file ufomodel.cpp.
References modelConfig_s::action, ACTION_CHECK, ACTION_GLCMDSREMOVE, ACTION_INFO, ACTION_MDX, ACTION_SKINEDIT, ACTION_SKINFIX, ACTION_SKINNUM, Com_Printf(), Exit(), modelConfig_s::fileName, i, modelConfig_s::inputName, modelConfig_s::overwrite, Q_streq, Q_strncpyz(), modelConfig_s::smoothness, Usage(), and modelConfig_s::verbose.
Referenced by main().
Definition at line 310 of file ufomodel.cpp.
References Com_Printf().
Referenced by main(), and UM_Parameter().
|
static |
Definition at line 228 of file ufomodel.cpp.
References Com_Printf(), f, FILE_WRITE, FS_OpenFile(), FS_Write(), i, IDMDXHEADER, mAliasMesh_s::indexes, LittleLong, MDX_VERSION, mAliasMesh_s::num_tris, and mAliasMesh_s::num_verts.
Referenced by PrecalcNormalsAndTangents().
memPool_t* com_fileSysPool |
Definition at line 73 of file ufomodel.cpp.
memPool_t* com_genericPool |
Definition at line 72 of file ufomodel.cpp.
|
static |
Definition at line 70 of file ufomodel.cpp.
image_t* r_noTexture |
Definition at line 47 of file ufomodel.cpp.
Referenced by R_Draw3DGlobe(), R_DrawFlatGeoscape(), R_DrawInitLocal(), R_FindImage(), R_FindPics(), R_InitImages(), R_InitMiscTexture(), R_LoadActorSkinsFromModel(), R_LoadAnimImages(), R_LoadMaterials(), R_ParseStage(), R_ReloadImageData(), R_SwitchModelMemPoolTag(), R_UploadData(), UI_LoadImage(), and UI_LoadWrappedImage().
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.