| 40 |
|
*/ |
| 41 |
|
|
| 42 |
|
#include "visitors/LipidTransVisitor.hpp" |
| 43 |
+ |
#include "utils/simError.h" |
| 44 |
|
|
| 45 |
|
namespace oopse { |
| 46 |
+ |
LipidTransVisitor::LipidTransVisitor(SimInfo* info, const std::string& originSeleScript, const std::string& refSeleScript) |
| 47 |
+ |
: BaseVisitor(), info_(info), originEvaluator_(info), originSeleMan_(info), refEvaluator_(info), refSeleMan_(info), refSd_(NULL) { |
| 48 |
+ |
|
| 49 |
+ |
|
| 50 |
+ |
visitorName = "LipidTransVisitor"; |
| 51 |
+ |
|
| 52 |
+ |
originEvaluator_.loadScriptString(originSeleScript); |
| 53 |
+ |
if (!originEvaluator_.isDynamic()) { |
| 54 |
+ |
originSeleMan_.setSelectionSet(originEvaluator_.evaluate()); |
| 55 |
+ |
if (originSeleMan_.getSelectionCount() == 1) { |
| 56 |
+ |
int i; |
| 57 |
+ |
originDatom_ = dynamic_cast<DirectionalAtom*>(originSeleMan_.beginSelected(i)); |
| 58 |
+ |
if (originDatom_ == NULL) { |
| 59 |
+ |
sprintf(painCave.errMsg, "LipidTransVisitor: origin selection must select an directional atom"); |
| 60 |
+ |
painCave.isFatal = 1; |
| 61 |
+ |
simError(); |
| 62 |
+ |
} |
| 63 |
+ |
} else { |
| 64 |
+ |
sprintf(painCave.errMsg, "LipidTransVisitor: origin selection must select an directional atom"); |
| 65 |
+ |
painCave.isFatal = 1; |
| 66 |
+ |
simError(); |
| 67 |
+ |
|
| 68 |
+ |
} |
| 69 |
+ |
} |
| 70 |
+ |
|
| 71 |
+ |
refEvaluator_.loadScriptString(refSeleScript); |
| 72 |
+ |
if (!refEvaluator_.isDynamic()) { |
| 73 |
+ |
refSeleMan_.setSelectionSet(refEvaluator_.evaluate()); |
| 74 |
+ |
if (refSeleMan_.getSelectionCount() == 1) { |
| 75 |
+ |
int i; |
| 76 |
+ |
refSd_ = refSeleMan_.beginSelected(i); |
| 77 |
+ |
|
| 78 |
+ |
} else { |
| 79 |
+ |
//error |
| 80 |
+ |
|
| 81 |
+ |
} |
| 82 |
+ |
} |
| 83 |
+ |
|
| 84 |
+ |
} |
| 85 |
+ |
|
| 86 |
|
void LipidTransVisitor::update() { |
| 87 |
|
|
| 88 |
|
Vector3d ref = refSd_->getPos(); |