if (tfile) {
// read numframes, joints to know how much memory to allocate
funpackf(tfile, "Bi Bi", &numframes, &joints);
- /*
- for(i = 0; i < joints; i++){
- if(position[i])dealloc2(position[i]);
- if(twist[i])dealloc2(twist[i]);
- if(twist2[i])dealloc2(twist2[i]);
- if(onground[i])dealloc2(onground[i]);
- }*/
- /*
- if(position)dealloc2(position);
- if(twist)dealloc2(twist);
- if(twist2)dealloc2(twist2);
- if(speed)dealloc2(speed);
- if(onground)dealloc2(onground);
- if(forward)dealloc2(forward);
- if(weapontarget)dealloc2(weapontarget);
- if(label)dealloc2(label);*/
-
// allocate memory for everything
weapontarget = (XYZ*)malloc(sizeof(XYZ) * numframes);
label = (int*)malloc(sizeof(int) * numframes);
- /*position = new XYZ[joints][numframes];
- twist = new float[joints][numframes];
- twist2 = new float[joints][numframes];
- speed = new float[numframes];
- onground = new bool[joints][numframes];
- forward = new XYZ[numframes];
- label = new int[numframes];*/
-
-
// read binary data as animation
// for each frame...
funpackf(tfile, "Bi", &num_joints);
// allocate memory
- //joints.resize(num_joints);
if (joints)
delete [] joints; //dealloc2(joints);
- joints = (Joint*)new Joint[num_joints]; //malloc(sizeof(Joint)*num_joints);
+ joints = (Joint*)new Joint[num_joints];
// read info for each joint
for (i = 0; i < num_joints; i++) {
funpackf(tfile, "Bi", &num_muscles);
// allocate memory
- //muscles.clear();
if (muscles)
delete [] muscles; //dealloc2(muscles);
muscles = (Muscle*)new Muscle[num_muscles]; //malloc(sizeof(Muscle)*num_muscles);
funpackf(tfile, "Bf Bf Bf Bf Bf Bi Bi", &muscles[i].length, &muscles[i].targetlength, &muscles[i].minlength, &muscles[i].maxlength, &muscles[i].strength, &muscles[i].type, &muscles[i].numvertices);
// allocate memory for vertices
- //muscles[i].vertices.clear();
- //muscles[i].vertices.resize(muscles[i].numvertices);
- //if(muscles[i].vertices)dealloc2(muscles[i].vertices);
muscles[i].vertices = (int*)malloc(sizeof(int) * muscles[i].numvertices);
// read vertices
lSize = sizeof(num_joints);
fseek(tfile, lSize, SEEK_CUR);
- //joints = new Joint[num_joints];
- //jointlabels = new int[num_joints];
for (i = 0; i < num_joints; i++) {
// skip joint info
lSize = sizeof(XYZ)
// read num_muscles
funpackf(tfile, "Bi", &num_muscles);
- //muscles = new Muscle[num_muscles];
for (i = 0; i < num_muscles; i++) {
// skip muscle info
if (muscles[i].numverticeslow) {
// allocate memory
- //muscles[i].verticeslow.clear();
- //muscles[i].verticeslow.resize(muscles[i].numverticeslow);
- //if(muscles[i].verticeslow)dealloc2(muscles[i].verticeslow);
muscles[i].verticeslow = (int*)malloc(sizeof(int) * muscles[i].numverticeslow);
// read verticeslow
}
}
- /*FindForwards();
- for(i=0;i<num_joints;i++){
- joints[i].startpos=joints[i].position;
- }
- for(i=0;i<num_muscles;i++){
- FindRotationMuscle(i,-1);
- }*/
-
// use opengl for its matrix math
for (i = 0; i < modellow.vertexNum; i++) {
modellow.vertex[i] = modellow.vertex[i] - (muscles[modellow.owner[i]].parent1->position + muscles[modellow.owner[i]].parent2->position) / 2;
// skip num_joints
lSize = sizeof(num_joints);
fseek ( tfile, lSize, SEEK_CUR);
- //joints = new Joint[num_joints];
- //jointlabels = new int[num_joints];
for (i = 0; i < num_joints; i++) {
// skip joint info
// read num_muscles
funpackf(tfile, "Bi", &num_muscles);
- //muscles = new Muscle[num_muscles];
for (i = 0; i < num_muscles; i++) {
// skip muscle info
// read verticesclothes
if (muscles[i].numverticesclothes) {
- //muscles[i].verticesclothes.clear();
- //muscles[i].verticesclothes.resize(muscles[i].numverticesclothes);
- //if(muscles[i].verticesclothes)dealloc2(muscles[i].verticesclothes);
muscles[i].verticesclothes = (int*)malloc(sizeof(int) * muscles[i].numverticesclothes);
edit = 0;
for (j = 0; j < muscles[i].numverticesclothes - edit; j++) {
}
}
- /*FindForwards();
- for(i=0;i<num_joints;i++){
- joints[i].startpos=joints[i].position;
- }
- for(i=0;i<num_muscles;i++){
- FindRotationMuscle(i,-1);
- }*/
-
// use opengl for its matrix math
for (i = 0; i < modelclothes.vertexNum; i++) {
modelclothes.vertex[i] = modelclothes.vertex[i] - (muscles[modelclothes.owner[i]].parent1->position + muscles[modelclothes.owner[i]].parent2->position) / 2;
glVertex3f(joints[i].parent->position.x, joints[i].parent->position.y, joints[i].parent->position.z);
}
}
- /*for(int i=0; i<num_joints; i++){
- if(joints[i].hasparent){
- glColor4f(jointcolor[0],jointcolor[1],jointcolor[2],1);
- glVertex3f(joints[i].position.x,joints[i].position.y,joints[i].position.z);
- glColor4f(jointcolor[0],jointcolor[1],jointcolor[2],1);
- glVertex3f(joints[i].position.x+forward.x,joints[i].position.y+forward.y,joints[i].position.z+forward.z);
- }
- }*/
for (int i = 0; i < num_muscles; i++) {
if (muscles[i].type == boneconnect) {
glColor4f(jointcolor[0], jointcolor[1], jointcolor[2], jointcolor[3] / muscles[i].parent1->blurred);
joints[num_joints].mass = 1;
joints[num_joints].locked = 0;
- /*if(which>=num_joints||which<0)*/
joints[num_joints].hasparent = 0;
- /*if(which<num_joints&&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++;
if (which < num_joints && which >= 0)
AddMuscle(num_joints - 1, which, 0, 10, boneconnect);