[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