From: <spo...@us...> - 2007-04-06 18:18:49
|
Revision: 370 http://svn.sourceforge.net/opengate/?rev=370&view=rev Author: spom_spom Date: 2007-04-06 11:13:57 -0700 (Fri, 06 Apr 2007) Log Message: ----------- Ported to offline mode win32. libgrapple will not compile Modified Paths: -------------- branches/ogsector/ogre.cfg branches/ogsector/src/InputManager.cpp branches/ogsector/src/Sector.cpp branches/ogsector/src/SectorClient.cpp branches/ogsector/src/SectorClientFrameListener.cpp branches/ogsector/src/SectorClientFrameListener.h branches/ogsector/src/SectorObjects.cpp branches/ogsector/src/SectorObjects.h branches/ogsector/src/common.h branches/ogsector/src/networkClient.cpp branches/ogsector/src/networkClient.h branches/ogsector/src/networkProtocol.h branches/ogsector/src/networkServer.cpp branches/ogsector/src/networkServer.h branches/ogsector/src/ogsectorclient.cpp branches/ogsector/src/ogsectorserver.cpp Added Paths: ----------- branches/ogsector/win32/ branches/ogsector/win32/ogsectorclient/ branches/ogsector/win32/ogsectorclient/Plugins.cfg branches/ogsector/win32/ogsectorclient/ogre.cfg branches/ogsector/win32/ogsectorclient/ogsectorclient.cbp branches/ogsector/win32/ogsectorclient/resources.cfg Modified: branches/ogsector/ogre.cfg =================================================================== --- branches/ogsector/ogre.cfg 2007-04-06 18:07:28 UTC (rev 369) +++ branches/ogsector/ogre.cfg 2007-04-06 18:13:57 UTC (rev 370) @@ -4,4 +4,5 @@ FSAA=0 Full Screen=No RTT Preferred Mode=FBO +Refresh Rate=Not applicable Video Mode=1024 x 768 Modified: branches/ogsector/src/InputManager.cpp =================================================================== --- branches/ogsector/src/InputManager.cpp 2007-04-06 18:07:28 UTC (rev 369) +++ branches/ogsector/src/InputManager.cpp 2007-04-06 18:13:57 UTC (rev 370) @@ -9,21 +9,22 @@ OIS::ParamList pl; pl.insert( OIS::ParamList::value_type( "WINDOW", Ogre::StringConverter::toString( hWnd ) ) ); - + m_hWnd = hWnd; mInputSystem = OIS::InputManager::createInputSystem( pl ); - if ( mInputSystem ){ + if ( mInputSystem ){ mMouse = static_cast<OIS::Mouse*>(mInputSystem->createInputObject( OIS::OISMouse, true )); mMouse->setEventCallback( this ); mKeyboard = static_cast<OIS::Keyboard*>(mInputSystem->createInputObject( OIS::OISKeyboard, true)); mKeyboard->setEventCallback( this ); +#ifndef WIN32 if ( mInputSystem->numJoysticks() > 0 ) { // mJoysticks.resize( mInputSystem->numJoysticks() ); - + // itJoystick = mJoysticks.begin(); // itJoystickEnd = mJoysticks.end(); // for(; itJoystick != itJoystickEnd; ++itJoystick ) { @@ -32,7 +33,8 @@ // } mJoyStick = static_cast<OIS::JoyStick*>(mInputSystem->createInputObject( OIS::OISJoyStick, true)); mJoyStick->setEventCallback( this ); - } + } +#endif } } @@ -47,7 +49,7 @@ mInputSystem->destroyInputObject( mKeyboard ); mKeyboard = NULL; } - + if( mJoyStick ) { mInputSystem->destroyInputObject( mJoyStick ); mJoyStick = NULL; @@ -55,9 +57,9 @@ } OIS::InputManager::destroyInputSystem( mInputSystem ); - + mInputSystem = NULL; - + // Clear Listeners mKeyListeners.clear(); mMouseListeners.clear(); @@ -261,7 +263,7 @@ bool InputManager::axisMoved( const OIS::JoyStickEvent &e, int axis ) { itJoystickListener = mJoystickListeners.begin(); itJoystickListenerEnd = mJoystickListeners.end(); - + for(; itJoystickListener != itJoystickListenerEnd; ++itJoystickListener ) { itJoystickListener->second->axisMoved( e, axis ); } Modified: branches/ogsector/src/Sector.cpp =================================================================== --- branches/ogsector/src/Sector.cpp 2007-04-06 18:07:28 UTC (rev 369) +++ branches/ogsector/src/Sector.cpp 2007-04-06 18:13:57 UTC (rev 370) @@ -20,46 +20,44 @@ // // NB I could attach the light to a SceneNode if I wanted it to move automatically with // // other objects, but I don't // l->setPosition( 0, 0, 200 ); - new OgreOpcode::CollisionManager( sceneMgr_ ); OgreOpcode::CollisionManager::getSingletonPtr()->addCollClass( "SectorObject" ); OgreOpcode::CollisionManager::getSingletonPtr()->addCollClass( "Bullet" ); - + OgreOpcode::CollisionManager::getSingletonPtr()->addCollType( "Bullet", "Bullet", OgreOpcode::COLLTYPE_IGNORE ); OgreOpcode::CollisionManager::getSingletonPtr()->addCollType( "SectorObject", "Bullet", OgreOpcode::COLLTYPE_EXACT ); // OgreOpcode::CollisionManager::getSingletonPtr()->addCollType( "SectorObject", "SectorObject", OgreOpcode::COLLTYPE_QUICK ); OgreOpcode::CollisionManager::getSingletonPtr()->addCollType( "SectorObject", "SectorObject", OgreOpcode::COLLTYPE_CONTACT ); - + collideInSectorContext_ = OgreOpcode::CollisionManager::getSingletonPtr()->getDefaultContext(); - createStaticObject( Ogre::String("ships/Quantar/Storm/quantar_storm.mesh"), + createStaticObject( Ogre::String("ships/quantar/storm/storm.mesh"), "StormShape", Ogre::Vector3( 10, 17, -129.0 ), - Ogre::Real( 9.6 ), + Ogre::Real( 9.6 ), Ogre::Degree( -90 ) ); - createStaticObject( Ogre::String("ogrehead.mesh"), + createStaticObject( Ogre::String("ogrehead.mesh"), "ogreheadStation", Ogre::Vector3( 5000, 0, 0 ), - Ogre::Real( 500.0 ), + Ogre::Real( 500.0 ), Ogre::Degree( 0.0 ) ); // createCircle(); - - createStaticObject( Ogre::String("ogrehead.mesh"), + createStaticObject( Ogre::String("ogrehead.mesh"), "-100 0 0", Ogre::Vector3( -100, 0, 0 ), - Ogre::Real( 10.0 ), + Ogre::Real( 10.0 ), Ogre::Degree( 0.0 ) ); - createStaticObject( Ogre::String("ogrehead.mesh"), + createStaticObject( Ogre::String("ogrehead.mesh"), "100 0 0", Ogre::Vector3( 100, 0, 0 ), - Ogre::Real( 10.0 ), + Ogre::Real( 10.0 ), Ogre::Degree( 0.0 ) ); itTarget_ = sectorObjects_.begin(); @@ -84,7 +82,7 @@ if ( nCollids > 0 ){ std::cout << "Collisions: " << nCollids << std::endl; - OgreOpcode::CollisionPair **collisionReport; + OgreOpcode::CollisionPair **collisionReport; report.getAllCollisions( collisionReport ); for ( int i = 0; i < nCollids; i ++ ){ @@ -94,11 +92,11 @@ static_cast< BaseObject * >( col1->getClientData() )->collide( static_cast< BaseObject * >( col2->getClientData() ) ); static_cast< BaseObject * >( col2->getClientData() )->collide( static_cast< BaseObject * >( col1->getClientData() ) ); } - + std::cout << "CollisionContext attached objects: " + Ogre::StringConverter::toString(collideInSectorContext_->getAttachedObjectCount()) << std::endl; std::cout << "CollisionContext owned objects: " + Ogre::StringConverter::toString(collideInSectorContext_->getOwnedObjectCount()) << std::endl; std::cout << "CollisionManager shapes: " + Ogre::StringConverter::toString(OgreOpcode::CollisionManager::getSingletonPtr()->getShapeCount())<< std::endl; - + } bool tmpsegfaultDebug = false; @@ -116,13 +114,13 @@ std::cout << "tmpsegfaultDebug done." << std::endl; tmpsegfaultDebug = false; } - + if ( avatarDeathSequenceTime_ > 0 ){ avatarDeathSequenceTime_ -= elapsedTime; } else if ( avatarDeathSequenceTime_ > -1 ) { spawnAvatar(); } - + } SectorObjectMoveable * Sector::createMoveableObject( const Ogre::String & name, int userID, int childID ){ @@ -138,21 +136,21 @@ if ( listener_->target() == obj ) listener_->setTarget( nextTarget() ); switch ( obj->getTypeID() ){ - case SECTOROBJECTMOVABLE_RTTI: + case SECTOROBJECTMOVABLE_RTTI: movableObjects_.erase( obj->globalID() ); - delete obj; + delete obj; break; case SECTOROBJECTMOVABLE_AI_RTTI: { localAiObjects_.erase( dynamic_cast< SectorObjectMoveableAi *>(obj)->childID() ); movableObjects_.erase( obj->globalID() ); - delete obj; + delete obj; } break; default: std::cerr << "object type unknown. this should not happen." << obj->getTypeID() << std::endl; } } -void Sector::createStaticObject( const Ogre::String & meshname, const Ogre::String & objectname, +void Sector::createStaticObject( const Ogre::String & meshname, const Ogre::String & objectname, const Ogre::Vector3 & pos, Ogre::Real targetSize, Ogre::Degree yaw ){ SectorObject * obj = new SectorObject( objectname, this ); @@ -178,20 +176,20 @@ } void Sector::spawnAiObject( ){ - + int childID = 1; while ( localAiObjects_.find( childID ) != localAiObjects_.end() ){ childID ++; } SectorObjectMoveableAi *obj = createAiMoveableObject( avatar_->name() + "_Spawn" + Ogre::StringConverter::toString( childID ), childID ); obj->setTarget( avatar_ ); - + Ogre::Real xmin = -1000.0, xmax = -500.0; Ogre::Real ymin = -1000.0, ymax = -500.0; Ogre::Real zmin = -1000.0, zmax = -500.0; - obj->mainNode()->setPosition( Ogre::Math::RangeRandom( xmin, xmax ), - Ogre::Math::RangeRandom( ymin, ymax ), + obj->mainNode()->setPosition( Ogre::Math::RangeRandom( xmin, xmax ), + Ogre::Math::RangeRandom( ymin, ymax ), Ogre::Math::RangeRandom( zmin, zmax ) ); //obj->mainNode()->setPosition( 0.0f, 0.0f, -200.0f); @@ -226,15 +224,15 @@ void Sector::spawnAvatar( ){ if ( avatar_ != NULL ){ avatarDeathSequenceTime_ = -1.0; - + 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_->reset(); - + MessageShipRegister msg( 0, 0, avatar_->name(), avatar_->mainNode()->getPosition(), true ); network_->send( msg ); - + avatar_->setVisible( false ); listener_->avatarDeathSequence( false ); } @@ -246,33 +244,33 @@ if ( avatar_ != NULL ){ if ( (*itTarget_) == avatar_ ) return nextTarget(); } - + if ( itTarget_ == sectorObjects_.end() ) itTarget_ = sectorObjects_.begin(); return (*itTarget_); } return NULL; } - + SectorObject * Sector::prevTarget( ){ if ( sectorObjects_.size() != 0 ){ if ( itTarget_ == sectorObjects_.begin() ) itTarget_ = sectorObjects_.end(); itTarget_ --; - + if ( avatar_ != NULL ){ if ( (*itTarget_) == avatar_ ) return prevTarget(); } return (*itTarget_); - } + } return NULL; } void Sector::createCircle(){ - + Ogre::String name = "testcircle"; Ogre::SceneNode * object = sceneMgr_->getRootSceneNode()->createChildSceneNode( name ); Ogre::ManualObject * circle = sceneMgr_->createManualObject( name + "shape" ); - + float const radius = 50; float const thickness = 3; // Of course this must be less than the radius value. float const accuracy = 5; @@ -280,7 +278,7 @@ circle->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_TRIANGLE_LIST); unsigned point_index = 0; - for( float theta = 0; + for( float theta = 0; theta <= 2.0 * 3.141592; // Ogre::Math::PI collide ;) with some stuff from opcode theta += 3.141592 / (radius * accuracy) ) { circle->position(radius * cos(theta), radius * sin(theta), -50 ); @@ -316,8 +314,8 @@ } } else { if ( msg.status() == true ){ - std::cout << "Create object " << msg.name() - << " " << msg.senderID() << " " << (int)msg.childID() + std::cout << "Create object " << msg.name() + << " " << msg.senderID() << " " << (int)msg.childID() << " " << msg.position() << std::endl; SectorObjectMoveable * obj = createMoveableObject( msg.name(), msg.senderID(), msg.childID() ); @@ -326,18 +324,18 @@ } } } -} +} -void Sector::sendAllVesselMovements( ){ +void Sector::sendAllVesselMovements( ){ if ( avatar_ != NULL ){ - MessageShipMovement msg( 0, + MessageShipMovement msg( 0, avatar_->mainNode()->getPosition(), avatar_->velDirection(), - avatar_->mainNode()->getOrientation(), - avatar_->thrustPercent(), - avatar_->scaledYaw(), - avatar_->scaledPitch(), - avatar_->scaledRoll(), + avatar_->mainNode()->getOrientation(), + avatar_->thrustPercent(), + avatar_->scaledYaw(), + avatar_->scaledPitch(), + avatar_->scaledRoll(), avatar_->incNetSequence() ); network_->send( msg, false ); @@ -348,41 +346,41 @@ it->second->mainNode()->getPosition(), it->second->velDirection(), it->second->mainNode()->getOrientation(), - it->second->thrustPercent(), - it->second->scaledYaw(), - it->second->scaledPitch(), - it->second->scaledRoll(), + it->second->thrustPercent(), + it->second->scaledYaw(), + it->second->scaledPitch(), + it->second->scaledRoll(), it->second->incNetSequence() ); - + network_->send( msgObj, false ); } } -void Sector::receiveVesselMovement( const std::vector < MessageShipMovement * > & movements ){ - +void Sector::receiveVesselMovement( const std::vector < MessageShipMovement * > & movements ){ + std::map < long, const MessageShipMovement * > singleMsg; //** we sort the movement messaged - for ( int i = 0; i < movements.size(); i ++ ){ + for ( size_t i = 0; i < movements.size(); i ++ ){ if ( movements[ i ]->senderID() != network_->userID() ){ //** apply only foreign movements, and take just the actual movement singleMsg[ createGlobalID( movements[ i ]->senderID(), movements[ i ]->childID() ) ] = movements[ i ]; } } - + std::map< long, SectorObjectMoveable * >::iterator it; - + for ( std::map < long, const MessageShipMovement * >::iterator i = singleMsg.begin(); i != singleMsg.end(); i++ ){ if ( ( it = movableObjects_.find( i->first ) ) != movableObjects_.end() ){ it->second->setFlightProperties( (*i->second) ); } else { - std::cerr << "Requested non existant object for shipmovement: " + std::cerr << "Requested non existant object for shipmovement: " << network_->username( i->second->senderID() ) << " this should not happen." << std::endl; - } + } } } -void Sector::sendAllVesselStatus( ){ +void Sector::sendAllVesselStatus( ){ if ( avatar_ != NULL ){ sendVesselStatus( *avatar_ ); } @@ -406,7 +404,6 @@ std::map< long, SectorObjectMoveable * >::iterator it; - SectorObjectMoveable *obj; if ( ( it = movableObjects_.find( createGlobalID( msg.senderID(), msg.childID() ) ) ) != movableObjects_.end() ){ std::cout << "ReceiveVesselStatus for " << it->second->name( ) << std::endl; it->second->setStatus( msg ); @@ -420,9 +417,9 @@ void Sector::sendVesselAmmoHit( const Projectile & projectile, BaseObject * victim ){ if ( projectile.parent().userID() == network_->userID() ){ - std::cout << "Send: Projectile from " << projectile.name() << " collide with: " << victim->name() + std::cout << "Send: Projectile from " << projectile.name() << " collide with: " << victim->name() << " " << victim->userID() << " " << victim->childID() << std::endl; - + if ( network_->online() ){ MessageShipAmmoHit msg( projectile.parent().childID(), victim->userID(), victim->childID(), projectile.damage() ); network_->send( msg ); @@ -435,14 +432,14 @@ if ( msg.senderID() != network_->userID() ){ std::map< long, SectorObjectMoveable * >::iterator it; - + if ( ( it = movableObjects_.find( createGlobalID( msg.targetID(), msg.targetChildID() ) ) ) != movableObjects_.end() ){ std::cout << "ReceiveVesselAmmoHit for " << network_->username( msg.targetID() ) << std::endl; it->second->hitByAmmo( msg.damage() ); } else { std::cerr << "Requested non existant object for VesselAmmoHit " << "shooter: " << network_->username( msg.senderID() ) - << " victim: " << network_->username( msg.targetID() ) + << " victim: " << network_->username( msg.targetID() ) << " child: " << msg.targetChildID() << " damage: " << msg.damage() << " this should not happen." << std::endl; @@ -450,7 +447,7 @@ for ( std::map< long, SectorObjectMoveable * >::iterator i = movableObjects_.begin(); i != movableObjects_.end(); i++){ std::cerr << "\t" << i->first << " " << i->second->name() << " " << std::endl; } - + } } } Modified: branches/ogsector/src/SectorClient.cpp =================================================================== --- branches/ogsector/src/SectorClient.cpp 2007-04-06 18:07:28 UTC (rev 369) +++ branches/ogsector/src/SectorClient.cpp 2007-04-06 18:13:57 UTC (rev 370) @@ -15,9 +15,9 @@ root_ = new Ogre::Root; setupResources(); - + if ( !configure( dialog ) ) return false; - + //** load ressources Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); @@ -25,19 +25,19 @@ sceneMgr_ = root_->createSceneManager( Ogre::ST_GENERIC, "BaseSMInstance" ); createCameras(); - + createViewports(); - + //** spom dont what for // Set default mipmap level (NB some APIs ignore this) // Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5); // Create any resource listeners (for loading screens) // createResourceListener(); //** spom dont what for - + // Create the scene createScene(); - + createFrameListener(); sector_->spawnAvatar(); @@ -48,10 +48,10 @@ void SectorClient::setupResources( ) { // Load resource paths from config file Ogre::ConfigFile cf; cf.load( "resources.cfg" ); - + // Go through all sections & settings in the file Ogre::ConfigFile::SectionIterator seci = cf.getSectionIterator(); - + Ogre::String secName, typeName, archName; while ( seci.hasMoreElements() ) { @@ -65,7 +65,7 @@ } } } - + bool SectorClient::configure( bool dialog ){ if ( !dialog ){ root_->restoreConfig(); @@ -93,7 +93,7 @@ camera_->lookAt( Ogre::Vector3( 0, 0, 0 ) ); camera_->setNearClipDistance( 1 ); // camera_->setAspectRatio( Real(vp->getActualWidth()) / Real(vp->getActualHeight())); - + Ogre::Camera * camera1 = sceneMgr_->createCamera("Camera1"); camera1->setPosition( Ogre::Vector3( 0, 0, 500 ) ); camera1->lookAt( Ogre::Vector3( 0, 0, 0 ) ); @@ -123,7 +123,7 @@ // window_->removeViewport( 2 ); } -void SectorClient::createFrameListener( ) { +void SectorClient::createFrameListener( ) { frameListener_ = new SectorClientFrameListener( window_, camera_, sector_, network_ ); root_->addFrameListener( frameListener_ ); } Modified: branches/ogsector/src/SectorClientFrameListener.cpp =================================================================== --- branches/ogsector/src/SectorClientFrameListener.cpp 2007-04-06 18:07:28 UTC (rev 369) +++ branches/ogsector/src/SectorClientFrameListener.cpp 2007-04-06 18:13:57 UTC (rev 370) @@ -8,11 +8,11 @@ namespace OpenGate{ -SectorClientFrameListener::SectorClientFrameListener( Ogre::RenderWindow * win, Ogre::Camera * cam, +SectorClientFrameListener::SectorClientFrameListener( Ogre::RenderWindow * win, Ogre::Camera * cam, Sector * sector, Network * nw, - bool useBufferedInputKeys, - bool useBufferedInputMouse ) - : camera_( cam ), window_( win ), sector_( sector ), network_( nw ){ + bool useBufferedInputKeys, + bool useBufferedInputMouse ) + : window_( win ), camera_( cam ), sector_( sector ), network_( nw ){ shutDownRequest_ = false; deathSequence_ = false; @@ -36,7 +36,7 @@ inputManager_->addKeyListener( this, "SectorClientKeyListener" ); inputManager_->addMouseListener( this, "SectorClientMouseListener" ); inputManager_->addJoystickListener( this, "SectorClientJoystickListener" ); - + timeSinceLastSectorUpdate_ = 0.0; timeSinceLastNetworkUpdate_ = 0.0; inputInitialState_ = true; @@ -73,7 +73,7 @@ // targetPointerBB_ = mySet->createBillboard( Vector3(0, 0, 0) ); // mySet->setMaterialName( "TargetPointer" ); // targetPointerBB_->setDimensions( 32.0, 32.0 ); - + // targetPointer_->attachObject( mySet ); // targetPointer_->scale( 0.05, 0.05, 0.05 ); @@ -83,18 +83,18 @@ // Billboard * hudTargetPointer = targetPointerBillboard->createBillboard( Ogre::Vector3( 0.0, 0.0, -100 ) ); // hudTargetPointer-> -// spaceDustParticleSystem_ = camera_->getSceneManager()->createParticleSystem( "SpaceDust", "Space/Dust" ); -// Ogre::SceneNode * spaceDustNode = sector_->avatar()->mainNode()->createChildSceneNode( "DustParticles", camera_->getRealPosition() ); - -// spaceDustNode_->attachObject( spaceDustParticleSystem_ ); +// spaceDustParticleSystem_ = camera_->getSceneManager()->createParticleSystem( "SpaceDust", "Space/Dust" ); +// Ogre::SceneNode * spaceDustNode = sector_->avatar()->mainNode()->createChildSceneNode( "DustParticles", camera_->getRealPosition() ); + +// spaceDustNode_->attachObject( spaceDustParticleSystem_ ); // camera_->getParentSceneNode() -// listener for the space dust -// SpaceDust* psd = new SpaceDust(mCamera, ps); +// listener for the space dust +// SpaceDust* psd = new SpaceDust(mCamera, ps); // mRoot->addFrameListener(psd); -// spaceDustParticle_ = camera_->getSceneManager()->createParticleSystem("Stardust"); -// particleNode_ = camera_->getSceneManager()->getRootSceneNode()->createChildSceneNode("SpaceDustParticle"); +// spaceDustParticle_ = camera_->getSceneManager()->createParticleSystem("Stardust"); +// particleNode_ = camera_->getSceneManager()->getRootSceneNode()->createChildSceneNode("SpaceDustParticle"); // particleNode_->attachObject( spaceDustParticle_ ); // statsOn_ = true; @@ -107,42 +107,42 @@ inputManager_->removeKeyListener( "SectorClientKeyListener" ); inputManager_->removeMouseListener( "SectorClientMouseListener" ); inputManager_->removeJoystickListener( "SectorClientJoystickListener" ); - + //** neccesary because of new operator in inputmanager; if ( inputManager_ != NULL ) delete inputManager_; } - + bool SectorClientFrameListener::frameStarted( const Ogre::FrameEvent & evt ) { if ( window_->isClosed() ) return false; timeSinceLastSectorUpdate_ += evt.timeSinceLastFrame; timeSinceLastNetworkUpdate_ += evt.timeSinceLastFrame; - + if ( deathSequence_ ){ } else { //** capture my input inputManager_->capture(); - } - + } + //** start capture network; std::vector < std::vector < Uint8 > > msgs; std::vector < MessageShipMovement * > movements; network_->pull( msgs ); - - for ( int i = 0; i < msgs.size(); i ++ ){ + + for ( size_t i = 0; i < msgs.size(); i ++ ){ switch ( msgs[ i ][ 0 ] ){ case PROTO_CHAT:{ network_->ping(); MessageChat msg( &msgs[ i ][ 0 ] ); std::cout << network_->username( msg.senderID() ) + ": " + msg.message() << std::endl; - + Ogre::OverlayElement* hudChatIn = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextChatIn"); hudChatIn->setCaption( network_->username( msg.senderID() ) + ": " + msg.message() ); } break; - case PROTO_SHIPREGISTER: + case PROTO_SHIPREGISTER: sector_->receiveVesselRegister( &msgs[ i ][ 0 ] ); break; - case PROTO_SHIPSTATUS: + case PROTO_SHIPSTATUS: sector_->receiveVesselStatus( &msgs[ i ][ 0 ] ); break; case PROTO_SHIPMOVEMENT:{ //** we handle that in sum, so we can ignore dups because of packet loss @@ -160,24 +160,24 @@ //** end capture network; - // max 1000 sector-updates/second - if ( timeSinceLastSectorUpdate_ > 0.001 ){ + // max 1000 sector-updates/second + if ( timeSinceLastSectorUpdate_ > 0.001 ){ sector_->update( timeSinceLastSectorUpdate_ ); timeSinceLastSectorUpdate_ = 0.0; updateHUD_(); - } - + } + //** send movement data, max 10 net-updates/second if ( timeSinceLastNetworkUpdate_ > 0.1 ){ sector_->sendAllVesselMovements( ); timeSinceLastNetworkUpdate_ = 0.0; - } - + } + //** update my camera; updateCamera_(); // renderSpaceDust(); - + return true; } @@ -189,48 +189,48 @@ //** ESCAPE leads to shutdown; if ( e.key == OIS::KC_ESCAPE) { shutDownRequest_ = true; } - + if ( !chatMode_ ){ - if ( e.key == OIS::KC_RETURN) { - chatMode_ = true; + if ( e.key == OIS::KC_RETURN) { + chatMode_ = true; } - + if ( sector_->avatar() != NULL ){ //** Avatar yaw LEFT; if ( e.key == OIS::KC_A || e.key == OIS::KC_NUMPAD4 ) { sector_->avatar()->setScaledYaw( 1.0 ); } - + //** Avatar yaw RIGHT; if ( e.key == OIS::KC_D || e.key == OIS::KC_NUMPAD6 ) { sector_->avatar()->setScaledYaw( -1.0 ); } - + //** Avatar pitch DOWN; if ( e.key == OIS::KC_W || e.key == OIS::KC_NUMPAD8 ) { sector_->avatar()->setScaledPitch( -1.0 ); } - + //** Avatar pitch UP; if ( e.key == OIS::KC_S || e.key == OIS::KC_NUMPAD2 ) { sector_->avatar()->setScaledPitch( 1.0 ); } - + //** Avatar roll (181 == NUM/); if ( e.key == OIS::KC_NUMPAD0 || e.key == 181 ) { sector_->avatar()->setScaledRoll( 1.0 ); } - + //** Avatar roll (55 == NUM*); if ( e.key == OIS::KC_NUMPADCOMMA || e.key == 55 ) { sector_->avatar()->setScaledRoll( -1.0 ); } - + //** Avatar increase thrust by 10%; if ( e.key == OIS::KC_NUMPAD7 ) { sector_->avatar()->incrementThrust(); } - + //** Avatar increase thrust by 10%; if ( e.key == OIS::KC_NUMPAD1 ) { sector_->avatar()->decrementThrust(); } - + //** Avatar press break; if ( e.key == OIS::KC_NUMPAD3 ) { sector_->avatar()->setBreakPressed( true ); } - + //** Avatar press afterburner; if ( e.key == OIS::KC_NUMPAD9 ) { sector_->avatar()->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 ); + if ( e.key == OIS::KC_NUMPAD5 ) { + sector_->avatar()->setScaledYaw( 0.0 ); + sector_->avatar()->setScaledPitch( 0.0 ); + sector_->avatar()->setScaledRoll( 0.0 ); } //** selfdestruct and eject; if ( e.key == OIS::KC_F11 ) { sector_->avatarDied(); } @@ -238,24 +238,24 @@ //** next Target; if ( e.key == OIS::KC_N ) { setTarget( sector_->nextTarget() ); } - + //** prev Target; if ( e.key == OIS::KC_P ) { setTarget( sector_->prevTarget() ); } - + //** spawn; if ( e.key == OIS::KC_F12 ) { sector_->spawnAiObject(); } //** Toggle through camera modes; if ( e.key == OIS::KC_6 ) { toggleNextCamera_(); } - + //** Create one screenshot; - if ( e.key == OIS::KC_SYSRQ ) { + if ( e.key == OIS::KC_SYSRQ ) { char tmp[ 20 ]; sprintf(tmp, "screenshot.png" ); window_->writeContentsToFile(tmp); // window_->setDebugText(String("Wrote ") + tmp); } - if ( e.key == OIS::KC_R ) { + if ( e.key == OIS::KC_R ) { sceneDetailIndex_ = ( sceneDetailIndex_ + 1) % 3; switch( sceneDetailIndex_ ) { case 0: camera_->setPolygonMode( Ogre::PM_SOLID ); break; @@ -265,28 +265,28 @@ } } else { // ** chatmode - if ( e.key != OIS::KC_BACK ) { + if ( e.key != OIS::KC_BACK ) { chatString_ += e.text; } else if ( chatString_.length() > 1 ) { - chatString_ = chatString_.substr( 0, chatString_.length() - 1 ); + chatString_ = chatString_.substr( 0, chatString_.length() - 1 ); } Ogre::OverlayElement* hudChatIn = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextChatOut"); hudChatIn->setCaption( chatString_ ); - - if ( e.key == OIS::KC_RETURN) { - + + if ( e.key == OIS::KC_RETURN) { + MessageChat chat( chatString_ ); network_->send( chat ); chatString_.clear(); Ogre::OverlayElement* hudChatIn = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextChatOut"); hudChatIn->setCaption( chatString_ ); - chatMode_ = false; + chatMode_ = false; } } -// if ( e.key == OIS::KC_T ) { +// if ( e.key == OIS::KC_T ) { // switch( filtering_ ) { // case TFO_BILINEAR: // filtering_ = TFO_TRILINEAR; @@ -306,60 +306,61 @@ // MaterialManager::getSingleton().setDefaultTextureFiltering( filtering_ ); // MaterialManager::getSingleton().setDefaultAnisotropy( aniso_ ); // } - +return true; } bool SectorClientFrameListener::keyReleased( const OIS::KeyEvent & e ){ if ( sector_->avatar() != NULL ){ // Avatar release break if ( e.key == OIS::KC_NUMPAD3 ) { sector_->avatar()->setBreakPressed( false ); } - + // Avatar release afterburner if ( e.key == OIS::KC_NUMPAD9 ) { sector_->avatar()->setAfterburnerPressed( false ); } } + return true; } bool SectorClientFrameListener::mouseMoved( const OIS::MouseEvent & e ){ mousePointer_->setLeft( e.state.X.abs - 16); mousePointer_->setTop( e.state.Y.abs - 16); - + if ( sector_->avatar() != NULL ){ // std::cout << "X" << e.state.X.abs << " " << e.state.X.rel<< std::endl; // std::cout << "Y" << e.state.Y.abs << " " << e.state.Y.rel<< std::endl; // std::cout << "Z" << e.state.Z.abs << " " << e.state.Z.rel<< std::endl; - + int relativToMidPointX = (int)rint( e.state.X.abs - windowsHalfWidth_ ); int relativToMidPointY = (int)rint( e.state.Y.abs - windowsHalfHeight_ ); int minActiveZonePercent = 5; int maxActiveZonePercent = 90; - + double minRadius = ( windowsHeight_ / 2.0 ) * minActiveZonePercent / 100; double maxRadius = ( windowsHeight_ / 2.0 ) * maxActiveZonePercent / 100; - - Ogre::Real yaw = 0, pitch = 0; + + Ogre::Real yaw = 0, pitch = 0; if ( relativToMidPointX < 0 ) { yaw = (relativToMidPointX+minRadius) / (maxRadius - minRadius); } else { yaw = (relativToMidPointX-minRadius) / (maxRadius - minRadius); - } + } if ( relativToMidPointY < 0 ) { pitch = (relativToMidPointY + minRadius) / (maxRadius - minRadius); } else { pitch = (relativToMidPointY - minRadius) / (maxRadius - minRadius); } - + if ( fabs( relativToMidPointX ) < minRadius ) yaw = 0.0; if ( fabs( relativToMidPointY ) < minRadius ) pitch = 0.0; - + if ( inputInitialState_ == true ){ if ( yaw == 0.0 && pitch == 0.0 ){ inputInitialState_ = false; } } else{ - + yaw = min( yaw, 1.0f ); yaw = max( yaw, -1.0f ); pitch = min( pitch, 1.0f ); pitch = max( pitch, -1.0f ); - + // std::cout << ( String("Mouse rel: ") + StringConverter::toString( e.state.X.rel ) + // String(" ") + StringConverter::toString( e.state.Y.rel ) + // String(" abs: ") + StringConverter::toString( e.state.X.abs ) + @@ -368,7 +369,7 @@ // String(" ") + StringConverter::toString( relativToMidPointY ) + // String(" yaw: ") + StringConverter::toString( yaw ) + // String(" pitch ") + StringConverter::toString( pitch ) ) << std::endl; - + sector_->avatar()->setScaledYaw( -yaw ); sector_->avatar()->setScaledPitch( -pitch ); } @@ -377,11 +378,12 @@ if ( e.state.Z.abs-10 > lastInputWheelState_ ){ // mouse wheel up setTarget( sector_->nextTarget() ); lastInputWheelState_ = e.state.Z.abs; - + } else if( lastInputWheelState_ > e.state.Z.abs+10 ) { // mouse wheel down setTarget( sector_->prevTarget() ); lastInputWheelState_ = e.state.Z.abs; - } + } + return true; } bool SectorClientFrameListener::mousePressed( const OIS::MouseEvent &e , OIS::MouseButtonID button ){ @@ -390,7 +392,8 @@ if ( button == 0){ sector_->avatar()->setFirePressed( true ); } - } + } + return true; } bool SectorClientFrameListener::mouseReleased( const OIS::MouseEvent &e , OIS::MouseButtonID button ){ @@ -399,7 +402,8 @@ if ( button == 0){ sector_->avatar()->setFirePressed( false); } - } + } + return true; } bool SectorClientFrameListener::axisMoved( const OIS::JoyStickEvent & e, int axis ){ @@ -408,32 +412,32 @@ int joyStickAxisX = 0; int joyStickAxisY = 1; int joyStickAxisZ = 5; - int throwSliderAxis = 6; + int throwSliderAxis = 6; double axisScale = 32768; - + //** deadzone int minActiveZonePercent = 10; int maxActiveZonePercent = 95; - + double minRadius = ( axisScale ) * minActiveZonePercent / 100; double maxRadius = ( axisScale ) * maxActiveZonePercent / 100; - + Ogre::Real yaw = (e.state.mAxes[ joyStickAxisX ].abs) / (maxRadius); Ogre::Real pitch = (e.state.mAxes[ joyStickAxisY ].abs) / (maxRadius); Ogre::Real roll = (e.state.mAxes[ joyStickAxisZ ].abs) / (maxRadius); Ogre::Real thrust = ( -e.state.mAxes[ throwSliderAxis ].abs + axisScale ) / (maxRadius*2); - + yaw = min( yaw, 1.0f ); yaw = max( yaw, -1.0f ); pitch = min( pitch, 1.0f ); pitch = max( pitch, -1.0f ); roll = min( roll, 1.0f ); roll = max( roll, -1.0f ); thrust = min( thrust, 1.0f ); thrust = max( thrust, 0.0f ); - - + + if ( fabs( e.state.mAxes[ joyStickAxisX ].abs ) < minRadius ) yaw = 0.0; if ( fabs( e.state.mAxes[ joyStickAxisY ].abs ) < minRadius ) pitch = 0.0; if ( fabs( e.state.mAxes[ joyStickAxisZ ].abs ) < minRadius ) roll = 0.0; if ( fabs( -e.state.mAxes[ throwSliderAxis ].abs + axisScale ) < minRadius ) thrust = 0.0; - + //** little deadzone ; // window_->setDebugText( "Joy Axis: X: " + StringConverter::toString( e.state.mAxes[ joyStickAxisX ].abs ) + // " Y: " + StringConverter::toString( e.state.mAxes[ joyStickAxisY ].abs ) + @@ -443,12 +447,13 @@ // " pitch: " + StringConverter::toString(pitch) + // " roll: " + StringConverter::toString(roll) + // " thrust: " + StringConverter::toString(thrust) ); - - sector_->avatar()->setScaledYaw( -yaw ); - sector_->avatar()->setScaledPitch( pitch ); - sector_->avatar()->setScaledRoll( -roll ); + + sector_->avatar()->setScaledYaw( -yaw ); + sector_->avatar()->setScaledPitch( pitch ); + sector_->avatar()->setScaledRoll( -roll ); sector_->avatar()->setThrustPercent( thrust * 100. ); - } // if avatar + } // if avatar + return true; } bool SectorClientFrameListener::buttonPressed( const OIS::JoyStickEvent & e , int button){ @@ -458,7 +463,8 @@ if ( button == 0){ sector_->avatar()->setFirePressed( true ); } - } // if avatar_ + } // if avatar_ + return true; } bool SectorClientFrameListener::buttonReleased( const OIS::JoyStickEvent & e , int button){ @@ -469,7 +475,7 @@ sector_->avatar()->setFirePressed( false ); } } // if avatar_ - +return true; } void SectorClientFrameListener::toggleNextCamera_(){ @@ -486,7 +492,7 @@ sector_->avatar()->setVisible( true ); } break; - case 1: //** first person avatar camera + case 1: //** first person avatar camera if ( sector_->avatar() != NULL ){ sector_->avatar()->setVisible( false ); break; @@ -496,13 +502,13 @@ sector_->avatar()->setVisible( true ); break; } - case 3: //** free avatar tracking-camera at orign + case 3: //** free avatar tracking-camera at orign camera_->setPosition( Ogre::Vector3( 0, 0, 500 ) ); camera_->lookAt( Ogre::Vector3( 0, 0, -300 ) ); if ( sector_->avatar() != NULL ){ camera_->setAutoTracking( true, sector_->avatar()->mainNode() ); sector_->avatar()->setVisible( true ); - } + } break; } } @@ -511,34 +517,34 @@ if ( sector_->avatar() != NULL ){ Ogre::Vector3 avatarPos( sector_->avatar()->mainNode()->getPosition() ); - + Ogre::Vector3 targetPos; if ( target_ != NULL ){ targetPos = target_->mainNode()->getPosition() ; } - + Ogre::Vector3 dist( targetPos - avatarPos ); Ogre::Vector3 distNorm( dist.normalisedCopy() ); Ogre::Quaternion avatarOrient( sector_->avatar()->mainNode()->getOrientation() ); - + Ogre::Camera * cam1 = camera_->getSceneManager()->getCamera( "Camera1" ); - + cam1->setOrientation( avatarOrient ); - + // if ( ( 1.0f + cam1->getDirection( ).normalisedCopy().dotProduct( distNorm ) ) < 0.0001f ) { // cam1->yaw( Degree( 180 ) ); // } else { Ogre::Quaternion rot( cam1->getDirection( ).normalisedCopy().getRotationTo( distNorm ) ); cam1->rotate( rot ); // } - + if ( target_ != NULL ) cam1->setPosition( avatarPos + distNorm * ( dist.length() - 2.0 * target_->baseSize() ) ); - + switch ( cameraMode_ ){ case 0: //** free camera at orign camera_->lookAt( sector_->avatar()->mainNode()->getPosition( ) ); break; - case 1: //** first person avatar camera + case 1: //** first person avatar camera camera_->setPosition( avatarPos ); camera_->setOrientation( avatarOrient ); sector_->avatar()->setVisible( false ); @@ -548,7 +554,7 @@ camera_->setOrientation( avatarOrient ); camera_->yaw( Ogre::Degree(-90) ); break; - case 3: //** free avatar tracking-camera at orign + case 3: //** free avatar tracking-camera at orign break; } }// if avatar @@ -558,86 +564,86 @@ target_ = target; if ( target_ != NULL ){ - std::cout << target_->name()<< std::endl; + std::cout << target_->name()<< std::endl; Ogre::OverlayElement* targetName = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextTargetName"); - targetName->setCaption( target_->name() ); - + targetName->setCaption( target_->name() ); + // if ( hudTarget_->numChildren() > 0 ){ // hudTarget_->removeAllChildren( );// hudTarget_->getChild( "TargetTrans" ) ); // camera_->getSceneManager()->destroyEntity( "TargetShape" ); -// } +// } // Ogre::SceneNode * hudTargetTrans = new Ogre::SceneNode( NULL, "TargetTrans" ); - + // Ogre::Entity *targetShape = target_->shape()->clone( "TargetShape" ); - + // hudTargetTrans->attachObject( targetShape ); -// Ogre::Real scale = 0.5 / ( targetShape->getBoundingBox().getMaximum()[ 0 ] +// Ogre::Real scale = 0.5 / ( targetShape->getBoundingBox().getMaximum()[ 0 ] // - targetShape->getBoundingBox().getMinimum()[ 0 ] ); // hudTargetTrans->yaw( Ogre::Degree( -90 ) ); // hudTargetTrans->scale( scale, scale, scale ); - + // hudTarget_->addChild( hudTargetTrans ); } } void SectorClientFrameListener::updateHUD_( void ) { const Ogre::RenderTarget::FrameStats & stats = window_->getStatistics(); - Ogre::OverlayElement* hudStat = + Ogre::OverlayElement* hudStat = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextStats"); hudStat->setCaption( "fps: " + toStr( stats.lastFPS ) + " ping: " + toStr( network_->pingTime() ) + " ms" ); - + if ( sector_->avatar() != NULL ){ 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(), + sector_->avatar()->flightArrow()->setDirection( sector_->avatar()->flightDirection().normalisedCopy(), Ogre::Node::TS_WORLD ); } else { sector_->avatar()->flightArrow()->setVisible( false ); } - + if ( target_ != NULL ) { sector_->avatar()->targetArrow()->setVisible( true ); Ogre::Vector3 distToTarget = target_->mainNode()->getPosition() - sector_->avatar()->mainNode()->getPosition(); - + sector_->avatar()->targetArrow()->setOrientation( sector_->avatar()->mainNode()->getOrientation() ); - - sector_->avatar()->targetArrow()->setDirection( distToTarget.normalisedCopy(), + + sector_->avatar()->targetArrow()->setDirection( distToTarget.normalisedCopy(), Ogre::Node::TS_WORLD ); hudTarget_->setOrientation( target_->mainNode()->getOrientation() ); - + // Ogre::Vector3 targetPos; // Ogre::Quaternion targetOrient; targetOri = target_->mainNode().getOrientation(); // targetPos = target_->mainNode().getPosition(); - + //** targeting pointer - Ogre::Vector3 poss = camera_->getProjectionMatrix() * (camera_->getViewMatrix() * target_->mainNode()->getPosition() ); + Ogre::Vector3 poss = camera_->getProjectionMatrix() * (camera_->getViewMatrix() * target_->mainNode()->getPosition() ); poss.x = max( -1.0f, poss.x ); poss.x = min( 1.0f, poss.x ); poss.y = max( -1.0f, poss.y ); poss.y = min( 1.0f, poss.y ); - + Ogre::OverlayElement* hudTargetPointer = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/TargetPointer"); hudTargetPointer->show(); - - Ogre::OverlayElement* hudTargetDist = + + Ogre::OverlayElement* hudTargetDist = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextTargetDistance"); - - Ogre::OverlayElement* hudTargetShield = + + Ogre::OverlayElement* hudTargetShield = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextTargetShield"); - - Ogre::OverlayElement* hudTargetArmor = + + Ogre::OverlayElement* hudTargetArmor = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextTargetArmor"); - - Ogre::OverlayElement* hudTargetVel = + + Ogre::OverlayElement* hudTargetVel = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextTargetVelocity"); - + hudTargetDist->setCaption( "D " + Ogre::StringConverter::toString( round( distToTarget.length(), 0 ) ) ); - + if ( poss.z < 1 ){ - hudTargetPointer->setPosition( windowsHalfWidth_ + (windowsHalfWidth_ * poss.x)-16, + hudTargetPointer->setPosition( windowsHalfWidth_ + (windowsHalfWidth_ * poss.x)-16, windowsHalfHeight_ + (windowsHalfHeight_ * -poss.y)-16 ); } - + if ( target_->getTypeID() == SECTOROBJECTMOVABLE_RTTI || target_->getTypeID() == SECTOROBJECTMOVABLE_AI_RTTI ){ hudTargetVel->setCaption( "V " + Ogre::StringConverter::toString( dynamic_cast< SectorObjectMoveable *>( target_ )->velocity(), 6 ) ); @@ -652,41 +658,41 @@ sector_->avatar()->targetArrow()->setVisible( false ); Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/TargetPointer")->hide( ); } - - Ogre::OverlayElement* hudVel = + + Ogre::OverlayElement* hudVel = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextVelocity"); - - Ogre::OverlayElement* hudVelMax = + + Ogre::OverlayElement* hudVelMax = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextVelocityMax"); - - Ogre::OverlayElement* hudThr = + + Ogre::OverlayElement* hudThr = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextThr"); - - Ogre::OverlayElement* hudAcc = + + Ogre::OverlayElement* hudAcc = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextAcc"); - - Ogre::OverlayElement* hudPos = + + Ogre::OverlayElement* hudPos = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextPosition"); - - Ogre::OverlayElement* hudShield = + + Ogre::OverlayElement* hudShield = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextShield"); - - Ogre::OverlayElement* hudArmor = + + Ogre::OverlayElement* hudArmor = Ogre::OverlayManager::getSingleton().getOverlayElement("OpenGate/SimpleHUDTextArmor"); - + hudVel->setCaption( "Vel: " + Ogre::StringConverter::toString( round( sector_->avatar()->velocity(), 2 ), 6 ) ); hudVelMax->setCaption( " / " + Ogre::StringConverter::toString( round( sector_->avatar()->velocityMax(), 2), 6 ) ); hudThr->setCaption( "Thr: " + Ogre::StringConverter::toString( sector_->avatar()->thrustPercent(), 4 ) + "%" ); hudAcc->setCaption( "Acc: " + Ogre::StringConverter::toString( sector_->avatar()->acceleration(), 2 ) ); hudShield->setCaption( "S " + Ogre::StringConverter::toString( sector_->avatar()->shieldPercent(), 4 ) ); hudArmor->setCaption( "A " + Ogre::StringConverter::toString( sector_->avatar()->armorPercent(), 4 ) ); - + Ogre::Vector3 pos( sector_->avatar()->mainNode()->getPosition() ); - hudPos->setCaption( "Pos: " + - Ogre::StringConverter::toString( Ogre::Real( rint( pos[ 0 ] ) ), 5, 5 ) + " " + - Ogre::StringConverter::toString( Ogre::Real( rint( pos[ 1 ] ) ), 5, 5 ) + " " + + hudPos->setCaption( "Pos: " + + Ogre::StringConverter::toString( Ogre::Real( rint( pos[ 0 ] ) ), 5, 5 ) + " " + + Ogre::StringConverter::toString( Ogre::Real( rint( pos[ 1 ] ) ), 5, 5 ) + " " + Ogre::StringConverter::toString( Ogre::Real( rint( pos[ 2 ] ) ), 5, 5 ) ); - + // OverlayElement* guiAvg = OverlayManager::getSingleton().getOverlayElement("Core/AverageFps"); // OverlayElement* guiCurr = OverlayManager::getSingleton().getOverlayElement("Core/CurrFps"); // OverlayElement* guiBest = OverlayManager::getSingleton().getOverlayElement("Core/BestFps"); @@ -696,10 +702,10 @@ // +" "+StringConverter::toString(stats.bestFrameTime)+" ms"); // guiWorst->setCaption(worstFps + StringConverter::toString(stats.worstFPS) // +" "+StringConverter::toString(stats.worstFrameTime)+" ms"); - + // OverlayElement* guiTris = OverlayManager::getSingleton().getOverlayElement("Core/NumTris"); // guiTris->setCaption(tris + StringConverter::toString(stats.triangleCount)); - + // OverlayElement* guiDbg = OverlayManager::getSingleton().getOverlayElement("Core/DebugText"); // guiDbg->setCaption( window_->getDebugText() ); // } @@ -727,46 +733,46 @@ bool SectorClientFrameListener::renderSpaceDust(){ // if ( sector_->avatar() != NULL ){ -// const Ogre::Real maxDist = 250.0; -// const Ogre::Real mirrorDist = maxDist*0.99; -// const Ogre::Real dimFactor = 0.8*0.005*0.005; -// const Ogre::Real maxDist2 = maxDist*maxDist; - +// const Ogre::Real maxDist = 250.0; +// const Ogre::Real mirrorDist = maxDist*0.99; +// const Ogre::Real dimFactor = 0.8*0.005*0.005; +// const Ogre::Real maxDist2 = maxDist*maxDist; + // const Ogre::Vector3 camPos( camera_->getWorldPosition() ); -// const Ogre::Real twiceMaxDist = 2 * maxDist; - -// Ogre::ParticleIterator pit = spaceDustParticleSystem_->_getIterator(); - -// while ( !pit.end() ){ -// Ogre::Particle * particle = pit.getNext(); -// Ogre::Vector3 & pos = particle->position; -// particle->timeToLive = 999999.0f; - -// // position particles near camera -// // (keep moving them toward camera until within range) -// while (pos.x - camPos.x > maxDist) -// pos.x -= twiceMaxDist; -// while (pos.x - camPos.x < -maxDist) -// pos.x += twiceMaxDist; -// while (pos.y - camPos.y > maxDist) -// pos.y -= twiceMaxDist; -// while (pos.y - camPos.y < -maxDist) -// pos.y += twiceMaxDist; -// while (pos.z - camPos.z > maxDist) -// pos.z -= twiceMaxDist; -// while (pos.z - camPos.z < -maxDist) -// pos.z += twiceMaxDist; - -// Ogre::Vector3 pDir = pos-camPos; -// Ogre::Real dist = pDir.squaredLength(); -// Ogre::Real dim = dist*dimFactor; -// particle->setDimensions(dim, dim); - -// } -// } // if avatar - return true; +// const Ogre::Real twiceMaxDist = 2 * maxDist; + +// Ogre::ParticleIterator pit = spaceDustParticleSystem_->_getIterator(); + +// while ( !pit.end() ){ +// Ogre::Particle * particle = pit.getNext(); +// Ogre::Vector3 & pos = particle->position; +// particle->timeToLive = 999999.0f; + +// // position particles near camera +// // (keep moving them toward camera until within range) +// while (pos.x - camPos.x > maxDist) +// pos.x -= twiceMaxDist; +// while (pos.x - camPos.x < -maxDist) +// pos.x += twiceMaxDist; +// while (pos.y - camPos.y > maxDist) +// pos.y -= twiceMaxDist; +// while (pos.y - camPos.y < -maxDist) +// pos.y += twiceMaxDist; +// while (pos.z - camPos.z > maxDist) +// pos.z -= twiceMaxDist; +// while (pos.z - camPos.z < -maxDist) +// pos.z += twiceMaxDist; + +// Ogre::Vector3 pDir = pos-camPos; +// Ogre::Real dist = pDir.squaredLength(); +// Ogre::Real dim = dist*dimFactor; +// particle->setDimensions(dim, dim); + +// } +// } // if avatar + return true; } } // namespace OpenGate{ - + Modified: branches/ogsector/src/SectorClientFrameListener.h =================================================================== --- branches/ogsector/src/SectorClientFrameListener.h 2007-04-06 18:07:28 UTC (rev 369) +++ branches/ogsector/src/SectorClientFrameListener.h 2007-04-06 18:13:57 UTC (rev 370) @@ -15,14 +15,14 @@ class Sector; -class SectorClientFrameListener: public Ogre::FrameListener, - public OIS::KeyListener, - public OIS::MouseListener, +class SectorClientFrameListener: public Ogre::FrameListener, + public OIS::KeyListener, + public OIS::MouseListener, public OIS::JoyStickListener { public: SectorClientFrameListener( Ogre::RenderWindow * win, Ogre::Camera * cam, Sector * sector, Network * nw, - bool useBufferedInputKeys = false, + bool useBufferedInputKeys = false, bool useBufferedInputMouse = false ); virtual ~SectorClientFrameListener( ); @@ -58,9 +58,10 @@ Ogre::RenderWindow * window_; Ogre::Camera * camera_; Sector * sector_; - InputManager * inputManager_; Network * network_; + InputManager * inputManager_; + Ogre::Overlay * hudOverlay_; Ogre::Overlay * mouseOverlay_; Ogre::OverlayElement * mousePointer_; @@ -90,7 +91,7 @@ int windowsHeight_; int windowsHalfWidth_; int windowsHalfHeight_; - + bool chatMode_; std::string chatString_; Modified: branches/ogsector/src/SectorObjects.cpp =================================================================== --- branches/ogsector/src/SectorObjects.cpp 2007-04-06 18:07:28 UTC (rev 369) +++ branches/ogsector/src/SectorObjects.cpp 2007-04-06 18:13:57 UTC (rev 370) @@ -4,8 +4,8 @@ namespace OpenGate{ -BaseObject::BaseObject( const Ogre::String & name, Sector * sector, int userID, int childID ) - : sector_( sector ), name_( name ), mainNode_( NULL ), userID_( userID ), childID_( childID ) { +BaseObject::BaseObject( const Ogre::String & name, Sector * sector, int userID, int childID ) + : name_( name ), sector_( sector ), userID_( userID ), childID_( childID ), mainNode_( NULL ){ globalID_ = createGlobalID( userID, childID ); sceneMgr_ = sector_->sceneManager(); @@ -18,7 +18,7 @@ sceneMgr_->getRootSceneNode()->removeAndDestroyChild( mainNode_->getName() ); } -Projectile::Projectile( BaseObject * parent, long shotCounter ) +Projectile::Projectile( BaseObject * parent, long shotCounter ) : BaseObject( parent->name(), parent->sector() ), parent_( parent ) { Ogre::String bulletName( name_ + "_" + toStr( shotCounter ) ); @@ -26,19 +26,19 @@ // chain_ = sceneMgr_->createBillboardChain( name_ + "_" + toStr( shotCounter ) + "_ProjectileBBC" ); // chain_->setMaxChainElements( 10 ); // chain_->setMaterialName("BulletWhite"); - + // for ( int i = 0; i < 10; i ++ ){ -// chain_->addChainElement(0, Ogre::BillboardChain::Element( Ogre::Vector3( 0.0, 0.0, Ogre::Real( i * 0.01 ) ), +// chain_->addChainElement(0, Ogre::BillboardChain::Element( Ogre::Vector3( 0.0, 0.0, Ogre::Real( i * 0.01 ) ), // 0.2, 0.1, Ogre::ColourValue(0.0f, 0.0f, 0.0f) ) ); -// // chain_->addChainElement(0, Ogre::BillboardChain::Element( Ogre::Vector3( 0.0, -0.1, Ogre::Real( i * 0.01 ) ), +// // chain_->addChainElement(0, Ogre::BillboardChain::Element( Ogre::Vector3( 0.0, -0.1, Ogre::Real( i * 0.01 ) ), // // 0.2, 0.1, Ogre::ColourValue(1.0f, 1.0f, 1.0f) ) ); // } // mainNode_->attachObject( chain_ ); // chain_->setVisible( true ); Ogre::Vector3 position( parent_->mainNode()->getPosition() ); - Ogre::Quaternion direction( parent_->mainNode()->getOrientation() ); - + Ogre::Quaternion direction( parent_->mainNode()->getOrientation() ); + int maxBB = 20; bbs_ = sceneMgr_->createBillboardSet( bulletName + "_BBS", maxBB ); bbs_->setMaterialName("Bullet"); @@ -79,9 +79,9 @@ mainNode_->setPosition( position ); mainNode_->setPosition( position + direction.zAxis().normalisedCopy() * -6.2 + - direction.xAxis().normalisedCopy() * 1.5 + + direction.xAxis().normalisedCopy() * 1.5 + direction.yAxis().normalisedCopy() * -0.2 ); - + // mainNode_->setOrientation( direction ); maxLiveTime_ = 1.4; @@ -113,7 +113,7 @@ bbs_->getBillboard( 0 )->setDimensions( 10, 10 ); lifeTime_ = max( lifeTime_, maxLiveTime_ - 0.1f ); -// sector_->collisionContext()->removeObject( collObj_ ); +// sector_->collisionContext()->removeObject( collObj_ ); // OgreOpcode::CollisionManager::getSingletonPtr()->detachShape( collObj_->getShape() ); } @@ -130,17 +130,17 @@ OgreOpcode::CollisionPair ** rayPickReport; Ogre::Ray bulletRay( mainNode_->getPosition(), vel_.normalisedCopy() ); - - int nColl = sector_->collisionContext()->rayCheck( bulletRay, (vel_ * elapsedTime).length(), - OgreOpcode::COLLTYPE_EXACT, + + int nColl = sector_->collisionContext()->rayCheck( bulletRay, (vel_ * elapsedTime).length(), + OgreOpcode::COLLTYPE_EXACT, OgreOpcode::COLLTYPE_ALWAYS_EXACT, rayPickReport ); - + if ( nColl > 0 ){ OgreOpcode::CollisionObject* col1 = rayPickReport[ 0 ]->this_object; OgreOpcode::CollisionObject* col2 = rayPickReport[ 0 ]->other_object; - + if ( this->name() != static_cast< BaseObject * >( col1->getClientData() )->name() ){ - + mainNode_->setPosition( rayPickReport[ 0 ]->contact ); this->collide( static_cast< BaseObject * >( col2->getClientData() ) ); @@ -152,8 +152,8 @@ } return true; } - + SectorObject::SectorObject( const Ogre::String & name, Sector * sector, int userID, int childID ) : BaseObject( name, sector, userID, childID ) { @@ -165,12 +165,12 @@ mainNodeShape_->detachObject( shape_ ); sceneMgr_->destroyEntity( shape_ ); - sector_->collisionContext()->destroyObject( collObj_ ); + sector_->collisionContext()->destroyObject( collObj_ ); OgreOpcode::CollisionManager::getSingletonPtr()->destroyShape( collObj_->getShape() ); // mainNode_->detachObject( mainNodeShape_->getName() ); mainNode_->removeAndDestroyChild( mainNodeShape_->getName() ); - + } void SectorObject::setShape( const Ogre::String & meshname ){ @@ -189,7 +189,7 @@ } void SectorObject::setBaseSize( Ogre::Real targetSize ){ - Ogre::Real scale = targetSize / ( shape_->getBoundingBox().getMaximum()[ 0 ] + Ogre::Real scale = targetSize / ( shape_->getBoundingBox().getMaximum()[ 0 ] - shape_->getBoundingBox().getMinimum()[ 0 ] ); mainNodeShape_->scale( scale, scale, scale ); baseSize_ = targetSize; @@ -199,7 +199,7 @@ : SectorObject( name, sector, userID, childID ) { inititializeVesselStats_(); - setShape( "ships/Octavius/Apteryx/octavius_apteryx.mesh" ); + setShape( "ships/octavius/apteryx/apteryx.mesh" ); //setShape( "ogrehead.mesh" ); baseYaw( Ogre::Degree( -90 ) ); @@ -212,14 +212,14 @@ Ogre::ParticleEmitter *pEmit1 = thrusterParticles_->addEmitter( "Point" ); pEmit1->setDirection( mainNode_->getOrientation().zAxis() ); pEmit1->setPosition( Ogre::Vector3( 0.0f, 0.5f, 5.0f ) ); - pEmit1->setColour( Ogre::ColourValue::Blue, Ogre::ColourValue::Green); + pEmit1->setColour( Ogre::ColourValue::Blue, Ogre::ColourValue::Green); mainNode_->attachObject( thrusterParticles_ ); setThrustPercent( 0.0 ); updateThruster(); } - + SectorObjectMoveable::~SectorObjectMoveable() { mainNode_->detachObject( thrusterParticles_ ); sceneMgr_->destroyParticleSystem( thrusterParticles_ ); @@ -255,7 +255,7 @@ // } else { // setScaledRoll( 0.0 ); // } - + setScaledYaw( msg.yaw() ); setScaledRoll( msg.roll() ); setScaledPitch( msg.pitch() ); @@ -274,30 +274,30 @@ if ( !1 ){ std::cout << std::endl; - std::cout << msg.sequenceNr() << "LastFrameCount: " << lastFrameCount_ - << " life: " << lifeTime_ << " last: " << lastLifeTime_ + std::cout << msg.sequenceNr() << "LastFrameCount: " << lastFrameCount_ + << " life: " << lifeTime_ << " last: " << lastLifeTime_ << " diff: "<< lifeTime_ - lastLifeTime_ << std::endl; - - // std::cout << "Ist: " << mainNode_->getOrientation( ) + + // std::cout << "Ist: " << mainNode_->getOrientation( ) // << " " << mainNode_->getOrientation( ).getYaw().valueDegrees() << std::endl; - + // std::cout << "Soll: " << msg.orientation() << " " << msg.orientation().getYaw().valueDegrees() << std::endl; std::cout << "Diff: send: " << msg.yaw() << " " << msg.pitch() << " " << msg.roll() << std::endl; - - std::cout << "Diff: Pos: " << (srcP-destP).length() - << " Y:" << interpolateRot_.getYaw().valueDegrees() - << " P:" << interpolateRot_.getPitch().valueDegrees() + + std::cout << "Diff: Pos: " << (srcP-destP).length() + << " Y:" << interpolateRot_.getYaw().valueDegrees() + << " P:" << interpolateRot_.getPitch().valueDegrees() << " R:" << interpolateRot_.getRoll().valueDegrees() << std::endl; } // mainNode_->rotate( interpolateRot_, Ogre::Node::TS_PARENT ); - + Ogre::Degree yawTo( interpolateRot_.getYaw() ); Ogre::Degree pitchTo( interpolateRot_.getPitch() ); Ogre::Degree rollTo( interpolateRot_.getRoll() ); - + mainNode_->yaw( yawTo / 5.0 , Ogre::Node::TS_PARENT ); mainNode_->pitch( pitchTo / 5.0, Ogre::Node::TS_PARENT ); mainNode_->roll( rollTo / 5.0, Ogre::Node::TS_PARENT ); @@ -309,7 +309,7 @@ // yaw_ += scaledYaw; // pitch_ += scaledPitch; // roll_ += scaledRoll; - + // mainNode_->translate( ( destP- srcP ) / 5.0 ); interpolateVel_ = ( destP-srcP ) / lastFrameCount_ / 1.0; @@ -359,7 +359,7 @@ void SectorObjectMoveable::hitByAmmo( float damage ){ shield_ -= damage; - + if ( shield_ < 0 ){ armor_ += shield_; shield_ = 0.0; @@ -367,7 +367,7 @@ } statusChanged_ = true; } - + bool SectorObjectMoveable::update( Ogre::Real elapsedTime ){ if ( elapsedTime < 0.001 ) return true; @@ -389,19 +389,19 @@ //** friction = drag * v^2; Ogre::Real friction = ethernalDensity_ * dragFactor_ * velocity() * velocity(); - + Ogre::Vector3 trustDir( mainNode_->getOrientation().zAxis() ); Ogre::Vector3 flightDir( vel_ ); flightDir.normalise(); - + //** thrust = mass * acc; acc_ = ( - trustDir * thrust() - flightDir * friction ) / mass_; - + if ( breakPressed_ == true ) { if ( velocity() > 0 ) { acc_ -= flightDir * 4.0; } } - + //** v = a * t; vel_ += acc_ * elapsedTime; mainNode_->translate( ( vel_ + interpolateVel_ )* elapsedTime ); @@ -421,27 +421,27 @@ shield_ += shieldRechargeBaseRate_ * elapsedTime; shield_ = min( maxShield_, shield_ ); - fire( elapsedTime ); + fire( elapsedTime ); //** snap quaternion Ogre::Quaternion rnd( mainNode_->getOrientation() ); mainNode_->setOrientation( round( rnd.w, 5 ), round( rnd.x, 5 ), round( rnd.y, 5 ), round( rnd.z, 5 ) ); - + return true; -} +} void SectorObjectMoveable::inititializ... [truncated message content] |