20 class bhkCollisionObject;
22 class bhkSimpleShapePhantom;
23 class BGSMaterialType;
25 class CombatController;
290 #ifndef SKYRIM_SUPPORT_AE
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: ActorCause.h:9
Definition: AlchemyItem.h:24
Definition: BGSExplosion.h:53
Definition: BGSKeyword.h:10
Definition: BGSMaterialType.h:12
Definition: BGSProjectile.h:79
Definition: BSAtomic.h:92
Definition: BSTArray.h:378
Definition: CombatController.h:23
Definition: EffectSetting.h:24
Definition: EnchantmentItem.h:10
Definition: InventoryEntryData.h:15
Definition: MagicCaster.h:25
Definition: MagicItem.h:30
Definition: NiAVObject.h:57
Definition: NiMatrix3.h:8
Definition: NiSmartPointer.h:9
Definition: Projectile.h:46
static Manager * GetSingleton()
BSTArray< WobbleControl > wobble
Definition: Projectile.h:55
BSTArray< ProjectileHandle > pending
Definition: Projectile.h:53
BSTArray< ProjectileHandle > limited
Definition: Projectile.h:52
BSTArray< ProjectileHandle > unlimited
Definition: Projectile.h:51
BSSpinLock projectileLock
Definition: Projectile.h:54
Definition: Projectile.h:30
NiPointer< ActorCause > actorCause
Definition: Projectile.h:253
BGSExplosion * explosion
Definition: Projectile.h:260
ModelDBHandle muzzleFlashDBHandle
Definition: Projectile.h:266
NiNode * GetFireNode() override
virtual void Handle3DLoaded()
Flags
Definition: Projectile.h:134
@ kAddedVisualEffectOnGround
virtual float GetPowerSpeedMult() const
NiAVObject * Load3D(bool a_backgroundLoading) override
ObjectRefHandle shooter
Definition: Projectile.h:254
void InitLoadGame(BGSLoadFormBuffer *a_buf) override
Projectile * AsProjectile() override
float livingTime
Definition: Projectile.h:271
bool GetAllowPromoteToPersistent() const override
NiPointer< QueuedFile > projectileDBFiles
Definition: Projectile.h:265
void * unk110
Definition: Projectile.h:252
ObjectRefHandle desiredTarget
Definition: Projectile.h:255
virtual bool IsBarrierProjectile()
static ProjectileHandle * LaunchSpell(ProjectileHandle *a_result, Actor *a_shooter, SpellItem *a_spell, const NiPoint3 &a_origin, const ProjectileRot &a_angles) noexcept
virtual bool ShouldUseDesiredTarget()
float speedMult
Definition: Projectile.h:269
EffectSetting * avEffect
Definition: Projectile.h:264
void MoveHavok(bool a_forceRec) override
stl::enumeration< Flags, std::uint32_t > flags
Definition: Projectile.h:283
float explosionTimer
Definition: Projectile.h:274
std::uint32_t * unk140
Definition: Projectile.h:258
virtual void ReportHavokDeactivation()
float range
Definition: Projectile.h:270
virtual void PostLoad3D(NiAVObject *a_root)
void LoadGame(BGSLoadFormBuffer *a_buf) override
virtual bool TargetsWholeBody()
virtual float GetWeaponSpeedMult() const
virtual void OnTriggerEnter()
NiPoint3 linearVelocity
Definition: Projectile.h:250
float distanceMoved
Definition: Projectile.h:280
std::uint64_t unk180
Definition: Projectile.h:267
void FinishLoadGame(BGSLoadFormBuffer *a_buf) override
virtual bool GetKillOnCollision()
virtual std::uint32_t GetCollisionGroup()
ActorCause * GetActorCause() const override
float weaponDamage
Definition: Projectile.h:272
static ProjectileHandle * Launch(ProjectileHandle *a_result, LaunchData &a_data) noexcept
virtual float GetGravity()
bool Load(TESFile *a_mod) override
virtual bool TurnOff(Actor *a_owner, bool a_noDeactivateSound)
virtual bool GetStopMainSoundAfterImpact()
void Set3D(NiAVObject *a_object, bool a_queue3DTasks=true) override
virtual void CleanUpPointersOnDisable()
float unk1A8
Definition: Projectile.h:276
virtual bool ProcessImpacts()
std::uint32_t unk1A4
Definition: Projectile.h:275
float transparency
Definition: Projectile.h:273
virtual bool IsGrenadeProjectile()
std::uint32_t pad164
Definition: Projectile.h:263
static constexpr auto RTTI
Definition: Projectile.h:32
BSSoundHandle sndCountdown
Definition: Projectile.h:257
BSSimpleList< ImpactData * > impacts
Definition: Projectile.h:244
virtual bool IsPermanent() const
bool unk1D1
Definition: Projectile.h:285
virtual bhkShape * GetCollisionShape()
BGSProjectile * GetProjectileBase() const
void SaveGame(BGSSaveFormBuffer *a_buf) override
virtual bool ShouldBeLimited()
virtual bool IsBeamProjectile()
virtual bool IsMissileProjectile()
char unk1D2[6]
Definition: Projectile.h:286
NiPoint3 velocity
Definition: Projectile.h:249
NiPointer< BSLight > light
Definition: Projectile.h:251
virtual bool HandleHits(hkpCollidable *a_collidable)
BSSpinLock unk0E8
Definition: Projectile.h:248
bool OnAddCellPerformQueueReference(TESObjectCELL &a_cell) const override
bhkSimpleShapePhantom * unk0E0
Definition: Projectile.h:247
virtual void Unk_A6(void)
virtual void Unk_AE(void)
virtual bool RunTargetPick()
InventoryEntryData * unk148
Definition: Projectile.h:259
static constexpr auto VTABLE
Definition: Projectile.h:33
MagicSystem::CastingSource castingSource
Definition: Projectile.h:262
void SetActorCause(ActorCause *a_cause) override
MagicCaster * GetMagicCaster(MagicSystem::CastingSource a_source) override
void InitHavok() override
bool DetachHavok(NiAVObject *a_obj3D) override
BSSoundHandle sndHandle
Definition: Projectile.h:256
bool HasKeywordHelper(const BGSKeyword *a_keyword) const override
TESAmmo * ammoSource
Definition: Projectile.h:279
virtual void AddImpact(TESObjectREFR *a_ref, const NiPoint3 &a_targetLoc, const NiPoint3 &a_velocity, hkpCollidable *a_collidable, std::int32_t a_arg6, std::uint32_t a_arg7)
void GetLinearVelocity(NiPoint3 &a_velocity) const override
static ProjectileHandle * LaunchSpell(ProjectileHandle *a_result, Actor *a_shooter, SpellItem *a_spell, MagicSystem::CastingSource a_source) noexcept
float unk0DC
Definition: Projectile.h:246
NiTransform unk0A8
Definition: Projectile.h:245
void Revert(BGSLoadFormBuffer *a_buf) override
float unk1AC
Definition: Projectile.h:277
virtual void UpdateImpl(float a_delta)=0
TESObjectWEAP * weaponSource
Definition: Projectile.h:278
float scale
Definition: Projectile.h:282
static ProjectileHandle * LaunchArrow(ProjectileHandle *a_result, Actor *a_shooter, TESAmmo *a_ammo, TESObjectWEAP *a_weap) noexcept
MagicItem * spell
Definition: Projectile.h:261
static ProjectileHandle * LaunchArrow(ProjectileHandle *a_result, Actor *a_shooter, TESAmmo *a_ammo, TESObjectWEAP *a_weap, const NiPoint3 &a_origin, const ProjectileRot &a_angles) noexcept
float power
Definition: Projectile.h:268
virtual bool IsFlameProjectile()
bool unk1D0
Definition: Projectile.h:284
std::uint32_t pad_1C4
Definition: Projectile.h:281
Definition: SpellItem.h:16
Definition: TESObjectCELL.h:119
Definition: TESObjectREFR.h:113
Definition: TESObjectWEAP.h:79
Definition: bhkShape.h:10
Definition: hkpCollidable.h:13
CastingSource
Definition: MagicSystem.h:27
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 4 > VTABLE_Projectile
Definition: Offsets_VTABLE.h:12566
ImpactResult
Definition: ImpactResults.h:6
constexpr REL::ID RTTI_Projectile(static_cast< std::uint64_t >(514046))
constexpr REL::ID RTTI_Projectile__LaunchData(static_cast< std::uint64_t >(684852))
constexpr std::array< REL::ID, 1 > VTABLE_Projectile__LaunchData
Definition: Offsets_VTABLE.h:12568
Definition: BSSoundHandle.h:10
Definition: BSTSingleton.h:50
Definition: Projectile.h:114
stl::enumeration< COL_LAYER, std::int32_t > collidedLayer
Definition: Projectile.h:123
BGSMaterialType * material
Definition: Projectile.h:121
std::int32_t damageRootNodeType
Definition: Projectile.h:122
NiPoint3 desiredTargetLoc
Definition: Projectile.h:117
std::uint16_t unk46
Definition: Projectile.h:127
NiPointer< bhkCollisionObject > colObj
Definition: Projectile.h:120
ImpactResult impactResult
Definition: Projectile.h:125
std::uint8_t unk49
Definition: Projectile.h:129
ObjectRefHandle collidee
Definition: Projectile.h:119
std::uint8_t unk48
Definition: Projectile.h:128
NiPoint3 negativeVelocity
Definition: Projectile.h:118
NiNode * damageRootNode
Definition: Projectile.h:124
std::uint16_t unk44
Definition: Projectile.h:126
Definition: Projectile.h:68
static constexpr auto RTTI
Definition: Projectile.h:70
bool chainShatter
Definition: Projectile.h:106
EnchantmentItem * enchantItem
Definition: Projectile.h:98
MagicItem * spell
Definition: Projectile.h:95
float unk60
Definition: Projectile.h:92
TESAmmo * ammoSource
Definition: Projectile.h:87
virtual ~LaunchData()=default
TESObjectREFR * desiredTarget
Definition: Projectile.h:91
float unk64
Definition: Projectile.h:93
BGSProjectile * projectileBase
Definition: Projectile.h:83
NiPoint3 origin
Definition: Projectile.h:81
std::uint32_t pad7C
Definition: Projectile.h:97
bool noDamageOutsideCombat
Definition: Projectile.h:104
std::int32_t area
Definition: Projectile.h:100
void * unk50
Definition: Projectile.h:90
bool useOrigin
Definition: Projectile.h:107
TESObjectWEAP * weaponSource
Definition: Projectile.h:86
NiPoint3 contactNormal
Definition: Projectile.h:82
LaunchData(Actor *a_shooter, const NiPoint3 &a_origin, const ProjectileRot &a_angles, MagicItem *a_spell)
float angleZ
Definition: Projectile.h:88
float power
Definition: Projectile.h:101
TESObjectREFR * shooter
Definition: Projectile.h:84
float scale
Definition: Projectile.h:102
MagicSystem::CastingSource castingSource
Definition: Projectile.h:96
float angleX
Definition: Projectile.h:89
CombatController * combatController
Definition: Projectile.h:85
bool alwaysHit
Definition: Projectile.h:103
LaunchData(Actor *a_shooter, const NiPoint3 &a_origin, const ProjectileRot &a_angles, TESAmmo *a_ammo, TESObjectWEAP *a_weap)
LaunchData(BGSProjectile *a_bproj, Actor *a_shooter, const NiPoint3 &a_origin, const ProjectileRot &a_angles)
bool forceConeOfFire
Definition: Projectile.h:109
static constexpr auto VTABLE
Definition: Projectile.h:71
bool deferInitialization
Definition: Projectile.h:108
TESObjectCELL * parentCell
Definition: Projectile.h:94
bool autoAim
Definition: Projectile.h:105
AlchemyItem * poison
Definition: Projectile.h:99
Definition: Projectile.h:59
float z
Definition: Projectile.h:63
float x
Definition: Projectile.h:62
Definition: Projectile.h:36
NiMatrix3 unk00
Definition: Projectile.h:39
float wobble
Definition: Projectile.h:41
ProjectileHandle handle
Definition: Projectile.h:40