20 class bhkCollisionObject;
22 class bhkSimpleShapePhantom;
23 class BGSMaterialType;
25 class CombatController;
188#ifndef SKYRIM_CROSS_VR
243#define PROJECTILE_RUNTIME_DATA_CONTENT \
244 BSSimpleList<ImpactData*> impacts; \
245 NiTransform unk0A8; \
247 bhkSimpleShapePhantom* unk0E0; \
248 mutable BSSpinLock unk0E8; \
250 NiPoint3 linearVelocity; \
251 NiPointer<BSLight> light; \
253 NiPointer<ActorCause> actorCause; \
254 ObjectRefHandle shooter; \
255 ObjectRefHandle desiredTarget; \
256 BSSoundHandle sndHandle; \
257 BSSoundHandle sndCountdown; \
258 std::uint32_t* unk140; \
259 InventoryEntryData* unk148; \
260 BGSExplosion* explosion; \
262 MagicSystem::CastingSource castingSource; \
263 std::uint32_t pad164; \
264 EffectSetting* avEffect; \
265 NiPointer<QueuedFile> projectileDBFiles; \
266 std::uint64_t unk178; \
267 std::uint64_t unk180; \
272 float weaponDamage; \
273 float transparency; \
274 float explosionTimer; \
275 std::uint32_t unk1A4; \
278 TESObjectWEAP* weaponSource; \
279 TESAmmo* ammoSource; \
280 float distanceMoved; \
281 std::uint32_t unk1C4; \
283 std::uint32_t flags; \
286 std::uint8_t unk1D2[6];
302#ifndef ENABLE_SKYRIM_AE
306#ifndef ENABLE_SKYRIM_AE
307 static_assert(
sizeof(Projectile) == 0x1D8);
310#undef PROJECTILE_RUNTIME_DATA_CONTENT
#define PROJECTILE_RUNTIME_DATA_CONTENT
Definition Projectile.h:243
#define SKYRIM_REL_VR_VIRTUAL
Definition Relocation.h:152
Definition ActorCause.h:9
Definition AlchemyItem.h:24
Definition BGSKeyword.h:10
Definition BGSMaterialType.h:12
Definition BGSProjectile.h:79
Definition BSTArray.h:377
Definition CombatController.h:23
Definition EnchantmentItem.h:10
Definition MagicCaster.h:25
Definition MagicItem.h:30
Definition NiAVObject.h:50
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
SKYRIM_REL_VR_VIRTUAL void Unk_A6(void)
SKYRIM_REL_VR_VIRTUAL void OnKill()
SKYRIM_REL_VR_VIRTUAL void CleanUpPointersOnDisable()
Flags
Definition Projectile.h:134
@ kAddedVisualEffectOnGround
SKYRIM_REL_VR_VIRTUAL void UpdateImpl(float a_delta)
PROJECTILE_RUNTIME_DATA & GetProjectileRuntimeData() noexcept
Definition Projectile.h:291
void InitLoadGame(BGSLoadFormBuffer *a_buf) override
SKYRIM_REL_VR_VIRTUAL bhkShape * GetCollisionShape()
static ProjectileHandle * LaunchArrow(ProjectileHandle *a_result, Actor *a_shooter, TESAmmo *a_ammo, TESObjectWEAP *a_weap) noexcept
bool GetAllowPromoteToPersistent() const override
BGSProjectile * GetProjectileBase() const
void MoveHavok(bool a_forceRec) override
NiNode * GetFireNode() override
SKYRIM_REL_VR_VIRTUAL float GetWeaponSpeedMult() const
void LoadGame(BGSLoadFormBuffer *a_buf) override
SKYRIM_REL_VR_VIRTUAL void ReportHavokDeactivation()
static ProjectileHandle * LaunchSpell(ProjectileHandle *a_result, Actor *a_shooter, SpellItem *a_spell, const NiPoint3 &a_origin, const ProjectileRot &a_angles) noexcept
SKYRIM_REL_VR_VIRTUAL float GetGravity()
SKYRIM_REL_VR_VIRTUAL bool IsBarrierProjectile()
SKYRIM_REL_VR_VIRTUAL bool GetStopMainSoundAfterImpact()
SKYRIM_REL_VR_VIRTUAL bool GetKillOnCollision()
SKYRIM_REL_VR_VIRTUAL void OnTriggerEnter()
SKYRIM_REL_VR_VIRTUAL bool IsBeamProjectile()
void FinishLoadGame(BGSLoadFormBuffer *a_buf) override
SKYRIM_REL_VR_VIRTUAL void Process3D()
SKYRIM_REL_VR_VIRTUAL bool TurnOff(Actor *a_owner, bool a_noDeactivateSound)
bool Load(TESFile *a_mod) override
SKYRIM_REL_VR_VIRTUAL bool RunTargetPick()
void Set3D(NiAVObject *a_object, bool a_queue3DTasks=true) override
NiAVObject * Load3D(bool a_backgroundLoading) override
SKYRIM_REL_VR_VIRTUAL bool IsPermanent() const
const PROJECTILE_RUNTIME_DATA & GetProjectileRuntimeData() const noexcept
Definition Projectile.h:296
SKYRIM_REL_VR_VIRTUAL float GetPowerSpeedMult() const
SKYRIM_REL_VR_VIRTUAL bool IsMissileProjectile()
SKYRIM_REL_VR_VIRTUAL bool IsFlameProjectile()
static constexpr auto RTTI
Definition Projectile.h:32
SKYRIM_REL_VR_VIRTUAL bool ShouldUseDesiredTarget()
SKYRIM_REL_VR_VIRTUAL bool IsGrenadeProjectile()
SKYRIM_REL_VR_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 SaveGame(BGSSaveFormBuffer *a_buf) override
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
SKYRIM_REL_VR_VIRTUAL void PostLoad3D(NiAVObject *a_root)
SKYRIM_REL_VR_VIRTUAL void Handle3DLoaded()
bool OnAddCellPerformQueueReference(TESObjectCELL &a_cell) const override
static constexpr auto VTABLE
Definition Projectile.h:33
void SetActorCause(ActorCause *a_cause) override
SKYRIM_REL_VR_VIRTUAL bool ShouldBeLimited()
void InitHavok() override
SKYRIM_REL_VR_VIRTUAL bool ProcessImpacts()
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
SKYRIM_REL_VR_VIRTUAL void Update3D()
bool HasKeywordHelper(const BGSKeyword *a_keyword) const override
SKYRIM_REL_VR_VIRTUAL std::uint32_t GetCollisionGroup()
SKYRIM_REL_VR_VIRTUAL bool TargetsWholeBody()
void GetLinearVelocity(NiPoint3 &a_velocity) const override
MagicCaster * GetMagicCaster(MagicSystem::CastingSource a_source) override
Projectile * AsProjectile() override
void Revert(BGSLoadFormBuffer *a_buf) override
SKYRIM_REL_VR_VIRTUAL bool HandleHits(hkpCollidable *a_collidable)
ActorCause * GetActorCause() const override
SKYRIM_REL_VR_VIRTUAL void Unk_AE(void)
Definition SpellItem.h:16
Definition TESObjectCELL.h:116
Definition TESObjectREFR.h:112
Definition TESObjectWEAP.h:79
Definition hkpCollidable.h:13
CastingSource
Definition MagicSystem.h:23
Definition AbsorbEffect.h:6
constexpr REL::VariantID RTTI_Projectile__LaunchData(684852, 392556, 0x1edadd8)
constexpr std::array< REL::VariantID, 4 > VTABLE_Projectile
Definition Offsets_VTABLE.h:2788
ImpactResult
Definition ImpactResults.h:6
constexpr REL::VariantID RTTI_Projectile(514046, 394480, 0x1f02a60)
constexpr std::array< REL::VariantID, 1 > VTABLE_Projectile__LaunchData
Definition Offsets_VTABLE.h:273
constexpr REL::Version RUNTIME_SSE_1_6_629(1, 6, 629, 0)
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:242
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