1 /*
2 	Copyright (C) 2005-2007 Feeling Software Inc.
3 	Portions of the code are:
4 	Copyright (C) 2005-2007 Sony Computer Entertainment America
5 
6 	MIT License: http://www.opensource.org/licenses/mit-license.php
7 */
8 
9 #include "StdAfx.h"
10 #include "FUTracker.h"
11 
12 //
13 // FUTrackable
14 //
15 
16 ImplementObjectType(FUTrackable);
17 
FUTrackable()18 FUTrackable::FUTrackable()
19 {
20 }
21 
~FUTrackable()22 FUTrackable::~FUTrackable()
23 {
24 	// Detach this object from its trackers.
25 	Detach();
26 }
27 
Detach()28 void FUTrackable::Detach()
29 {
30 	for (FUTrackerList::iterator itT = trackers.begin(); itT != trackers.end(); ++itT)
31 	{
32 		(*itT)->OnObjectReleased(this);
33 	}
34 	trackers.clear();
35 
36 	// Also detach from the owner.
37 	FUObject::Detach();
38 }
39 
40 // Manage the list of trackers
AddTracker(FUTracker * tracker)41 void FUTrackable::AddTracker(FUTracker* tracker)
42 {
43 	FUAssert(!trackers.contains(tracker), return);
44 	trackers.push_back(tracker);
45 }
RemoveTracker(FUTracker * tracker)46 void FUTrackable::RemoveTracker(FUTracker* tracker)
47 {
48 	//FUAssert(trackers.contains(tracker), return);
49 	//trackers.erase(tracker);
50 	FUAssert(trackers.erase(tracker),);
51 }
HasTracker(const FUTracker * tracker) const52 bool FUTrackable::HasTracker(const FUTracker* tracker) const
53 {
54 	return trackers.contains(const_cast<FUTracker*>(tracker));
55 }
56