Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 3089


Ignore:
Timestamp:
May 27, 2009, 4:11:31 PM (16 years ago)
Author:
landauf
Message:

merged map branch back to trunk

Location:
code/trunk
Files:
16 edited
10 copied

Legend:

Unmodified
Added
Removed
  • code/trunk

  • code/trunk/archlinux/PKGBUILD

    • Property svn:eol-style set to native
  • code/trunk/src/orxonox/OrxonoxPrereqs.h

    r3087 r3089  
    247247    template <class T>
    248248    class Timer;
     249    class DynamicLines;
     250    class DynamicRenderable;
    249251
    250252    // overlays
     
    269271    class CreateLines;
    270272    class Scoreboard;
     273    class Map;
    271274
    272275    //gui
  • code/trunk/src/orxonox/objects/RadarViewable.cc

    r3064 r3089  
    3535#include "objects/worldentities/WorldEntity.h"
    3636#include "objects/Radar.h"
     37#include "util/String.h"
     38#include <OgreManualObject.h>
     39#include "overlays/map/Map.h"
     40#include "orxonox/tools/DynamicLines.h"
    3741
    3842namespace orxonox
     
    4246    */
    4347    RadarViewable::RadarViewable()
    44         : radarObjectCamouflage_(0.0f)
     48        : MapNode_(NULL)
     49        , MapEntity_(NULL)
     50        , line_(NULL)
     51        , LineNode_(NULL)
     52        , radarObjectCamouflage_(0.0f)
    4553        , radarObjectShape_(Dot)
    4654        , radarObjectDescription_("staticObject")
     
    4957
    5058        this->bVisibility_ = true;
     59        this->isHumanShip_ = false;
     60
     61        this->uniqueId_=getUniqueNumberString();
     62/*
     63        if(Map::getSingletonPtr() && Map::getSingletonPtr()->getMapSceneManagerPtr())
     64        {
     65            this->addEntity();
     66        }
     67
     68        */
     69    }
     70
     71
     72    RadarViewable::~RadarViewable()
     73    {
     74        if (MapNode_)
     75            delete MapNode_;
     76        MapNode_=0;
     77
     78        if (MapEntity_)
     79            delete MapEntity_;
     80        MapEntity_=0;
     81
     82        if (line_)
     83            delete line_;
     84        line_=0;
     85
     86        if (LineNode_)
     87            delete LineNode_;
     88        LineNode_=0;
     89    }
     90
     91    void RadarViewable::addMapEntity()
     92    { //TODO Check shape and add accordantly
     93        if( this->MapNode_ && !this->MapEntity_ && Map::getSingletonPtr() && Map::getSingletonPtr()->getMapSceneManagerPtr() )
     94        {
     95            COUT(0) << "Adding " << this->uniqueId_ << " to Map.\n";
     96            this->MapEntity_ = Map::getSingletonPtr()->getMapSceneManagerPtr()->createEntity( this->uniqueId_, "drone.mesh");
     97            /*this->line_ =  Map::getSingletonPtr()->getMapSceneManagerPtr()->createManualObject(this->uniqueId_ + "_l");
     98            this->line_->begin("Map/line_", Ogre::RenderOperation::OT_LINE_STRIP);
     99            //line_->position(0, -it->getRVWorldPosition().y, 0);
     100            //this->line_->position(0, -20, 0);
     101            this->line_->position(0, 0, -10); //Front Arrow
     102            this->line_->position(0, 0, 0);
     103
     104            this->line_->end(); */
     105            this->line_ = new DynamicLines(Ogre::RenderOperation::OT_LINE_LIST);
     106            this->line_->addPoint( Vector3(0,0,0) );
     107            this->line_->addPoint( Vector3(0,0,0) );
     108
     109            this->MapNode_->attachObject( this->MapEntity_ );
     110
     111            this->LineNode_ = this->MapNode_->createChildSceneNode();
     112            this->LineNode_->attachObject( this->line_ );
     113        }
     114        else
     115        {
     116            COUT(0) << "Unable to load " << this->uniqueId_ << " to Map.\n";
     117        }
     118    }
     119
     120    void RadarViewable::updateMapPosition()
     121    {
     122        if( this->MapNode_ )
     123        {
     124            this->MapNode_->setPosition( this->getRVWorldPosition() );
     125            this->MapNode_->translate( this->getRVOrientedVelocity(), (Ogre::Node::TransformSpace)3 );
     126            this->MapNode_->setOrientation( this->getWorldEntity()->getOrientation() );
     127//Vector3 v = this->getRVWorldPosition();
     128            //this->line_->setPoint(1, Vector3(0,v.y,0) );
     129            this->line_->setPoint(1, Vector3( 0, (int) -Map::getSingletonPtr()->movablePlane_->getDistance( this->getRVWorldPosition() ) ,0 ));
     130            this->line_->update();
     131            if( Map::getSingletonPtr()->playerShipNode_ )
     132                this->LineNode_->setDirection( Map::getSingletonPtr()->playerShipNode_->getLocalAxes().GetColumn(1) ,Ogre::Node::TS_WORLD,Vector3::UNIT_Y);
     133        }
    51134    }
    52135
  • code/trunk/src/orxonox/objects/RadarViewable.h

    r3064 r3089  
    3737#include "core/OrxonoxClass.h"
    3838
     39#include <string>
     40#include <OgreSceneNode.h>
     41#include <OgreEntity.h>
     42#include <OgreManualObject.h>
     43#include "orxonox/tools/DynamicLines.h"
     44
    3945namespace orxonox
    4046{
     
    5258        };
    5359
     60
    5461    public:
    5562        RadarViewable();
    56         virtual ~RadarViewable() { }
     63        virtual ~RadarViewable();
    5764
    5865        inline void setRadarObjectCamouflage(float camouflage)
     
    8592            { return this->radarObjectShape_; }
    8693
     94/*
     95        inline void setMapNode(Ogre::SceneNode * node)
     96            { this->MapNode_ = node; }
     97        inline Ogre::SceneNode * getMapNode() const
     98            { return this->MapNode_; }
     99        inline void setMapEntity(Ogre::Entity * ent)
     100            { this->MapEntity_ = ent; }
     101        inline Ogre::Entity * getMapEntity() const
     102            { return this->MapEntity_; }
     103*/
     104        //Used for Map
     105        Ogre::SceneNode * MapNode_;
     106        Ogre::Entity * MapEntity_;
     107        DynamicLines* line_;
     108        Ogre::SceneNode * LineNode_;
     109        void addMapEntity();
     110        void updateMapPosition();
     111        bool isHumanShip_;
     112        inline std::string getUniqueId()
     113        {
     114            return this->uniqueId_;
     115        }
     116
    87117    private:
    88118        void validate(const WorldEntity* object) const
     
    94124            }
    95125        }
    96        
     126
    97127        bool bVisibility_;
     128        //Map
     129        std::string uniqueId_;
     130
     131
     132        //Radar
    98133        float radarObjectCamouflage_;
    99134        Shape radarObjectShape_;
    100135        std::string radarObjectDescription_;
    101136        ColourValue radarObjectColour_;
     137
    102138    };
    103139}
  • code/trunk/src/orxonox/objects/controllers/HumanController.cc

    r3073 r3089  
    3636#include "objects/gametypes/Gametype.h"
    3737#include "objects/infos/PlayerInfo.h"
     38#include "overlays/map/Map.h"
    3839
    3940namespace orxonox
     
    9394    void HumanController::rotateYaw(const Vector2& value)
    9495    {
     96        //Hack to enable mouselook in map
     97        if ( Map::getSingletonPtr() && Map::getSingletonPtr()->getVisibility() && HumanController::localController_s->controllableEntity_->isInMouseLook() )
     98        {
     99            Map::getSingletonPtr()->rotateYaw(value);
     100            return;
     101        }
    95102        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
    96103            HumanController::localController_s->controllableEntity_->rotateYaw(value);
     
    99106    void HumanController::rotatePitch(const Vector2& value)
    100107    {
     108        //Hack to enable mouselook in map
     109        if ( Map::getSingletonPtr() && Map::getSingletonPtr()->getVisibility() && HumanController::localController_s->controllableEntity_->isInMouseLook() )
     110        {
     111            Map::getSingletonPtr()->rotatePitch(value);
     112            return;
     113        }
    101114        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
    102115            HumanController::localController_s->controllableEntity_->rotatePitch(value);
  • code/trunk/src/orxonox/objects/controllers/HumanController.h

    r3073 r3089  
    7878            }
    7979
     80            //friend class, for mouselook
     81            friend class Map;
     82
    8083        private:
    8184            static HumanController* localController_s;
  • code/trunk/src/orxonox/objects/worldentities/CameraPosition.cc

    r2826 r3089  
    3030#include "CameraPosition.h"
    3131
     32#include <OgreCamera.h>
     33
    3234#include "core/CoreIncludes.h"
    3335#include "core/XMLPort.h"
     
    4547        this->bAllowMouseLook_ = false;
    4648        this->bAbsolute_ = false;
     49        this->bRenderCamera_ = false;
    4750
    4851        this->setObjectMode(0x0);
     
    6063        XMLPortParam(CameraPosition, "mouselook", setAllowMouseLook, getAllowMouseLook, xmlelement, mode).defaultValues(false);
    6164        XMLPortParam(CameraPosition, "absolute", setIsAbsolute, getIsAbsolute, xmlelement, mode).defaultValues(false);
     65        XMLPortParam(CameraPosition, "rendercamera", setRenderCamera, getRenderCamera, xmlelement, mode).defaultValues(false);
    6266    }
    6367
     
    7276            camera->setDrag(true);
    7377    }
     78
     79    void CameraPosition::attachCamera(Ogre::Camera* camera)
     80    {
     81        this->attachOgreObject(camera);
     82    }
    7483}
  • code/trunk/src/orxonox/objects/worldentities/CameraPosition.h

    r2826 r3089  
    5959                { return this->bAbsolute_; }
    6060
     61            inline void setRenderCamera(bool bRenderCamera)
     62                { this->bRenderCamera_ = bRenderCamera; }
     63            inline bool getRenderCamera() const
     64                { return this->bRenderCamera_; }
     65
    6166            void attachCamera(Camera* camera);
     67            void attachCamera(Ogre::Camera* camera);
    6268
    6369        private:
     
    6571            bool bAllowMouseLook_;
    6672            bool bAbsolute_;
     73            bool bRenderCamera_;
    6774    };
    6875}
  • code/trunk/src/orxonox/objects/worldentities/ControllableEntity.cc

    r3084 r3089  
    6363        this->camera_ = 0;
    6464        this->xmlcontroller_ = 0;
     65        this->reverseCamera_ = 0;
    6566        this->bDestroyWhenPlayerLeft_ = false;
    6667        this->cameraPositionRootNode_ = this->node_->createChildSceneNode();
     
    143144                parent->attach(position);
    144145        }
    145         this->cameraPositions_.push_back(position);
     146
     147        if (!position->getRenderCamera())
     148            this->cameraPositions_.push_back(position);
     149        else
     150            this->setReverseCamera(position);
    146151    }
    147152
  • code/trunk/src/orxonox/objects/worldentities/ControllableEntity.h

    r3073 r3089  
    107107            inline const std::string& getCameraPositionTemkplate() const
    108108                { return this->cameraPositionTemplate_; }
     109
     110            inline void setReverseCamera(CameraPosition* camera)
     111                { this->reverseCamera_ = camera; }
     112            inline CameraPosition* getReverseCamera() const
     113                { return this->reverseCamera_; }
    109114
    110115            using WorldEntity::setPosition;
     
    192197            std::string cameraPositionTemplate_;
    193198            Controller* xmlcontroller_;
     199            CameraPosition* reverseCamera_;
    194200    };
    195201}
  • code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.cc

    r3087 r3089  
    8686
    8787        this->registerVariables();
     88
     89        this->isHumanShip_ = this->hasLocalController();
    8890    }
    8991
     
    365367    }
    366368
     369    //Tell the Map (RadarViewable), if this is a playership
     370    void Pawn::startLocalHumanControl()
     371    {
     372//        SUPER(ControllableEntity, changedPlayer());
     373        ControllableEntity::startLocalHumanControl();
     374        this->isHumanShip_ = true;
     375    }
     376
    367377
    368378    ///////////////////
  • code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.h

    r3087 r3089  
    112112            virtual void useItem()
    113113                { this->pickups_.useItem(); }
     114           
     115            virtual void startLocalHumanControl();
    114116
    115117        protected:
  • code/trunk/src/orxonox/overlays/CMakeLists.txt

    r2957 r3089  
    99ADD_SUBDIRECTORY(debug)
    1010ADD_SUBDIRECTORY(hud)
     11ADD_SUBDIRECTORY(map)
    1112ADD_SUBDIRECTORY(notifications)
    1213ADD_SUBDIRECTORY(stats)
  • code/trunk/src/orxonox/overlays/map/CMakeLists.txt

    • Property svn:eol-style set to native
  • code/trunk/src/orxonox/overlays/map/Map.cc

    • Property svn:eol-style set to native
    r3087 r3089  
    2626#include "OrxonoxStableHeaders.h"
    2727#include "Map.h"
    28  
     28
    2929#include <string>
    3030#include "util/String.h"
     
    5757#include "objects/RadarViewable.h"
    5858#include "objects/controllers/HumanController.h"
    59  
     59
    6060 namespace orxonox
    6161 {
     
    7979        RegisterObject(Map);
    8080        Map::singletonMap_s=this;
    81        
     81
    8282        //Getting Scene Manager (Hack)
    8383        if( !sManager_ )
     
    9090            Map::setMapSceneManager( Ogre::Root::getSingletonPtr()->createSceneManager( Ogre::ST_GENERIC,"MapScene" ) );
    9191        }
    92        
     92
    9393        this->playerShipNode_ = 0;
    9494        //this->sNode_ = new Ogre::SceneNode(sManager_);
     
    9696        //overlay_ = oManager_->create("Map");
    9797        //overlay_ is member of OrxonoxOverlay
    98        
     98
    9999        //Not Showing the map as default
    100100        //this->isVisible_=false;
     
    104104        //TestEntity
    105105        //Ogre::Entity * ent = mapSceneM_s->createEntity("ent", "drone.mesh");
    106        
     106
    107107        //Map::getMapSceneManager()->getRootSceneNode()->attachObject( ent );
    108108        /*sNode_->setPosition(0,0,-50);
    109109        overlay_->add3D(sNode_);
    110110        */
    111        
    112        
    113        
    114 
    115        
     111
     112
     113
     114
     115
    116116        // Alter the camera aspect ratio to match the viewport
    117117        //mCamera->setAspectRatio(Real(vp->getActualWidth()) / Real(vp->getActualHeight()));
     
    122122        //Cam_->setRenderingDistance(0);
    123123        CamNode_ = Map::getMapSceneManager()->getRootSceneNode()->createChildSceneNode();
    124        
     124
    125125
    126126        //Create overlay material
     
    148148/*
    149149        Ogre::Overlay* pOverlay = Ogre::OverlayManager::getSingleton().create("Overlay1");
    150        
     150
    151151        // Create a panel with RenderToTexture texture
    152152        Ogre::OverlayContainer* m_pOverlayPanel = static_cast<Ogre::OverlayContainer*>(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel","OverlayPanelName%d"));
     
    155155        m_pOverlayPanel->setDimensions(500, 300);
    156156        // Give overlay a texture
    157         m_pOverlayPanel->setMaterialName(camMat_id); 
     157        m_pOverlayPanel->setMaterialName(camMat_id);
    158158        pOverlay->add2D(m_pOverlayPanel);
    159159        pOverlay->show();
     
    165165        m_pOverlayPanel->setDimensions(600, 400);
    166166        // Give overlay a texture
    167         m_pOverlayPanel->setMaterialName(camMat_id); 
     167        m_pOverlayPanel->setMaterialName(camMat_id);
    168168        overlay_->add2D(m_pOverlayPanel);
    169169
    170170        //Add Borders
    171         Ogre::BorderPanelOverlayElement* oBorder = static_cast<Ogre::BorderPanelOverlayElement*>(Ogre::OverlayManager::getSingletonPtr()->createOverlayElement("BorderPanel", "MapBorderPanel" + getUniqueNumberString()));
     171//        Ogre::BorderPanelOverlayElement* oBorder = static_cast<Ogre::BorderPanelOverlayElement*>(Ogre::OverlayManager::getSingletonPtr()->createOverlayElement("BorderPanel", "MapBorderPanel" + getUniqueNumberString()));
    172172/*
    173173//TODO border size
     
    201201        plane_ent->setMaterialName("Map/Grid");
    202202        planeNode_->attachObject(plane_ent);
    203        
     203
    204204        planeNode_->scale(10,1,10);
    205205//        planeNode_->attachObject(movablePlane_);
    206206        //Ogre::Material plane_mat = Ogre::MaterialManager::getSingletonPtr()->getByName("rock");
    207        
     207
    208208
    209209        //ToDo create material script
    210         Ogre::MaterialPtr myManualObjectMaterial = Ogre::MaterialManager::getSingleton().create("Map/Line","General"); 
    211         myManualObjectMaterial->setReceiveShadows(false); 
    212         myManualObjectMaterial->getTechnique(0)->setLightingEnabled(true); 
    213         myManualObjectMaterial->getTechnique(0)->getPass(0)->setDiffuse(1,1,0,0); 
    214         myManualObjectMaterial->getTechnique(0)->getPass(0)->setAmbient(1,1,0); 
     210        Ogre::MaterialPtr myManualObjectMaterial = Ogre::MaterialManager::getSingleton().create("Map/Line","General");
     211        myManualObjectMaterial->setReceiveShadows(false);
     212        myManualObjectMaterial->getTechnique(0)->setLightingEnabled(true);
     213        myManualObjectMaterial->getTechnique(0)->getPass(0)->setDiffuse(1,1,0,0);
     214        myManualObjectMaterial->getTechnique(0)->getPass(0)->setAmbient(1,1,0);
    215215        myManualObjectMaterial->getTechnique(0)->getPass(0)->setSelfIllumination(1,1,0);
    216216
     
    306306            }
    307307            it->updateMapPosition();
    308            
    309 
    310 
    311 
    312            
    313            
    314         }
    315     }
    316    
    317 
    318    
     308
     309
     310
     311
     312
     313
     314        }
     315    }
     316
     317
     318
    319319    void Map::XMLPort(Element& xmlElement, XMLPort::Mode mode)
    320320    {
    321321        SUPER(Map, XMLPort, xmlElement, mode);
    322     }   
     322    }
    323323
    324324    void Map::changedOwner()
    325325    {
     326        SUPER(Map, changedOwner);
    326327        //COUT(0) << "shipptr" << this->getOwner()->getReverseCamera() << std::endl;
    327         if(this->getOwner()->getReverseCamera())
     328
     329        ControllableEntity* entity = dynamic_cast<ControllableEntity*>(this->getOwner());
     330        if(entity && entity->getReverseCamera())
    328331        {
    329332            //COUT(0) << "foo";
    330             this->getOwner()->getReverseCamera()->attachCamera(this->Cam_);
     333            entity->getReverseCamera()->attachCamera(this->Cam_);
    331334        }
    332335    }
     
    351354        }
    352355    }
    353    
     356
    354357    //Static function to toggle visibility of the map
    355358    void Map::openMap()
     
    365368        }
    366369    }
    367    
     370
    368371    void Map::tick(float dt)
    369372    {
     
    375378            updatePositions();
    376379        //Cam_->roll(Degree(1));
    377        
     380
    378381    }
    379382
     
    403406*/
    404407        singletonMap_s->CamNode_->pitch( (Degree)(value.y * singletonMap_s->mouseLookSpeed_), Ogre::Node::TS_LOCAL);
    405        
    406     }
    407    
     408
     409    }
     410
    408411    void Map::Zoom(const Vector2& value)
    409412    {
  • code/trunk/src/orxonox/overlays/map/Map.h

    • Property svn:eol-style set to native
    r3087 r3089  
    6262
    6363        static Ogre::MaterialPtr createRenderCamera(Ogre::Camera * cam, std::string matName);
    64        
     64
    6565        static void openMap();
    6666
     
    9292
    9393
    94        
     94
    9595    private: // functions
    9696
     
    118118        int mouseLookSpeed_;
    119119        bool isVisible_;
    120      
     120
    121121    friend class RadarViewable;
    122122    };
  • code/trunk/src/orxonox/tools/CMakeLists.txt

    r2896 r3089  
    88  Timer.cc
    99  WindowEventListener.cc
     10  DynamicLines.cpp
     11  DynamicRenderable.cpp
    1012)
  • code/trunk/src/orxonox/tools/DynamicLines.cpp

    • Property svn:eol-style set to native
    r3087 r3089  
    66using namespace Ogre;
    77
     8namespace orxonox
     9{
    810enum {
    911  POSITION_BINDING,
     
    8183  prepareHardwareBuffers(size,0);
    8284
    83   if (!size) { 
     85  if (!size) {
    8486    mBox.setExtents(Vector3::ZERO,Vector3::ZERO);
    8587    mDirty=false;
    8688    return;
    8789  }
    88  
     90
    8991  Vector3 vaabMin = mPoints[0];
    9092  Vector3 vaabMax = mPoints[0];
     
    141143}
    142144*/
     145}
  • code/trunk/src/orxonox/tools/DynamicLines.h

    • Property svn:eol-style set to native
    r3087 r3089  
    55#include <vector>
    66
    7 
     7namespace orxonox
     8{
    89class DynamicLines : public DynamicRenderable
    910{
     
    3637  void clear();
    3738
    38   /// Call this to update the hardware buffer after making changes. 
     39  /// Call this to update the hardware buffer after making changes.
    3940  void update();
    4041
    4142  /** Set the type of operation to draw with.
    42    * @param opType Can be one of 
     43   * @param opType Can be one of
    4344   *    - RenderOperation::OT_LINE_STRIP
    4445   *    - RenderOperation::OT_LINE_LIST
     
    6263  bool mDirty;
    6364};
    64 
     65}
    6566
    6667#endif
  • code/trunk/src/orxonox/tools/DynamicRenderable.cpp

    • Property svn:eol-style set to native
    r3087 r3089  
    55using namespace Ogre;
    66
     7namespace orxonox
     8{
    79DynamicRenderable::DynamicRenderable()
    810{
     
    3335}
    3436
    35 void DynamicRenderable::prepareHardwareBuffers(size_t vertexCount, 
     37void DynamicRenderable::prepareHardwareBuffers(size_t vertexCount,
    3638                                               size_t indexCount)
    3739{
     
    5759      newVertCapacity >>= 1;
    5860  }
    59   if (newVertCapacity != mVertexBufferCapacity) 
     61  if (newVertCapacity != mVertexBufferCapacity)
    6062  {
    6163    mVertexBufferCapacity = newVertCapacity;
     
    9496
    9597    }
    96     else if (indexCount < newIndexCapacity>>1) 
     98    else if (indexCount < newIndexCapacity>>1)
    9799    {
    98100      // Make capacity the previous power of two
     
    132134   return vDist.squaredLength();
    133135}
     136}
  • code/trunk/src/orxonox/tools/DynamicRenderable.h

    • Property svn:eol-style set to native
    r3087 r3089  
    44#include <OgreSimpleRenderable.h>
    55
     6namespace orxonox
     7{
    68/// Abstract base class providing mechanisms for dynamically growing hardware buffers.
    79class DynamicRenderable : public Ogre::SimpleRenderable
     
    6668  virtual void fillHardwareBuffers() = 0;
    6769};
     70}
    6871
    6972#endif // DYNAMIC_RENDERABLE_H
  • code/trunk/src/util/CMakeLists.txt

    r2855 r3089  
    3838  UtilPrereqs.h
    3939  mbool.h
    40 
     40 
    4141  Clipboard.cc
    4242  CRC32.cc
  • code/trunk/src/util/SubString.cc

    r2171 r3089  
    3939
    4040#include "SubString.h"
     41#include <stdio.h>
    4142
    4243namespace orxonox
Note: See TracChangeset for help on using the changeset viewer.