1 |
< |
/* |
1 |
> |
/* |
2 |
|
* Copyright (c) 2005 The University of Notre Dame. All Rights Reserved. |
3 |
|
* |
4 |
|
* The University of Notre Dame grants you ("Licensee") a |
38 |
|
* University of Notre Dame has been advised of the possibility of |
39 |
|
* such damages. |
40 |
|
*/ |
41 |
< |
|
41 |
> |
#include "selection/SelectionManager.hpp" |
42 |
|
#include "visitors/OtherVisitor.hpp" |
43 |
|
#include "primitives/DirectionalAtom.hpp" |
44 |
|
#include "primitives/RigidBody.hpp" |
77 |
|
} |
78 |
|
|
79 |
|
void IgnoreVisitor::internalVisit(StuntDouble *sd) { |
80 |
< |
GenericData *data; |
81 |
< |
data = sd->getPropertyByName("IGNORE"); |
82 |
< |
|
83 |
< |
//if this stuntdoulbe is already marked as ignore just skip it |
84 |
< |
if (data == NULL) { |
85 |
< |
data = new GenericData; |
86 |
< |
data->setID("IGNORE"); |
87 |
< |
sd->addProperty(data); |
88 |
< |
} |
80 |
> |
info->getSelectionManager()->clearSelection(sd); |
81 |
> |
//GenericData *data; |
82 |
> |
//data = sd->getPropertyByName("IGNORE"); |
83 |
> |
// |
84 |
> |
////if this stuntdoulbe is already marked as ignore just skip it |
85 |
> |
//if (data == NULL) { |
86 |
> |
// data = new GenericData; |
87 |
> |
// data->setID("IGNORE"); |
88 |
> |
// sd->addProperty(data); |
89 |
> |
//} |
90 |
|
} |
91 |
|
|
92 |
|
const std::string IgnoreVisitor::toString() { |
304 |
|
} |
305 |
|
|
306 |
|
void XYZVisitor::visit(Atom *atom) { |
307 |
< |
if (!isIgnore(atom)) |
307 |
> |
if (isSelected(atom)) |
308 |
|
internalVisit(atom); |
309 |
|
} |
310 |
|
|
311 |
|
void XYZVisitor::visit(DirectionalAtom *datom) { |
312 |
< |
if (!isIgnore(datom)) |
312 |
> |
if (isSelected(datom)) |
313 |
|
internalVisit(datom); |
314 |
|
} |
315 |
|
|
316 |
|
void XYZVisitor::visit(RigidBody *rb) { |
317 |
< |
if (!isIgnore(rb)) |
317 |
> |
if (isSelected(rb)) |
318 |
|
internalVisit(rb); |
319 |
|
} |
320 |
|
|
338 |
|
|
339 |
|
for( atomInfo = atomData->beginAtomInfo(i); atomInfo; |
340 |
|
atomInfo = atomData->nextAtomInfo(i) ) { |
341 |
< |
if (printDipole) |
342 |
< |
sprintf(buffer, |
343 |
< |
"%s%15.8f%15.8f%15.8f%15.8f%15.8f%15.8f", |
344 |
< |
atomInfo->AtomType.c_str(), |
345 |
< |
atomInfo->pos[0], |
346 |
< |
atomInfo->pos[1], |
347 |
< |
atomInfo->pos[2], |
348 |
< |
atomInfo->dipole[0], |
349 |
< |
atomInfo->dipole[1], |
350 |
< |
atomInfo->dipole[2]); else |
351 |
< |
sprintf(buffer, "%s%15.8f%15.8f%15.8f", |
352 |
< |
atomInfo->AtomType.c_str(), atomInfo->pos[0], |
353 |
< |
atomInfo->pos[1], atomInfo->pos[2]); |
354 |
< |
|
341 |
> |
printf("SD type is %s\n", sd->getType().c_str()); |
342 |
> |
printf("XYZVisitor thinks %s\n", atomInfo->atomTypeName.c_str()); |
343 |
> |
if (printDipole) { |
344 |
> |
sprintf(buffer, |
345 |
> |
"%s%15.8f%15.8f%15.8f%15.8f%15.8f%15.8f", |
346 |
> |
atomInfo->atomTypeName.c_str(), |
347 |
> |
atomInfo->pos[0], |
348 |
> |
atomInfo->pos[1], |
349 |
> |
atomInfo->pos[2], |
350 |
> |
atomInfo->dipole[0], |
351 |
> |
atomInfo->dipole[1], |
352 |
> |
atomInfo->dipole[2]); |
353 |
> |
} else { |
354 |
> |
sprintf(buffer, "%s%15.8f%15.8f%15.8f", |
355 |
> |
atomInfo->atomTypeName.c_str(), atomInfo->pos[0], |
356 |
> |
atomInfo->pos[1], atomInfo->pos[2]); |
357 |
> |
} |
358 |
> |
|
359 |
|
frame.push_back(buffer); |
360 |
|
} |
361 |
|
} |
362 |
|
|
363 |
< |
bool XYZVisitor::isIgnore(StuntDouble *sd) { |
364 |
< |
GenericData *data; |
360 |
< |
|
361 |
< |
data = sd->getPropertyByName("IGNORE"); |
362 |
< |
return data == NULL ? false : true; |
363 |
> |
bool XYZVisitor::isSelected(StuntDouble *sd) { |
364 |
> |
return info->getSelectionManager()->isSelected(sd); |
365 |
|
} |
366 |
|
|
367 |
|
void XYZVisitor::writeFrame(std::ostream &outStream) { |
467 |
|
} |
468 |
|
|
469 |
|
const std::string PrepareVisitor::toString() { |
470 |
< |
char buffer[65535]; |
471 |
< |
std::string result; |
472 |
< |
|
473 |
< |
sprintf(buffer, |
474 |
< |
"------------------------------------------------------------------\n"); |
475 |
< |
result += buffer; |
476 |
< |
|
477 |
< |
sprintf(buffer, "Visitor name: %s", visitorName.c_str()); |
478 |
< |
result += buffer; |
479 |
< |
|
480 |
< |
sprintf(buffer, |
481 |
< |
"Visitor Description: prepare for operation of other vistors\n"); |
482 |
< |
result += buffer; |
483 |
< |
|
484 |
< |
sprintf(buffer, |
485 |
< |
"------------------------------------------------------------------\n"); |
486 |
< |
result += buffer; |
487 |
< |
|
488 |
< |
return result; |
470 |
> |
char buffer[65535]; |
471 |
> |
std::string result; |
472 |
> |
|
473 |
> |
sprintf(buffer, |
474 |
> |
"------------------------------------------------------------------\n"); |
475 |
> |
result += buffer; |
476 |
> |
|
477 |
> |
sprintf(buffer, "Visitor name: %s", visitorName.c_str()); |
478 |
> |
result += buffer; |
479 |
> |
|
480 |
> |
sprintf(buffer, |
481 |
> |
"Visitor Description: prepare for operation of other vistors\n"); |
482 |
> |
result += buffer; |
483 |
> |
|
484 |
> |
sprintf(buffer, |
485 |
> |
"------------------------------------------------------------------\n"); |
486 |
> |
result += buffer; |
487 |
> |
|
488 |
> |
return result; |
489 |
|
} |
490 |
|
|
491 |
|
//----------------------------------------------------------------------------// |
525 |
|
continue; |
526 |
|
|
527 |
|
for( atomInfo = atomData->beginAtomInfo(i); atomInfo; |
528 |
< |
atomInfo = atomData->nextAtomInfo(i) ) { |
529 |
< |
replaceType(atomInfo->AtomType); |
528 |
> |
atomInfo = atomData->nextAtomInfo(i) ) { |
529 |
> |
atomInfo->atomTypeName = trimmedName(atomInfo->atomTypeName); |
530 |
|
} //end for(atomInfo) |
531 |
|
} //end for(atomIter) |
532 |
|
} //end if (waterTypeList.find(rbName) != waterTypeList.end()) |
533 |
|
} |
534 |
|
|
535 |
< |
void WaterTypeVisitor::replaceType(std::string&atomType) { |
536 |
< |
atomType = atomType.substr(0, atomType.find('_')); |
537 |
< |
} |
535 |
> |
std::string WaterTypeVisitor::trimmedName(const std::string&atomTypeName) { |
536 |
> |
return atomTypeName.substr(0, atomTypeName.find('_')); |
537 |
> |
} |
538 |
|
|
539 |
|
const std::string WaterTypeVisitor::toString() { |
540 |
|
char buffer[65535]; |