diff options
| author | Nguyễn Gia Phong <mcsinyx@disroot.org> | 2021-06-17 14:20:54 +0700 |
|---|---|---|
| committer | Nguyễn Gia Phong <mcsinyx@disroot.org> | 2021-06-17 14:22:53 +0700 |
| commit | 602a0c5951050e7cce645534cb4f136cf9f4fee4 (patch) | |
| tree | e70e63b0b0058830e58c244ad917bc892c10418f /Source/Sprites.cpp | |
| parent | 094e12df1ebb81d304803be4b274546384ec117c (diff) | |
| download | blackshades-602a0c5951050e7cce645534cb4f136cf9f4fee4.tar.gz | |
Rename source and build directory1.1.1
Diffstat (limited to 'Source/Sprites.cpp')
| -rw-r--r-- | Source/Sprites.cpp | 331 |
1 files changed, 0 insertions, 331 deletions
diff --git a/Source/Sprites.cpp b/Source/Sprites.cpp deleted file mode 100644 index f800282..0000000 --- a/Source/Sprites.cpp +++ /dev/null @@ -1,331 +0,0 @@ -#include "Sprites.h" -#include "Textures.h" - -extern double multiplier; -extern bool slomo; -extern Fog fog; -extern bool blood; -extern float fogcolorr; -extern float fogcolorg; -extern float fogcolorb; -//Functions -extern float sinefluct; -extern int environment; -extern Model gunmodels[10]; -extern Camera camera; -extern float precipitationhorz; -extern float precipitationvert; -extern float precipitationdensity; -extern float snowdelay; - -int Sprites::MakeSprite(int atype, float abrightness, float acolor1, float acolor2, float acolor3, XYZ alocation, XYZ avelocity, float asize){ - type[howmanysprites]=atype; - rotation[howmanysprites]=Random()%360; - brightness[howmanysprites]=abrightness; - color1[howmanysprites]=acolor1; - color2[howmanysprites]=acolor2; - color3[howmanysprites]=acolor3; - location[howmanysprites]=alocation; - oldlocation[howmanysprites]=alocation; - velocity[howmanysprites]=avelocity; - size[howmanysprites]=asize; - initialsize[howmanysprites]=asize; - initialbrightness[howmanysprites]=abrightness; - initialvelocity[howmanysprites]=avelocity; - alivetime[howmanysprites]=0; - owner[howmanysprites]=0; - if(howmanysprites<maxsprites){howmanysprites++;} - - return 0; -} - -int Sprites::MakeSprite(int atype, float abrightness, float acolor1, float acolor2, float acolor3, XYZ alocation, XYZ avelocity, float asize, int aowner){ - type[howmanysprites]=atype; - rotation[howmanysprites]=Random()%360; - brightness[howmanysprites]=abrightness; - color1[howmanysprites]=acolor1; - color2[howmanysprites]=acolor2; - color3[howmanysprites]=acolor3; - location[howmanysprites]=alocation; - oldlocation[howmanysprites]=alocation; - velocity[howmanysprites]=avelocity; - size[howmanysprites]=asize; - initialsize[howmanysprites]=asize; - initialbrightness[howmanysprites]=abrightness; - initialvelocity[howmanysprites]=avelocity; - alivetime[howmanysprites]=0; - owner[howmanysprites]=aowner; - if(howmanysprites<maxsprites){howmanysprites++;} - - return 0; -} - -int Sprites::DeleteSprite(int which){ - if(which>=0){ - location[which]=location[howmanysprites-1]; - oldlocation[which]=oldlocation[howmanysprites-1]; - velocity[which]=velocity[howmanysprites-1]; - initialsize[which]=initialsize[howmanysprites-1]; - size[which]=size[howmanysprites-1]; - brightness[which]=brightness[howmanysprites-1]; - initialbrightness[which]=initialbrightness[howmanysprites-1]; - color1[which]=color1[howmanysprites-1]; - color2[which]=color2[howmanysprites-1]; - color3[which]=color3[howmanysprites-1]; - alivetime[which]=alivetime[howmanysprites-1]; - rotation[which]=rotation[howmanysprites-1]; - type[which]=type[howmanysprites-1]; - type[howmanysprites-1]=0; - - if(howmanysprites>0){howmanysprites--;} - } - - return 0; -} - -void Sprites::LoadFlareTexture(char *fileName) -{ - flaretextureptr = loadTexture(fileName); -} - -void Sprites::LoadMuzzleFlareTexture(char *fileName) -{ - muzzleflaretextureptr = loadTexture(fileName); -} - -void Sprites::LoadSmokeTexture(char *fileName) -{ - smoketextureptr = loadTexture(fileName); -} - -void Sprites::LoadBloodTexture(char *fileName) -{ - bloodtextureptr = loadTexture(fileName); -} - -void Sprites::LoadRainTexture(char *fileName) -{ - raintextureptr = loadTexture(fileName); -} - -void Sprites::LoadSnowTexture(char *fileName) -{ - snowtextureptr = loadTexture(fileName); -} - -void Sprites::LoadBulletTexture(char *fileName) -{ - bullettextureptr = loadTexture(fileName); -} - - -void Sprites::DoStuff() -{ - for(int i=0;i<howmanysprites;i++){ - if(type[i]!=bullet&&type[i]!=bulletinstant&&type[i]!=grenadesprite&&type[i]!=pinsprite&&type[i]!=grenadesprite)oldlocation[i]=location[i]; - if(type[i]==muzzleflashsprite)brightness[i]-=multiplier*10; - if(type[i]==flashsprite)brightness[i]-=multiplier*10; - if(type[i]==smokesprite||type[i]==smokespritenoup||type[i]==bloodspritedown||type[i]==particlesspritedown)brightness[i]-=multiplier*.5; - if(type[i]==bloodspritenoup)brightness[i]-=multiplier*.9; - if(type[i]==smokesprite)size[i]=initialsize[i]*abs(fast_sqrt(fast_sqrt((float)abs(initialbrightness[i]-brightness[i]))));//velocity[i].y+=multiplier*20; - if(type[i]==bloodspritenoup||type[i]==particlesspritedown)size[i]=initialsize[i]*(initialbrightness[i]-brightness[i]+.4)*(initialbrightness[i]-brightness[i]+.4);//velocity[i].y+=multiplier*20; - if(type[i]==bloodspritenoup||type[i]==particlesspritedown)velocity[i]=initialvelocity[i]*brightness[i];//velocity[i].y+=multiplier*20; - if(type[i]==bullet)brightness[i]-=multiplier; - if(type[i]==snowsprite)rotation[i]+=multiplier*50; - if(type[i]==smokesprite)rotation[i]+=multiplier*30; - if(type[i]==smokespritenoup)rotation[i]+=multiplier*30; - if(type[i]==bulletinstant){ - brightness[i]=0; - } - if(type[i]==grenadesprite||type[i]==spoonsprite||type[i]==pinsprite){ - if(findLengthfast(velocity[i])>0){ - velocity[i].y+=gravity*multiplier; - rotation[i]+=multiplier*2; - } - } - if(type[i]==bloodspritedown||type[i]==particlesspritedown){ - velocity[i].y+=gravity*multiplier; - } - - if(type[i]!=bulletinstant&&type[i]!=bullet)location[i]=location[i]+velocity[i]*multiplier; - - alivetime[i]+=multiplier; - if(brightness[i]<=0)DeleteSprite(i); - if(type[i]==snowsprite&&(location[i].y<-.1||environment!=snowy_environment))DeleteSprite(i); - if(type[i]==rainsprite&&(location[i].y<-.1||environment!=rainy_environment))DeleteSprite(i); - - if(type[i]==snowsprite){ - if(location[i].x<camera.position.x-precipitationhorz){location[i].x+=precipitationhorz*2;} - if(location[i].z<camera.position.z-precipitationhorz){location[i].z+=precipitationhorz*2;} - if(location[i].y<camera.position.y-precipitationvert){location[i].y+=precipitationvert*2;snowdelay+=1/precipitationdensity*2;} - if(location[i].x>camera.position.x+precipitationhorz){location[i].x-=precipitationhorz*2;} - if(location[i].z>camera.position.z+precipitationhorz){location[i].z-=precipitationhorz*2;} - if(location[i].y>camera.position.y+precipitationvert){location[i].y-=precipitationvert*2;} - } - if(type[i]==rainsprite){ - if(location[i].x<camera.position.x-precipitationhorz*.5){location[i].x+=precipitationhorz;} - if(location[i].z<camera.position.z-precipitationhorz*.5){location[i].z+=precipitationhorz;} - if(location[i].y<camera.position.y-precipitationvert){location[i].y+=precipitationvert*2;snowdelay+=1/precipitationdensity/4;} - if(location[i].x>camera.position.x+precipitationhorz*.5){location[i].x-=precipitationhorz;} - if(location[i].z>camera.position.z+precipitationhorz*.5){location[i].z-=precipitationhorz;} - if(location[i].y>camera.position.y+precipitationvert){location[i].y-=precipitationvert*2;} - } - } -} - -void Sprites::draw() -{ - float M[16]; - XYZ begProj,endProj,avgProj,persp; - XYZ between; - float oolen,dx,dy; - float bulletsize; - XYZ point; - glAlphaFunc(GL_GREATER, 0.01); - - //glEnable(GL_POLYGON_OFFSET_FILL); - - glEnable(GL_BLEND); - glDisable(GL_CULL_FACE); - glEnable(GL_TEXTURE_2D); - glDisable(GL_LIGHTING); - glDepthMask(0); - glAlphaFunc(GL_GREATER, 0.01); - for(int i=0;i<howmanysprites;i++){ - if(type[i]==muzzleflashsprite){fog.TempFog(0,0,0); glBindTexture(GL_TEXTURE_2D, muzzleflaretextureptr);glBlendFunc(GL_SRC_ALPHA,GL_ONE);} - if(type[i]==flashsprite){fog.TempFog(0,0,0); glBindTexture(GL_TEXTURE_2D, flaretextureptr);glBlendFunc(GL_SRC_ALPHA,GL_ONE);} - if(type[i]==smokesprite||type[i]==smokespritenoup){fog.ResetFog(); glBindTexture(GL_TEXTURE_2D, smoketextureptr);glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);} - if(type[i]==bloodspritedown||type[i]==bloodspritenoup){fog.ResetFog(); glBindTexture(GL_TEXTURE_2D, smoketextureptr);glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);} - if(type[i]==particlesspritedown){fog.ResetFog(); glBindTexture(GL_TEXTURE_2D, bloodtextureptr);glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);} - if(type[i]==snowsprite){fog.ResetFog(); glBindTexture(GL_TEXTURE_2D, snowtextureptr);glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);} - if(type[i]==rainsprite){fog.ResetFog(); glBindTexture(GL_TEXTURE_2D, raintextureptr);glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);} - if(type[i]==bullet||type[i]==bulletinstant){fog.ResetFog(); glBindTexture(GL_TEXTURE_2D, bullettextureptr);glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);} - - glPushMatrix(); - if(type[i]==muzzleflashsprite||type[i]==flashsprite||type[i]==smokesprite||type[i]==smokespritenoup||type[i]==snowsprite||type[i]==particlesspritedown||((type[i]==bloodspritenoup||type[i]==bloodspritedown)&&blood)){ - glColor4f(color1[i]*fogcolorr*1.6,color2[i]*fogcolorg*1.6,color3[i]*fogcolorb*1.6,brightness[i]); - glTranslatef(location[i].x,location[i].y,location[i].z); - if(type[i]==snowsprite){ - glTranslatef(sinefluct*rotation[i]/400,0,sinefluct*rotation[i]/400); - } - glGetFloatv(GL_MODELVIEW_MATRIX,M); - point.x=M[12]; - point.y=M[13]; - point.z=M[14]; - glLoadIdentity(); - glTranslatef(point.x, point.y, point.z); - glRotatef(rotation[i],0,0,1); - - glBegin(GL_TRIANGLES); - glTexCoord2f(1.0f, 1.0f); glVertex3f( .3f*size[i], .3f*size[i], 0.0f); - glTexCoord2f(0.0f, 1.0f); glVertex3f(-.3f*size[i], .3f*size[i], 0.0f); - glTexCoord2f(1.0f, 0.0f); glVertex3f( .3f*size[i],-.3f*size[i], 0.0f); - glTexCoord2f(0.0f, 0.0f); glVertex3f(-.3f*size[i],-.3f*size[i], 0.0f); - glTexCoord2f(1.0f, 0.0f); glVertex3f( .3f*size[i], -.3f*size[i], 0.0f); - glTexCoord2f(0.0f, 1.0f); glVertex3f(-.3f*size[i], .3f*size[i], 0.0f); - glEnd(); - - } - - if(type[i]==rainsprite){ - glColor4f(color1[i]*fogcolorr*1.6,color2[i]*fogcolorg*1.6,color3[i]*fogcolorb*1.6,brightness[i]); - glTranslatef(location[i].x,location[i].y,location[i].z); - glGetFloatv(GL_MODELVIEW_MATRIX,M); - for( int k=0; k<3; k+=2 ) - for( int j=0; j<3; j++ ) { - if ( k==j ) - M[k*4+j] = 1.0; - else - M[k*4+j] = 0.0; - } - - - - glLoadMatrixf(M); - glScalef(.2,abs(velocity[i].y)*multiplier,.2); - glBegin(GL_TRIANGLES); - glTexCoord2f(1.0f, 1.0f); glVertex3f( .3f*size[i], .3f*size[i], 0.0f); - glTexCoord2f(0.0f, 1.0f); glVertex3f(-.3f*size[i], .3f*size[i], 0.0f); - glTexCoord2f(1.0f, 0.0f); glVertex3f( .3f*size[i],-.3f*size[i], 0.0f); - glTexCoord2f(0.0f, 0.0f); glVertex3f(-.3f*size[i],-.3f*size[i], 0.0f); - glTexCoord2f(1.0f, 0.0f); glVertex3f( .3f*size[i], -.3f*size[i], 0.0f); - glTexCoord2f(0.0f, 1.0f); glVertex3f(-.3f*size[i], .3f*size[i], 0.0f); - glEnd(); - } - - if(type[i]==grenadesprite||type[i]==spoonsprite||type[i]==pinsprite){ - glTranslatef(location[i].x,location[i].y+.2,location[i].z); - glDisable(GL_BLEND); - glEnable(GL_FOG); - glEnable(GL_CULL_FACE); - glDisable(GL_TEXTURE_2D); - glEnable(GL_LIGHTING); - glEnable(GL_COLOR_MATERIAL); - glDepthMask(1); - glRotatef(rotation[i],1,.6,.3); - - if(type[i]==grenadesprite)gunmodels[grenadebasemodel].draw(); - if(type[i]==spoonsprite)gunmodels[grenadespoonmodel].draw(); - if(type[i]==pinsprite)gunmodels[grenadepinmodel].draw(); - - glEnable(GL_BLEND); - glDisable(GL_FOG); - glDisable(GL_CULL_FACE); - glEnable(GL_TEXTURE_2D); - glDisable(GL_LIGHTING); - glDisable(GL_COLOR_MATERIAL); - glDepthMask(0); - } - - if(type[i]==bullet||type[i]==bulletinstant){ - bulletsize=size[i]; - glPushMatrix(); - begProj=location[i]; - endProj=velocity[i]; - glPushMatrix(); - glTranslatef(begProj.x,begProj.y,begProj.z); - glGetFloatv(GL_MODELVIEW_MATRIX,M); - begProj.x=M[12]; - begProj.y=M[13]; - begProj.z=M[14]; - glPopMatrix(); - glPushMatrix(); - glTranslatef(endProj.x,endProj.y,endProj.z); - glGetFloatv(GL_MODELVIEW_MATRIX,M); - endProj.x=M[12]; - endProj.y=M[13]; - endProj.z=M[14]; - glPopMatrix(); - avgProj=(endProj+begProj)/2; - - dx = endProj.x - begProj.x; - dy = endProj.y - begProj.y; - oolen= 1/fast_sqrt(dx*dx+dy*dy)*0.5; - persp=0; - persp.x=-dy*oolen; persp.y=dx*oolen; - - glColor4f(color1[i]*fogcolorr*1.6,color2[i]*fogcolorg*1.6,color3[i]*fogcolorb*1.6,brightness[i]); - - glPushMatrix(); - glLoadIdentity(); - glBegin(GL_TRIANGLES); - glTexCoord2f(0.0f, 1.0f); glVertex3f(endProj.x-persp.x*bulletsize/2, endProj.y-persp.y*bulletsize/2, endProj.z); - glTexCoord2f(1.0f, 0.0f); glVertex3f(begProj.x+persp.x*bulletsize/2, begProj.y+persp.y*bulletsize/2, begProj.z); - glTexCoord2f(0.0f, 0.0f); glVertex3f(begProj.x-persp.x*bulletsize/2, begProj.y-persp.y*bulletsize/2, begProj.z); - glTexCoord2f(1.0f, 0.0f); glVertex3f(begProj.x+persp.x*bulletsize/2, begProj.y+persp.y*bulletsize/2, begProj.z); - glTexCoord2f(0.0f, 1.0f); glVertex3f(endProj.x-persp.x*bulletsize/2, endProj.y-persp.y*bulletsize/2, endProj.z); - glTexCoord2f(1.0f, 1.0f); glVertex3f(endProj.x+persp.x*bulletsize/2, endProj.y+persp.y*bulletsize/2, endProj.z); - glEnd(); - glPopMatrix(); - glPopMatrix(); - } - glPopMatrix(); - } - fog.ResetFog(); - glDepthMask(1); - glDisable(GL_TEXTURE_2D); - glEnable(GL_CULL_FACE); - //glDisable(GL_POLYGON_OFFSET_FILL); - -} - |
