- Timestamp:
- Dec 25, 2009, 10:23:58 PM (14 years ago)
- Location:
- code/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
-
code/trunk/src/libraries/network/synchronisable/SynchronisableVariable.h
r5781 r6417 35 35 #include <cassert> 36 36 #include <cstring> 37 #include " util/Serialise.h"37 #include "Serialise.h" 38 38 #include "util/TypeTraits.h" 39 39 #include "core/GameMode.h" … … 41 41 42 42 namespace orxonox{ 43 43 44 44 namespace VariableDirection{ 45 45 enum Value{ … … 54 54 }; 55 55 } 56 56 57 57 class _NetworkExport SynchronisableVariableBase 58 58 { … … 81 81 virtual inline void* getReference(){ return static_cast<void*>(const_cast<typename Loki::TypeTraits<T>::UnqualifiedType*>(&this->variable_)); } 82 82 protected: 83 84 T& variable_; 85 uint8_t mode_; 86 NetworkCallbackBase *callback_; 83 T& variable_; 84 uint8_t mode_; 85 NetworkCallbackBase *callback_; 87 86 }; 88 87 89 88 template <class T> 90 89 class SynchronisableVariableBidirectional: public SynchronisableVariable<T> … … 93 92 SynchronisableVariableBidirectional(T& variable, uint8_t master=Bidirectionality::ServerMaster, NetworkCallbackBase *cb=0); 94 93 virtual ~SynchronisableVariableBidirectional(); 95 94 96 95 virtual inline uint8_t getMode(){ return 0x3; } //this basically is a hack ^^ 97 96 virtual inline uint32_t getData(uint8_t*& mem, uint8_t mode); … … 113 112 } 114 113 } 115 114 116 115 template <class T> SynchronisableVariable<T>::~SynchronisableVariable() 117 116 { 118 if (this->callback_ != 0)117 if (this->callback_) 119 118 { 120 119 NetworkCallbackManager::deleteCallback(this->callback_); //safe call for deletion … … 141 140 return; 142 141 // check whether we need to consider a callback 143 if ( this->callback_ != 0 ) 144 { 145 if( forceCallback || !checkEquality( this->variable_, mem ) ) 146 callback = true; 142 if ( this->callback_ ) 143 { 144 callback = forceCallback || !checkEquality( this->variable_, mem ); 145 } 146 // now do a callback if neccessary 147 if ( callback ) 148 { 149 NetworkCallbackManager::triggerCallback( this->callback_ ); 147 150 } 148 151 // write the data 149 152 loadAndIncrease( this->variable_, mem ); 150 // now do a callback if neccessary151 if ( callback )152 NetworkCallbackManager::triggerCallback( this->callback_ );153 153 } 154 154 … … 216 216 mem += sizeof(varReference_); 217 217 memcpy(static_cast<void*>(const_cast<typename Loki::TypeTraits<T>::UnqualifiedType*>(&this->varBuffer_)), &this->variable_, sizeof(T)); 218 if ( this->callback_ != 0)218 if ( this->callback_ ) 219 219 callback = true; 220 220 } … … 235 235 { 236 236 // value changed so remark for callback 237 if ( this->callback_ != 0)237 if ( this->callback_ ) 238 238 callback = true; 239 239 } 240 240 } 241 241 } 242 // now do a callback if neccessary 243 if ( callback ) 244 { 245 NetworkCallbackManager::triggerCallback( this->callback_ ); 246 } 242 247 // now write the data 243 248 loadAndIncrease(this->variable_, mem); 244 // now do a callback if neccessary245 if ( callback )246 NetworkCallbackManager::triggerCallback( this->callback_ );247 249 } 248 250 … … 251 253 return returnSize( this->variable_ ) + sizeof(varReference_); 252 254 } 253 255 254 256 255 257 }
Note: See TracChangeset
for help on using the changeset viewer.