1 |
|
#include <cstring> |
2 |
|
#include "CompositeVisitor.hpp" |
3 |
+ |
#include "RigidBody.hpp" |
4 |
+ |
#include "DirectionalAtom.hpp" |
5 |
|
CompositeVisitor::~CompositeVisitor(){ |
6 |
|
VisitorIterator i; |
7 |
|
BaseVisitor* curVisitor; |
39 |
|
|
40 |
|
} |
41 |
|
|
42 |
< |
void CompositeVisitor::internalVisit(StuntDouble* sd){ |
42 |
> |
void CompositeVisitor::internalVisit(Atom* atom){ |
43 |
|
VisitorIterator i; |
44 |
|
BaseVisitor* curVisitor; |
45 |
|
|
46 |
|
for(curVisitor = beginVisitor(i); curVisitor; curVisitor = nextVisitor(i)) |
47 |
< |
sd->accept(curVisitor); |
47 |
> |
atom->accept(curVisitor); |
48 |
|
} |
49 |
|
|
50 |
+ |
void CompositeVisitor::internalVisit(RigidBody* rb){ |
51 |
+ |
VisitorIterator i; |
52 |
+ |
BaseVisitor* curVisitor; |
53 |
+ |
vector<Atom*> myAtoms; |
54 |
+ |
vector<Atom*>::iterator atomIter; |
55 |
+ |
|
56 |
+ |
myAtoms = rb->getAtoms(); |
57 |
+ |
|
58 |
+ |
for(curVisitor = beginVisitor(i); curVisitor; curVisitor = nextVisitor(i)){ |
59 |
+ |
rb->accept(curVisitor); |
60 |
+ |
|
61 |
+ |
for(atomIter = myAtoms.begin(); atomIter != myAtoms.end(); ++atomIter) |
62 |
+ |
(*atomIter)->accept(curVisitor); |
63 |
+ |
} |
64 |
+ |
|
65 |
+ |
|
66 |
+ |
|
67 |
+ |
} |
68 |
+ |
|
69 |
|
const string CompositeVisitor::toString(){ |
70 |
|
VisitorIterator i; |
71 |
+ |
string result; |
72 |
|
char buffer[65535]; |
73 |
|
|
74 |
|
for(i = visitorList.begin(); i != visitorList.end(); i++){ |
75 |
|
sprintf(buffer, "Priority = %d\n", (*i).second); |
76 |
< |
strcat(buffer, (((*i).first)->toString()).c_str()); |
76 |
> |
result += buffer; |
77 |
> |
|
78 |
> |
result += ((*i).first)->toString(); |
79 |
|
} |
80 |
|
|
81 |
< |
return buffer; |
81 |
> |
return result; |
82 |
|
} |
83 |
|
|
84 |
|
void CompositeVisitor::update(){ |