Ignore:
Timestamp:
Jan 10, 2015, 5:14:32 PM (10 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
2b596f
Parents:
c32d21
git-author:
Frederik Heber <heber@…> (11/12/14 19:01:33)
git-committer:
Frederik Heber <heber@…> (01/10/15 17:14:32)
Message:

GLMoleculeObject_molecule listens to AtomMoved signal to update hull only when necessary.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_molecule.cpp

    rc32d21 r7b5984  
    135135  isSignedOn(false),
    136136  _molecule(molref),
     137  TesselationHullUptodate(true),
    137138  hoverAtom(NULL)
    138139{
     
    140141  _molecule->signOn(this, molecule::AtomInserted);
    141142  _molecule->signOn(this, molecule::AtomRemoved);
     143  _molecule->signOn(this, molecule::AtomMoved);
    142144  isSignedOn = true;
    143145  /*molref->signOn(this, AtomObservable::IndexChanged);
     
    160162  isSignedOn(false),
    161163  _molecule(molref),
     164  TesselationHullUptodate(true),
    162165  hoverAtom(NULL)
    163166{
     
    165168  _molecule->signOn(this, molecule::AtomInserted);
    166169  _molecule->signOn(this, molecule::AtomRemoved);
     170  _molecule->signOn(this, molecule::AtomMoved);
    167171  isSignedOn = true;
    168172  /*molref->signOn(this, AtomObservable::IndexChanged);
     
    185189    _molecule->signOff(this, molecule::AtomInserted);
    186190    _molecule->signOff(this, molecule::AtomRemoved);
     191    _molecule->signOff(this, molecule::AtomMoved);
    187192  }
    188193  /*_atom->signOff(this, AtomObservable::IndexChanged);
     
    317322        observerLog().addMessage() << "++ Observer " << observerLog().getName(static_cast<Observer *>(this)) << " received notification that atom "+toString(_id)+" has been inserted.";
    318323  #endif
     324        TesselationHullUptodate = false;
    319325        atomInserted(_id);
    320326        break;
     
    326332        observerLog().addMessage() << "++ Observer " << observerLog().getName(static_cast<Observer *>(this)) << " received notification that atom "+toString(_id)+" has been removed.";
    327333  #endif
     334        TesselationHullUptodate = false;
    328335        atomRemoved(_id);
     336        break;
     337      }
     338      case molecule::AtomMoved:
     339      {
     340        const atomId_t _id = _molecule->lastChanged()->getId();
     341  #ifdef LOG_OBSERVER
     342        observerLog().addMessage() << "++ Observer " << observerLog().getName(static_cast<Observer *>(this)) << " received notification that atom "+toString(_id)+" has been inserted.";
     343  #endif
     344        TesselationHullUptodate = false;
    329345        break;
    330346      }
     
    364380  // draw either molecule's mesh or all atoms and bonds
    365381  if (m_visible) {
     382    updateTesselationHull();
     383
    366384    painter->modelViewMatrix().push();
    367385
     
    563581  // first update the mesh if we are going to be visible now
    564582  if (value)
    565     updateMesh(createMoleculeMesh(_molecule, parent()));
     583    updateTesselationHull();
    566584  // then emit onward
    567585  GLMoleculeObject::setVisible(value);
    568586}
    569587
     588void GLMoleculeObject_molecule::updateTesselationHull()
     589{
     590  if (!TesselationHullUptodate) {
     591    updateMesh(createMoleculeMesh(_molecule, parent()));
     592    TesselationHullUptodate = true;
     593  }
     594}
     595
    570596std::ostream &operator<<(std::ostream &ost, const GLMoleculeObject_molecule::BondIds &t)
    571597{
Note: See TracChangeset for help on using the changeset viewer.