From 7c8e05467d9b2ab46e33404f2720ad782912378f Mon Sep 17 00:00:00 2001 From: Ansgar Philippsen <ansgar.philippsen@gmail.com> Date: Tue, 11 Jan 2011 18:00:33 -0500 Subject: [PATCH] fixed missing position updates for backbone trace based renderings --- modules/gfx/src/impl/backbone_trace.cc | 13 ++++++++++++- modules/gfx/src/impl/backbone_trace.hh | 3 +++ modules/gfx/src/impl/trace_renderer_base.cc | 6 ++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/modules/gfx/src/impl/backbone_trace.cc b/modules/gfx/src/impl/backbone_trace.cc index 235ad226b..11463588d 100644 --- a/modules/gfx/src/impl/backbone_trace.cc +++ b/modules/gfx/src/impl/backbone_trace.cc @@ -83,7 +83,7 @@ public: NodeEntry entry={ca, GfxObj::Ele2Color(ca.GetElement()), GfxObj::Ele2Color(ca.GetElement()), geom::Vec3(), // this will be set by the gfx trace obj - geom::Normalize(res.GetCentralNormal()), + res.GetCentralNormal(), 1.0, geom::Vec3(),geom::Vec3(),geom::Vec3(), // for later use in NA rendering false,id_counter_++}; @@ -149,6 +149,17 @@ void BackboneTrace::Rebuild() } } +void BackboneTrace::OnUpdatedPositions() +{ + for(NodeEntryListList::iterator nitnit=node_list_list_.begin();nitnit!=node_list_list_.end();++nitnit) { + NodeEntryList& nlist=*nitnit; + for(NodeEntryList::iterator nit=nlist.begin();nit!=nlist.end();++nit) { + nit->normal=nit->atom.GetResidue().GetCentralNormal(); + } + PrepList(nlist); + } +} + void BackboneTrace::AddNodeEntryList(const NodeEntryList& l) { if(l.size()>=3) { diff --git a/modules/gfx/src/impl/backbone_trace.hh b/modules/gfx/src/impl/backbone_trace.hh index debcc54b5..4151121f2 100644 --- a/modules/gfx/src/impl/backbone_trace.hh +++ b/modules/gfx/src/impl/backbone_trace.hh @@ -65,6 +65,9 @@ public: // re-creates internal nodelist-list based on view void Rebuild(); + + // entity has new positions + void OnUpdatedPositions(); // extract portions of this backbone trace for a subview // this is faster then re-generating a trace diff --git a/modules/gfx/src/impl/trace_renderer_base.cc b/modules/gfx/src/impl/trace_renderer_base.cc index 74317a473..91b681cc6 100644 --- a/modules/gfx/src/impl/trace_renderer_base.cc +++ b/modules/gfx/src/impl/trace_renderer_base.cc @@ -79,6 +79,12 @@ TraceRendererBase::TraceRendererBase(BackboneTrace* trace, int n): void TraceRendererBase::PrepareRendering() { + if (state_ & DIRTY_VA) { + trace_->OnUpdatedPositions(); + trace_subset_.OnUpdatedPositions(); + if(this->HasSelection()) sel_subset_.OnUpdatedPositions(); + // don't clear DIRTY_VA flag - derived classed may depend on it + } } void TraceRendererBase::UpdateViews() -- GitLab