Changeset 203

Show
Ignore:
Timestamp:
03/04/08 11:33:05 (5 months ago)
Author:
mattn
Message:

* improved quake2 support by added a quake2 boolean to the CGameDescription class - this allows us to even use the quake2 surfaceplugin function (like e.g. SetFaceTexdef?_Q2) without a hardcoded game name of q2.game or heretic2.game
* added support for relative md2 skin paths
* fixed wrong _pico_printf call

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • GtkRadiant/branches/ZeroRadiant/libs/picomodel/pm_md2.c

    r183 r203  
    338338        md2Triangle_t   *p_md2Triangle; 
    339339 
     340        char                    path[ MD2_MAX_SKINNAME ]; 
    340341        char                    skinname[ MD2_MAX_SKINNAME ]; 
    341       md2_t                   *md2; 
    342       md2St_t                 *texCoord; 
     342      md2_t                   *md2; 
     343      md2St_t                 *texCoord; 
    343344        md2Frame_t              *frame; 
    344345        md2Triangle_t   *triangle; 
     
    436437 
    437438        // Print out md2 values 
    438         _pico_printf(PICO_VERBOSE,"Skins: %d  Verts: %d  STs: %d  Triangles: %d  Frames: %d\nSkin Name \"%s\"\n", md2->numSkins, md2->numXYZ, md2->numST, md2->numTris, md2->numFrames, &skinname ); 
    439  
     439        _pico_printf(PICO_VERBOSE,"Skins: %d  Verts: %d  STs: %d  Triangles: %d  Frames: %d\nSkin Name \"%s\"\n", md2->numSkins, md2->numXYZ, md2->numST, md2->numTris, md2->numFrames, skinname ); 
     440 
     441        // relative texture path - allows moving of models in game dir structure without changing the skinpath 
     442        // e.g. used in ufo:ai 
     443        if (skinname[0] == '.') { 
     444                strncpy(path, fileName, MD2_MAX_SKINNAME); 
     445                for (i = MD2_MAX_SKINNAME; i--;) { 
     446                        // skip filename 
     447                        if (path[i] == '/' || path[i] == '\\') 
     448                                break; 
     449                        path[i] = '\0'; 
     450                } 
     451                strncat(path, &skinname[1], MD2_MAX_SKINNAME); 
     452                strncpy(skinname, path, MD2_MAX_SKINNAME); 
     453 
     454                // Print out md2 values 
     455                _pico_printf(PICO_VERBOSE,"Relative skin path converted to: \"%s\" (%s)\n", skinname, fileName ); 
     456        } 
     457         
    440458        // detox Skin name 
    441459        _pico_setfext( skinname, "" ); 
  • GtkRadiant/branches/ZeroRadiant/radiant/preferences.cpp

    r200 r203  
    747747  mGameFile = GameFile; 
    748748 
     749  prop = (char*)xmlGetProp(pNode, (xmlChar*)"quake2"); 
     750  if (prop == NULL) 
     751  { 
     752    // default 
     753    quake2 = false; 
     754  } 
     755  else 
     756  { 
     757    quake2 = true; 
     758    xmlFree(prop); 
     759  } 
     760 
    749761  prop = (char*)xmlGetProp(pNode, (xmlChar*)"basegame"); 
    750762  if (prop == NULL) 
  • GtkRadiant/branches/ZeroRadiant/radiant/preferences.h

    r197 r203  
    181181  bool mNoPatch; ///< this game doesn't support patch technology 
    182182  Str mCaulkShader; ///< the shader to use for caulking 
     183  bool quake2; ///< set this to true to get quake2 
    183184 
    184185  CGameDescription() { mpDoc = NULL; } 
  • GtkRadiant/branches/ZeroRadiant/radiant/surfaceplugin.cpp

    r185 r203  
    169169  bool b_isQuake2; 
    170170 
    171   if ( ( g_pGameDescription->mGameFile == "q2.game" ) || ( g_pGameDescription->mGameFile == "heretic2.game" ) ) 
     171  if ( ( g_pGameDescription->quake2 ) || ( g_pGameDescription->mGameFile == "q2.game" ) || ( g_pGameDescription->mGameFile == "heretic2.game" ) ) 
    172172    b_isQuake2 = true; 
    173173  else