1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#pragma once
#include "ActorBase.h"
namespace Jazz2::Actors
{
/** @brief Explosion effects */
class Explosion : public ActorBase
{
DEATH_RUNTIME_OBJECT(ActorBase);
public:
/** @brief Explosion effect type */
enum class Type {
Tiny,
TinyBlue,
TinyDark,
Small,
SmallDark,
Large,
SmokeBrown,
SmokeGray,
SmokeWhite,
SmokePoof,
WaterSplash,
Pepper,
RF,
RFUpgraded,
Generator,
IceShrapnel,
};
Explosion();
static void Create(ILevelHandler* levelHandler, const Vector3i& pos, Type type, float scale = 1.0f);
protected:
Task<bool> OnActivatedAsync(const ActorActivationDetails& details) override;
void OnUpdate(float timeMult) override;
void OnUpdateHitbox() override;
void OnEmitLights(SmallVectorImpl<LightEmitter>& lights) override;
void OnAnimationFinished() override;
private:
Type _type;
float _lightBrightness;
float _lightIntensity;
float _lightRadiusNear;
float _lightRadiusFar;
float _scale;
float _time;
};
}
|