X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FSkeleton.cpp;h=ff195387e5227d044a6df8a193e92beab28c5389;hb=1aef858f5ecb3dc8fd816e0155635371ed3632f2;hp=aba644e2f86c14a1c6637782a8868c51a45a1a5b;hpb=03e3d05a91e2a3aea407387d9531177b2ca31813;p=lugaru.git diff --git a/Source/Skeleton.cpp b/Source/Skeleton.cpp index aba644e..ff19538 100644 --- a/Source/Skeleton.cpp +++ b/Source/Skeleton.cpp @@ -29,7 +29,6 @@ extern float multiplier; extern float gravity; extern Skeleton testskeleton; extern Terrain terrain; -extern int channels[100]; extern Objects objects; extern int environment; extern float terraindetail; @@ -47,7 +46,6 @@ extern int whichjointendarray[26]; extern Game * pgame; extern bool visibleloading; -extern "C" void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused); void dealloc2(void* param){ free(param); @@ -249,136 +247,6 @@ float Skeleton::DoConstraints(XYZ *coords,float *scale) temp=joints[jointlabels[leftknee]].position-(joints[jointlabels[lefthip]].position+joints[jointlabels[leftankle]].position)/2; } } - /* - if(terrain.patchobjectnum[whichpatchx][whichpatchz]) - for(m=0;m=0) - if(objects.possible[k]){ - temp=joints[jointlabels[head]].position*(*scale)+*coords; - if(objects.model[k].SphereCheck(&temp, 0.06, &start, &objects.position[k], &objects.rotation[k])!=-1){ - //temp=(joints[jointlabels[head]].position*(*scale)+*coords)-start; - //Normalise(&temp); - //joints[jointlabels[head]].position=((temp*.2+start)-*coords)/(*scale); - joints[jointlabels[head]].position=(temp-*coords)/(*scale); - } - } - } */ - - - //Ears check - /*XYZ startheadpos; - startheadpos=joints[jointlabels[head]].position; - XYZ headpos; - headpos=joints[jointlabels[head]].position+(joints[jointlabels[head]].position-joints[jointlabels[neck]].position); - if(terrain.patchobjectnum[whichpatchx][whichpatchz]) - for(m=0;m=0) - if(objects.possible[k]){ - friction=objects.friction[k]; - start=joints[jointlabels[head]].position*(*scale)+*coords; - end=(headpos)*(*scale)+*coords; - whichhit=objects.model[k].LineCheckPossible(&start,&end,&temp,&objects.position[k],&objects.rotation[k]); - if(whichhit!=-1){ - if(joints[jointlabels[head]].label==groin&&!joints[jointlabels[head]].locked&&joints[jointlabels[head]].delay<=0){ - joints[jointlabels[head]].locked=1; - joints[jointlabels[head]].delay=1; - static float gLoc[3]; - static float vel[3]; - gLoc[0]=headpos.x*(*scale)+coords->x; - gLoc[1]=headpos.y*(*scale)+coords->y; - gLoc[2]=headpos.z*(*scale)+coords->z; - vel[0]=joints[jointlabels[head]].velocity.x; - vel[1]=joints[jointlabels[head]].velocity.y; - vel[2]=joints[jointlabels[head]].velocity.z; - PlaySoundEx( landsound1, samp[landsound1], NULL, true); - OPENAL_3D_SetAttributes(channels[landsound1], gLoc, vel); - OPENAL_SetVolume(channels[landsound1], 128); - OPENAL_SetPaused(channels[landsound1], false); - - breaking=1; - } - - if(joints[jointlabels[head]].label==head&&!joints[jointlabels[head]].locked&&joints[jointlabels[head]].delay<=0){ - joints[jointlabels[head]].locked=1; - joints[jointlabels[head]].delay=1; - static float gLoc[3]; - static float vel[3]; - gLoc[0]=headpos.x*(*scale)+coords->x; - gLoc[1]=headpos.y*(*scale)+coords->y; - gLoc[2]=headpos.z*(*scale)+coords->z; - vel[0]=joints[jointlabels[head]].velocity.x; - vel[1]=joints[jointlabels[head]].velocity.y; - vel[2]=joints[jointlabels[head]].velocity.z; - PlaySoundEx( landsound2, samp[landsound2], NULL, true); - OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel); - OPENAL_SetVolume(channels[landsound2], 128); - OPENAL_SetPaused(channels[landsound2], false); - } - - terrainnormal=DoRotation(objects.model[k].facenormals[whichhit],0,objects.rotation[k],0)*-1; - if(terrainnormal.y>.8)freefall=0; - bounceness=terrainnormal*findLength(&joints[jointlabels[head]].velocity)*(abs(normaldotproduct(joints[jointlabels[head]].velocity,terrainnormal))); - if(findLengthfast(&joints[jointlabels[head]].velocity)>findLengthfast(&joints[jointlabels[head]].oldvelocity)){ - bounceness=0; - joints[jointlabels[head]].velocity=joints[jointlabels[head]].oldvelocity; - } - if(findLengthfast(&bounceness)>4000&&breaking){ - objects.model[k].MakeDecal(breakdecal,DoRotation(temp-objects.position[k],0,-objects.rotation[k],0),.4,.5,Random()%360); - Sprite::MakeSprite(cloudsprite, headpos*(*scale)+*coords,joints[jointlabels[head]].velocity*.06, 1,1,1, 4, .2); - breaking=0; - camerashake+=.6; - - static float gLoc[3]; - static float vel[3]; - gLoc[0]=headpos.x*(*scale)+coords->x; - gLoc[1]=headpos.y*(*scale)+coords->y; - gLoc[2]=headpos.z*(*scale)+coords->z; - vel[0]=joints[jointlabels[head]].velocity.x; - vel[1]=joints[jointlabels[head]].velocity.y; - vel[2]=joints[jointlabels[head]].velocity.z; - PlaySoundEx( breaksound2, samp[breaksound2], NULL, true); - OPENAL_3D_SetAttributes(channels[breaksound2], gLoc, vel); - OPENAL_SetVolume(channels[breaksound2], 300); - OPENAL_SetPaused(channels[breaksound2], false); - - envsound[numenvsounds]=*coords; - envsoundvol[numenvsounds]=64; - envsoundlife[numenvsounds]=.4; - numenvsounds++; - } - if(objects.type[k]==treetrunktype){ - objects.rotx[k]+=joints[jointlabels[head]].velocity.x*multiplier*.4; - objects.roty[k]+=joints[jointlabels[head]].velocity.z*multiplier*.4; - objects.rotx[k+1]+=joints[jointlabels[head]].velocity.x*multiplier*.4; - objects.roty[k+1]+=joints[jointlabels[head]].velocity.z*multiplier*.4; - } - if(!joints[jointlabels[head]].locked)damage+=findLengthfast(&bounceness)/2500; - ReflectVector(&joints[jointlabels[head]].velocity,&terrainnormal); - frictionness=abs(normaldotproduct(joints[jointlabels[head]].velocity,terrainnormal));//findLength(&bounceness)/findLength(&joints[jointlabels[head]].velocity); - joints[jointlabels[head]].velocity-=bounceness; - if(1-friction*frictionness>0)joints[jointlabels[head]].velocity*=1-friction*frictionness; - else joints[jointlabels[head]].velocity=0; - if(findLengthfast(&bounceness)>2500){ - Normalise(&bounceness); - bounceness=bounceness*50; - } - joints[jointlabels[head]].velocity+=bounceness*elasticity; - - - if(!joints[jointlabels[head]].locked) - if(findLengthfast(&joints[jointlabels[head]].velocity)<1){ - joints[jointlabels[head]].locked=1; - //joints[jointlabels[head]].velocity*=3; - } - if(findLengthfast(&bounceness)>500)Sprite::MakeSprite(cloudsprite, headpos*(*scale)+*coords,joints[jointlabels[head]].velocity*.06, 1,1,1, .5, .2); - joints[jointlabels[head]].position=(temp-*coords)/(*scale)+(startheadpos-headpos)+terrainnormal*.005; - if(longdead>100)broken=1; - } - } - } - */ for(i=0; i