Terminus
Public Member Functions | Protected Member Functions | List of all members
terminus::WeaponWagon Class Reference

The WeaponWagon class provides a wagon type, which primary action shoots projectiles in the faced direction. More...

#include <weaponwagon.h>

Inheritance diagram for terminus::WeaponWagon:
terminus::AbstractWagon terminus::KinematicPhysicsObject terminus::AbstractPhysicsObject terminus::AbstractGraphicsObject

Public Member Functions

 WeaponWagon (World &world, Train *train)
 
virtual ~WeaponWagon ()
 
virtual void localUpdate () override
 Updates wagon position and rotation. More...
 
virtual void primaryActionInternal () override
 The method that every wagon should override in order to define the wagon-specific primary action. More...
 
virtual float cooldownTime () const override
 
virtual WagonType wagonType () const override
 
- Public Member Functions inherited from terminus::AbstractWagon
 AbstractWagon (World &world, Train *train)
 
virtual ~AbstractWagon ()
 
virtual void primaryAction () final
 Invokes wagon-specific primary action if the wagon is enabled and is not on cooldown. More...
 
virtual void primaryActionDebug () final
 Invokes wagon-specific primary action without any checks. More...
 
virtual void onBindCamera () override
 saves the previous camera position to animate the camera transition More...
 
virtual void adjustCamera ()
 moves the camera according to this wagons position and orientation More...
 
virtual void rotateEvent (QVector2D rotation)
 rotates the camera position in model space More...
 
virtual void setHealth (float health)
 
virtual float currentHealth () const
 
virtual float maxHealth () const
 
virtual void resetCooldown () const
 
virtual float cooldown () const
 
virtual bool isOnCooldown () const
 
virtual bool isDisabled () const
 
virtual float length () const
 
virtual bool isOtherTrainLeft () const
 Determines whether the primary view direction should be left or right. More...
 
virtual void setPositionOffset (float accumulatedOffset)
 Sets the distance between this wagon and the first wagon on the spline. More...
 
virtual void onCollisionWith (AbstractPhysicsObject *other) override
 Shakes the camera if the wagon was hit by a Projectile. More...
 
- Public Member Functions inherited from terminus::KinematicPhysicsObject
 KinematicPhysicsObject (World &world)
 
- Public Member Functions inherited from terminus::AbstractPhysicsObject
 AbstractPhysicsObject (World &world)
 
virtual void moveTo (const QVector3D &newPosition)
 Moves object to new position. More...
 
virtual void setSpawnedLocally (bool spawnedLocally)
 Set whether this PhysicsObject originated in this local game instance or in a remote instance. More...
 
- Public Member Functions inherited from terminus::AbstractGraphicsObject
 AbstractGraphicsObject (World &world)
 
virtual ~AbstractGraphicsObject ()
 
virtual void update () final
 update object hierarchy beginning at this object More...
 
virtual void render (QOpenGLFunctions &gl) final
 render object hierarchy beginning at this object More...
 
virtual void bindCamera (Camera *camera)
 binds a camera to track this object More...
 
virtual void unbindCamera (Camera *camera)
 release a camera so that it wont track this object any longer More...
 
virtual void onUnbindCamera ()
 override this method to perform specific actions once a camera has been released More...
 
virtual void moveEvent (QVector3D movement)
 override this method to react to move events received by a bound camera More...
 
const QVector3D & minBB () const
 
const QVector3D & maxBB () const
 
QVector3D worldUp ()
 
QVector3D worldFront ()
 
QVector3D worldSide ()
 
QVector3D position () const
 
QQuaternion rotation () const
 
QVector3D scale () const
 
QMatrix4x4 modelMatrix () const
 
QMatrix4x4 modelMatrixInverted () const
 

Protected Member Functions

void fire (QVector3D velocity)
 Spawn a projectile and set velocity. More...
 
virtual QVector3D aimVector ()
 Returns the normalized aim vector. More...
 
- Protected Member Functions inherited from terminus::AbstractWagon
virtual short myCollisionType () const override
 The collision group that this object is member of. More...
 
virtual short possibleCollisionTypes () const override
 The groups of objects that this object will collide with. More...
 
virtual QVector3D localCameraCenter ()
 Calculates the camera position vector in model space. More...
 
virtual QVector3D localCameraEye ()
 Calculates the camera eye vector in model space. More...
 
