20 class bhkCollisionObject;
22 class bhkSimpleShapePhantom;
23 class BGSMaterialType;
25 class CombatController;
290#ifndef SKYRIM_SUPPORT_AE
#define KEEP_FOR_RE()
Definition PCH.h:517
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 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 NiSmartPointer.h:9
Definition Projectile.h:46
BSTArray< WobbleControl > wobble
Definition Projectile.h:55
BSTArray< ProjectileHandle > pending
Definition Projectile.h:53
static Manager * GetSingleton()
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
virtual void Handle3DLoaded()
Flags
Definition Projectile.h:134
@ kAddedVisualEffectOnGround
virtual float GetPowerSpeedMult() const
ObjectRefHandle shooter
Definition Projectile.h:254
void InitLoadGame(BGSLoadFormBuffer *a_buf) override
static ProjectileHandle * LaunchArrow(ProjectileHandle *a_result, Actor *a_shooter, TESAmmo *a_ammo, TESObjectWEAP *a_weap) noexcept
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()
BGSProjectile * GetProjectileBase() const
virtual bool ShouldUseDesiredTarget()
float speedMult
Definition Projectile.h:269
EffectSetting * avEffect
Definition Projectile.h:264
void MoveHavok(bool a_forceRec) override
float explosionTimer
Definition Projectile.h:274
NiNode * GetFireNode() override
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()
static ProjectileHandle * LaunchSpell(ProjectileHandle *a_result, Actor *a_shooter, SpellItem *a_spell, const NiPoint3 &a_origin, const ProjectileRot &a_angles) noexcept
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()
float weaponDamage
Definition Projectile.h:272
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
NiAVObject * Load3D(bool a_backgroundLoading) override
virtual bhkShape * GetCollisionShape()
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
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
static ProjectileHandle * Launch(ProjectileHandle *a_result, LaunchData &a_data) noexcept
static ProjectileHandle * LaunchSpell(ProjectileHandle *a_result, Actor *a_shooter, SpellItem *a_spell, MagicSystem::CastingSource a_source) noexcept
NiPointer< BSLight > light
Definition Projectile.h:251
REX::EnumSet< Flags, std::uint32_t > flags
Definition Projectile.h:283
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
void InitHavok() override
bool DetachHavok(NiAVObject *a_obj3D) override
static ProjectileHandle * LaunchArrow(ProjectileHandle *a_result, Actor *a_shooter, TESAmmo *a_ammo, TESObjectWEAP *a_weap, const NiPoint3 &a_origin, const ProjectileRot &a_angles) noexcept
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
MagicCaster * GetMagicCaster(MagicSystem::CastingSource a_source) override
Projectile * AsProjectile() override
float unk0DC
Definition Projectile.h:246
NiTransform unk0A8
Definition Projectile.h:245
void Revert(BGSLoadFormBuffer *a_buf) override
ActorCause * GetActorCause() const 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
MagicItem * spell
Definition Projectile.h:261
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:114
Definition TESObjectWEAP.h:79
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
BGSMaterialType * material
Definition Projectile.h:121
std::int32_t damageRootNodeType
Definition Projectile.h:122
NiPoint3 desiredTargetLoc
Definition Projectile.h:117
REX::EnumSet< COL_LAYER, std::int32_t > collidedLayer
Definition Projectile.h:123
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