[Orxonox-commit 7669] r12262 - in code/branches/Boxhead_FS19/src/modules/weapons: projectiles weaponmodes
cwaupoti at orxonox.net
cwaupoti at orxonox.net
Thu Mar 28 17:00:18 CET 2019
Author: cwaupoti
Date: 2019-03-28 17:00:18 +0100 (Thu, 28 Mar 2019)
New Revision: 12262
Added:
code/branches/Boxhead_FS19/src/modules/weapons/projectiles/HoverGunProjectile.cc
code/branches/Boxhead_FS19/src/modules/weapons/projectiles/HoverGunProjectile.h
code/branches/Boxhead_FS19/src/modules/weapons/weaponmodes/HoverGun.cc
code/branches/Boxhead_FS19/src/modules/weapons/weaponmodes/HoverGun.h
Log:
created HoverGun, but file is not working yet
Added: code/branches/Boxhead_FS19/src/modules/weapons/projectiles/HoverGunProjectile.cc
===================================================================
--- code/branches/Boxhead_FS19/src/modules/weapons/projectiles/HoverGunProjectile.cc (rev 0)
+++ code/branches/Boxhead_FS19/src/modules/weapons/projectiles/HoverGunProjectile.cc 2019-03-28 16:00:18 UTC (rev 12262)
@@ -0,0 +1,101 @@
+/*
+ * 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:
+ * Fabian 'x3n' Landau
+ * Co-authors:
+ * simonmie
+ *
+ */
+
+/**
+ @file Projectile.h
+ @brief Implementation of the Projectile class.
+*/
+
+#include "HoverGunProjectile.h"
+
+#include "core/config/ConfigValueIncludes.h"
+#include "core/CoreIncludes.h"
+#include "core/GameMode.h"
+#include "core/command/Executor.h"
+
+#include "worldentities/pawns/Pawn.h"
+
+namespace orxonox
+{
+ RegisterClass(HoverGunProjectile);
+
+ HoverGunProjectile::HoverGunProjectile(Context* context) : MovableEntity(context), BasicProjectile()
+ {
+ RegisterObject(HoverGunProjectile);
+
+ this->setConfigValues();
+
+ // Get notification about collisions
+ if (GameMode::isMaster())
+ {
+ this->setMass(0.1f);
+ this->enableCollisionCallback();
+ this->setCollisionResponse(false);
+ this->setCollisionType(CollisionType::Dynamic);
+
+ // Create a sphere collision shape and attach it to the projectile.
+ collisionShape_ = new SphereCollisionShape(this->getContext());
+ setCollisionShapeRadius(8.0f);
+ this->attachCollisionShape(collisionShape_);
+
+ this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&BasicProjectile::destroyObject, this)));
+ }
+ }
+
+ HoverGunProjectile::~HoverGunProjectile()
+ {
+ }
+
+ void HoverGunProjectile::setConfigValues()
+ {
+ SetConfigValue(lifetime_, 4.0f).description("The time in seconds a projectile stays alive");
+ }
+
+ void HoverGunProjectile::tick(float dt)
+ {
+ SUPER(Projectile, tick, dt);
+
+ if (!this->isActive())
+ return;
+
+ this->destroyCheck();
+ }
+
+ bool HoverGunProjectile::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint)
+ {
+ return this->processCollision(otherObject, contactPoint, cs);
+ }
+
+ void HoverGunProjectile::setCollisionShapeRadius(float radius)
+ {
+ if (collisionShape_ != nullptr && radius > 0)
+ {
+ collisionShape_->setRadius(radius);
+ }
+ }
+}
Added: code/branches/Boxhead_FS19/src/modules/weapons/projectiles/HoverGunProjectile.h
===================================================================
--- code/branches/Boxhead_FS19/src/modules/weapons/projectiles/HoverGunProjectile.h (rev 0)
+++ code/branches/Boxhead_FS19/src/modules/weapons/projectiles/HoverGunProjectile.h 2019-03-28 16:00:18 UTC (rev 12262)
@@ -0,0 +1,79 @@
+/*
+ * 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:
+ * Fabian 'x3n' Landau
+ * Co-authors:
+ * simonmie
+ *
+ */
+
+/**
+ @file Projectile.h
+ @brief Definition of the Projectile class.
+*/
+
+#ifndef _HoverGunProjectile_H__
+#define _HoverGunProjectile_H__
+
+#include "weapons/WeaponsPrereqs.h"
+
+#include "tools/Timer.h"
+#include "worldentities/MovableEntity.h"
+#include "objects/collisionshapes/SphereCollisionShape.h"
+
+#include "BasicProjectile.h"
+
+namespace orxonox
+{
+
+ /**
+ @brief
+ Represents all 'standard' projectiles.
+
+ @author
+ Fabian 'x3n' Landau
+ @author
+ Simon Miescher
+ @ingroup WeaponsProjectiles
+ */
+ class _WeaponsExport HoverGunProjectile : public MovableEntity, public BasicProjectile
+ {
+ public:
+ HoverGunProjectile(Context* context);
+ virtual ~HoverGunProjectile();
+
+ void setConfigValues();
+
+ virtual void tick(float dt) override;
+ virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint) override;
+
+ protected:
+ virtual void setCollisionShapeRadius(float radius);
+ float lifetime_; //!< The time the projectile exists.
+
+ private:
+ Timer destroyTimer_; //!< Timer to destroy the projectile after its lifetime has run out.
+ WeakPtr<SphereCollisionShape> collisionShape_; // The collision shape of the projectile.
+ };
+}
+
+#endif /* _Projectile_H__ */
Added: code/branches/Boxhead_FS19/src/modules/weapons/weaponmodes/HoverGun.cc
===================================================================
--- code/branches/Boxhead_FS19/src/modules/weapons/weaponmodes/HoverGun.cc (rev 0)
+++ code/branches/Boxhead_FS19/src/modules/weapons/weaponmodes/HoverGun.cc 2019-03-28 16:00:18 UTC (rev 12262)
@@ -0,0 +1,147 @@
+/*
+ * 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:
+ * Hagen Seifert
+ * Co-authors:
+ * simonmie
+ *
+ */
+
+/**
+ @file HsW01.h
+ @brief Implementation of the HsW01 class.
+*/
+
+#include "HoverGun.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "core/command/Executor.h"
+
+#include "graphics/Model.h"
+#include "weaponsystem/Weapon.h"
+#include "weaponsystem/WeaponPack.h"
+#include "weaponsystem/WeaponSystem.h"
+#include "worldentities/WorldEntity.h"
+#include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/HoverGunProjectile.h"
+#include "weapons/MuzzleFlash.h"
+
+namespace orxonox
+{
+ RegisterClass(HoverGun);
+
+ HoverGun::HoverGun(Context* context) : WeaponMode(context)
+ {
+ RegisterObject(HoverGun);
+
+ this->reloadTime_ = 0.25f;
+ this->damage_ = 0.0f; //default 15
+ this->speed_ = 750.0f;
+ this->delay_ = 0.0f;
+ this->setMunitionName("LaserMunition");
+ this->mesh_ = "laserbeam.mesh";
+
+
+ this->delayTimer_.setTimer(this->delay_, false, createExecutor(createFunctor(&HoverGun::shot, this)));
+ this->delayTimer_.stopTimer();
+
+ this->setFireSound("sounds/Weapon_HsW01.ogg");
+ this->setReloadSound("sounds/Reload_HsW01.ogg", 0.5);
+
+ hudImageString_ = "Orxonox/WSHUD_WM_HsW01";
+ }
+
+ HoverGun::~HoverGun()
+ {
+ }
+
+ void HoverGun::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+ {
+ SUPER(HoverGun, XMLPort, xmlelement, mode);
+
+ XMLPortParam(HoverGun, "delay", setDelay, getDelay, xmlelement, mode);
+ XMLPortParam(HoverGun, "material", setMaterial, getMaterial, xmlelement, mode);
+ XMLPortParam(HoverGun, "projectileMesh", setMesh, getMesh, xmlelement, mode);
+ XMLPortParam(HoverGun, "sound", setSound, getSound, xmlelement, mode);
+ }
+
+ /**
+ @brief
+ Set the firing delay.
+ @param delay
+ The firing delay in seconds.
+ */
+ void HoverGun::setDelay(float delay)
+ {
+ this->delay_ = delay;
+ this->delayTimer_.setInterval(this->delay_);
+ }
+
+ // void HoverGun::fire()
+ // {
+ // this->delayTimer_.startTimer();
+ // }
+
+ /**
+ @brief
+ Fires the weapon. Creates a projectile and fires it.
+ */
+ void HoverGun::fire()
+ {
+ assert( this->getWeapon() && this->getWeapon()->getWeaponPack() && this->getWeapon()->getWeaponPack()->getWeaponSystem() && this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn() );
+
+ // Create the projectile.
+ HoverGunProjectile* projectile = new HoverGunProjectile(this->getContext());
+ Model* model = new Model(HoverGunprojectile->getContext());
+ model->setMeshSource(mesh_);
+ model->setCastShadows(false);
+ projectile->attach(model);
+ model->setScale(5);
+
+ this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
+ projectile->setOrientation(this->getMuzzleOrientation());
+ projectile->setPosition(this->getMuzzlePosition());
+ projectile->setVelocity(this->getMuzzleDirection() * this->speed_);
+
+ projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+ projectile->setDamage(this->getDamage());
+ projectile->setShieldDamage(this->getShieldDamage());
+ projectile->setHealthDamage(this->getHealthDamage());
+
+ // Display the muzzle flash.
+ // this->HoverGun::muzzleflash();
+ }
+
+ /**
+ @brief
+ Displays the muzzle flash.
+ */
+ // void HoverGun::muzzleflash()
+ // {
+ // MuzzleFlash *muzzleFlash = new MuzzleFlash(this->getContext());
+ // this->getWeapon()->attach(muzzleFlash);
+ // muzzleFlash->setPosition(this->getMuzzleOffset());
+ // muzzleFlash->setMaterial(this->material_);
+ // }
+}
Added: code/branches/Boxhead_FS19/src/modules/weapons/weaponmodes/HoverGun.h
===================================================================
--- code/branches/Boxhead_FS19/src/modules/weapons/weaponmodes/HoverGun.h (rev 0)
+++ code/branches/Boxhead_FS19/src/modules/weapons/weaponmodes/HoverGun.h 2019-03-28 16:00:18 UTC (rev 12262)
@@ -0,0 +1,126 @@
+/*
+ * 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:
+ * Hagen Seifert
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file HoverGun.h
+ @brief Definition of the HoverGun class.
+*/
+
+#ifndef _HoverGun_H__
+#define _HoverGun_H__
+
+#include "weapons/WeaponsPrereqs.h"
+
+#include "tools/Timer.h"
+#include "weaponsystem/WeaponMode.h"
+
+namespace orxonox
+{
+
+ /**
+ @brief
+ Shoots laser beams.
+ @author
+ Hagen Seifert
+ @ingroup WeaponsWeaponModes
+ */
+ class _WeaponsExport HoverGun : public WeaponMode
+ {
+ public:
+ HoverGun(Context* context);
+ virtual ~HoverGun();
+
+ virtual void fire() override;
+ virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+
+ protected:
+ /**
+ @brief Set the mesh.
+ @param mesh The mesh name.
+ */
+ void setMesh(const std::string& mesh)
+ { this->mesh_ = mesh; }
+
+ /**
+ @brief Get the mesh.
+ @return Returns the mesh name.
+ */
+ const std::string& getMesh() const
+ { return this->mesh_; }
+
+ /**
+ @brief Set the sound.
+ @param sound The Sound name.
+ */
+ void setSound(const std::string& sound)
+ { this->sound_ = sound; }
+
+ /**
+ @brief Get the sound.
+ @return Returns the sound name.
+ */
+ const std::string& getSound() const
+ { return this->sound_; }
+
+ /**
+ @brief Set the material.
+ @param material The material name.
+ */
+ void setMaterial(const std::string& material)
+ { this->material_ = material; }
+ /**
+ @brief Get the material.
+ @return Returns the material name.
+ */
+ const std::string& getMaterial() const
+ { return this->material_; }
+
+ void setDelay(float delay);
+ /**
+ @brief Get the firing delay.
+ @return Returns the firing delay in seconds.
+ */
+ float getDelay() const
+ { return this->delay_; }
+
+ virtual void shot();
+ void muzzleflash();
+
+ std::string material_; //!< The material.
+ std::string mesh_; //!< The mesh.
+ std::string sound_; //!< The sound.
+
+
+
+ float speed_; //!< The speed of the fired projectile.
+ float delay_; //!< The firing delay.
+ Timer delayTimer_; //!< A timer to delay the firing.
+ };
+}
+
+#endif /* HoverGun */
More information about the Orxonox-commit
mailing list