X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FSkeleton.cpp;h=35fb1f795d6fb054c988d6e242a919c38378f8fd;hb=5310d6ffd89fd8b981b273b332a232b70b4ce7ad;hp=11d7fa9d339b8cff6fca078c36e45be412ccd482;hpb=1eec4500c708d0619abf36759454f59fa175cacf;p=lugaru.git diff --git a/Source/Skeleton.cpp b/Source/Skeleton.cpp index 11d7fa9..35fb1f7 100644 --- a/Source/Skeleton.cpp +++ b/Source/Skeleton.cpp @@ -45,13 +45,6 @@ extern int whichjointendarray[26]; extern bool visibleloading; -/* convenience functions - */ -Joint& Skeleton::joint(int bodypart) { return joints[jointlabels[bodypart]]; } -XYZ& Skeleton::jointPos(int bodypart) { return joint(bodypart).position; } -XYZ& Skeleton::jointVel(int bodypart) { return joint(bodypart).velocity; } - - /* EFFECT */ void dealloc2(void* param) @@ -217,17 +210,20 @@ float Skeleton::DoConstraints(XYZ *coords, float *scale) joints[i].position = joints[i].position + joints[i].velocity * multiplier; switch (joints[i].label) { - case head: - groundlevel = .8; break; - case righthand: - case rightwrist: - case rightelbow: - case lefthand: - case leftwrist: - case leftelbow: - groundlevel = .2; break; - default: - groundlevel = .15; break; + case head: + groundlevel = .8; + break; + case righthand: + case rightwrist: + case rightelbow: + case lefthand: + case leftwrist: + case leftelbow: + groundlevel = .2; + break; + default: + groundlevel = .15; + break; } joints[i].position.y -= groundlevel; @@ -347,7 +343,10 @@ float Skeleton::DoConstraints(XYZ *coords, float *scale) if (tutoriallevel != 1 || id == 0) if (findLengthfast(&bounceness) > 8000 && breaking) { - objects.model[k].MakeDecal(breakdecal, DoRotation(temp - objects.position[k], 0, -objects.yaw[k], 0), .4, .5, Random() % 360); + // FIXME: this crashes because k is not initialized! + // to reproduce, type 'wolfie' in console and play a while + // I'll just comment it out for now + //objects.model[k].MakeDecal(breakdecal, DoRotation(temp - objects.position[k], 0, -objects.yaw[k], 0), .4, .5, Random() % 360); Sprite::MakeSprite(cloudsprite, joints[i].position * (*scale) + *coords, joints[i].velocity * .06, 1, 1, 1, 4, .2); breaking = false; camerashake += .6; @@ -509,17 +508,20 @@ float Skeleton::DoConstraints(XYZ *coords, float *scale) for (i = 0; i < num_joints; i++) { switch (joints[i].label) { - case head: - groundlevel = .8; break; - case righthand: - case rightwrist: - case rightelbow: - case lefthand: - case leftwrist: - case leftelbow: - groundlevel = .2; break; - default: - groundlevel = .15; break; + case head: + groundlevel = .8; + break; + case righthand: + case rightwrist: + case rightelbow: + case lefthand: + case leftwrist: + case leftelbow: + groundlevel = .2; + break; + default: + groundlevel = .15; + break; } joints[i].position.y += groundlevel; joints[i].mass = 1; @@ -597,34 +599,39 @@ void Skeleton::FindRotationMuscle(int which, int animation) const int label1 = muscles[which].parent1->label; const int label2 = muscles[which].parent2->label; switch (label1) { - case head: - fwd = specialforward[0]; break; - case rightshoulder: - case rightelbow: - case rightwrist: - case righthand: - fwd = specialforward[1]; break; - case leftshoulder: - case leftelbow: - case leftwrist: - case lefthand: - fwd = specialforward[2]; break; - case righthip: - case rightknee: - case rightankle: - case rightfoot: - fwd = specialforward[3]; break; - case lefthip: - case leftknee: - case leftankle: - case leftfoot: - fwd = specialforward[4]; break; - default: - if (muscles[which].parent1->lower) - fwd = lowforward; - else - fwd = forward; - break; + case head: + fwd = specialforward[0]; + break; + case rightshoulder: + case rightelbow: + case rightwrist: + case righthand: + fwd = specialforward[1]; + break; + case leftshoulder: + case leftelbow: + case leftwrist: + case lefthand: + fwd = specialforward[2]; + break; + case righthip: + case rightknee: + case rightankle: + case rightfoot: + fwd = specialforward[3]; + break; + case lefthip: + case leftknee: + case leftankle: + case leftfoot: + fwd = specialforward[4]; + break; + default: + if (muscles[which].parent1->lower) + fwd = lowforward; + else + fwd = forward; + break; } if (animation == hanganim) { @@ -938,7 +945,7 @@ void Skeleton::Load(const char *filename, const char *lowfilename, const c newload = 1; - // for each muscle... + // for each muscle... for (i = 0; i < num_muscles; i++) { // read info tempmuscle = muscles[i].numvertices; @@ -1340,24 +1347,24 @@ Skeleton::Skeleton() selected = 0; memset(forwardjoints, 0, sizeof(forwardjoints)); - // XYZ forward; + // XYZ forward; id = 0; memset(lowforwardjoints, 0, sizeof(lowforwardjoints)); - // XYZ lowforward; + // XYZ lowforward; - // XYZ specialforward[5]; + // XYZ specialforward[5]; memset(jointlabels, 0, sizeof(jointlabels)); - // Model model[7]; - // Model modellow; - // Model modelclothes; + // Model model[7]; + // Model modellow; + // Model modelclothes; num_models = 0; - // Model drawmodel; - // Model drawmodellow; - // Model drawmodelclothes; + // Model drawmodel; + // Model drawmodellow; + // Model drawmodelclothes; clothes = 0; spinny = 0;