From 7e530bdcc6ef88a1174f3408a7b2fed4eff43222 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Gia=20Phong?= Date: Fri, 1 Oct 2021 16:13:41 +0700 Subject: Remove Skeleton.num_joints --- src/Skeleton.cpp | 182 +++++++++++++++---------------------------------------- 1 file changed, 50 insertions(+), 132 deletions(-) (limited to 'src/Skeleton.cpp') diff --git a/src/Skeleton.cpp b/src/Skeleton.cpp index 7315fac..ba27aa4 100644 --- a/src/Skeleton.cpp +++ b/src/Skeleton.cpp @@ -84,13 +84,10 @@ void Muscle::DoConstraint(int broken) void Skeleton::DoConstraints() { - numrepeats=3; - - for(int j=0; j 1) continue; XYZ avgvelocity {0}; - for (int k = 0; k < num_joints; k++) + for (int k = 0; k < max_joints; k++) avgvelocity += joints[k].velocity; - avgvelocity /= num_joints; + avgvelocity /= max_joints; int landsound = -1; switch (joints[i].label) { @@ -181,7 +178,7 @@ void Skeleton::DoConstraints(Model *collide, XYZ *move, float rotation) muscles[i].DoConstraint(broken); } - for (int i = 0; i < num_joints; i++) { + for (int i = 0; i < max_joints; i++) { joints[i].realoldposition = joints[i].position; //Add velocity if (joints[i].existing @@ -193,9 +190,8 @@ void Skeleton::DoConstraints(Model *collide, XYZ *move, float rotation) void Skeleton::DoGravity() { - for(int i=0; i=num_joints||which<0)joints[num_joints].hasparent=0; - if(which=0){ - joints[num_joints].parent=&joints[which]; - joints[num_joints].hasparent=1; - joints[num_joints].length=findDistance(joints[num_joints].position,joints[num_joints].parent->position); - } - num_joints++; - } -} - void Skeleton::DeleteJoint(int whichjoint) { - if(whichjoint=0){ + if (whichjoint < max_joints && whichjoint >= 0) { for(int i=0;i=num_joints||which<0)joints[whichjoint].hasparent=0; - if(which=0){ - joints[whichjoint].parent=&joints[which]; - joints[whichjoint].hasparent=1; - joints[whichjoint].length=findDistance(joints[whichjoint].position,joints[whichjoint].parent->position); - } - } -} - -void Skeleton::AddMuscle(int attach1,int attach2,float minlength,float maxlength,int type) -{ - if (num_muscles < max_muscles - 1 && attach1 != attach2 - && attach1 < num_joints && attach1 >= 0 - && attach2 < num_joints && attach2 >= 0) { - muscles[num_muscles].parent1=&joints[attach1]; - muscles[num_muscles].parent2=&joints[attach2]; - muscles[num_muscles].length=findDistance(muscles[num_muscles].parent1->position,muscles[num_muscles].parent2->position); - muscles[num_muscles].targetlength=findDistance(muscles[num_muscles].parent1->position,muscles[num_muscles].parent2->position); - muscles[num_muscles].strength=.7; - muscles[num_muscles].type=type; - muscles[num_muscles].minlength=minlength; - muscles[num_muscles].maxlength=maxlength; - - num_muscles++; - } -} - -void Skeleton::MusclesSet() -{ - for(int i=0;iposition,muscles[i].parent2->position); - } -} - void Skeleton::FindRotationJoint(int which) { XYZ temppoint1,temppoint2,tempforward; @@ -446,13 +382,12 @@ void Skeleton::FindRotationMuscle(int which) tempforward.y=0; Normalise(&tempforward); muscles[which].rotate3=acos(0-tempforward.z)*rad2deg; - for(int i=0;itempforward.x)muscles[which].rotate3=360-muscles[which].rotate3; } @@ -473,9 +408,8 @@ void Animation::load(const char* name) free(data.ptr); for(int j=0;jrotate3[i][j-1]+180)rotate3[i][j]-=360; + if(j!=0&&rotate3[i][j]rotate2[i][j-1]+180)rotate2[i][j]-=360; + if(j!=0&&rotate2[i][j]rotate1[i][j-1]+180)rotate1[i][j]-=360; + if(j!=0&&rotate1[i][j]mrotate1[i][j-1]+180)mrotate1[i][j]-=360; if(j!=0&&mrotate1[i][j]rotate3[i][j-1]+180)rotate3[i][j]-=360; - if(j!=0&&rotate3[i][j]rotate2[i][j-1]+180)rotate2[i][j]-=360; - if(j!=0&&rotate2[i][j]rotate1[i][j-1]+180)rotate1[i][j]-=360; - if(j!=0&&rotate1[i][j]mrotate3[i][j-1]+180)mrotate3[i][j]-=360; if(j!=0&&mrotate3[i][j]mrotate2[i][j-1]+180)mrotate2[i][j]-=360; @@ -566,10 +487,9 @@ void Animation::load(const char* name) if(j==0&&mrotate1[i][j]>mrotate1[i][numframes-1]+180)mrotate1[i][j]-=360; if(j==0&&mrotate1[i][j]rotate3[i][j-1]+180)rotate3[i][j]-=360; if(j!=0&&rotate3[i][j]rotate2[i][j-1]+180)rotate2[i][j]-=360; @@ -584,17 +504,15 @@ void Animation::load(const char* name) if(j==0&&rotate1[i][j]>rotate1[i][numframes-1]+180)rotate1[i][j]-=360; if(j==0&&rotate1[i][j]