- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp
rce4126 rf115cc 56 56 GLMoleculeObject(mesh, parent), 57 57 Observer(std::string("GLMoleculeObject_atom")+toString(_id)), 58 atomicid(_id) 58 atomicid(_id), 59 uptodatePosition(false), 60 uptodateElement(false) 59 61 { 60 62 // sign on as observer (obtain non-const instance before) … … 108 110 ELOG(2, "Atom with id "+toString(atomicid)+" is already gone."); 109 111 } 112 uptodatePosition = true; 110 113 } 111 114 … … 141 144 } 142 145 setScale( radius / 4. ); 146 147 uptodateElement = true; 143 148 } 144 149 … … 165 170 // selected? 166 171 setSelected(World::getInstance().isAtomSelected(atomicid)); 172 } 173 174 void GLMoleculeObject_atom::draw(QGLPainter *painter, const QVector4D &cameraPlane) 175 { 176 // hook to update prior to painting 177 if (!uptodatePosition) 178 resetPosition(); 179 if (!uptodateElement) 180 resetElement(); 181 182 // call old hook to do the actual paining 183 GLMoleculeObject::draw(painter, cameraPlane); 167 184 } 168 185 … … 185 202 switch (notification->getChannelNo()) { 186 203 case AtomObservable::ElementChanged: 187 resetElement(); 188 emit changed(); 204 uptodateElement = false; 189 205 break; 190 206 case AtomObservable::IndexChanged: … … 192 208 break; 193 209 case AtomObservable::PositionChanged: 194 resetPosition(); 195 emit changed(); 210 uptodatePosition = false; 196 211 break; 197 212 case AtomObservable::BondsAdded: … … 199 214 const atom *_atom = World::getInstance().getAtom(AtomById(atomicid)); 200 215 if (_atom != NULL) { 216 // make sure position is up-to-date 217 if (!uptodatePosition) 218 resetPosition(); 201 219 ASSERT(!_atom->getListOfBonds().empty(), 202 220 "GLMoleculeObject_atom::recieveNotification() - received BondsAdded but ListOfBonds is empty.");
Note:
See TracChangeset
for help on using the changeset viewer.