aboutsummaryrefslogtreecommitdiff
path: root/src/Skeleton.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Skeleton.cpp')
-rw-r--r--src/Skeleton.cpp101
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;
}