From: <spo...@us...> - 2007-05-26 20:09:43
|
Revision: 509 http://svn.sourceforge.net/opengate/?rev=509&view=rev Author: spom_spom Date: 2007-05-26 13:09:35 -0700 (Sat, 26 May 2007) Log Message: ----------- Fixed some small issues. Some obscurities within the multiplayer mode during de/registering between the gamestates occur and will be fixed tommorow Modified Paths: -------------- branches/ogsector/src/GameState.h branches/ogsector/src/GameStateManager.cpp branches/ogsector/src/GameStateManager.h branches/ogsector/src/Makefile.am branches/ogsector/src/Makefile.in branches/ogsector/src/Sector.cpp branches/ogsector/src/Sector.h branches/ogsector/src/SectorObjects.cpp branches/ogsector/src/SectorObjects.h branches/ogsector/src/ShipConfigDialog.cpp branches/ogsector/src/UnDockedState.cpp branches/ogsector/src/UnDockedState.h Modified: branches/ogsector/src/GameState.h =================================================================== --- branches/ogsector/src/GameState.h 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/GameState.h 2007-05-26 20:09:35 UTC (rev 509) @@ -45,6 +45,7 @@ class LogManager; class GameState; class GameStateManager; +class Avatar; class Console; /*! @@ -62,6 +63,7 @@ NetworkClient * network; Console * console; GameStateManager * gameStateRoot; + Avatar * avatar; } DeviceInfo; /*! Modified: branches/ogsector/src/GameStateManager.cpp =================================================================== --- branches/ogsector/src/GameStateManager.cpp 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/GameStateManager.cpp 2007-05-26 20:09:35 UTC (rev 509) @@ -25,6 +25,7 @@ #include <OgreWindowEventUtilities.h> #include "LogManager.h" #include "Console.h" +#include "Avatar.h" #include "Sector.h" #include "InputManager.h" #include "VesselManager.h" @@ -147,10 +148,16 @@ if ( state ){ shutdownRequest_ = false; changeGameState( state ); + + //hack-mack + enterDockedStateHack_ = false; } while ( !shutdownRequest_ ){ devices_.inputManager->capture(); + + if ( enterDockedStateHack_ ) start( findByName( "DockedState" ) ); + captureNetwork(); Ogre::WindowEventUtilities::messagePump(); @@ -328,6 +335,8 @@ devices_.gameStateRoot = this; + devices_.avatar = new Avatar( devices_.network->userName(), devices_.network->userID() ); + return true; } @@ -408,25 +417,34 @@ } void GameStateManager::CMD_spawnAi( const std::vector < std::string > & argv ){ - if ( stateStack_.back()->name() == "UnDockedState" ){ - std::string aiName = "squid"; - if ( argv.size() > 1 ){ - aiName = argv[ 1 ]; - } - if ( VesselManager::getSingleton().vessel( aiName ) && aiName != "help" ){ - dynamic_cast< UnDockedState * >( stateStack_.back() )->spawnAI( aiName ); + std::string aiName = "squid"; + if ( argv.size() > 1 ){ + aiName = argv[ 1 ]; + } + + bool showHelp = false; + if ( aiName != "help" ){ + if ( stateStack_.back()->name() == "UnDockedState" ){ + if ( VesselManager::getSingleton().vessel( aiName ) ){ + dynamic_cast< UnDockedState * >( stateStack_.back() )->spawnAI( aiName ); + } else { + showHelp = true; + } } else { - - std::set< Vessel * > vessel( VesselManager::getSingleton().factionVessels( "All" ) ); - std::string vesselNames("Vessels available: "); - for ( std::set< Vessel * >::iterator it = vessel.begin(); it!= vessel.end(); it ++ ){ - vesselNames += (*it)->name() + " "; - } - LogManager::getSingleton().info( vesselNames ); + LogManager::getSingleton().info("You cannot spawn ai subjects at a station."); } } else { - LogManager::getSingleton().info("You cannot spawn ai subjects at a station."); + showHelp = true; } + + if ( showHelp ){ + std::set< Vessel * > vessel( VesselManager::getSingleton().factionVessels( "All" ) ); + std::string vesselNames("Vessels available: "); + for ( std::set< Vessel * >::iterator it = vessel.begin(); it!= vessel.end(); it ++ ){ + vesselNames += (*it)->name() + " "; + } + LogManager::getSingleton().info( vesselNames ); + } } } // namespace OpenGate Modified: branches/ogsector/src/GameStateManager.h =================================================================== --- branches/ogsector/src/GameStateManager.h 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/GameStateManager.h 2007-05-26 20:09:35 UTC (rev 509) @@ -28,6 +28,7 @@ namespace OpenGate { +class Avatar; class LogManager; class InputManager; class VesselManager; @@ -94,6 +95,8 @@ /*! This is a special case function to cause a shutdown. */ void shutdown( ); + bool enterDockedStateHack_; + protected: /*! This initializes a state to receive the events. */ Modified: branches/ogsector/src/Makefile.am =================================================================== --- branches/ogsector/src/Makefile.am 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/Makefile.am 2007-05-26 20:09:35 UTC (rev 509) @@ -14,6 +14,8 @@ tinyxml/tinyxml.cpp \ tinyxml/tinyxmlerror.cpp \ tinyxml/tinyxmlparser.cpp \ + Avatar.h \ + Avatar.cpp \ Console.h \ Console.cpp \ ConfigDialog.h \ Modified: branches/ogsector/src/Makefile.in =================================================================== --- branches/ogsector/src/Makefile.in 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/Makefile.in 2007-05-26 20:09:35 UTC (rev 509) @@ -51,8 +51,8 @@ am_opengateclient_OBJECTS = opengateclient.$(OBJEXT) common.$(OBJEXT) \ networkClient.$(OBJEXT) tinyxml.$(OBJEXT) \ tinyxmlerror.$(OBJEXT) tinyxmlparser.$(OBJEXT) \ - Console.$(OBJEXT) ConfigDialog.$(OBJEXT) Entity.$(OBJEXT) \ - EntityManager.$(OBJEXT) LogManager.$(OBJEXT) \ + Avatar.$(OBJEXT) Console.$(OBJEXT) ConfigDialog.$(OBJEXT) \ + Entity.$(OBJEXT) EntityManager.$(OBJEXT) LogManager.$(OBJEXT) \ InputManager.$(OBJEXT) VesselManager.$(OBJEXT) \ GameStateManager.$(OBJEXT) GameState.$(OBJEXT) \ DockedState.$(OBJEXT) ShipConfigDialog.$(OBJEXT) \ @@ -191,6 +191,8 @@ tinyxml/tinyxml.cpp \ tinyxml/tinyxmlerror.cpp \ tinyxml/tinyxmlparser.cpp \ + Avatar.h \ + Avatar.cpp \ Console.h \ Console.cpp \ ConfigDialog.h \ @@ -313,6 +315,7 @@ distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Avatar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ConfigDialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Console.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DockedState.Po@am__quote@ Modified: branches/ogsector/src/Sector.cpp =================================================================== --- branches/ogsector/src/Sector.cpp 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/Sector.cpp 2007-05-26 20:09:35 UTC (rev 509) @@ -19,6 +19,7 @@ ***************************************************************************/ #include "Sector.h" +#include "Avatar.h" namespace OpenGate{ @@ -45,15 +46,16 @@ // }; Sector::Sector( Ogre::SceneManager * sceneMgr, NetworkClient * network ) - : sceneMgr_( sceneMgr ), network_( network ) { + : sceneMgr_( sceneMgr ), network_( network ) { log_ = LogManager::getSingletonPtr(); + bool radar_ = true; sectorname_ = "Testsector"; planetNode_ = NULL; starsNode_ = NULL; avatar_ = NULL; - avatarRespawnTime_ = 0.0; + avatarDeathSequenceTime_ = 0.0; sceneMgr_->setAmbientLight( Ogre::ColourValue(0.9, 0.9, 0.9) ); //** Create a light; @@ -140,6 +142,7 @@ collideInSectorContext_ = OgreOpcode::CollisionManager::getSingletonPtr()->getDefaultContext(); + // Ogre::MeshPtr pMesh = Ogre::MeshManager::getSingleton().load( "astro/Sphere.mesh", // Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, // Ogre::HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY, @@ -197,13 +200,36 @@ } itTarget_ = sectorObjects_.begin(); + } Sector::~Sector( ){ - delete OgreOpcode::CollisionManager::getSingletonPtr(); + for ( std::map< long, SectorObjectMoveable * >::iterator it = movableObjects_.begin(); it != movableObjects_.end();){ +// log_->info( "Destructing: " + it->second->name() ); + destructMoveableObject( (it++)->second ); +// log_->info( "done: " ); + } + for ( std::set< SectorObject * >::iterator it = sectorObjects_.begin(); it != sectorObjects_.end(); ){ +// log_->info( "Destructing: " + (*it)->name() ); + + if ( (*it)->isOnRadar() && radar_ ){ + Ogre::Overlay * radar = Ogre::OverlayManager::getSingleton().getByName( "Radar" ); + Ogre::OverlayContainer * radarMap = radar->getChild( "Radar/Map" ); + radarMap->removeChild( (*it)->dotA()->getName() ); + radarMap->removeChild( (*it)->dotB()->getName() ); + } + + delete *it; sectorObjects_.erase( (*it++) ); + +// log_->info( "done: " ); } + + sceneMgr_->destroyManualObject( "Planet" ); + sceneMgr_->getRootSceneNode()->removeAndDestroyChild( "PlanetNode" ); + + delete OgreOpcode::CollisionManager::getSingletonPtr(); } void Sector::update( Ogre::Real elapsedTime ){ @@ -250,92 +276,90 @@ } if ( starsNode_ ) starsNode_->setPosition( avatar_->mainNode()->getPosition() ); - Ogre::Overlay * radar = Ogre::OverlayManager::getSingleton().getByName( "Radar" ); - Ogre::OverlayContainer * radarMap = radar->getChild( "Radar/Map" ); - - int dotAWidth = 4; - int dotAHeight = 2; - float radarRange = 5000; - float radarWidth = radarMap->getWidth() * Ogre::OverlayManager::getSingleton().getViewportWidth(); - float radarHeight = radarMap->getHeight() * Ogre::OverlayManager::getSingleton().getViewportHeight(); - float xScale = radarRange / ( radarWidth / 2.0 ); - float yScale = radarRange / ( radarHeight / 2.0 ); - - for ( std::set< SectorObject * >::iterator it = sectorObjects_.begin(); it != sectorObjects_.end(); it++){ + if ( radar_ ){ + Ogre::Overlay * radar = Ogre::OverlayManager::getSingleton().getByName( "Radar" ); + Ogre::OverlayContainer * radarMap = radar->getChild( "Radar/Map" ); - Ogre::Vector3 relativPosition( (*it)->mainNode()->getPosition( ) - avatar_->mainNode()->getPosition( ) ); + int dotAWidth = 4; + int dotAHeight = 2; + float radarRange = 5000; + float radarWidth = radarMap->getWidth() * Ogre::OverlayManager::getSingleton().getViewportWidth(); + float radarHeight = radarMap->getHeight() * Ogre::OverlayManager::getSingleton().getViewportHeight(); + float xScale = radarRange / ( radarWidth / 2.0 ); + float yScale = radarRange / ( radarHeight / 2.0 ); - if ( relativPosition.length() < radarRange ){ - Ogre::OverlayElement * dotA, * dotB; + for ( std::set< SectorObject * >::iterator it = sectorObjects_.begin(); it != sectorObjects_.end(); it++){ - if ( !(*it)->isOnRadar() ) { - dotA = Ogre::OverlayManager::getSingleton().createOverlayElement( "Panel", "Radar/Map/DotA" + (*it)->name() ); - dotA->setMaterialName( "BaseWhite" ); - dotA->setMetricsMode( Ogre::GMM_PIXELS ); - dotA->setWidth( dotAWidth ); - dotA->setHeight( dotAHeight ); - radarMap->addChild( dotA ); + Ogre::Vector3 relativPosition( (*it)->mainNode()->getPosition( ) - avatar_->mainNode()->getPosition( ) ); + Ogre::OverlayElement * dotA = (*it)->dotA(); + Ogre::OverlayElement * dotB = (*it)->dotB(); + + if ( relativPosition.length() < radarRange ){ - dotB = Ogre::OverlayManager::getSingleton().createOverlayElement( "Panel", "Radar/Map/DotB" + (*it)->name() ); - dotB->setMaterialName( "BaseWhite" ); - dotB->setMetricsMode( Ogre::GMM_PIXELS ); - dotB->setWidth( 1 ); - dotB->setHeight( 1 ); - dotB->setColour( Ogre::ColourValue( 1.0f, 0.0f, 0.0f ) ); - radarMap->addChild( dotB ); + Ogre::Quaternion q; + q.FromAngleAxis( -avatar_->mainNode()->getOrientation( ).getYaw(), Ogre::Vector3::UNIT_Y); + relativPosition = q * relativPosition; - (*it)->onRadar( true ); - } else { - dotA = radarMap->getChild( "Radar/Map/DotA" + (*it)->name() ); - dotB = radarMap->getChild( "Radar/Map/DotB" + (*it)->name() ); + Ogre::Plane viewPlane( avatar_->mainNode()->getOrientation().yAxis().normalisedCopy(), + avatar_->mainNode()->getPosition() ); + + float distToPlane = viewPlane.getDistance( (*it)->mainNode()->getPosition( ) ) / yScale; + + dotB->setHeight( fabs( distToPlane ) ); + + dotA->setPosition( radarWidth / 2.0 + relativPosition[ 0 ] / xScale - dotAWidth / 2, + - distToPlane - dotAHeight / 2 + radarHeight / 2.0 + relativPosition[ 2 ] / yScale ); + + if ( distToPlane < 0 ) distToPlane = 0; + + dotB->setPosition( radarWidth / 2.0 + relativPosition[ 0 ] / xScale, + - distToPlane + radarHeight / 2.0 + relativPosition[ 2 ] / yScale ); + + if ( (*it)->isOnRadar() == false ){ + radarMap->addChild( dotA ); + radarMap->addChild( dotB ); + (*it)->onRadar( true ); + } + } else { // if not in radarrange + if ( (*it)->isOnRadar() == true ){ + radarMap->removeChild( dotA->getName() ); + radarMap->removeChild( dotB->getName() ); + (*it)->onRadar( false ); + } } - - Ogre::Quaternion q; - q.FromAngleAxis( -avatar_->mainNode()->getOrientation( ).getYaw(), Ogre::Vector3::UNIT_Y); - relativPosition = q * relativPosition; - - Ogre::Plane viewPlane( avatar_->mainNode()->getOrientation().yAxis().normalisedCopy(), - avatar_->mainNode()->getPosition() ); - - float distToPlane = viewPlane.getDistance( (*it)->mainNode()->getPosition( ) ) / yScale; - - dotB->setHeight( fabs( distToPlane ) ); - - dotA->setPosition( radarWidth / 2.0 + relativPosition[ 0 ] / xScale - dotAWidth / 2, - - distToPlane - dotAHeight / 2 + radarHeight / 2.0 + relativPosition[ 2 ] / yScale ); - - if ( distToPlane < 0 ) distToPlane = 0; - - dotB->setPosition( radarWidth / 2.0 + relativPosition[ 0 ] / xScale, - - distToPlane + radarHeight / 2.0 + relativPosition[ 2 ] / yScale ); - - } - } // if in radarrange - } + } // for each object + } // if radar + } // if avatar for ( std::map< long, SectorObjectMoveable * >::iterator it = movableObjects_.begin(); it != movableObjects_.end();){ + if ( !it->second->update( elapsedTime ) ) { //** object died; - if ( it->second == avatar_ ) { - if ( avatarRespawnTime_ == 0.0 ){ - sendVesselDeRegister( avatar_ ); - avatarRespawnTime_ = 5.0; + if ( avatarDeathSequenceTime_ == 0.0 ){ + avatarDeathSequenceTime_ = 1.0; } else { - avatarRespawnTime_ -= elapsedTime; - if ( avatarRespawnTime_ < 0 ){ - spawnAvatar(); + avatarDeathSequenceTime_ -= elapsedTime; + if ( avatarDeathSequenceTime_ < 0 ){ + avatarDeathSequenceTime_ = 0.0; + listener_->avatarDeathSequence( false ); } } it++; } else { //** died object is not avatar; - log_->info( "Destructing: " + it->second->name() ); - destructMoveableObject( (it++)->second ); - log_->info( "done: " ); +// log_->info( "Destructing: " + it->second->name() ); +// destructMoveableObject( (it++)->second ); +// log_->info( "done: " ); } } else ++it; } } +void Sector::avatarDied( ){ + if ( avatar_ ){ + listener_->avatarDeathSequence( true ); + } +} + SectorObjectMoveable * Sector::createMoveableObject( const Ogre::String & name, int userID, int childID, Vessel & vessel ){ SectorObjectMoveable * obj = new SectorObjectMoveable( name, this, userID, childID, vessel ); @@ -349,13 +373,11 @@ selectNextTarget( obj ); sectorObjects_.erase( obj ); - if ( obj->isOnRadar() ){ + if ( obj->isOnRadar() && radar_ ){ Ogre::Overlay * radar = Ogre::OverlayManager::getSingleton().getByName( "Radar" ); Ogre::OverlayContainer * radarMap = radar->getChild( "Radar/Map" ); - radarMap->removeChild( "Radar/Map/DotA" + obj->name() ); - radarMap->removeChild( "Radar/Map/DotB" + obj->name() ); - Ogre::OverlayManager::getSingleton().destroyOverlayElement( "Radar/Map/DotA" + obj->name() ); - Ogre::OverlayManager::getSingleton().destroyOverlayElement( "Radar/Map/DotB" + obj->name() ); + radarMap->removeChild( obj->dotA()->getName() ); + radarMap->removeChild( obj->dotB()->getName() ); } for ( std::map< long, SectorObjectMoveableAi * >::iterator it = localAiObjects_.begin(); @@ -437,18 +459,24 @@ sendVesselMovement( obj ); } -void Sector::createAvatar( const Ogre::String & playername ){ - log_->info( std::string( "Create avatar: " ) + playername ); - avatar_ = new SectorObjectAvatar( playername, this, network_->userID(), - *VesselManager::getSingleton().vessel( "apteryx" ) ); - log_->info( std::string( "Avatar_ " ) + playername ); - movableObjects_[ avatar_->globalID() ] = avatar_; - log_->info( std::string( "Created " ) + playername ); +void Sector::createAvatarObject( Avatar & avatar ){ + log_->info( std::string( "Create avatar: " ) + avatar.name() ); + avatar_ = new SectorObjectAvatar( avatar.name(), this, avatar.userID(), avatar.vessel() ); + movableObjects_[ avatar_->userID() ] = avatar_; + + avatar_->reset(); + avatar_->mainNode()->setPosition( 0.0, 0.0, 500.0 ); + avatar_->mainNode()->setOrientation( Ogre::Quaternion( 1.0, 0.0, 0.0, 0.0 ) ); + avatar_->setVelocity( Ogre::Vector3( 0.0, 0.0, -20.0 ) ); + + avatar_->setVisible( false ); + sendVesselRegister( avatar_ ); } -void Sector::destructAvatar( ){ +void Sector::destructAvatarObject( ){ for ( std::map< long, SectorObjectMoveableAi * >::iterator it = localAiObjects_.begin(); it != localAiObjects_.end(); it ++ ){ + if ( it->second->target() == avatar_ ){ log_->warn( std::string( "ai object target: " ) + it->second->name() + " loose target." ); it->second->setTarget( NULL ); @@ -456,33 +484,11 @@ } sendVesselDeRegister( avatar_ ); - movableObjects_.erase( avatar_->globalID() ); + movableObjects_.erase( avatar_->userID() ); if ( avatar_ ) delete avatar_; avatar_ = NULL; } -void Sector::avatarDied( ){ - if ( avatar_ ){ - avatar_->setVisible( true ); - listener_->avatarDeathSequence( true ); - } -} - -void Sector::spawnAvatar( ){ - if ( avatar_ ){ - log_->info( std::string( "Spawn avatar: " ) + avatar_->name() ); - avatarRespawnTime_ = 0.0; - avatar_->reset(); - avatar_->mainNode()->setPosition( 0.0, 0.0, 500.0 ); - avatar_->mainNode()->setOrientation( Ogre::Quaternion( 1.0, 0.0, 0.0, 0.0 ) ); - avatar_->setVelocity( Ogre::Vector3( 0.0, 0.0, -20.0 ) ); - - avatar_->setVisible( false ); - sendVesselRegister( avatar_ ); - listener_->avatarDeathSequence( false ); - } -} - void Sector::selectNextTarget( SectorObject * obj ){ if ( obj != NULL ){ if ( listener_->target() == obj ) listener_->setTarget( nextTarget() ); @@ -626,7 +632,7 @@ if ( !movableObjects_.count( createGlobalID( msg.senderID(), msg.childID() ) ) ){ if ( msg.childID() == 0 ){ - log_->info( "Create player object " + msg.name()+ " " + toStr( msg.senderID() ) + " " + toStr( msg.vesselID() ) ); + log_->info( "Create player object " + msg.name()+ " " + toStr( msg.senderID() ) + " VesselID: " + toStr( msg.vesselID() ) ); SectorObjectMoveable * obj = createMoveableObject( msg.name(), msg.senderID(), msg.childID(), *VesselManager::getSingleton().vessel( msg.vesselID() ) ); obj->mainNode()->setPosition( msg.position() ); @@ -671,7 +677,7 @@ } else { log_->warn( std::string( "Deregistering request for unknown object: " ) + - toStr( msg.senderID() ) + ": " + toStr( msg.childID() ) ); + toStr( msg.senderID() ) + ": " + toStr( (int)msg.childID() ) ); } } Modified: branches/ogsector/src/Sector.h =================================================================== --- branches/ogsector/src/Sector.h 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/Sector.h 2007-05-26 20:09:35 UTC (rev 509) @@ -30,8 +30,9 @@ namespace OpenGate{ +class Avatar; + class Sector { - public: Sector( Ogre::SceneManager * sceneMgr, NetworkClient * network ); @@ -51,7 +52,7 @@ LogManager * log() { return log_; } void createStaticObject( const Ogre::String & meshname, const Ogre::String & objectname, - const Ogre::Vector3 & pos, Ogre::Real targetSize, Ogre::Degree yaw ); + const Ogre::Vector3 & pos, Ogre::Real targetSize, Ogre::Degree yaw ); SectorObjectMoveable * createMoveableObject( const Ogre::String & name, int userId, int childId, Vessel & vessel ); @@ -59,16 +60,14 @@ void destructMoveableObject( SectorObjectMoveable * obj ); - void createAvatar( const Ogre::String & playername ); + void createAvatarObject( Avatar & avatar ); - SectorObjectAvatar * avatar() { return avatar_; } + SectorObjectAvatar * avatarObject() { return avatar_; } - void destructAvatar( ); + void destructAvatarObject( ); void avatarDied( ); - void spawnAvatar( ); - void spawnAiObject( const std::string & vesselName ); OgreOpcode::CollisionContext * collisionContext() { return collideInSectorContext_; } @@ -121,8 +120,9 @@ std::map< long, SectorObjectMoveable * > movableObjects_; std::map< long, SectorObjectMoveableAi * > localAiObjects_; - float avatarRespawnTime_; + float avatarDeathSequenceTime_; + bool radar_ ; }; } // namespace OpenGate Modified: branches/ogsector/src/SectorObjects.cpp =================================================================== --- branches/ogsector/src/SectorObjects.cpp 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/SectorObjects.cpp 2007-05-26 20:09:35 UTC (rev 509) @@ -21,6 +21,7 @@ #include "Sector.h" #include "SectorObjects.h" #include "common.h" +#include <string> namespace OpenGate{ @@ -29,9 +30,15 @@ globalID_ = createGlobalID( userID, childID ); sceneMgr_ = sector_->sceneManager(); - mainNode_ = static_cast< Ogre::SceneNode * >( sceneMgr_->getRootSceneNode()->createChild() ); + try{ + mainNode_ = sceneMgr_->getRootSceneNode()->createChildSceneNode( name + "_MainNode" ); + } catch( Ogre::Exception& e ) { + std::cout << e.getFullDescription().c_str() << std::endl; + } + lifeTime_ = 0.0; selectable_ = false; + } BaseObject::~BaseObject(){ @@ -39,7 +46,7 @@ } Projectile::Projectile( BaseObject * parent, long shotCounter, Ogre::Real speed ) - : BaseObject( parent->name(), parent->sector() ), parent_( parent ) { + : BaseObject( parent->name() + "_" + toStr( shotCounter ), parent->sector() ), parent_( parent ) { selectable_ = false; Ogre::String bulletName( name_ + "_" + toStr( shotCounter ) ); @@ -180,9 +187,28 @@ mainNodeEntity_ = mainNode_->createChildSceneNode( name_ + "_transform" ); baseSize_ = 0.0; selectable_ = true; + + int dotAWidth = 4; + int dotAHeight = 2; + dotA_ = Ogre::OverlayManager::getSingleton().createOverlayElement( "Panel", "Radar/Map/DotA_" + name_ ); + dotA_->setMaterialName( "BaseWhite" ); + dotA_->setMetricsMode( Ogre::GMM_PIXELS ); + dotA_->setWidth( dotAWidth ); + dotA_->setHeight( dotAHeight ); + dotA_->setColour( Ogre::ColourValue( 1.0f, 0.0f, 0.0f ) ); + + dotB_ = Ogre::OverlayManager::getSingleton().createOverlayElement( "Panel", "Radar/Map/DotB_" + name_ ); + dotB_->setMaterialName( "BaseWhite" ); + dotB_->setMetricsMode( Ogre::GMM_PIXELS ); + dotB_->setWidth( 1 ); + dotB_->setHeight( 1 ); + dotB_->setColour( Ogre::ColourValue( 1.0f, 0.0f, 0.0f ) ); } SectorObject::~SectorObject(){ + Ogre::OverlayManager::getSingleton().destroyOverlayElement( "Radar/Map/DotA_" + name_ ); + Ogre::OverlayManager::getSingleton().destroyOverlayElement( "Radar/Map/DotB_" + name_ ); + sector_->collisionContext()->destroyObject( collObj_ ); OgreOpcode::CollisionManager::getSingletonPtr()->destroyShape( collObj_->getShape() ); @@ -597,6 +623,7 @@ } explosion_->getEmitter( 0 )->setEnabled( true ); explodeSequenceTime_ = explosion_->getEmitter( 0 )->getDuration() + explosion_->getEmitter( 0 )->getMaxTimeToLive(); + if ( thrusterBbs_ ) thrusterBbs_->setVisible( false ); percentageThrust_ = 0; @@ -609,7 +636,7 @@ if ( explodeSequenceTime_ > 0 || projectiles_.size() > 0 ) { return true; } else { - explosion_->getEmitter( 0 )->setEnabled( false ); + if ( explosion_ ) explosion_->getEmitter( 0 )->setEnabled( false ); return false; } @@ -680,7 +707,6 @@ targetArrow_ = NULL; flightArrow_ = NULL; - LogManager::getSingleton().info( std::string( "SectorObjectAvatar" ) ); forceMovement_ = false; targetArrow_ = mainNode_->createChildSceneNode( name_ + "_TargetArrow" ); @@ -753,10 +779,7 @@ } bool SectorObjectAvatar::deathSequence( Ogre::Real elapsedTime ){ - if ( !deathSequence_ ) { - sector_->avatarDied( ); - } - + if ( !deathSequence_ ){ sector_->avatarDied( ); } return SectorObjectMoveable::deathSequence( elapsedTime ); } Modified: branches/ogsector/src/SectorObjects.h =================================================================== --- branches/ogsector/src/SectorObjects.h 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/SectorObjects.h 2007-05-26 20:09:35 UTC (rev 509) @@ -150,11 +150,17 @@ virtual Ogre::Vector3 velDirection() const { return Ogre::Vector3(0.0, 0.0, 0.0 ); } + Ogre::OverlayElement * dotA() { return dotA_; } + Ogre::OverlayElement * dotB() { return dotB_; } + protected: Ogre::SceneNode * mainNodeEntity_; // Main character node Ogre::Entity * entity_; + Ogre::OverlayElement * dotA_; + Ogre::OverlayElement * dotB_; + bool isOnRadar_; double baseSize_; }; Modified: branches/ogsector/src/ShipConfigDialog.cpp =================================================================== --- branches/ogsector/src/ShipConfigDialog.cpp 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/ShipConfigDialog.cpp 2007-05-26 20:09:35 UTC (rev 509) @@ -27,6 +27,7 @@ #include "ShipConfigDialog.h" #include "LogManager.h" +#include "Avatar.h" #include "VesselManager.h" namespace OpenGate{ @@ -191,6 +192,7 @@ } bool ShipConfigDialog::handleSelectShipButton( const CEGUI::EventArgs & e ){ + devices_->avatar->setVessel( *(*itVessel_) ); hide(); return true; } Modified: branches/ogsector/src/UnDockedState.cpp =================================================================== --- branches/ogsector/src/UnDockedState.cpp 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/UnDockedState.cpp 2007-05-26 20:09:35 UTC (rev 509) @@ -19,6 +19,7 @@ ***************************************************************************/ #include "UnDockedState.h" +#include "Avatar.h" #include "Sector.h" #include "networkProtocol.h" #include "networkClient.h" @@ -64,8 +65,6 @@ windowsHalfWidth_ = (int)(windowsWidth_ * 0.5); windowsHalfHeight_ = (int)(windowsHeight_ * 0.5); - sector_ = new Sector( sceneMgr_, network_ ); - sector_->setListener( this ); setupEventHandlers(); targetCurser_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDTargetCurser" ); @@ -133,6 +132,10 @@ flightCurser_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDFlightCurser" ); flightCurserHalfWidth_ = 10; flightCurserHalfHeight_ = 10; + + sector_ = new Sector( sceneMgr_, network_ ); + sector_->setListener( this ); + } void UnDockedState::destroyContent( ){ @@ -143,6 +146,8 @@ void UnDockedState::enter(){ log_->info("Entering undockstate"); + + devices_->guiRenderer->setTargetSceneManager( sceneMgr_ ); if ( overlayRootWindow_ ){ devices_->guiSystem->setGUISheet( overlayRootWindow_ ); @@ -181,10 +186,8 @@ Ogre::OverlayManager::getSingleton().getByName( "Radar" )->show(); - deathSequence_ = false; sceneDetailIndex_ = 0; - target_ = NULL; - cameraMode_ = 1; + target_ = sector_->nextTarget(); chatMode_ = false; duelistPilot_ = false; duelistTarget_ = false; @@ -214,7 +217,7 @@ // hudTargetPointer-> // spaceDustParticleSystem_ = mainCamera_->getSceneManager()->createParticleSystem( "SpaceDust", "Space/Dust" ); -// Ogre::SceneNode * spaceDustNode = sector_->avatar()->mainNode()->createChildSceneNode( "DustParticles", mainCamera_->getRealPosition() ); +// Ogre::SceneNode * spaceDustNode = sector_->avatarObject()->mainNode()->createChildSceneNode( "DustParticles", mainCamera_->getRealPosition() ); // spaceDustNode_->attachObject( spaceDustParticleSystem_ ); // mainCamera_->getParentSceneNode() @@ -232,10 +235,9 @@ // aniso_ = 1; // filtering_ = TFO_BILINEAR; + enterDockedState_ = false; + sector_->createAvatarObject( *devices_->avatar ); - sector_->createAvatar( network_->userName() ); - sector_->spawnAvatar(); - if ( devices_->console ){ CEGUI::WindowManager::getSingleton().getWindow( (CEGUI::utf8*)"ConsoleList__auto_vscrollbar__")->hide(); } @@ -244,13 +246,16 @@ CEGUI::WindowManager::getSingleton().getWindow( (CEGUI::utf8*)"Config/BackButton" )->subscribeEvent( CEGUI::PushButton::EventClicked, CEGUI::Event::Subscriber(&UnDockedState::handleConfigBackButton, this ) ) ; + + toggleNextCamera_( 1 ); } void UnDockedState::exit(){ + log_->info("Exiting undockstate"); + sector_->destructAvatarObject( ); + CEGUI::WindowManager::getSingleton().getWindow( (CEGUI::utf8*)"Config/BackButton" )->removeEvent( CEGUI::PushButton::EventClicked ) ; - - log_->info("Exiting dockstate"); if ( overlayRootWindow_ ) overlayRootWindow_->hide(); if ( devices_->console ) devices_->console->stop(); @@ -264,8 +269,6 @@ devices_->inputManager->removeKeyListener( "SectorClientKeyListener" ); devices_->inputManager->removeMouseListener( "SectorClientMouseListener" ); devices_->inputManager->removeJoystickListener( "SectorClientJoystickListener" ); - - sector_->destructAvatar( ); } bool UnDockedState::switchConfigDialog( ){ @@ -294,21 +297,19 @@ } bool UnDockedState::frameStarted( const Ogre::FrameEvent & evt ) { + //** this crahes at shutdown + //** if ( enterDockedState_ ) parent_->start( parent_->findByName( "DockedState" ) ); + if ( enterDockedState_ ) devices_->gameStateRoot->enterDockedStateHack_ = true; + if ( window_->isClosed() ) return false; timeSinceLastSectorUpdate_ += evt.timeSinceLastFrame; timeSinceLastNetworkUpdate_ += evt.timeSinceLastFrame; - if ( deathSequence_ ){ - } else { - //** capture my input - } - // max 1000 sector-updates/second if ( timeSinceLastSectorUpdate_ > 0.001 ){ sector_->update( timeSinceLastSectorUpdate_ ); timeSinceLastSectorUpdate_ = 0.0; - updateHUD_(); } //** send movement data, max 10 net-updates/second @@ -317,8 +318,11 @@ timeSinceLastNetworkUpdate_ = 0.0; } + + //** update my camera; updateCamera_(); + updateHUD_(); // renderSpaceDust(); return true; @@ -351,48 +355,49 @@ chatMode_ = true; } - if ( sector_->avatar() != NULL ){ + if ( sector_->avatarObject() != NULL ){ //** Avatar yaw LEFT; - if ( e.key == OIS::KC_A || e.key == OIS::KC_NUMPAD4 ) { sector_->avatar()->setScaledYaw( 1.0 ); } + if ( e.key == OIS::KC_A || e.key == OIS::KC_NUMPAD4 ) { sector_->avatarObject()->setScaledYaw( 1.0 ); } //** Avatar yaw RIGHT; - if ( e.key == OIS::KC_D || e.key == OIS::KC_NUMPAD6 ) { sector_->avatar()->setScaledYaw( -1.0 ); } + if ( e.key == OIS::KC_D || e.key == OIS::KC_NUMPAD6 ) { sector_->avatarObject()->setScaledYaw( -1.0 ); } //** Avatar pitch DOWN; - if ( e.key == OIS::KC_W || e.key == OIS::KC_NUMPAD8 ) { sector_->avatar()->setScaledPitch( -1.0 ); } + if ( e.key == OIS::KC_W || e.key == OIS::KC_NUMPAD8 ) { sector_->avatarObject()->setScaledPitch( -1.0 ); } //** Avatar pitch UP; - if ( e.key == OIS::KC_S || e.key == OIS::KC_NUMPAD2 ) { sector_->avatar()->setScaledPitch( 1.0 ); } + if ( e.key == OIS::KC_S || e.key == OIS::KC_NUMPAD2 ) { sector_->avatarObject()->setScaledPitch( 1.0 ); } //** Avatar roll (181 == NUM/); - if ( e.key == OIS::KC_NUMPAD0 || e.key == 181 ) { sector_->avatar()->setScaledRoll( 1.0 ); } + if ( e.key == OIS::KC_NUMPAD0 || e.key == 181 ) { sector_->avatarObject()->setScaledRoll( 1.0 ); } //** Avatar roll (55 == NUM*); - if ( e.key == OIS::KC_NUMPADCOMMA || e.key == 55 ) { sector_->avatar()->setScaledRoll( -1.0 ); } + if ( e.key == OIS::KC_NUMPADCOMMA || e.key == 55 ) { sector_->avatarObject()->setScaledRoll( -1.0 ); } //** Avatar increase thrust by 10%; - if ( e.key == OIS::KC_NUMPAD7 ) { sector_->avatar()->incrementThrust(); } + if ( e.key == OIS::KC_NUMPAD7 ) { sector_->avatarObject()->incrementThrust(); } //** Avatar increase thrust by 10%; - if ( e.key == OIS::KC_NUMPAD1 ) { sector_->avatar()->decrementThrust(); } + if ( e.key == OIS::KC_NUMPAD1 ) { sector_->avatarObject()->decrementThrust(); } //** Avatar press break; - if ( e.key == OIS::KC_NUMPAD3 ) { sector_->avatar()->setBreakPressed( true ); } + if ( e.key == OIS::KC_NUMPAD3 ) { sector_->avatarObject()->setBreakPressed( true ); } //** Avatar press afterburner; - if ( e.key == OIS::KC_NUMPAD9 ) { sector_->avatar()->setAfterburnerPressed( true ); } + if ( e.key == OIS::KC_NUMPAD9 ) { sector_->avatarObject()->setAfterburnerPressed( true ); } //** Avatar centering; if ( e.key == OIS::KC_NUMPAD5 ) { - sector_->avatar()->setScaledYaw( 0.0 ); - sector_->avatar()->setScaledPitch( 0.0 ); - sector_->avatar()->setScaledRoll( 0.0 ); + sector_->avatarObject()->setScaledYaw( 0.0 ); + sector_->avatarObject()->setScaledPitch( 0.0 ); + sector_->avatarObject()->setScaledRoll( 0.0 ); } //** selfdestruct and eject; - if ( e.key == OIS::KC_F4 ) { parent_->start( parent_->findByName( "DockedState" ) ); } + if ( e.key == OIS::KC_F4 ) { devices_->gameStateRoot->enterDockedStateHack_ = true; } +// if ( e.key == OIS::KC_F4 || enterDockedState_ ) { parent_->start( parent_->findByName( "DockedState" ) ); }// enterDockedState_ = true; } if ( e.key == OIS::KC_F5 ) { duelistPilot_ = !duelistPilot_; } if ( e.key == OIS::KC_F6 ) { duelistTarget_ = !duelistTarget_; } - if ( e.key == OIS::KC_F8 ) { sector_->avatar()->deathSequence( 0 ); } + if ( e.key == OIS::KC_F8 ) { sector_->avatarObject()->deathSequence( 0 ); } } // if avatar; //** next Target; @@ -452,12 +457,12 @@ bool UnDockedState::keyReleased( const OIS::KeyEvent & e ){ if (!configMode_){ - if ( sector_->avatar() != NULL ){ + if ( sector_->avatarObject() != NULL ){ // Avatar release break - if ( e.key == OIS::KC_NUMPAD3 ) { sector_->avatar()->setBreakPressed( false ); } + if ( e.key == OIS::KC_NUMPAD3 ) { sector_->avatarObject()->setBreakPressed( false ); } // Avatar release afterburner - if ( e.key == OIS::KC_NUMPAD9 ) { sector_->avatar()->setAfterburnerPressed( false ); } + if ( e.key == OIS::KC_NUMPAD9 ) { sector_->avatarObject()->setAfterburnerPressed( false ); } } } return true; @@ -492,7 +497,7 @@ - if ( sector_->avatar() != NULL ){ + if ( sector_->avatarObject() != NULL ){ // std::cout << "X" << e.state.X.abs << " " << e.state.X.rel << " " << mousePointer_->getLeft( ) << std::endl; // std::cout << "Y" << e.state.Y.abs << " " << e.state.Y.rel << " " << mousePointer_->getTop( ) << std::endl; // std::cout << "Z" << e.state.Z.abs << " " << e.state.Z.rel<< std::endl; @@ -537,8 +542,8 @@ // String(" yaw: ") + StringConverter::toString( yaw ) + // String(" pitch ") + StringConverter::toString( pitch ) ) << std::endl; - sector_->avatar()->setScaledYaw( -yaw ); - sector_->avatar()->setScaledPitch( -pitch ); + sector_->avatarObject()->setScaledYaw( -yaw ); + sector_->avatarObject()->setScaledPitch( -pitch ); } // if avatar; if ( e.state.Z.rel < -10 ){ // mouse wheel up @@ -554,10 +559,10 @@ bool UnDockedState::mousePressed( const OIS::MouseEvent &e , OIS::MouseButtonID id ){ if ( !configMode_ ){ - if ( sector_->avatar() != NULL ){ + if ( sector_->avatarObject() != NULL ){ // std::cout << "Mouse Button: " << id << std::endl; if ( id == 0){ - sector_->avatar()->setFirePressed( true ); + sector_->avatarObject()->setFirePressed( true ); } } } else { @@ -568,10 +573,10 @@ bool UnDockedState::mouseReleased( const OIS::MouseEvent &e , OIS::MouseButtonID id ){ if ( !configMode_ ){ - if ( sector_->avatar() != NULL ){ + if ( sector_->avatarObject() != NULL ){ // std::cout << "Mouse Button: " << id << std::endl; if ( id == 0){ - sector_->avatar()->setFirePressed( false); + sector_->avatarObject()->setFirePressed( false); } } } else{ @@ -582,7 +587,7 @@ bool UnDockedState::axisMoved( const OIS::JoyStickEvent & e, int axis ){ if ( !configMode_ ){ - if ( sector_->avatar() != NULL ){ + if ( sector_->avatarObject() != NULL ){ //** axis definition for my MS Sidewinder FF2 int joyStickAxisX = 0; int joyStickAxisY = 1; @@ -622,10 +627,10 @@ // " roll: " + StringConverter::toString(roll) + // " thrust: " + StringConverter::toString(thrust) ); - sector_->avatar()->setScaledYaw( -yaw ); - sector_->avatar()->setScaledPitch( pitch ); - sector_->avatar()->setScaledRoll( -roll ); - sector_->avatar()->setThrustPercent( thrust * 100. ); + sector_->avatarObject()->setScaledYaw( -yaw ); + sector_->avatarObject()->setScaledPitch( pitch ); + sector_->avatarObject()->setScaledRoll( -roll ); + sector_->avatarObject()->setThrustPercent( thrust * 100. ); } // if avatar } return true; @@ -634,9 +639,9 @@ bool UnDockedState::buttonPressed( const OIS::JoyStickEvent & e , int button){ if ( !configMode_ ){ // window_->setDebugText( "Joy: " + toStr( button ) ); - if ( sector_->avatar() != NULL ){ + if ( sector_->avatarObject() != NULL ){ if ( button == 0){ - sector_->avatar()->setFirePressed( true ); + sector_->avatarObject()->setFirePressed( true ); } } // if avatar_ } @@ -646,54 +651,58 @@ bool UnDockedState::buttonReleased( const OIS::JoyStickEvent & e , int button){ if ( !configMode_ ){ // window_->setDebugText( "Joy: " + toStr( button ) ); - if ( sector_->avatar() != NULL ){ + if ( sector_->avatarObject() != NULL ){ if ( button == 0){ - sector_->avatar()->setFirePressed( false ); + sector_->avatarObject()->setFirePressed( false ); } } // if avatar_ } return true; } -void UnDockedState::toggleNextCamera_(){ +void UnDockedState::toggleNextCamera_( int mode ){ int maxCameraModes = 4; //** circle through cameraModes; - cameraMode_ = (cameraMode_ + 1)%maxCameraModes; + if ( mode == -1 ){ + cameraMode_ = (cameraMode_ + 1)%maxCameraModes; + } else { + cameraMode_ = mode; + } switch ( cameraMode_ ){ case 0: //** free camera at orign mainCamera_->setPosition( Ogre::Vector3( 0, 0, 500 ) ); - if ( sector_->avatar() != NULL ){ - mainCamera_->setAutoTracking( false, sector_->avatar()->mainNode() ); - sector_->avatar()->setVisible( true ); + if ( sector_->avatarObject() != NULL ){ + mainCamera_->setAutoTracking( false, sector_->avatarObject()->mainNode() ); + sector_->avatarObject()->setVisible( true ); } break; case 1: //** first person avatar camera - if ( sector_->avatar() != NULL ){ - sector_->avatar()->setVisible( false ); + if ( sector_->avatarObject() != NULL ){ + sector_->avatarObject()->setVisible( false ); break; } case 2: //** avatar chase camera; - if ( sector_->avatar() != NULL ){ - sector_->avatar()->setVisible( true ); + if ( sector_->avatarObject() != NULL ){ + sector_->avatarObject()->setVisible( true ); break; } case 3: //** free avatar tracking-camera at orign mainCamera_->setPosition( Ogre::Vector3( 0, 0, 500 ) ); mainCamera_->lookAt( Ogre::Vector3( 0, 0, -300 ) ); - if ( sector_->avatar() != NULL ){ - mainCamera_->setAutoTracking( true, sector_->avatar()->mainNode() ); - sector_->avatar()->setVisible( true ); + if ( sector_->avatarObject() != NULL ){ + mainCamera_->setAutoTracking( true, sector_->avatarObject()->mainNode() ); + sector_->avatarObject()->setVisible( true ); } break; } } void UnDockedState::updateCamera_(){ - if ( sector_->avatar() != NULL ){ - Ogre::Vector3 avatarPos( sector_->avatar()->mainNode()->getPosition() ); + if ( sector_->avatarObject() != NULL ){ + Ogre::Vector3 avatarPos( sector_->avatarObject()->mainNode()->getPosition() ); Ogre::Vector3 targetPos( 0.0, 0.0, 0.0 ); if ( target_ != NULL ){ @@ -702,7 +711,7 @@ Ogre::Vector3 dist( targetPos - avatarPos ); Ogre::Vector3 distNorm( dist.normalisedCopy() ); - Ogre::Quaternion avatarOrient( sector_->avatar()->mainNode()->getOrientation() ); + Ogre::Quaternion avatarOrient( sector_->avatarObject()->mainNode()->getOrientation() ); secondCamera_->setOrientation( avatarOrient ); @@ -717,17 +726,17 @@ switch ( cameraMode_ ){ case 0: //** free camera at orign - mainCamera_->lookAt( sector_->avatar()->mainNode()->getPosition( ) ); + mainCamera_->lookAt( sector_->avatarObject()->mainNode()->getPosition( ) ); break; case 1: //** first person avatar camera mainCamera_->setPosition( avatarPos ); mainCamera_->setOrientation( avatarOrient ); - sector_->avatar()->setVisible( false ); + sector_->avatarObject()->setVisible( false ); break; case 2: //** avatar chase camera mainCamera_->setPosition( avatarPos + avatarOrient.zAxis() * 100 ); mainCamera_->setOrientation( avatarOrient ); - mainCamera_->yaw( Ogre::Degree(-90) ); + // mainCamera_->yaw( Ogre::Degree(-90) ); break; case 3: //** free avatar tracking-camera at orign break; @@ -767,24 +776,24 @@ Ogre::OverlayManager::getSingleton().getOverlayElement( overlayName_ + "/MainPanel/StatsTextArea" ) ->setCaption( "fps: " + toStr( stats.lastFPS ) + " ping: " + toStr( network_->pingTime() ) + " ms" ); - if ( sector_->avatar() != NULL ){ - if ( sector_->avatar()->flightArrow() ) { - if ( fabs( sector_->avatar()->velocity() ) > 1e-1 ){ - sector_->avatar()->flightArrow()->setVisible( true ); - sector_->avatar()->flightArrow()->setOrientation( sector_->avatar()->mainNode()->getOrientation() ); - sector_->avatar()->flightArrow()->setDirection( sector_->avatar()->flightDirection().normalisedCopy(), + if ( sector_->avatarObject() != NULL ){ + if ( sector_->avatarObject()->flightArrow() ) { + if ( fabs( sector_->avatarObject()->velocity() ) > 1e-1 ){ + sector_->avatarObject()->flightArrow()->setVisible( true ); + sector_->avatarObject()->flightArrow()->setOrientation( sector_->avatarObject()->mainNode()->getOrientation() ); + sector_->avatarObject()->flightArrow()->setDirection( sector_->avatarObject()->flightDirection().normalisedCopy(), Ogre::Node::TS_WORLD ); } else { - sector_->avatar()->flightArrow()->setVisible( false ); + sector_->avatarObject()->flightArrow()->setVisible( false ); } } if ( target_ != NULL ) { - Ogre::Vector3 distToTarget = target_->mainNode()->getPosition() - sector_->avatar()->mainNode()->getPosition(); - if ( sector_->avatar()->targetArrow() ) { - sector_->avatar()->targetArrow()->setVisible( true ); - sector_->avatar()->targetArrow()->setOrientation( sector_->avatar()->mainNode()->getOrientation() ); - sector_->avatar()->targetArrow()->setDirection( distToTarget.normalisedCopy(), Ogre::Node::TS_WORLD ); + Ogre::Vector3 distToTarget = target_->mainNode()->getPosition() - sector_->avatarObject()->mainNode()->getPosition(); + if ( sector_->avatarObject()->targetArrow() ) { + sector_->avatarObject()->targetArrow()->setVisible( true ); + sector_->avatarObject()->targetArrow()->setOrientation( sector_->avatarObject()->mainNode()->getOrientation() ); + sector_->avatarObject()->targetArrow()->setDirection( distToTarget.normalisedCopy(), Ogre::Node::TS_WORLD ); } //** Start update targeting pointer and duelist pointers; @@ -805,13 +814,13 @@ targetCurser_->hide(); } - Ogre::Real ammoTimeToTarget( distToTarget.length() / sector_->avatar()->ammoSpeed() ); + Ogre::Real ammoTimeToTarget( distToTarget.length() / sector_->avatarObject()->ammoSpeed() ); if ( duelistPilot_ ){ - Ogre::Vector3 duelistPilotPos( sector_->avatar()->mainNode()->getPosition() + - - sector_->avatar()->mainNode()->getOrientation().zAxis().normalisedCopy() - * sector_->avatar()->ammoSpeed() * ammoTimeToTarget + - sector_->avatar()->velDirection() * ammoTimeToTarget ); + Ogre::Vector3 duelistPilotPos( sector_->avatarObject()->mainNode()->getPosition() + + - sector_->avatarObject()->mainNode()->getOrientation().zAxis().normalisedCopy() + * sector_->avatarObject()->ammoSpeed() * ammoTimeToTarget + + sector_->avatarObject()->velDirection() * ammoTimeToTarget ); targetVisible = projectionPos_( mainCamera_, duelistPilotPos, targetScreenPos ); if ( targetVisible ){ @@ -858,7 +867,7 @@ dynamic_cast< SectorObjectMoveable *>( target_ )->velocity(), 6 ) ); targetShieldText_->setText( "S" + Ogre::StringConverter::toString( dynamic_cast< SectorObjectMoveable *>( target_ )->shieldPercent(), 4 ) ); - targetArmorText_->setText( "A" + Ogre::StringConverter::toString( + targetArmorText_->setText( "A" + Ogre::StringConverter::toString( dynamic_cast< SectorObjectMoveable *>( target_ )->armorPercent(), 4 ) ); } else{ @@ -867,37 +876,31 @@ targetArmorText_->setText( "" ); } } else { - if ( sector_->avatar()->targetArrow() ) sector_->avatar()->targetArrow()->setVisible( false ); + if ( sector_->avatarObject()->targetArrow() ) sector_->avatarObject()->targetArrow()->setVisible( false ); } - Ogre::Real height = sector_->avatar()->velocity() * velocityProgressHeight_ / sector_->avatar()->velocityMax(); + Ogre::Real height = sector_->avatarObject()->velocity() * velocityProgressHeight_ / sector_->avatarObject()->velocityMax(); velocityProgress_->setYPosition( CEGUI::UDim( 0.5, velocityProgressHeight_/2.0 - height ) ); velocityProgress_->setHeight( CEGUI::UDim( 0.0, height ) ); velocityProgressImg_->setYPosition( CEGUI::UDim( 0, -velocityProgressHeight_ + height ) ); - height = sector_->avatar()->capacity() * capacitorProgressHeight_ / sector_->avatar()->capacityMax(); + height = sector_->avatarObject()->capacity() * capacitorProgressHeight_ / sector_->avatarObject()->capacityMax(); capacitorProgress_->setYPosition( CEGUI::UDim( 0.5, capacitorProgressHeight_/2.0 - height ) ); capacitorProgress_->setHeight( CEGUI::UDim( 0.0, height ) ); capacitorProgressImg_->setYPosition( CEGUI::UDim( 0, -capacitorProgressHeight_ + height ) ); - height = sector_->avatar()->thrust() * thrustProgressHeight_ / sector_->avatar()->thrustMax(); + height = sector_->avatarObject()->thrust() * thrustProgressHeight_ / sector_->avatarObject()->thrustMax(); thrustProgress_->setYPosition( CEGUI::UDim( 0.5, thrustProgressHeight_/2.0 - height ) ); thrustProgress_->setHeight( CEGUI::UDim( 0.0, height ) ); thrustProgressImg_->setYPosition( CEGUI::UDim( 0, -thrustProgressHeight_ + height ) ); - velocityText_->setText( "V" + Ogre::StringConverter::toString( round( sector_->avatar()->velocity(), 2 ), 4 ) ); + velocityText_->setText( "V" + Ogre::StringConverter::toString( round( sector_->avatarObject()->velocity(), 2 ), 4 ) ); // conText_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDConText" ); - shieldText_->setText( "S" + Ogre::StringConverter::toString( sector_->avatar()->shieldPercent(), 4 ) ); - armorText_->setText( "A" + Ogre::StringConverter::toString( sector_->avatar()->armorPercent(), 4 ) ); + shieldText_->setText( "S" + Ogre::StringConverter::toString( sector_->avatarObject()->shieldPercent(), 4 ) ); + armorText_->setText( "A" + Ogre::StringConverter::toString( sector_->avatarObject()->armorPercent(), 4 ) ); - - - - - - // OverlayElement* guiAvg = OverlayManager::getSingleton().getOverlayElement("Core/AverageFps"); // OverlayElement* guiCurr = OverlayManager::getSingleton().getOverlayElement("Core/CurrFps"); // OverlayElement* guiBest = OverlayManager::getSingleton().getOverlayElement("Core/BestFps"); @@ -922,8 +925,6 @@ void UnDockedState::updateRadar_( ){ - - // Overlay* pHUD = OverlayManager::getSingleton().getByName("HUD"); // OverlayContainer* pMinMapElement = pHUD->getChild("MiniMap"); // Overlay* pMiniMapDots = OverlayManager::getSingleton().getByName("MiniMapDots"); @@ -941,23 +942,22 @@ } void UnDockedState::avatarDeathSequence( bool on ){ - if ( sector_->avatar() != NULL ){ + if ( sector_->avatarObject() != NULL ){ if ( on ){ - deathSequence_ = true; cameraMode_ = 0; - mainCamera_->setOrientation( sector_->avatar()->mainNode()->getOrientation() ); - mainCamera_->setPosition( sector_->avatar()->mainNode()->getOrientation().zAxis() * 100.0 ); + mainCamera_->setOrientation( sector_->avatarObject()->mainNode()->getOrientation() ); + mainCamera_->setPosition( sector_->avatarObject()->mainNode()->getOrientation().zAxis() * 50.0 ); + Ogre::OverlayManager::getSingleton().getByName( "Radar" )->hide(); + overlayRootWindow_->hide(); hudOverlay_->hide(); } else { - deathSequence_ = false; - cameraMode_ = 1; - hudOverlay_->show(); + enterDockedState_ = true; } } // if avatar } bool UnDockedState::renderSpaceDust(){ -// if ( sector_->avatar() != NULL ){ +// if ( sector_->avatarObject() != NULL ){ // const Ogre::Real maxDist = 250.0; // const Ogre::Real mirrorDist = maxDist*0.99; // const Ogre::Real dimFactor = 0.8*0.005*0.005; Modified: branches/ogsector/src/UnDockedState.h =================================================================== --- branches/ogsector/src/UnDockedState.h 2007-05-23 21:24:50 UTC (rev 508) +++ branches/ogsector/src/UnDockedState.h 2007-05-26 20:09:35 UTC (rev 509) @@ -92,7 +92,7 @@ inline bool handleMinimiseConsole( const CEGUI::EventArgs & e ){ minimiseConsole(); return true; } inline bool handleConfigBackButton( const CEGUI::EventArgs & e ){ return switchConfigDialog( ); } - void toggleNextCamera_( ); + void toggleNextCamera_( int mode = -1 ); void updateCamera_( ); void updateHUD_( ); void updateRadar_( ); @@ -174,7 +174,8 @@ Ogre::ParticleSystem * spaceDustParticleSystem_; - bool deathSequence_; + bool enterDockedState_; + double timeSinceLastSectorUpdate_; double timeSinceLastNetworkUpdate_; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |