22 #include <vrvCore/DtUniqueID.h>
23 #include <vrvCore/DtEntityState.h>
25 #include <vrvCore/DtSimDataProcessorInterface.h>
29 #include <boost/function.hpp>
30 #include <boost/bind.hpp>
32 #include <vlpi/appearance.h>
38 template <
typename _StateType>
58 const _StateType& originalState)>&
function)
65 typename std::map<makVrv::DtUniqueID, _StateType>::iterator iter;
66 iter =
myMap.find(
id);
68 if (iter !=
myMap.end())
75 const makVrv::DtVrlinkSimulatedBaseState& incoming)
77 const _StateType& state = (
const _StateType&)incoming;
82 const makVrv::DtVrlinkSimulatedBaseState& incoming)
84 const _StateType& state = (
const _StateType&)incoming;
86 typename DtIsModifiedCallList::iterator iter =
88 typename std::map<makVrv::DtUniqueID, _StateType>::const_iterator
89 cacheIter =
myMap.find(
id);
93 if ((*iter)(state, cacheIter->second))
105 std::map<makVrv::DtUniqueID, _StateType>
myMap;
107 typedef std::vector<boost::function<
bool (
const _StateType& newState,
129 const makVrv::DtVrlinkSimulatedEntityState& cached)
const
131 return (newState.myAttachedToId != cached.myAttachedToId);
134 bool checkForceId(
const makVrv::DtVrlinkSimulatedEntityState& newState,
135 const makVrv::DtVrlinkSimulatedEntityState& cached)
const
137 return (newState.myForce != cached.myForce);
141 const makVrv::DtVrlinkSimulatedEntityState& cached)
const
143 return (newState.myMarkingText != cached.myMarkingText);
147 const makVrv::DtVrlinkSimulatedEntityState& cached)
const
149 return (newState.myGlobalId != cached.myGlobalId);
153 const makVrv::DtVrlinkSimulatedEntityState& state)
155 DtAppearance app1(DtEntityType(newState.myEntityType.c_str()));
157 app1.setAppearance(newState.myAppearance);
159 DtAppearance app2(DtEntityType(state.myEntityType.c_str()));
161 app2.setAppearance(state.myAppearance);
163 bool dest1 = (app1.damageState() == DtDamageDestroyed);
164 bool dest2 = (app2.damageState() == DtDamageDestroyed);
166 return (dest1 != dest2);
183 return (newState != cached);
200 return (newState != cached);
241 bool dest1 = (newState.myAppearance == DtDamageDestroyed);
242 bool dest2 = (state.myAppearance == DtDamageDestroyed);
244 return (dest1 != dest2);
252 DtGlobalObjectDesignator id;
256 if (numberOfAggs != curAggLimit)
261 for (i = 0; i < numberOfAggs; i++)
277 DtGlobalObjectDesignator id;
281 if (numberOfAggs != curAggLimit)
286 for (i = 0; i < numberOfAggs; i++)
300 return (newState.myAttachedToId != cached.myAttachedToId);
306 return (newState.myForce != cached.myForce);
312 return (newState.myGlobalId != cached.myGlobalId);
318 return (newState.myMarkingText != cached.myMarkingText);