Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 24, 2006, 1:24:39 PM (18 years ago)
Author:
bottac
Message:

Support for animated textures in bsp maps started.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/bsp_model/src/lib/graphics/importer/bsp_file.cc

    r7596 r7801  
    2525#include "vector.h"
    2626#include "util/loading/resource_manager.h"
     27#include "movie_player.h"
    2728
    2829#include <SDL/SDL_endian.h>
     
    4546  int size;
    4647  struct stat results;
    47   // name = "/root/data/Kanti175.bsp";
     48
    4849
    4950  if (stat( name , &results) == 0) {
     
    393394    this->Materials[i].mat->setSpecular(0.4,0.4,1.0);
    394395    //this->Materials[i]->setShininess(100.0);
    395     this->Materials[i].mat->setTransparency(1.0);
     396   // this->Materials[i].mat->setTransparency(1.0);
    396397    this->Materials[i].mat->setDiffuseMap("pictures/ground.tga");
    397398    this->Materials[i].mat->setAmbientMap("pictures/ground.tga");
    398399    this->Materials[i].mat->setSpecularMap("pictures/ground.tga");
    399400    this->Materials[i].alpha = false;
     401    this->Materials[i].animated = false;
    400402     continue;
    401403    }
     404   
     405      // Check for mov
     406    strcpy(fileName, &this->textures[8+ 72*i]);
     407    strcpy(ext, ".mov");
     408    strncat (fileName, ext, strlen(fileName));
     409
     410    absFileName = ResourceManager::getFullName(fileName);
     411
     412    if(ResourceManager::isFile(absFileName)) {
     413      PRINTF(0)("BSP FILE: gefunden . \n");
     414      this->Materials[i] = this->loadAVI(fileName);
     415      continue;
     416    }
    402417     
     418    // Check for avi
     419    strcpy(fileName, &this->textures[8+ 72*i]);
     420    strcpy(ext, ".avi");
     421    strncat (fileName, ext, strlen(fileName));
     422
     423    absFileName = ResourceManager::getFullName(fileName);
     424
     425    if(ResourceManager::isFile(absFileName)) {
     426      PRINTF(0)("BSP FILE: gefunden . \n");
     427      this->Materials[i] = this->loadAVI(fileName);
     428      continue;
     429    }
     430   
     431       // Check for mpg
     432    strcpy(fileName, &this->textures[8+ 72*i]);
     433    strcpy(ext, ".mpg");
     434    strncat (fileName, ext, strlen(fileName));
     435
     436    absFileName = ResourceManager::getFullName(fileName);
     437
     438    if(ResourceManager::isFile(absFileName)) {
     439      PRINTF(0)("BSP FILE: gefunden . \n");
     440      this->Materials[i] = this->loadAVI(fileName);
     441      continue;
     442    }
    403443   
    404444    // Check for tga
     
    481521    this->Materials[i].mat->setSpecular(0.4,0.4,0.4);
    482522    //this->Materials[i]->setShininess(100.0);
    483     this->Materials[i].mat->setTransparency(1.0);
    484     this->Materials[i].mat->setDiffuseMap("pictures/ground.tga");
    485     this->Materials[i].mat->setAmbientMap("pictures/ground.tga");
    486     this->Materials[i].mat->setSpecularMap("pictures/ground.tga");
    487     this->Materials[i].alpha = false;
     523    //this->Materials[i].mat->setTransparency(1.0);
     524    this->Materials[i].mat->setDiffuseMap("pictures/error_texture.png");
     525    this->Materials[i].mat->setAmbientMap("pictures/error_texture.png");
     526    this->Materials[i].mat->setSpecularMap("pictures/error_texture.png");
     527    this->Materials[i].alpha = true;
     528    this->Materials[i].animated = false;
    488529   
    489530  }
     
    503544
    504545  Material* tmp = new Material();
    505   tmp->setDiffuse(1.0,1.0,1.0);
    506   tmp->setAmbient(1.0,1.0,1.0 );
     546   tmp->setDiffuse(1.0,1.0,1.0);
     547   tmp->setAmbient(1.0,1.0,1.0 );
    507548  tmp->setSpecular(1.0,1.0,1.0);
    508549  //    tmp->setShininess(.5);
    509   //    tmp->setTransparency(1.0);
     550  //    tmp->setTransparency(0.0);
    510551
    511552  tmp->setDiffuseMap(mat);
    512553
    513554  tmpAMat.mat = tmp;
    514 
     555  tmpAMat.animated = false;
     556  return tmpAMat;
     557}
     558
     559AMat BspFile::loadAVI(char* mat)
     560{
     561  AMat tmpAMat;
     562
     563
     564  MoviePlayer * testMC = new MoviePlayer(mat);
     565  testMC->start(0);
     566
     567  //Material* tmp = new Material();
     568 // tmp->setDiffuse(1.0,1.0,1.0);
     569  //tmp->setAmbient(1.0,1.0,1.0 );
     570  //tmp->setSpecular(1.0,1.0,1.0);
     571  //    tmp->setShininess(.5);tmpAMat
     572  //    tmp->setTransparency(0.0);
     573
     574  //tmp->setDiffuseMap(mat);
     575
     576  tmpAMat.aviMat = testMC;
     577  tmpAMat.animated = true;
     578  tmpAMat.alpha = true;
    515579  return tmpAMat;
    516580}
     
    533597  scale*=255.0;
    534598  sc*=scale;
    535   if(sc <= 205)
    536     ((unsigned char *)(&lightMapTexture))[i] = (unsigned char)sc + 50;
     599  if(sc <= 180)
     600    ((unsigned char *)(&lightMapTexture))[i] = (unsigned char)sc + 75;
    537601  else
    538602    ((unsigned char *)(&lightMapTexture))[i] = (unsigned char)sc;
     
    595659  int level = 7;
    596660  int level1 = 8;
    597   int size0 = SDL_SwapLE32(Face->size[0]);
    598   int size1 = SDL_SwapLE32(Face->size[1]);
     661  int size0 = (Face->size[0]);
     662  int size1 = (Face->size[1]);
    599663  // For each patch...
    600664  for(int i = 0; i <  ( size0 - 1)    ; i+=2) {
     
    609673      for(int k = 0; k < 3; k++) {
    610674        for(int l = 0; l < 3; l++) {
    611           controls[k +3*l]. position[0] =   SDL_SwapLE32(    BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[0]);
    612           controls[k +3*l]. position[1] =   SDL_SwapLE32(    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]);
    613           controls[k +3*l]. position[2] =   SDL_SwapLE32(    BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]); /*Face->n_vertexes*/
    614 
    615           controlsTmp[2-k +6-3*l]. position[0] =   SDL_SwapLE32(    BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].position[0]);
    616           controlsTmp[2-k +6-3*l]. position[1] =   SDL_SwapLE32(    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]);
    617           controlsTmp[2-k +6-3*l]. position[2] =   SDL_SwapLE32(    BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]); /*Face->n_vertexes*/
    618 
    619           VControls[k +3*l]. position[0] =   SDL_SwapLE32(    BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].position[0]);
    620           VControls[k +3*l]. position[1] =   SDL_SwapLE32(    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]);
    621           VControls[k +3*l]. position[2] =   SDL_SwapLE32(    BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]);
    622 
    623           VControls[k +3*l]. normal[0] =   SDL_SwapLE32(    BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].normal[0]);
    624           VControls[k +3*l]. normal[1] =   SDL_SwapLE32(    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].normal[1]);
    625           VControls[k +3*l]. normal[2] =   SDL_SwapLE32(    BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].normal[2]);
    626 
    627           VControls[k +3*l]. texcoord[0][0]=    SDL_SwapLE32(    BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].texcoord[0][0]);
    628           VControls[k +3*l]. texcoord[0][1] =   SDL_SwapLE32(    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].texcoord[0][1]);
    629           VControls[k +3*l]. texcoord[1][0] =   SDL_SwapLE32(    BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].texcoord[1][0]);
    630           VControls[k +3*l]. texcoord[1][1] =   SDL_SwapLE32(    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].texcoord[1][1]);
     675          controls[k +3*l]. position[0] =   (    BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[0]);
     676          controls[k +3*l]. position[1] =   (    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]);
     677          controls[k +3*l]. position[2] =   (    BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]); /*Face->n_vertexes*/
     678
     679          controlsTmp[2-k +6-3*l]. position[0] =   (    BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].position[0]);
     680          controlsTmp[2-k +6-3*l]. position[1] =   (    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]);
     681          controlsTmp[2-k +6-3*l]. position[2] =   (    BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]); /*Face->n_vertexes*/
     682
     683          VControls[k +3*l]. position[0] =   (    BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].position[0]);
     684          VControls[k +3*l]. position[1] =   (    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]);
     685          VControls[k +3*l]. position[2] =   (    BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]);
     686
     687          VControls[k +3*l]. normal[0] =   (    BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].normal[0]);
     688          VControls[k +3*l]. normal[1] =   (    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].normal[1]);
     689          VControls[k +3*l]. normal[2] =   (    BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].normal[2]);
     690
     691          VControls[k +3*l]. texcoord[0][0]=    (    BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].texcoord[0][0]);
     692          VControls[k +3*l]. texcoord[0][1] =   (    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].texcoord[0][1]);
     693          VControls[k +3*l]. texcoord[1][0] =   (    BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].texcoord[1][0]);
     694          VControls[k +3*l]. texcoord[1][1] =   (    BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].texcoord[1][1]);
    631695
    632696
     
    911975  //Face->n_meshverts = sz;
    912976}
     977
     978void BspFile::swapAllBspCoordinates()
     979{
     980 
     981}
     982
     983void BspFile::swapCoords((int *) array)
     984{
     985 
     986}
     987
     988void BspFile::swapCoords((float *) array)
     989{
     990 
     991}
     992
Note: See TracChangeset for help on using the changeset viewer.