X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FAnimation%2FMuscle.cpp;h=4485c5e64153bcd2492d8c8cf745da9acec2855e;hb=b32cd80b243d77cd80e026c7ae73e33ec39b1de9;hp=4a5a04762a5101fc6f1f1a60ad5f2bdb82fbacab;hpb=1d589bc3024e30dd51e41b6041b57649190bef4d;p=lugaru.git
diff --git a/Source/Animation/Muscle.cpp b/Source/Animation/Muscle.cpp
index 4a5a047..4485c5e 100644
--- a/Source/Animation/Muscle.cpp
+++ b/Source/Animation/Muscle.cpp
@@ -18,20 +18,15 @@ You should have received a copy of the GNU General Public License
along with Lugaru. If not, see .
*/
-#include "Animation/Muscle.h"
+#include "Animation/Muscle.hpp"
+
+#include "Utils/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;
@@ -48,11 +43,58 @@ Muscle::Muscle()
strength = 0;
}
-Muscle::~Muscle()
+void Muscle::load(FILE* tfile, int vertexNum, std::vector& 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)
{
- free(vertices);
- free(verticeslow);
- free(verticesclothes);
+ 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);
+ }
+ }
}