wave-survival/modules/wave_survival/hitscan_muzzle.h

39 lines
863 B
C++

#ifndef HITSCAN_MUZZLE_H
#define HITSCAN_MUZZLE_H
#include "scene/3d/physics/ray_cast_3d.h"
class MuzzleEffect;
class HitscanMuzzle : public RayCast3D {
GDCLASS(HitscanMuzzle, RayCast3D);
static void _bind_methods();
void instantiate_impact_effect();
void try_deal_damage();
void ready();
public:
void _notification(int what);
void shoot();
void shoot_multiple(int count);
void set_spread(float spread);
float get_spread() const;
void set_damage(int damage);
int get_damage() const;
void set_ray_count(int amount);
int get_ray_count() const;
void set_muzzle_effect(MuzzleEffect *effect);
MuzzleEffect *get_muzzle_effect() const;
private:
float spread{ 0.001f };
int damage{ 1 };
int ray_count{ 1 };
MuzzleEffect *muzzle_effect{ nullptr };
Transform3D home_transform{};
Ref<PackedScene> impact_effect{};
};
#endif // !HITSCAN_MUZZLE_H