00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "recorderhandler.h"
00023 #include "collider.h"
00024
00025 using namespace oxygen;
00026 using namespace boost;
00027
00028 void
00029 RecorderHandler::HandleCollision
00030 (boost::shared_ptr<Collider> collidee, dContact& )
00031 {
00032 mCollisionSet.insert(weak_ptr<Collider>(collidee));
00033 }
00034
00035 void
00036 RecorderHandler::Clear()
00037 {
00038 mCollisionSet.clear();
00039 }
00040
00041 void
00042 RecorderHandler::GetParentsSupportingClass
00043 (const std::string &name, TParentList &list)
00044 {
00045 for (
00046 RecorderHandler::TCollisionSet::const_iterator iter = mCollisionSet.begin();
00047 iter != mCollisionSet.end();
00048 ++iter
00049 )
00050 {
00051 shared_ptr<Collider> collidee = make_shared(*iter);
00052 if (collidee.get() == 0)
00053 {
00054 continue;
00055 }
00056
00057 weak_ptr<Node> parent =
00058 collidee->GetParentSupportingClass(name);
00059
00060 if (! parent.expired())
00061 {
00062 list.push_back(parent);
00063 }
00064 }
00065 }
00066
00067
00068