diff --git a/Levels/ObjectSetups/Compositions.xml b/Levels/ObjectSetups/Compositions.xml
index 9b22027..bc29951 100644
--- a/Levels/ObjectSetups/Compositions.xml
+++ b/Levels/ObjectSetups/Compositions.xml
@@ -96,6 +96,8 @@
+
+
marbleSmooth.obj
MarbleTexture.png
@@ -104,6 +106,8 @@
0.5
3.0
Player
+ 1.25
+ 8.0
@@ -129,8 +133,8 @@
2.0
TriangleMeshBody
2.0
-
-
+ 1.0
+ 1.0
@@ -142,8 +146,8 @@
10.0
TriangleMeshBody
0.0
-
-
+ 1.0
+ 1.0
@@ -155,8 +159,8 @@
2.0
TriangleMeshBody
1.0
-
-
+ 1.0
+ 1.0
@@ -168,6 +172,6 @@
2.0
TriangleMeshBody
0.0
-
-
+ 1.0
+ 1.0
diff --git a/level.cc b/level.cc
index cb4e841..45a5721 100644
--- a/level.cc
+++ b/level.cc
@@ -174,16 +174,37 @@ void Level::load() {
glm::vec3 objectPosition = compPos + glm::vec3(rotatedObjectOffset.x,rotatedObjectOffset.y,rotatedObjectOffset.z);
Object* object = new Object(model, material, objectPosition, compRot);
objects.push_back(object);
- //physicObjects.push_back(object);
+ physicObjects.push_back(object);
const char* charPhysicType = objectData->FirstChildElement("physicType")->GetText();
if(charPhysicType == NULL){
printf("XMLError: No physicType found.\n");
}
std::string physicType = charPhysicType;
- //TODO switch (physicType) and add object to physics
- //if(compositionType == 20){
- // cameraCenter = object;
- //}
+ //add Object to physics
+ if (physicType.compare("Player") == 0){
+ float radius, mass;
+ errorCheck(objectData->FirstChildElement("radius")->QueryFloatText(&radius));
+ errorCheck(objectData->FirstChildElement("mass")->QueryFloatText(&mass));
+ this->physics.addPlayer(radius, *object, mass, physicObjects.size());
+ }
+ if (physicType.compare("Box") == 0){
+ float width, height, length, mass;
+ errorCheck(objectData->FirstChildElement("width")->QueryFloatText(&width));
+ errorCheck(objectData->FirstChildElement("height")->QueryFloatText(&height));
+ errorCheck(objectData->FirstChildElement("length")->QueryFloatText(&length));
+ errorCheck(objectData->FirstChildElement("mass")->QueryFloatText(&mass));
+ this->physics.addBox(width, height, length, *object, mass, physicObjects.size());
+ }
+ if (physicType.compare("TriangleMeshBody") == 0){
+ float mass, dampningL, dampningA;
+ errorCheck(objectData->FirstChildElement("mass")->QueryFloatText(&mass));
+ errorCheck(objectData->FirstChildElement("dampningL")->QueryFloatText(&dampningL));
+ errorCheck(objectData->FirstChildElement("dampningA")->QueryFloatText(&dampningA));
+ this->physics.addTriangleMeshBody(*object, mass, dampningL, dampningA, physicObjects.size());
+ }
+ if(compositionType == 20){
+ cameraCenter = object;
+ }
}
}
}