1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #include <Network.h>
- #include <Welt3D.h>
- #include "World.h"
- #include "Globals.h"
- #include "WorldUpdate.h"
- using namespace Network;
- using namespace Framework;
- World::World( Bildschirm3D *zScreen )
- {
- renderedWorld = new Welt3D();
- dimensions = new RCArray<Dimension>();
- currentPlayer = new CurrentPlayer();
- zScreenPtr = zScreen;
- kam = new Kam3D();
- kam->setWelt( renderedWorld );
- zScreen->addKamera( kam );
- }
- World::~World()
- {
- zScreenPtr->removeKamera( kam );
- dimensions->release();
- currentPlayer->release();
- kam->release();
- }
- void World::update()
- {
- NetworkReader *serverMessageReader = 0;
- const char type = 0;
- while( serverMessageReader = network->zFactoryClient()->getNextMessage() )
- {
- serverMessageReader->lese( (char *)&type, 1 );
- if( type == 2 ) // WORLD UPDATE
- {
- int id = 0;
- serverMessageReader->lese( (char *)&id, 4 );
- StaticRegistry<WorldUpdateType>::INSTANCE.zElement( id )->applyUpdate( serverMessageReader );
- }
- }
- }
- void World::setChunk( Chunk *chunk, int dimensionId )
- {
- Dimension *zDim = zDimension( dimensionId );
- if( !zDim )
- {
- zDim = new Dimension( dimensionId );
- dimensions->add( zDim );
- }
- zDim->addChunk( chunk );
- zDim->updateVisibility();
- }
- Block *World::zBlockAt( Framework::Vec3<int> location, int dimension ) const
- {
- Dimension *dim = zDimension( dimension );
- if( dim )
- return dim->zBlock( location );
- return 0;
- }
- Dimension *World::zDimension( int id ) const
- {
- for( auto dim = dimensions->getIterator(); dim; dim++ )
- {
- if( dim->getDimensionId() == id )
- return dim;
- }
- return 0;
- }
- void World::setVisibility( Framework::Model3D *zModel, bool visible )
- {
- if( visible )
- renderedWorld->addZeichnung( dynamic_cast<Framework::Model3D *>( zModel->getThis() ) );
- else
- renderedWorld->removeZeichnung( zModel );
- }
- Framework::Bildschirm3D *World::zScreen() const
- {
- return zScreenPtr;
- }
|