triangles[2].z=j;
intersecting=LineFacet(p1,p2,triangles[0],triangles[1],triangles[2],&point);
- distance=findDistancefast(&p1,&point);
+ distance=distsq(&p1,&point);
if((distance<olddistance||firstintersecting==-1)&&intersecting==1){olddistance=distance; firstintersecting=1; *p=point;}
triangles[0].x=i+1;
triangles[2].z=j+1;
intersecting=LineFacet(p1,p2,triangles[0],triangles[1],triangles[2],&point);
- distance=findDistancefast(&p1,&point);
+ distance=distsq(&p1,&point);
if((distance<olddistance||firstintersecting==-1)&&intersecting==1){olddistance=distance; firstintersecting=1; *p=point;}
}
}
vertex.x=i*scale;
vertex.z=j*scale;
vertex.y=heightmap[i][j]*scale;
- distance=findDistancefast(&viewer,&vertex);
+ distance=distsq(&viewer,&vertex);
if(distance>viewdistsquared)distance=viewdistsquared;
colors[i][j][3]=(viewdistsquared-(distance-(viewdistsquared*fadestart))*(1/(1-fadestart)))/viewdistsquared;
}
vertex.x=i*scale;
vertex.z=j*scale;
vertex.y=heightmap[i][j]*scale;
- distance=findDistancefast(&viewer,&vertex);
+ distance=distsq(&viewer,&vertex);
if(distance>viewdistsquared)distance=viewdistsquared;
colors[i][j][3]=(viewdistsquared-(distance-(viewdistsquared*fadestart))*(1/(1-fadestart)))/viewdistsquared;
}
terrainpoint.x=i*patch_size+(patch_size)/2;
terrainpoint.y=viewer.y;//heightmap[i][j]*scale;
terrainpoint.z=j*patch_size+(patch_size)/2;
- distance[i][j]=findDistancefast(&viewer,&terrainpoint);
+ distance[i][j]=distsq(&viewer,&terrainpoint);
}
}
}
for(i=0;i<numdecals;i++){
if(decaltype[i]==blooddecalfast&&decalalivetime[i]<2)decalalivetime[i]=2;
if((decaltype[i]==shadowdecal||decaltype[i]==shadowdecalpermanent)&&decaltype[i]!=lasttype){
- glBindTexture( GL_TEXTURE_2D, shadowtexture);
+ shadowtexture.bind();
if(!blend){
blend=1;
glAlphaFunc(GL_GREATER, 0.0001);
}
}
if(decaltype[i]==footprintdecal&&decaltype[i]!=lasttype){
- glBindTexture( GL_TEXTURE_2D, footprinttexture);
+ footprinttexture.bind();
if(!blend){
blend=1;
glAlphaFunc(GL_GREATER, 0.0001);
}
}
if(decaltype[i]==bodyprintdecal&&decaltype[i]!=lasttype){
- glBindTexture( GL_TEXTURE_2D, bodyprinttexture);
+ bodyprinttexture.bind();
if(!blend){
blend=1;
glAlphaFunc(GL_GREATER, 0.0001);
}
}
if((decaltype[i]==blooddecal||decaltype[i]==blooddecalslow)&&decaltype[i]!=lasttype){
- glBindTexture( GL_TEXTURE_2D, bloodtexture);
+ bloodtexture.bind();
if(blend){
blend=0;
glAlphaFunc(GL_GREATER, 0.15);
}
}
if((decaltype[i]==blooddecalfast)&&decaltype[i]!=lasttype){
- glBindTexture( GL_TEXTURE_2D, bloodtexture2);
+ bloodtexture2.bind();
if(blend){
blend=0;
glAlphaFunc(GL_GREATER, 0.15);
}
}
if(decaltype[i]==shadowdecal||decaltype[i]==shadowdecalpermanent){
- distancemult=(viewdistsquared-(findDistancefast(&viewer,&decalposition[i])-(viewdistsquared*fadestart))*(1/(1-fadestart)))/viewdistsquared;
+ distancemult=(viewdistsquared-(distsq(&viewer,&decalposition[i])-(viewdistsquared*fadestart))*(1/(1-fadestart)))/viewdistsquared;
if(distancemult>=1)glColor4f(1,1,1,decalopacity[i]);
if(distancemult<1)glColor4f(1,1,1,decalopacity[i]*distancemult);
}
if(decaltype[i]==footprintdecal||decaltype[i]==bodyprintdecal){
- distancemult=(viewdistsquared-(findDistancefast(&viewer,&decalposition[i])-(viewdistsquared*fadestart))*(1/(1-fadestart)))/viewdistsquared;
+ distancemult=(viewdistsquared-(distsq(&viewer,&decalposition[i])-(viewdistsquared*fadestart))*(1/(1-fadestart)))/viewdistsquared;
if(distancemult>=1){
glColor4f(1,1,1,decalopacity[i]);
if(decalalivetime[i]>3)glColor4f(1,1,1,decalopacity[i]*(5-decalalivetime[i])/2);
}
}
if((decaltype[i]==blooddecal||decaltype[i]==blooddecalfast||decaltype[i]==blooddecalslow)){
- distancemult=(viewdistsquared-(findDistancefast(&viewer,&decalposition[i])-(viewdistsquared*fadestart))*(1/(1-fadestart)))/viewdistsquared;
+ distancemult=(viewdistsquared-(distsq(&viewer,&decalposition[i])-(viewdistsquared*fadestart))*(1/(1-fadestart)))/viewdistsquared;
if(distancemult>=1){
glColor4f(decalbrightness[i],decalbrightness[i],decalbrightness[i],decalopacity[i]);
if(decalalivetime[i]<4)glColor4f(decalbrightness[i],decalbrightness[i],decalbrightness[i],decalopacity[i]*decalalivetime[i]*.25);
Terrain::Terrain()
{
- bloodtexture = 0;
- bloodtexture2 = 0;
- shadowtexture = 0;
- footprinttexture = 0;
- bodyprinttexture = 0;
- breaktexture = 0;
- terraintexture = 0;
size = 0;
memset(patchobjectnum, 0, sizeof(patchobjectnum));
}
Terrain::~Terrain()
{
- if(terraintexture)glDeleteTextures( 1, &terraintexture );
- if(shadowtexture) glDeleteTextures( 1, &shadowtexture );
- if(bodyprinttexture) glDeleteTextures( 1, &bodyprinttexture );
- if(footprinttexture) glDeleteTextures( 1, &footprinttexture );
- if(bloodtexture) glDeleteTextures( 1, &bloodtexture );
- if(bloodtexture2) glDeleteTextures( 1, &bloodtexture2 );
- if(breaktexture) glDeleteTextures( 1, &breaktexture );
+ terraintexture.destroy();
+ shadowtexture.destroy();
+ bodyprinttexture.destroy();
+ footprinttexture.destroy();
+ bloodtexture.destroy();
+ bloodtexture2.destroy();
+ breaktexture.destroy();
}