1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
/*
Constructor for my PhysicsBox class.
*/
PhysicsBox::PhysicsBox(btDiscreteDynamicsWorld* PhysicsWorld, glm::vec3 SizeOfBox, glm::vec3 PositionOfBox, glm::vec3 InertiaOfBox, GLfloat MassOfBox) {
Vertices = new float[108] {
-1.0f, -1.0f, -1.0f, // triangle 1 : begin
-1.0f, -1.0f, 1.0f,
-1.0f, 1.0f, 1.0f, // triangle 1 : end
1.0f, 1.0f, -1.0f, // triangle 2 : begin
-1.0f, -1.0f, -1.0f,
-1.0f, 1.0f, -1.0f, // triangle 2 : end
1.0f, -1.0f, 1.0f, // triangle 3 : begin
-1.0f, -1.0f, -1.0f,
1.0f, -1.0f, -1.0f, // triangle 3 : end
1.0f, 1.0f, -1.0f, // triangle 4 : begin
1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, -1.0f, // triangle 4 : end
-1.0f, -1.0f, -1.0f, // triangle 5 : begin
-1.0f, 1.0f, 1.0f,
-1.0f, 1.0f, -1.0f, // triangle 5 : end
1.0f, -1.0f, 1.0f, // triangle 6 : begin
-1.0f, -1.0f, 1.0f,
-1.0f, -1.0f, -1.0f, // triangle 6 : end
-1.0f, 1.0f, 1.0f, // triangle 7 : begin
-1.0f, -1.0f, 1.0f,
1.0f, -1.0f, 1.0f, // triangle 7 : end
1.0f, 1.0f, 1.0f, // triangle 8 : begin
1.0f, -1.0f, -1.0f,
1.0f, 1.0f, -1.0f, // triangle 8 : end
1.0f, -1.0f, -1.0f, // triangle 9 : begin
1.0f, 1.0f, 1.0f,
1.0f, -1.0f, 1.0f, // triangle 9 : end
1.0f, 1.0f, 1.0f, // triangle 10 : begin
1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, -1.0f, // triangle 10 : end
1.0f, 1.0f, 1.0f, // triangle 11 : begin
-1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, 1.0f, // triangle 11 : end
1.0f, 1.0f, 1.0f, // triangle 12 : begin
-1.0f, 1.0f, 1.0f,
1.0f, -1.0f, 1.0f // triangle 12 : end
};
NumOfVertices = 108;
Colors = new float[108] {
0.583f, 0.771f, 0.014f,
0.609f, 0.115f, 0.436f,
0.327f, 0.483f, 0.844f,
0.822f, 0.569f, 0.201f,
0.435f, 0.602f, 0.223f,
0.310f, 0.747f, 0.185f,
0.597f, 0.770f, 0.761f,
0.559f, 0.436f, 0.730f,
0.359f, 0.583f, 0.152f,
0.483f, 0.596f, 0.789f,
0.559f, 0.861f, 0.639f,
0.195f, 0.548f, 0.859f,
0.014f, 0.184f, 0.576f,
0.771f, 0.328f, 0.970f,
0.406f, 0.615f, 0.116f,
0.676f, 0.977f, 0.133f,
0.971f, 0.572f, 0.833f,
0.140f, 0.616f, 0.489f,
0.997f, 0.513f, 0.064f,
0.945f, 0.719f, 0.592f,
0.543f, 0.021f, 0.978f,
0.279f, 0.317f, 0.505f,
0.167f, 0.620f, 0.077f,
0.347f, 0.857f, 0.137f,
0.055f, 0.953f, 0.042f,
0.714f, 0.505f, 0.345f,
0.783f, 0.290f, 0.734f,
0.722f, 0.645f, 0.174f,
0.302f, 0.455f, 0.848f,
0.225f, 0.587f, 0.040f,
0.517f, 0.713f, 0.338f,
0.053f, 0.959f, 0.120f,
0.393f, 0.621f, 0.362f,
0.673f, 0.211f, 0.457f,
0.820f, 0.883f, 0.371f,
0.982f, 0.099f, 0.879f
};
NumOfColors = 108;
CurrentPhysicsWorld = PhysicsWorld;
HalfExtents = btVector3(SizeOfBox.x/2,
SizeOfBox.y/2,
SizeOfBox.z/2);
BoxPosition = btVector3(PositionOfBox.x,
PositionOfBox.y,
PositionOfBox.z);
BoxInertia = btVector3(InertiaOfBox.x,
InertiaOfBox.y,
InertiaOfBox.z);
ModelMatrix = glm::mat4(1.0f);
ModelMatrix = glm::translate(PositionOfBox) * glm::scale(SizeOfBox);
PhysicsBoxShape = new btBoxShape(HalfExtents);
PhysicsBoxMotionState = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), BoxPosition));
PhysicsBoxShape->calculateLocalInertia(MassOfBox, BoxInertia);
PhysicsBoxCI = new btRigidBody::btRigidBodyConstructionInfo(MassOfBox, PhysicsBoxMotionState, PhysicsBoxShape, BoxInertia);
PhysicsBoxRigidBody = new btRigidBody((*PhysicsBoxCI));
PhysicsBoxRigidBody->setUserPointer(this);
CurrentPhysicsWorld->addRigidBody(PhysicsBoxRigidBody);
PhysicsWorldID = CurrentPhysicsWorld->getCollisionObjectArray().size() - 1;
}
|