[Orxonox-commit 3423] r8110 - code/branches/spaceboundaries/src/orxonox/worldentities
kmaurus at orxonox.net
kmaurus at orxonox.net
Thu Mar 24 16:16:55 CET 2011
Author: kmaurus
Date: 2011-03-24 16:16:54 +0100 (Thu, 24 Mar 2011)
New Revision: 8110
Modified:
code/branches/spaceboundaries/src/orxonox/worldentities/CMakeLists.txt
code/branches/spaceboundaries/src/orxonox/worldentities/SpaceBoundaries.cc
code/branches/spaceboundaries/src/orxonox/worldentities/SpaceBoundaries.h
Log:
Iteratorschleife aller MobileEntities sowie Funktion zum Berechnen des Abstandes einer MobileEntity vom Zentrun erstellt
Modified: code/branches/spaceboundaries/src/orxonox/worldentities/CMakeLists.txt
===================================================================
--- code/branches/spaceboundaries/src/orxonox/worldentities/CMakeLists.txt 2011-03-24 15:05:21 UTC (rev 8109)
+++ code/branches/spaceboundaries/src/orxonox/worldentities/CMakeLists.txt 2011-03-24 15:16:54 UTC (rev 8110)
@@ -11,6 +11,7 @@
CameraPosition.cc
SpawnPoint.cc
TeamSpawnPoint.cc
+ SpaceBoundaries.cc
)
ADD_SUBDIRECTORY(pawns)
Modified: code/branches/spaceboundaries/src/orxonox/worldentities/SpaceBoundaries.cc
===================================================================
--- code/branches/spaceboundaries/src/orxonox/worldentities/SpaceBoundaries.cc 2011-03-24 15:05:21 UTC (rev 8109)
+++ code/branches/spaceboundaries/src/orxonox/worldentities/SpaceBoundaries.cc 2011-03-24 15:16:54 UTC (rev 8110)
@@ -29,13 +29,14 @@
#include "SpaceBoundaries.h"
/* Folgender Block ist Copy-Paste und somit teilweise wohl unnoetig */
-#include "core/CoreIncludes.h"
#include "core/Template.h"
#include "core/XMLPort.h"
#include "gametypes/Gametype.h"
#include "worldentities/pawns/Pawn.h"
/* Eigene, spezifische include-Statements*/
+#include "worldentities/MobileEntity.h"
+#include "core/ObjectListIterator.h"
namespace orxonox
{
@@ -44,18 +45,94 @@
SpaceBoundaries::SpaceBoundaries(BaseObject* creator) : StaticEntity(creator)
{
RegisterObject(SpaceBoundaries);
+
+ // Show Boundaries on the radar.
}
-
SpaceBoundaries::~SpaceBoundaries()
{
}
+
+ void SpaceBoundaries::setCenter(Vector3 r)
+ {
+ this->center = r;
+ }
+ Vector3 SpaceBoundaries::getCenter()
+ {
+ return this->center;
+ }
+
+ void SpaceBoundaries::setMaxDistance(float r)
+ {
+ this->maxDistance = r;
+ }
+ float SpaceBoundaries::getMaxDistance()
+ {
+ return this->maxDistance;
+ }
+
+ void SpaceBoundaries::setWarnDistance(float r)
+ {
+ this->warnDistance = r;
+ }
+ float SpaceBoundaries::getWarnDistance()
+ {
+ return this->warnDistance;
+ }
void SpaceBoundaries::XMLPort(Element& xmlelement, XMLPort::Mode mode)
{
- // SUPER(SpaceBoundaries, XMLPort, xmlelement, mode);
+ SUPER(SpaceBoundaries, XMLPort, xmlelement, mode);
- // XMLPortParam(SpaceBoundaries, "spawnclass", setSpawnClassName, getSpawnClassName, xmlelement, mode);
- // XMLPortParam(SpaceBoundaries, "pawndesign", setTemplateName, getTemplateName, xmlelement, mode);
+ XMLPortParam(SpaceBoundaries, "center", setCenter, getCenter, xmlelement, mode);
+ XMLPortParam(SpaceBoundaries, "maxDistance", setMaxDistance, getMaxDistance, xmlelement, mode);
+ XMLPortParam(SpaceBoundaries, "warnDistance", setWarnDistance, getWarnDistance, xmlelement, mode);
}
+
+ void SpaceBoundaries::tick(float dt)
+ {
+ for(ObjectListIterator<MobileEntity> item = ObjectList<MobileEntity>::begin(); item != ObjectList<MobileEntity>::end(); ++item)
+ {
+ float distance = computeDistance((WorldEntity *)&item); // fuer casts gibt's scheinbar andere, neuere Variante --> vgl. Coding-Guide und andere Files
+ if(distance > this->warnDistance && distance < this->maxDistance)
+ {
+ COUT(0) << "You are leaving the area" << std::endl; //!< message for debugging
+ // Display Warning on Screen if the humanPlayer (infos/PlayerInfo.h) is leaving the area
+ } else if(distance > maxDistance)
+ {
+ // Decrease Health
+ }
+ }
+ }
+
+ float SpaceBoundaries::computeDistance(WorldEntity *item)
+ {
+ Vector3 itemPosition = item->getPosition();
+ return (itemPosition.distance(center));
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
}
Modified: code/branches/spaceboundaries/src/orxonox/worldentities/SpaceBoundaries.h
===================================================================
--- code/branches/spaceboundaries/src/orxonox/worldentities/SpaceBoundaries.h 2011-03-24 15:05:21 UTC (rev 8109)
+++ code/branches/spaceboundaries/src/orxonox/worldentities/SpaceBoundaries.h 2011-03-24 15:16:54 UTC (rev 8110)
@@ -33,24 +33,41 @@
#include "OrxonoxPrereqs.h"
#include <string>
#include "core/SubclassIdentifier.h"
-#include "worldentities/StaticEntity.h"
/* Einige, spezifische include-Statements */
+#include "core/CoreIncludes.h"
+#include "tools/interfaces/Tickable.h"
+#include "worldentities/StaticEntity.h"
+#include "worldentities/WorldEntity.h"
-
namespace orxonox
{
class _OrxonoxExport SpaceBoundaries : public StaticEntity, public Tickable
{
public:
SpaceBoundaries(BaseObject* creator);
- virtual ~SpaceBoundaries() {}
+ ~SpaceBoundaries();
+
+ void setCenter(Vector3 r);
+ Vector3 getCenter();
+
+ void setMaxDistance(float r);
+ float getMaxDistance();
+
+ void setWarnDistance(float r);
+ float getWarnDistance();
- virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+ void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+ void tick(float dt);
private:
+ Vector3 center;
+ float maxDistance;
+ float warnDistance;
+ float computeDistance(WorldEntity *item); //!< Auf den Mittelpunkt 'center' bezogen.
};
}
More information about the Orxonox-commit
mailing list