- Protected Member Functions inherited from terminus::KinematicPhysicsObject
virtual void initializePhysics (btCollisionShape *collisionShape, btScalar mass) override
 
- Protected Member Functions inherited from terminus::AbstractPhysicsObject
virtual void deallocatePhysics ()
 
- Protected Member Functions inherited from terminus::AbstractGraphicsObject
virtual void localRender (QOpenGLFunctions &gl) const
 this method contains the default render code using m_geometry, m_program and m_material More...
 
virtual void localRenderSetup (QOpenGLFunctions &gl, Program &program) const
 override this method to customize the rendering process More...
 
virtual void localRenderCleanup (QOpenGLFunctions &gl, Program &program) const
 override this method to customize the rendering process More...
 
virtual bool localRenderEnabled () const
 override this method to disable or enable rendering conditionally More...
 
virtual void doForAllChildren (std::function< void(AbstractGraphicsObject &)> callback)
 override this method to make child objects known More...
 
void setPosition (const QVector3D &position)
 sets the position and invalidates the model matrices More...
 
void setRotation (const QQuaternion &rotation)
 sets the rotation and invalidates the model matrices More...
 
void setScale (const QVector3D &scale)
 sets the scale and invalidates the model matrices More...
 
void setScale (float scale)
 sets the scale uniformly on all three axes and invalidates the model matrices More...
 
QVector3D worldToModel (const QVector3D &vWorld)
 
QVector3D modelToWorld (const QVector3D &vModel)
 
void dispose ()
 remove this object from the world and delete it as soon as it is safe to do so More...
 

Additional Inherited Members

- Protected Attributes inherited from terminus::AbstractWagon
QVector3D m_cameraEyeOffset
 
QVector3D m_previousEye
 
QVector3D m_previousCenter
 
Timer::TimerID m_cameraTimer
 
float m_positionOffset
 
float m_health
 
bool m_disabled
 
Timer::TimerID m_cooldownTimer
 
Trainm_train
 
- Protected Attributes inherited from terminus::AbstractPhysicsObject
std::shared_ptr< BulletWorldm_bulletWorld
 Shared pointer to the bullet world that this object lives in. More...
 
std::unique_ptr< btRigidBody > m_btRigidBody
 
bool m_spawnedLocally
 
- Protected Attributes inherited from terminus::AbstractGraphicsObject
Worldm_world
 
bool m_validState
 
Cameram_camera
 
std::shared_ptr< std::unique_ptr< Program > > m_program
 
std::shared_ptr< std::unique_ptr< Geometry > > m_geometry
 
std::shared_ptr< std::unique_ptr< Material > > m_material
 
QVector3D m_position
 
QQuaternion m_rotation
 
QVector3D m_scale
 
bool m_modelMatrixChanged
 
QMatrix4x4 m_modelMatrix
 
bool m_modelMatrixInvertedChanged
 
QMatrix4x4 m_modelMatrixInverted
 

Detailed Description

The WeaponWagon class provides a wagon type, which primary action shoots projectiles in the faced direction.

Constructor & Destructor Documentation

terminus::WeaponWagon::WeaponWagon ( World world,
Train train 
)
terminus::WeaponWagon::~WeaponWagon ( )
virtual

Member Function Documentation

QVector3D terminus::WeaponWagon::aimVector ( )
protectedvirtual

Returns the normalized aim vector.

The aim vector is computed by subtracting the controlling player's camera eye (in world coordinates) from the camera center (in world coordinates) and normalizing the result.

float terminus::WeaponWagon::cooldownTime ( ) const
overridevirtual
void terminus::WeaponWagon::fire ( QVector3D  velocity)
protected

Spawn a projectile and set velocity.

Parameters
velocityVelocity vector in global coordinates (will not be rotated to match object's rotation)

Schedules a projectile spawn (for next frame) with some position offset, copies the current velocity to the projectile and applies the given velocity to it.

void terminus::WeaponWagon::localUpdate ( )
overridevirtual

Updates wagon position and rotation.

Reimplemented from terminus::AbstractWagon.

void terminus::WeaponWagon::primaryActionInternal ( )
overridevirtual

The method that every wagon should override in order to define the wagon-specific primary action.

Implements terminus::AbstractWagon.

WagonType terminus::WeaponWagon::wagonType ( ) const
overridevirtual

Reimplemented from terminus::AbstractWagon.


The documentation for this class was generated from the following files: