diff options
Diffstat (limited to 'src/Skeleton.cpp')
-rw-r--r-- | src/Skeleton.cpp | 101 |
1 files changed, 48 insertions, 53 deletions
diff --git a/src/Skeleton.cpp b/src/Skeleton.cpp index 7dcdaa1..2624efd 100644 --- a/src/Skeleton.cpp +++ b/src/Skeleton.cpp @@ -744,61 +744,56 @@ void Animation::Load(char *fileName, float rotate) } } -void Skeleton::Load(char *fileName) +void Skeleton::reload() { - int parentID; - bool what; - files.OpenFile(fileName); - if(files.sFile){ - ReadInt(files.sFile, 1, &num_joints); - for(int i=0;i<num_joints;i++){ - ReadXYZ(files.sFile, 1, &joints[i].position); - ReadFloat(files.sFile, 1, &joints[i].length); - ReadFloat(files.sFile, 1, &joints[i].mass); - ReadBool(files.sFile, 1, &joints[i].hasparent); - ReadBool(files.sFile, 1, &joints[i].locked); - ReadInt(files.sFile, 1, &joints[i].modelnum); - ReadBool(files.sFile, 1, &joints[i].visible); - ReadBool(files.sFile, 1, &what); - ReadInt(files.sFile, 1, &joints[i].label); - ReadInt(files.sFile, 1, &joints[i].hasgun); - ReadBool(files.sFile, 1, &joints[i].lower); - ReadInt(files.sFile, 1, &parentID); - if(joints[i].hasparent)joints[i].parent=&joints[parentID]; - joints[i].velocity=0; - joints[i].oldposition=joints[i].position; - joints[i].existing=1; - } - - ReadInt(files.sFile, 1, &num_muscles); - for(int i=0;i<num_muscles;i++){ - ReadFloat(files.sFile, 1, &muscles[i].length); - ReadFloat(files.sFile, 1, &muscles[i].targetlength); - ReadFloat(files.sFile, 1, &muscles[i].minlength); - ReadFloat(files.sFile, 1, &muscles[i].maxlength); - ReadFloat(files.sFile, 1, &muscles[i].strength); - ReadInt(files.sFile, 1, &muscles[i].type); - ReadBool(files.sFile, 1, &muscles[i].visible); - ReadInt(files.sFile, 1, &parentID); - muscles[i].parent1=&joints[parentID]; - ReadInt(files.sFile, 1, &parentID); - muscles[i].parent2=&joints[parentID]; - } - - for(int j=0;j<3;j++){ - ReadInt(files.sFile, 1, &forwardjoints[j]); - } - for(int j=0;j<3;j++){ - ReadInt(files.sFile, 1, &lowforwardjoints[j]); - } + broken = 0; + num_joints = 20; + JointData joints_data[num_joints]; + loadJoints(joints_data); + for (int i = 0; i < num_joints; ++i) { + joints[i].label = joints_data[i].label; + joints[i].position.x = joints_data[i].x; + joints[i].position.y = joints_data[i].y; + joints[i].position.z = joints_data[i].z; + joints[i].length = joints_data[i].length; + joints[i].modelnum = joints_data[i].model; + joints[i].visible = joints_data[i].visible; + joints[i].lower = joints_data[i].lower; + + if (joints_data[i].parent < 0) { + joints[i].hasparent = false; + joints[i].parent = NULL; + } else { + joints[i].hasparent = true; + joints[i].parent = joints + joints_data[i].parent; + } + + joints[i].existing = true; + joints[i].locked = false; + joints[i].velocity = 0; + joints[i].oldposition = joints[i].position; + jointlabels[joints[i].label] = i; } - files.EndLoad(); - for(int i=0;i<num_joints;i++){ - for(int j=0;j<num_joints;j++){ - if(joints[i].label==j)jointlabels[j]=i; - } + forwardjoints[0] = 7; + forwardjoints[1] = 3; + forwardjoints[2] = 8; + lowforwardjoints[0] = 17; + lowforwardjoints[1] = 3; + lowforwardjoints[2] = 19; + + num_muscles = 29; + MuscleData muscles_data[num_muscles]; + loadMuscles(muscles_data); + for (int i = 0; i < num_muscles; ++i) { + muscles[i].length = muscles_data[i].length; + muscles[i].targetlength = muscles_data[i].initlen; + muscles[i].minlength = muscles_data[i].minlen; + muscles[i].maxlength = muscles_data[i].maxlen; + muscles[i].type = muscles_data[i].flag; + muscles[i].visible = muscles_data[i].visible; + muscles[i].parent1 = joints + muscles_data[i].parent1; + muscles[i].parent2 = joints + muscles_data[i].parent2; + muscles[i].strength = !muscles[i].type; } - - broken=0; } |