[Orxonox-commit 5749] r10409 - code/branches/weaponFS15/src/modules/weapons/projectiles

meggiman at orxonox.net meggiman at orxonox.net
Thu Apr 30 16:47:37 CEST 2015


Author: meggiman
Date: 2015-04-30 16:47:36 +0200 (Thu, 30 Apr 2015)
New Revision: 10409

Modified:
   code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBombField.cc
   code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBombField.h
Log:
Started implementing Particle effect. Force Field explodes at end of life.

Modified: code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBombField.cc
===================================================================
--- code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBombField.cc	2015-04-30 14:07:53 UTC (rev 10408)
+++ code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBombField.cc	2015-04-30 14:47:36 UTC (rev 10409)
@@ -11,24 +11,37 @@
 namespace orxonox{
 	RegisterClass(GravityBombField);
 
-	const float GravityBombField::FORCE_FIELD_LIFETIME = 100;
-	const float GravityBombField::FORCE_SPHERE_START_RADIUS = 500;
+	const float GravityBombField::FORCE_FIELD_LIFETIME = 20;
+	const float GravityBombField::FORCE_SPHERE_START_RADIUS = 250;
 	const float GravityBombField::FORCE_SPHERE_START_STRENGTH = -500;
 
-	GravityBombField::GravityBombField(Context* context) : ForceField(context)
+	GravityBombField::GravityBombField(Context* context) : ForceField(context),RadarViewable(this, static_cast<WorldEntity*>(this))
 	{
 		RegisterObject(GravityBombField);
 		lifetime_=FORCE_FIELD_LIFETIME;
+		forceStrength_ = FORCE_SPHERE_START_STRENGTH;
+		forceSphereRadius_ = FORCE_SPHERE_START_RADIUS;
+		fieldExploded_ = false;
+
 		setVelocity(FORCE_SPHERE_START_STRENGTH);
-		setDiameter(FORCE_SPHERE_START_RADIUS);
-		setMode(modeInvertedSphere_s);
+		setDiameter(2*FORCE_SPHERE_START_RADIUS);
+		setMode(modeSphere_s);
 		setCollisionResponse(false);
 
+		this->setRadarObjectColour(ColourValue(0.2, 0.2, 1.0,1)); // Blue
+		this->setRadarObjectShape(RadarViewable::Dot);
+		this->setRadarObjectScale(0.5f);
+
 		//Attach Demo Model for debuging.
 			Model* model = new Model(this->getContext());
 			model->setMeshSource("rocket.mesh"); //Demo Model from SimpleRocket
 			model->scale(0.7f);
 			this->attach(model);
+
+		this->particleSphere_ = new ParticleEmitter(this->getContext());
+		this->attach(this->particleSphere_);
+
+		particleSphere_->setSource("Orxonox/GravityBombField");
 	}
 
 	GravityBombField::~GravityBombField(){}
@@ -37,6 +50,18 @@
 	{
 		SUPER(GravityBombField,tick,dt);
 		lifetime_-=dt;
+		forceStrength_ *= (1+dt/10);
+		if(lifetime_ < 0.2 && !fieldExploded_)
+		{
+			forceStrength_ *= -2;
+			forceSphereRadius_ *= 2;
+			fieldExploded_ = true;
+			orxout(debug_output) << "Field exploded. Inverting Force." << endl;
+		}
+
+		setDiameter(forceSphereRadius_*2);
+		setVelocity(forceStrength_);
+
 		if(lifetime_ < 0)
 		{
 			orxout(debug_output) << "Timeout. Destroying field." << endl;

Modified: code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBombField.h
===================================================================
--- code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBombField.h	2015-04-30 14:07:53 UTC (rev 10408)
+++ code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBombField.h	2015-04-30 14:47:36 UTC (rev 10409)
@@ -15,9 +15,11 @@
 #include "worldentities/MovableEntity.h"
 #include "core/CoreIncludes.h"
 #include "GravityBomb.h"
+#include "graphics/ParticleSpawner.h"
 
+
 namespace orxonox {
-class GravityBombField: public ForceField {
+class GravityBombField: public ForceField, public RadarViewable {
 public:
 	GravityBombField(Context* context);
 	virtual ~GravityBombField();
@@ -31,6 +33,8 @@
 	float forceSphereRadius_;
 	float forceStrength_;
 	float lifetime_;
+	bool fieldExploded_;
+	ParticleEmitter * particleSphere_;
 
 };
 




More information about the Orxonox-commit mailing list