Mercurial > hg > forks > gldragon
changeset 36:d640f2a34031
Only scale/translate/rotate the model if those attributes have been set in the scenefile.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 01 Dec 2019 23:12:04 +0200 |
parents | d0cd281934a3 |
children | 73a785323e8a |
files | dmmodel.cpp dmmodel.h gldragon.cpp |
diffstat | 3 files changed, 24 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- 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")
--- 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;
--- 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]);