aboutsummaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
authorDavid Doan <daviddoan@Davids-MacBook-Pro-100.local>2023-12-12 13:59:38 -0500
committerDavid Doan <daviddoan@Davids-MacBook-Pro-100.local>2023-12-12 13:59:38 -0500
commit33082ca5ec4c20d34b79b3b1f24f3b3152db2816 (patch)
tree7adb26edf8302ec33e53645a516ceaa3803fbe83 /src/utils
parent58c896801817ac67913644ccd9373cd18774232a (diff)
should be building
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/sceneparser.cpp24
-rw-r--r--src/utils/sceneparser.h3
2 files changed, 24 insertions, 3 deletions
diff --git a/src/utils/sceneparser.cpp b/src/utils/sceneparser.cpp
index 009873b..bc39109 100644
--- a/src/utils/sceneparser.cpp
+++ b/src/utils/sceneparser.cpp
@@ -38,9 +38,8 @@ TextureData loadTextureFromFile(const QString &file) {
// helper to handle recursive creation of tree
void initTree(SceneNode* currentNode, std::vector<RenderShapeData> *shapes, std::vector<SceneLightData> *lights, glm::mat4 currentCTM, glm::vec4 currentTranslation4d) {
if (currentNode->transformations.size() == 0) {
- // ScenePa.rser::translate4(currentTranslation4d, glm::vec4(0.f, 0.f, 0.f, settings.w));
- // convert currentTranslation4d to a 4x4 matrix
- currentCTM = glm::translate(glm::mat4(1.0f), glm::vec3(currentTranslation4d));
+ SceneParser::translate4(currentTranslation4d, glm::vec4(0.f, -0.0098f * settings.rotation, 0.f, settings.w));
+ // currentCTM = glm::translate(glm::mat4(1.0f), glm::vec3(currentTranslation4d));
currentCTM *= SceneParser::getRotationMatrix4(1.f, glm::vec3(settings.xy, settings.xz, settings.yz), glm::vec3(settings.xw, settings.yw, settings.zw));
}
@@ -74,14 +73,33 @@ void initTree(SceneNode* currentNode, std::vector<RenderShapeData> *shapes, std:
for(auto primitive : currentNode->primitives) {
// primitive->material.textureData = loadTextureFromFile(QString::fromStdString(primitive->material.textureMap.filename));
+ // float unitMass = 1.f;
+ // switch (primitive->type)
+ // {
+ // case PrimitiveType::PRIMITIVE_CUBE:
+ // unitMass = 0.5f * 0.5f * 0.5f;
+ // break;
+ // case PrimitiveType::PRIMITIVE_SPHERE:
+ // unitMass = 4.f / 3.f * 3.14159f * 0.5f * 0.5f * 0.5f;
+ // break;
+ // case PrimitiveType::PRIMITIVE_CONE:
+ // unitMass = 1.f / 3.f * 3.14159f * 0.5f * 0.5f * 0.5f;
+ // break;
+ // case PrimitiveType::PRIMITIVE_CYLINDER:
+ // unitMass = 3.14159f * 0.5f * 0.5f * 0.5f;
+ // break;
RenderShapeData rsd = {
.primitive = *primitive,
.ctm = currentCTM,
.translation4d = currentTranslation4d,
.inverseCTM = glm::inverse(currentCTM),
.inverseTranslation4d = -currentTranslation4d,
+ // .position = glm::vec4(0.f, 0.f, 0.f, 1.f),
+ // .velocity = glm::vec4(0.f, 0.f, 0.f, 0.f),
+ // .mass = unitMass,
};
shapes->push_back(rsd);
+ // }
}
// add the lights
diff --git a/src/utils/sceneparser.h b/src/utils/sceneparser.h
index 130156a..3ab93a8 100644
--- a/src/utils/sceneparser.h
+++ b/src/utils/sceneparser.h
@@ -12,6 +12,9 @@ struct RenderShapeData {
glm::vec4 translation4d; // appended to the right of the ctm (for 4d translation)
glm::mat4 inverseCTM;
glm::vec4 inverseTranslation4d; // appended to the right of the inverse ctm (for 4d translation)
+ glm::vec4 position;
+ glm::vec4 velocity;
+ float mass;
};
// Struct which contains all the data needed to render a scene