#pragma once #include "node.h" #include "Scene.h" #include "Vector.h" #include #include #include "NxPhysics.h" #include "ParticleCube.h" #include "ParticleEmitter.h" class Player; class Goodie; class SoundNode; class GameScene; #define SPTR boost::shared_ptr #define WPTR boost::weak_ptr class Bullet : public Node { public: Bullet(void); ~Bullet(void); virtual void initBullet() = 0; virtual void impactPlayer(Player* player, Vector normal) = 0; virtual void impactTerrain(Vector normal) = 0; virtual void impactGoodie(Goodie* goodie, Vector normal) = 0; virtual void impactOther(Object3d* other, Vector normal) = 0; virtual void impactTimeOut() = 0; void addParticleEmitter(ParticleEmitter *_emitter); void addParticleCube(ParticleCube *_cube); void startParticleEmitter(); void setWeaponDirection(Vector _dir); void setImpactForce(float _impactForce); float getImpactForce(); void setImpactRadius(float _radius); float getImpactRadius(); void setImpactDamage(float _impactDamage); float getImpactDamage(); void setFlySound(std::string flySoundName); void setImpactSound(std::string impactSoundName); void setPlayer(Player* _myPlayer); void setBulletType(int type); int getBulletType(); Vector getDirection(); void setExplodeAtDeath(bool _explodeAtDeath); virtual void update(float dt); bool exploded; Player *myPlayer; virtual void killMe(); friend class GameScene; protected: int bulletType; Vector dir; float impactForce; float impactDamage; float impactRadius; SoundNode *flySound; SoundNode *impactSound; bool explodeAtDeath; std::vector particleEmitterList; std::vector particleCubeList; virtual void setStandardExplosionForces(); void collectEnvironmentInformation(); //EnvironmentInformation std::vector shapeList; std::vector playerList; std::vector bulletList; std::vector goodieList; bool terrainHit; Vector impactNormal; };