X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FAnimation%2FMuscle.cpp;h=1e7f0d5e171e8bd3f71ce6d68822ba093de9f87d;hb=18e718d3ff51c67029f2d4e1416f979b9ad3afc0;hp=4a5a04762a5101fc6f1f1a60ad5f2bdb82fbacab;hpb=1d589bc3024e30dd51e41b6041b57649190bef4d;p=lugaru.git diff --git a/Source/Animation/Muscle.cpp b/Source/Animation/Muscle.cpp index 4a5a047..1e7f0d5 100644 --- a/Source/Animation/Muscle.cpp +++ b/Source/Animation/Muscle.cpp @@ -19,19 +19,13 @@ along with Lugaru. If not, see . */ #include "Animation/Muscle.h" +#include "binio.h" extern float multiplier; extern bool freeze; Muscle::Muscle() { - vertices = 0; - verticeslow = 0; - verticesclothes = 0; - - numvertices = 0; - numverticeslow = 0; - numverticesclothes = 0; length = 0; targetlength = 0; parent1 = 0; @@ -50,9 +44,60 @@ Muscle::Muscle() Muscle::~Muscle() { - free(vertices); - free(verticeslow); - free(verticesclothes); +} + +void Muscle::load(FILE* tfile, int vertexNum, Joint* joints) +{ + int numvertices, vertice, parentID; + + // read info + funpackf(tfile, "Bf Bf Bf Bf Bf Bi Bi", &length, &targetlength, &minlength, &maxlength, &strength, &type, &numvertices); + + // read vertices + for (int j = 0; j < numvertices; j++) { + funpackf(tfile, "Bi", &vertice); + if (vertice < vertexNum) { + vertices.push_back(vertice); + } + } + + // read more info + funpackf(tfile, "Bb Bi", &visible, &parentID); + parent1 = &joints[parentID]; + funpackf(tfile, "Bi", &parentID); + parent2 = &joints[parentID]; +} + +void Muscle::loadVerticesLow(FILE* tfile, int vertexNum) +{ + int numvertices, vertice; + + // read numvertices + funpackf(tfile, "Bi", &numvertices); + + // read vertices + for (int j = 0; j < numvertices; j++) { + funpackf(tfile, "Bi", &vertice); + if (vertice < vertexNum) { + verticeslow.push_back(vertice); + } + } +} + +void Muscle::loadVerticesClothes(FILE* tfile, int vertexNum) +{ + int numvertices, vertice; + + // read numvertices + funpackf(tfile, "Bi", &numvertices); + + // read vertices + for (int j = 0; j < numvertices; j++) { + funpackf(tfile, "Bi", &vertice); + if (vertice < vertexNum) { + verticesclothes.push_back(vertice); + } + } }