2 #include "../../shared/ufotypes.h"
3 #include "../../common/mem.h"
4 #include "../../shared/shared.h"
5 #include "../../common/filesys.h"
6 #include "../../shared/typedefs.h"
7 #include "../../common/mem.h"
8 #include "../../common/common.h"
9 #include "../../shared/byte.h"
30 Com_Error(
ERR_DROP,
"model '%s' has invalid skin number: %i", fileName, numSkins);
52 for (
int i = 0;
i < numSkins;
i++) {
55 printf(
" \\ - new skin: ");
57 scanf(
va(
"%%%is", MD2_MAX_SKINNAME), name);
63 Com_Printf(
"Error writing md2 file %s\n", fileName);
67 FS_Write(copy, bufSize, &md2ModelFile);
98 for (
int i = 0;
i < numSkins;
i++) {
107 Com_Printf(
" \\ - frameSize %i\n", frameSize);
108 Com_Printf(
" \\ - skinHeight %i\n", skinHeight);
109 Com_Printf(
" \\ - skinWidth %i\n", skinWidth);
114 Com_Printf(
" \\ - ofsFrames %i\n", ofsFrames);
115 Com_Printf(
" \\ - ofsGLCmds %i\n", ofsGLCmds);
136 uint32_t moveOffset = ofsEnd;
137 #define CHECKMAX(val) if ((val) > ofsSkins && (val) < moveOffset) moveOffset = (val);
147 printf(
" \\ - new skin number: ");
149 scanf(
"%i", &newSkins);
161 if (newSkins == numSkins) {
166 const int32_t deltaSkins = newSkins - numSkins;
168 if (ofsST > ofsSkins)
170 if (ofsTris > ofsSkins)
172 if (ofsFrames > ofsSkins)
174 if (ofsGLCmds > ofsSkins)
180 if (deltaSkins > 0) {
185 const int n = ofsEnd - moveOffset;
186 byte* from = copy + moveOffset;
187 byte* to = from + offsetDelta;
188 memmove(to, from, n);
190 if (deltaSkins > 0) {
192 for (
int i = numSkins;
i < numSkins + deltaSkins;
i++) {
194 memset(name, 0, MD2_MAX_SKINNAME);
195 strcpy(name,
".none");
197 printf(
" \\ - new skin: ");
199 scanf(
va(
"%%%is", MD2_MAX_SKINNAME), name);
205 Com_Printf(
"Error writing md2 file %s\n", fileName);
225 const size_t delta = numGLCmds *
sizeof(uint32_t);
243 *(
size_t*)userData += delta;
245 numGLCmds, fileName, delta);
#define Mem_ReAlloc(ptr, size)
void MD2SkinEdit(const byte *buf, const char *fileName, int bufSize, void *userData)
int FS_OpenFile(const char *filename, qFILE *file, filemode_t mode)
Finds and opens the file in the search path.
#define MD2_ALIAS_VERSION
const char * va(const char *format,...)
does a varargs printf into a temp buffer, so I don't need to have varargs versions of all text functi...
void Com_Printf(const char *const fmt,...)
void MD2SkinNum(const byte *buf, const char *fileName, int bufSize, void *userData)
void MD2Info(const byte *buf, const char *fileName, int bufSize, void *userData)
void Com_Error(int code, const char *fmt,...)
int FS_WriteFile(const void *buffer, size_t len, const char *filename)
void MD2GLCmdsRemove(const byte *buf, const char *fileName, int bufSize, void *userData)
the glcmd format: a positive integer starts a tristrip command, followed by that many vertex structur...
void MD2HeaderCheck(const dMD2Model_t *md2, const char *fileName, int bufSize)
QGL_EXTERN GLuint GLsizei GLsizei GLint GLenum GLchar * name
#define MD2_MAX_TRIANGLES
QGL_EXTERN GLuint GLsizei bufSize
#define Mem_Dup(type, in, n)
int FS_Write(const void *buffer, int len, qFILE *f)
Properly handles partial writes.