EntityChangedUpdate.cpp 838 B

12345678910111213141516171819202122232425262728293031
  1. #include "EntityChangedUpdate.h"
  2. #include "Globals.h"
  3. #include "Registries.h"
  4. EntityChangedUpdateType::EntityChangedUpdateType()
  5. : WorldUpdateType( ID )
  6. {}
  7. void EntityChangedUpdateType::applyUpdate( Framework::StreamReader* zReader )
  8. {
  9. int id;
  10. int type;
  11. zReader->lese( (char*)&id, 4 );
  12. if( id >= 0 )
  13. {
  14. zReader->lese( (char*)&type, 4 );
  15. Entity* e = currentGame->zEntity( id );
  16. if( !e )
  17. {
  18. e = STATIC_REGISTRY( EntityType ).zElement( type )->loadEntity( zReader );
  19. currentGame->zDimensionOrCreate( e->getCurrentDimension() )->addEntity( e );
  20. }
  21. else
  22. {
  23. e->lock();
  24. STATIC_REGISTRY( EntityType ).zElement( type )->updateEntity( e, zReader );
  25. e->unlock();
  26. }
  27. }
  28. }