mesh->data_texcoord2f = Mem_Alloc(loadmodel->mempool, mesh->num_vertices * sizeof(float[2]));
mesh->data_morphvertex3f = Mem_Alloc(loadmodel->mempool, mesh->num_vertices * mesh->num_morphframes * sizeof(float[3]));
for (j = 0;j < mesh->num_triangles * 3;j++)
- mesh->data_element3i[j] = LittleLong(((int *)((qbyte *)pinmesh + pinmesh->lump_elements))[j]);
+ mesh->data_element3i[j] = LittleLong(((int *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_elements)))[j]);
for (j = 0;j < mesh->num_vertices;j++)
{
- mesh->data_texcoord2f[j * 2 + 0] = LittleFloat(((float *)((qbyte *)pinmesh + pinmesh->lump_texcoords))[j * 2 + 0]);
- mesh->data_texcoord2f[j * 2 + 1] = LittleFloat(((float *)((qbyte *)pinmesh + pinmesh->lump_texcoords))[j * 2 + 1]);
+ mesh->data_texcoord2f[j * 2 + 0] = LittleFloat(((float *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_texcoords)))[j * 2 + 0]);
+ mesh->data_texcoord2f[j * 2 + 1] = LittleFloat(((float *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_texcoords)))[j * 2 + 1]);
}
for (j = 0;j < mesh->num_vertices * mesh->num_morphframes;j++)
{
- mesh->data_morphvertex3f[j * 3 + 0] = LittleShort(((short *)((qbyte *)pinmesh + pinmesh->lump_framevertices))[j * 4 + 0]) * (1.0f / 64.0f);
- mesh->data_morphvertex3f[j * 3 + 1] = LittleShort(((short *)((qbyte *)pinmesh + pinmesh->lump_framevertices))[j * 4 + 1]) * (1.0f / 64.0f);
- mesh->data_morphvertex3f[j * 3 + 2] = LittleShort(((short *)((qbyte *)pinmesh + pinmesh->lump_framevertices))[j * 4 + 2]) * (1.0f / 64.0f);
+ mesh->data_morphvertex3f[j * 3 + 0] = LittleShort(((short *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_framevertices)))[j * 4 + 0]) * (1.0f / 64.0f);
+ mesh->data_morphvertex3f[j * 3 + 1] = LittleShort(((short *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_framevertices)))[j * 4 + 1]) * (1.0f / 64.0f);
+ mesh->data_morphvertex3f[j * 3 + 2] = LittleShort(((short *)((qbyte *)pinmesh + LittleLong(pinmesh->lump_framevertices)))[j * 4 + 2]) * (1.0f / 64.0f);
}
Mod_ValidateElements(mesh->data_element3i, mesh->num_triangles, mesh->num_vertices, __FILE__, __LINE__);
Mod_Alias_Mesh_CompileFrameZero(mesh);
if (LittleLong(pinmesh->num_shaders) >= 1)
- Mod_BuildAliasSkinsFromSkinFiles(mesh->data_skins, skinfiles, pinmesh->name, ((md3shader_t *)((qbyte *) pinmesh + pinmesh->lump_shaders))->name);
+ Mod_BuildAliasSkinsFromSkinFiles(mesh->data_skins, skinfiles, pinmesh->name, ((md3shader_t *)((qbyte *) pinmesh + LittleLong(pinmesh->lump_shaders)))->name);
else
for (j = 0;j < mesh->num_skins;j++)
Mod_BuildAliasSkinFromSkinFrame(mesh->data_skins + j, NULL);
{NULL, NULL}
};
-// Handle for the Vorbisfile DLL
+// Handles for the Vorbis and Vorbisfile DLLs
+static dllhandle_t vo_dll = NULL;
static dllhandle_t vf_dll = NULL;
typedef struct
*/
qboolean OGG_OpenLibrary (void)
{
- const char* dllname;
+ const char *dllname_vo, *dllname_vf;
// Already loaded?
if (vf_dll)
return false;
#ifdef WIN32
- dllname = "vorbisfile.dll";
+ dllname_vo = "vorbis.dll";
+ dllname_vf = "vorbisfile.dll";
+#elif defined(MACOSX)
+ dllname_vo = "libvorbis.dylib";
+ dllname_vf = "libvorbisfile.dylib";
#else
- dllname = "libvorbisfile.so";
+ dllname_vo = "libvorbis.so";
+ dllname_vf = "libvorbisfile.so";
#endif
- // Load the DLL
- if (! Sys_LoadLibrary (dllname, &vf_dll, oggvorbisfuncs))
+ // Load the DLLs
+ // We need to load both by hand because some OSes seem to not load
+ // the vorbis DLL automatically when loading the VorbisFile DLL
+ if (! Sys_LoadLibrary (dllname_vo, &vo_dll, NULL) ||
+ ! Sys_LoadLibrary (dllname_vf, &vf_dll, oggvorbisfuncs))
{
+ Sys_UnloadLibrary (&vo_dll);
Con_Printf ("Ogg Vorbis support disabled\n");
return false;
}
void OGG_CloseLibrary (void)
{
Sys_UnloadLibrary (&vf_dll);
+ Sys_UnloadLibrary (&vo_dll);
}