# HG changeset patch # User Matti Hamalainen # Date 1575234724 -7200 # Node ID d640f2a34031e8fa68ff598bce176b107821c262 # Parent d0cd281934a3a4df167131adf1654ef6730285f2 Only scale/translate/rotate the model if those attributes have been set in the scenefile. diff -r d0cd281934a3 -r d640f2a34031 dmmodel.cpp --- a/dmmodel.cpp Tue Nov 26 07:22:35 2019 +0200 +++ b/dmmodel.cpp Sun Dec 01 23:12:04 2019 +0200 @@ -709,13 +709,22 @@ return false; if (key == "translate") + { model->translate = vec; + model->translateSet = true; + } else if (key == "rotate") + { model->rotate = vec; + model->rotateSet = true; + } else if (key == "scale") + { model->scale = vec; + model->scaleSet = true; + } } else if (info.state == 1 && key == "specular") diff -r d0cd281934a3 -r d640f2a34031 dmmodel.h --- a/dmmodel.h Tue Nov 26 07:22:35 2019 +0200 +++ b/dmmodel.h Sun Dec 01 23:12:04 2019 +0200 @@ -143,6 +143,7 @@ DMVector4 ambient, diffuse, specular; int shininess; DMVector3 translate, scale, rotate; + bool translateSet, scaleSet, rotateSet; unsigned int id_prog, id_fs, id_vs; @@ -172,7 +173,8 @@ translate.x = translate.y = translate.z = 0; rotate.x = rotate.y = rotate.z = 0; - scale.x = scale.y = scale.z = 1; + scale.x = scale.y = scale.z = 0; + translateSet = rotateSet = scaleSet = false; specular.p.x = specular.p.y = specular.p.z = 0.8f; specular.p.w = 1.0f; shininess = 96; diff -r d0cd281934a3 -r d640f2a34031 gldragon.cpp --- a/gldragon.cpp Tue Nov 26 07:22:35 2019 +0200 +++ b/gldragon.cpp Sun Dec 01 23:12:04 2019 +0200 @@ -175,11 +175,18 @@ glGetIntegerv(GL_MAX_ELEMENTS_INDICES, &maxIndices); // Add transforms - glScalef(model.scale.x, model.scale.y, model.scale.z); - glTranslatef(model.translate.x, model.translate.y, model.translate.z); - glRotatef(model.rotate.x, 1.0f, 0.0f, 0.0f); - glRotatef(model.rotate.y, 0.0f, 1.0f, 0.0f); - glRotatef(model.rotate.z, 0.0f, 0.0f, 1.0f); + if (model.scaleSet) + glScalef(model.scale.x, model.scale.y, model.scale.z); + + if (model.translateSet) + glTranslatef(model.translate.x, model.translate.y, model.translate.z); + + if (model.rotateSet) + { + glRotatef(model.rotate.x, 1.0f, 0.0f, 0.0f); + glRotatef(model.rotate.y, 0.0f, 1.0f, 0.0f); + glRotatef(model.rotate.z, 0.0f, 0.0f, 1.0f); + } glVertexPointer(3, GL_FLOAT, 0, &model.vertices[0]); glNormalPointer( GL_FLOAT, 0, &model.normals[0]);