/* * Project: MoleCuilder * Description: creates and alters molecular systems * Copyright (C) 2010 University of Bonn. All rights reserved. * Please see the LICENSE file or "Copyright notice" in builder.cpp for details. */ /* * GLMoleculeObject_atom.cpp * * Created on: Aug 17, 2011 * Author: heber */ // include config.h #ifdef HAVE_CONFIG_H #include #endif #include "GLMoleculeObject_atom.hpp" #include #include #include #include "CodePatterns/MemDebug.hpp" #include "CodePatterns/Assert.hpp" #include "element.hpp" #include "LinearAlgebra/Vector.hpp" static QGLSceneNode * createAtom(QObject *parent) { QGLBuilder builder; builder << QGLSphere(0.5); QGLSceneNode *n = builder.finalizedSceneNode(); n->setParent(parent); return n; } GLMoleculeObject_atom::GLMoleculeObject_atom(QObject *parent, const atom *atomref) : GLMoleculeObject(createAtom(parent), parent), _atom(atomref) { const Vector Position = _atom->getPosition(); const size_t elementno = _atom->getType()->getNumber(); // set materials QGLMaterial *elementmaterial = getMaterial(elementno); ASSERT(elementmaterial != NULL, "GLMoleculeObject_atom::GLMoleculeObject_atom() - QGLMaterial ref from getter function is NULL."); setMaterial(elementmaterial); QGLMaterial *hovermaterial = getMaterial(0); // 0 is the hover material ASSERT(hovermaterial != NULL, "GLMoleculeObject_atom::GLMoleculeObject_atom() - QGLMaterial ref from getter function for hover is NULL."); setHoverMaterial(hovermaterial); // set position setPosition(QVector3D(Position[0], Position[1], Position[2])); // set scale setScale( _atom->getType()->getVanDerWaalsRadius()); // set the object's id setObjectId(_atom->getId()); std::cout << "Created sphere at " << Position << " with elementno " << elementno << "." << endl; connect( this, SIGNAL(clicked()), this, SLOT(wasClicked())); } void GLMoleculeObject_atom::wasClicked() { qDebug("GLMoleculeObject_atom: atom %d has been clicked", _atom->getId()); emit clicked(_atom->getId()); }