[Orxonox-commit 4766] r9435 - code/branches/spaceNavigation/src/modules/overlays/hud
mottetb at orxonox.net
mottetb at orxonox.net
Mon Nov 5 16:11:29 CET 2012
Author: mottetb
Date: 2012-11-05 16:11:29 +0100 (Mon, 05 Nov 2012)
New Revision: 9435
Removed:
code/branches/spaceNavigation/src/modules/overlays/hud/HUDAimAssistant.cc
code/branches/spaceNavigation/src/modules/overlays/hud/HUDAimAssistant.h
Log:
Removed old files
Deleted: code/branches/spaceNavigation/src/modules/overlays/hud/HUDAimAssistant.cc
===================================================================
--- code/branches/spaceNavigation/src/modules/overlays/hud/HUDAimAssistant.cc 2012-11-05 15:06:21 UTC (rev 9434)
+++ code/branches/spaceNavigation/src/modules/overlays/hud/HUDAimAssistant.cc 2012-11-05 15:11:29 UTC (rev 9435)
@@ -1,285 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Baptiste Mottet
- * Co-authors:
- * ...
- *
- */
-
-
-
-#include "HUDAimAssistant.h"
-
-#include <OgreCamera.h>
-#include <OgreFontManager.h>
-#include <OgreOverlayManager.h>
-#include <OgreTextAreaOverlayElement.h>
-#include <OgrePanelOverlayElement.h>
-
-#include "util/Math.h"
-#include "util/Convert.h"
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "CameraManager.h"
-#include "Scene.h"
-#include "Radar.h"
-#include "graphics/Camera.h"
-#include "controllers/HumanController.h"
-#include "worldentities/pawns/Pawn.h"
-#include "worldentities/WorldEntity.h"
-#include "core/ConfigValueIncludes.h"
-#include "tools/TextureGenerator.h"
-
-namespace orxonox
-{
- CreateFactory ( HUDAimAssistant );
-
- static bool compareDistance(std::pair<RadarViewable*, unsigned int> a, std::pair<RadarViewable*, unsigned int> b)
- {
- return a.second < b.second;
- }
-
-
- HUDAimAssistant::HUDAimAssistant(BaseObject* creator) : OrxonoxOverlay(creator)
- {
- RegisterObject(HUDAimAssistant);
- this->setConfigValues();
-
- // Set default values
- this->setPointerSize(0.03f);
- this->setDetectionLimit(10000.0f);
- }
-
- HUDAimAssistant::~HUDAimAssistant()
- {
- if (this->isInitialized())
- {
- for (std::map<RadarViewable*, ObjectInfo>::iterator it = this->activeObjectList_.begin(); it != this->activeObjectList_.end();)
- removeObject((it++)->first);
- }
- this->sortedObjectList_.clear();
- }
-
- void HUDAimAssistant::setConfigValues()
- {
- SetConfigValue(markerLimit_, 3);
- }
-
- void HUDAimAssistant::XMLPort(Element& xmlelement, XMLPort::Mode mode)
- {
- SUPER(HUDAimAssistant, XMLPort, xmlelement, mode);
-
- XMLPortParam(HUDAimAssistant, "pointerSize", setPointerSize, getPointerSize, xmlelement, mode);
- XMLPortParam(HUDAimAssistant, "detectionLimit", setDetectionLimit, getDetectionLimit, xmlelement, mode);
- }
-
- void HUDAimAssistant::tick(float dt)
- {
- SUPER(HUDAimAssistant, tick, dt);
-
- Camera* cam = CameraManager::getInstance().getActiveCamera();
- if (cam == NULL)
- return;
- const Matrix4& camTransform = cam->getOgreCamera()->getProjectionMatrix() * cam->getOgreCamera()->getViewMatrix();
-
-
- for (std::list<std::pair<RadarViewable*, unsigned int> >::iterator listIt = this->sortedObjectList_.begin(); listIt != this->sortedObjectList_.end(); ++listIt)
- listIt->second = (int)((listIt->first->getRVWorldPosition() - HumanController::getLocalControllerSingleton()->getControllableEntity()->getWorldPosition()).length() + 0.5f);
-
- this->sortedObjectList_.sort(compareDistance);
-
- unsigned int markerCount = 0;
- bool closeEnough = false; // only display objects that are close enough to be relevant for the player
-
- for (std::list<std::pair<RadarViewable*, unsigned int> >::iterator listIt = this->sortedObjectList_.begin(); listIt != this->sortedObjectList_.end(); ++markerCount, ++listIt)
- {
- std::map<RadarViewable*, ObjectInfo>::iterator it = this->activeObjectList_.find(listIt->first);
- closeEnough = listIt->second < this->detectionLimit_;
- // display radarviewables on HUD if the marker limit and max-distance is not exceeded
- if (markerCount < this->markerLimit_ && (closeEnough || this->detectionLimit_ < 0))
- {
- // Get Distance to HumanController and save it in the TextAreaOverlayElement.
- int dist = listIt->second;
- float textLength = 0.0f;
-
- // Transform to screen coordinates
- Vector3 pos = camTransform * it->first->getRVWorldPosition();
-
- bool outOfView = true;
- if (pos.z > 1.0)
- {
- // z > 1.0 means that the object is behind the camera
- outOfView = true;
- // we have to switch all coordinates (if you don't know why,
- // try linear algebra lectures, because I can't explain..)
- pos.x = -pos.x;
- pos.y = -pos.y;
- }
- else
- outOfView = pos.x < -1.0 || pos.x > 1.0 || pos.y < -1.0 || pos.y > 1.0;
-
- if (outOfView)
- {
- // Object is not in view
-
- // Hide if outOfView changed
- if (!it->second.wasOutOfView_)
- {
- it->second.panel_->hide();
- it->second.wasOutOfView_ = true;
- }
-
- }
- else
- {
- // Object is in view
-
- // Change material only if outOfView changed
- if (it->second.wasOutOfView_)
- {
- //it->second.panel_->setMaterialName("Orxonox/NavTDC");
- it->second.panel_->setMaterialName(TextureGenerator::getMaterialName("aimassistant.png", it->first->getRadarObjectColour()));
- it->second.panel_->setDimensions(this->pointerSize_ * this->getActualSize().x, this->pointerSize_ * this->getActualSize().y);
- it->second.wasOutOfView_ = false;
- }
-
- // Position marker
- it->second.panel_->setUV(0.0f, 0.0f, 1.0f, 1.0f);
- it->second.panel_->setLeft((pos.x + 1.0f - it->second.panel_->getWidth()) * 0.5f);
- it->second.panel_->setTop((-pos.y + 1.0f - it->second.panel_->getHeight()) * 0.5f);
- }
-
- // Make sure the overlays are shown
- it->second.panel_->show();
- }
- else // do not display on HUD
- {
- it->second.panel_->hide();
- }
- }
- }
-
- /** Overridden method of OrxonoxOverlay.
- @details
- Usually the entire overlay scales with scale().
- Here we obviously have to adjust this.
- */
- void HUDAimAssistant::sizeChanged()
- {
- // Use size to compensate for aspect ratio if enabled.
- float xScale = this->getActualSize().x;
- float yScale = this->getActualSize().y;
-
- for (std::map<RadarViewable*, ObjectInfo>::iterator it = this->activeObjectList_.begin(); it != this->activeObjectList_.end(); ++it)
- {
- if (it->second.panel_ != NULL)
- it->second.panel_->setDimensions(this->pointerSize_ * xScale, this->pointerSize_ * yScale);
- }
- }
-
- void HUDAimAssistant::addObject(RadarViewable* object)
- {
- if (showObject(object) == false)
- return;
-
- if (this->activeObjectList_.size() >= this->markerLimit_)
- if (object == NULL)
- return;
-
- // Object hasn't been added yet (we know that)
- assert(this->activeObjectList_.find(object) == this->activeObjectList_.end());
-
- // Scales used for dimensions and text size
- float xScale = this->getActualSize().x;
- float yScale = this->getActualSize().y;
-
- // Create everything needed to display the object on the radar and add it to the map
-
- // Create arrow/marker
- Ogre::PanelOverlayElement* panel = static_cast<Ogre::PanelOverlayElement*>( Ogre::OverlayManager::getSingleton()
- .createOverlayElement("Panel", "HUDAimAssistant_pointer_" + getUniqueNumberString()));
- //panel->setMaterialName("Orxonox/NavTDC");
- panel->setMaterialName(TextureGenerator::getMaterialName("tdc.png", object->getRadarObjectColour()));
- panel->setDimensions(this->pointerSize_ * xScale, this->pointerSize_ * yScale);
- //panel->setColour(object->getRadarObjectColour());
-
-
- ObjectInfo tempStruct = {panel, false /*, TODO: initialize wasOutOfView_ */};
- this->activeObjectList_[object] = tempStruct;
-
- this->background_->addChild(panel);
-
- this->sortedObjectList_.push_front(std::make_pair(object, (unsigned int)0));
- }
-
- void HUDAimAssistant::removeObject(RadarViewable* viewable)
- {
- std::map<RadarViewable*, ObjectInfo>::iterator it = this->activeObjectList_.find(viewable);
-
- if (this->activeObjectList_.find(viewable) != this->activeObjectList_.end())
- {
- // Detach overlays
- this->background_->removeChild(it->second.panel_->getName());
- // Properly destroy the overlay elements (do not use delete!)
- Ogre::OverlayManager::getSingleton().destroyOverlayElement(it->second.panel_);
- // Remove from the list
- this->activeObjectList_.erase(viewable);
- }
-
- for (std::list<std::pair<RadarViewable*, unsigned int> >::iterator listIt = this->sortedObjectList_.begin(); listIt != this->sortedObjectList_.end(); ++listIt)
- {
- if ((listIt->first) == viewable)
- {
- this->sortedObjectList_.erase(listIt);
- break;
- }
- }
- }
-
- void HUDAimAssistant::objectChanged(RadarViewable* viewable)
- {
- // TODO: niceification neccessary ;)
- removeObject(viewable);
- addObject(viewable);
- }
-
- bool HUDAimAssistant::showObject(RadarViewable* rv)
- {
- if (rv == orxonox_cast<RadarViewable*>(this->getOwner()))
- return false;
- assert(rv->getWorldEntity());
- if (rv->getWorldEntity()->isVisible() == false || rv->getRadarVisibility() == false)
- return false;
- return true;
- }
-
- void HUDAimAssistant::changedOwner()
- {
- const std::set<RadarViewable*>& respawnObjects = this->getOwner()->getScene()->getRadar()->getRadarObjects();
- for (std::set<RadarViewable*>::const_iterator it = respawnObjects.begin(); it != respawnObjects.end(); ++it)
- {
- if (!(*it)->isHumanShip_)
- this->addObject(*it);
- }
- }
-}
Deleted: code/branches/spaceNavigation/src/modules/overlays/hud/HUDAimAssistant.h
===================================================================
--- code/branches/spaceNavigation/src/modules/overlays/hud/HUDAimAssistant.h 2012-11-05 15:06:21 UTC (rev 9434)
+++ code/branches/spaceNavigation/src/modules/overlays/hud/HUDAimAssistant.h 2012-11-05 15:11:29 UTC (rev 9435)
@@ -1,85 +0,0 @@
-/*
- * HUDAimAssistant.h
- *
- * Created on: Oct 15, 2012
- * Author: mottetb
- */
-
-#ifndef HUDAIMASSISTANT_H_
-#define HUDAIMASSISTANT_H_
-
-#include "overlays/OverlaysPrereqs.h"
-
-#include <map>
-#include <string>
-
-#include "util/OgreForwardRefs.h"
-#include "tools/interfaces/Tickable.h"
-#include "interfaces/RadarListener.h"
-#include "overlays/OrxonoxOverlay.h"
-
-namespace orxonox
-{
-
- class HUDAimAssistant : public OrxonoxOverlay, public Tickable, public RadarListener
- {
- public:
- HUDAimAssistant(BaseObject* creator);
- virtual ~HUDAimAssistant();
-
- void setConfigValues();
-
- virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
- virtual void tick(float dt);
-
- // RadarListener interface
- virtual void addObject(RadarViewable* object);
- virtual void removeObject(RadarViewable* viewable);
- virtual void objectChanged(RadarViewable* viewable);
-
- virtual void changedOwner();
- virtual void sizeChanged();
- virtual void angleChanged() { }
- virtual void positionChanged() { }
- virtual void radarTick(float dt) {}
-
- inline float getRadarSensitivity() const
- { return 1.0f; }
-
- inline unsigned int getMarkerLimit() const
- { return this->markerLimit_; }
-
- private:
- struct ObjectInfo
- {
- Ogre::PanelOverlayElement* panel_;
- bool outOfView_;
- bool wasOutOfView_;
- };
-
- bool showObject(RadarViewable* rv);
-
- // XMLPort accessors
- inline void setPointerSize(float size)
- {
- pointerSize_ = size;
- this->sizeChanged();
- }
- inline float getPointerSize() const
- { return pointerSize_; }
- inline void setDetectionLimit(float limit)
- { this->detectionLimit_ = limit; }
- inline float getDetectionLimit() const
- { return this->detectionLimit_; }
-
- std::map<RadarViewable*, ObjectInfo> activeObjectList_;
- std::list<std::pair<RadarViewable*, unsigned int> > sortedObjectList_;
-
- float pointerSize_;
- unsigned int markerLimit_;
- float detectionLimit_; //!< Objects that are more far away than detectionLimit_ are not displayed on the HUD. 10000.0f is the default value.
- };
-
-}
-
-#endif /* HUDAIMASSISTANT_H_ */
More information about the Orxonox-commit
mailing list