|
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.
|