26 class BGSAnimationSequencer;
28 class BGSDialogueBranch;
30 class BSAnimNoteReceiver;
31 class BSFaceGenAnimationData;
32 class BSFaceGenNiNode;
33 class BSFlattenedBoneTree;
34 class DialogueResponse;
36 class InventoryChanges;
37 class InventoryEntryData;
40 class ModelReferenceEffect;
42 class NiControllerManager;
43 class NiControllerSequence;
47 class ShaderReferenceEffect;
52 class TESEffectShader;
56 struct BSAnimationGraphEvent;
57 struct BSAnimationUpdateData;
78 static_assert(
sizeof(
OBJ_REFR) == 0x20);
118 using InventoryItemMap = std::map<TESBoundObject*, std::pair<Count, std::unique_ptr<InventoryEntryData>>>;
119 using InventoryDropMap = std::map<TESBoundObject*, std::pair<Count, std::vector<ObjectRefHandle>>>;
217 void Revert(BGSLoadFormBuffer* a_buf)
override;
280 virtual void DoTrap2(TrapEntry* a_trap, TargetEntry* a_target);
344 virtual bool IsDead(
bool a_notEssential =
true)
const;
361 void DoTrap(TrapEntry* a_trap, TargetEntry* a_target);
425 bool IsAnOwner(
const Actor* a_testOwner,
bool a_useFaction,
bool a_requiresOwner)
const;
468#ifndef SKYRIM_SUPPORT_AE
#define NiSmartPointer(className)
Definition: NiSmartPointer.h:251
Definition: ActorCause.h:9
Definition: BGSAnimationSequencer.h:11
Definition: BGSArtObject.h:12
Definition: BGSDialogueBranch.h:10
Definition: BGSEncounterZone.h:43
Definition: BGSKeyword.h:10
Definition: BGSLocation.h:68
Definition: BGSScene.h:32
Definition: BSFaceGenAnimationData.h:11
Definition: BSFaceGenNiNode.h:14
Definition: BSHandleRefObject.h:8
Definition: BSTArray.h:377
Definition: BSTEvent.h:143
Definition: BSTEvent.h:19
Definition: BSTSmartPointer.h:37
Definition: DialogueItem.h:22
Definition: Explosion.h:22
Definition: IAnimationGraphManagerHolder.h:16
Definition: InventoryChanges.h:15
Definition: InventoryEntryData.h:15
Definition: MagicCaster.h:17
Definition: MagicTarget.h:23
Definition: ModelReferenceEffect.h:20
Definition: NiAVObject.h:50
Definition: NiControllerManager.h:17
Definition: NiControllerSequence.h:23
float z
Definition: NiPoint3.h:44
float x
Definition: NiPoint3.h:42
float y
Definition: NiPoint3.h:43
Definition: NiSmartPointer.h:9
Definition: Projectile.h:27
Definition: ShaderReferenceEffect.h:20
Definition: TESActorBase.h:32
Definition: TESBoundObject.h:24
Definition: TESContainer.h:33
Definition: TESEffectShader.h:182
Definition: TESFaction.h:120
Definition: TESObjectCELL.h:115
Definition: TESObjectREFR.h:110
const char * GetDisplayFullName()
MotionType
Definition: TESObjectREFR.h:122
LOADED_REF_DATA * loadedData
Definition: TESObjectREFR.h:454
void ClearData() override
virtual bool GetAllowPromoteToPersistent() const
void SetEncounterZone(BGSEncounterZone *a_zone)
bool HasContainer() const
virtual bool IsDead(bool a_notEssential=true) const
void GetTransform(NiTransform &a_transform) const
virtual BGSDecalGroup * GetDecalGroup() const
std::uint16_t refScale
Definition: TESObjectREFR.h:457
constexpr float GetPositionX() const noexcept
Definition: TESObjectREFR.h:402
NiPoint3 GetAngle() const
virtual void Unk_69(void)
virtual void Update3DPosition(bool a_warp)
void DoTrap(TrapEntry *a_trap, TargetEntry *a_target)
float IsPointDeepUnderWater(float a_zPos, TESObjectCELL *a_cell) const
virtual bool SetDialogueWithPlayer(bool a_flag, bool a_forceGreet, TESTopicInfo *a_topic)
virtual TESObjectCELL * GetSaveParentCell() const
bool HasKeywordInArray(const std::vector< BGSKeyword * > &a_keywords, bool a_matchAll) const
TESObjectCELL * parentCell
Definition: TESObjectREFR.h:453
virtual void DamageObject(float a_objectHealth, bool a_arg3)
void LoadGame(BGSLoadFormBuffer *a_buf) override
FormType GetSavedFormType() const override
NiControllerSequence * GetSequence(stl::zstring a_name) const
TESBoundObject * GetBaseObject()
virtual void PauseCurrentDialogue()
virtual bool CheckAndFixSkinAndBoneOrder(NiNode &a_nodeToTest)
virtual void Predestroy()
void SetOnLocalMap(bool a_set) override
virtual void Unk_78(void)
bool HasKeyword(const BGSKeyword *a_keyword) const
bool CheckSaveGame(BGSSaveFormBuffer *a_buf) override
virtual BSFaceGenAnimationData * GetFaceGenAnimationData()
NiAVObject * Get3D(bool a_firstPerson) const
std::map< TESBoundObject *, Count > InventoryCountMap
Definition: TESObjectREFR.h:117
constexpr float GetPositionY() const noexcept
Definition: TESObjectREFR.h:403
TESForm * CreateDuplicateForm(bool a_createEditorID, void *a_arg2) override
virtual void Unk_A0(void)
virtual bool HasKeywordHelper(const BGSKeyword *a_keyword) const
virtual void Unk_75(void)
TESObjectREFR * AsReference1() override
virtual void SetActorCause(ActorCause *a_cause)
bool BelongsInGroup(FORM *a_form, bool a_allowParentGroups, bool a_currentOnly) override
virtual BSFaceGenNiNode * GetFaceNodeSkinned()
virtual void TryUpdateActorLastSeenTime()
virtual void UpdateSoundCallBack(bool a_endSceneAction)
virtual bool ClampToGround()
virtual void DoTrap2(TrapEntry *a_trap, TargetEntry *a_target)
virtual Explosion * AsExplosion()
virtual TESActorBase * GetTemplateActorBase()
bool MoveToNode(TESObjectREFR *a_target, NiAVObject *a_node)
virtual void SetCurrentScene(BGSScene *a_scene)
static constexpr auto VTABLE
Definition: TESObjectREFR.h:113
OBJ_REFR data
Definition: TESObjectREFR.h:452
const BSTSmartPointer< BipedAnim > & GetBiped() const
bool preDestroyed
Definition: TESObjectREFR.h:459
virtual bool IsChild() const
virtual NiAVObject * Get3D1(bool a_firstPerson) const
virtual bool GetFullLODRef() const
virtual BSFaceGenNiNode * GetFaceNode()
bool GetRandomAnim() const override
InventoryDropMap GetDroppedInventory()
virtual void UnequipItem(std::uint64_t a_arg1, TESBoundObject *a_object)
std::int8_t modelState
Definition: TESObjectREFR.h:458
bool GetAnimationGraphManagerImpl(BSTSmartPointer< BSAnimationGraphManager > &a_out) const override
virtual BGSLocation * GetEditorLocation1() const
InventoryItemMap GetInventory(std::function< bool(TESBoundObject &)> a_filter)
virtual void SetFullLODRef(bool a_set)
virtual BSAnimNoteReceiver * CreateAnimNoteReceiver()
virtual bool ShouldPerformRevert() const
InventoryItemMap GetInventory()
bool IsHeadingMarker() const override
virtual bool ApplyCurrent(float a_velocityTime, const hkVector4 &a_velocity)
NiPointer< TESObjectREFR > PlaceObjectAtMe(TESBoundObject *a_baseToPlace, bool a_forcePersist) const
virtual void SetBiped(const BSTSmartPointer< BipedAnim > &a_biped)
virtual ActorCause * GetActorCause() const
virtual void UpdateRefLight()
void MoveTo(TESObjectREFR *a_target)
ShaderReferenceEffect * InstantiateHitShader(TESEffectShader *a_shader, float a_dur, TESObjectREFR *a_facingRef=nullptr, bool a_faceTarget=false, bool a_attachToCamera=false, NiAVObject *a_attachNode=nullptr, bool a_interfaceEffect=false)
virtual const BSTSmartPointer< BipedAnim > & GetBiped2() const
InventoryDropMap GetDroppedInventory(std::function< bool(TESBoundObject &)> a_filter)
static NiPointer< TESObjectREFR > LookupByHandle(RefHandle a_refHandle)
virtual void Unk_68(void)
std::uint32_t GetStealValue(const InventoryEntryData *a_entryData, std::uint32_t a_numItems, bool a_useMult) const
std::map< TESBoundObject *, std::pair< Count, std::vector< ObjectRefHandle > > > InventoryDropMap
Definition: TESObjectREFR.h:119
InventoryCountMap GetInventoryCounts(std::function< bool(TESBoundObject &)> a_filter)
virtual void GetLinearVelocity(NiPoint3 &a_velocity) const
virtual NiNode * GetFireNode()
virtual void DoTrap1(TrapData &a_data)
const TESObjectREFR * AsReference2() const override
std::int32_t Count
Definition: TESObjectREFR.h:116
TESWorldSpace * GetWorldspace() const
virtual void AddObjectToContainer(TESBoundObject *a_object, ExtraDataList *a_extraList, std::int32_t a_count, TESObjectREFR *a_fromRefr)
bool IsWater() const override
bool SetupAnimEventSinks(const BSTSmartPointer< BShkbAnimationGraph > &a_animGraph) override
virtual NiPoint3 GetStartingAngle() const
InventoryCountMap GetInventoryCounts()
void SaveGame(BGSSaveFormBuffer *a_buf) override
bool GetMustUpdate() const override
virtual const BSTSmartPointer< BipedAnim > & GetBiped1(bool a_firstPerson) const
static TESObjectREFR * FindReferenceFor3D(NiAVObject *a_object3D)
virtual void UpdateAnimation(float a_delta)
virtual TESAmmo * GetCurrentAmmo() const
void Revert(BGSLoadFormBuffer *a_buf) override
TESObjectREFR * GetLinkedRef(BGSKeyword *a_keyword)
void SetActivationBlocked(bool a_blocked)
virtual bool QCanUpdateSync() const
std::uint64_t unk88
Definition: TESObjectREFR.h:456
void InitItemImpl() override
virtual bool GetEditorLocation2(NiPoint3 &a_outPos, NiPoint3 &a_outRot, TESForm *&a_outWorldOrCell, TESObjectCELL *a_fallback)
virtual void Set3D(NiAVObject *a_object, bool a_queue3DTasks=true)
virtual NiAVObject * Load3D(bool a_backgroundLoading)
void FinishLoadGame(BGSLoadFormBuffer *a_buf) override
float GetWaterHeight() const
virtual void Unk_96(void)
bool Load(TESFile *a_mod) override
virtual void SetActionComplete(bool a_set)
virtual void Release3DRelatedData()
bool IsInitiallyDisabled() const
virtual Projectile * AsProjectile()
void PlayAnimation(NiControllerManager *a_manager, NiControllerSequence *a_toSeq, NiControllerSequence *a_fromSeq)
bool GetEditorLocation(NiPoint3 &a_outPos, NiPoint3 &a_outRot, TESForm *&a_outWorldOrCell, TESObjectCELL *a_fallback)
virtual void Unk_6E(void)
virtual NiAVObject * GetCurrent3D() const
const BSTSmartPointer< BipedAnim > & GetBiped(bool a_firstPerson) const
const char * GetName() const
std::map< TESBoundObject *, std::pair< Count, std::unique_ptr< InventoryEntryData > > > InventoryItemMap
Definition: TESObjectREFR.h:118
virtual NiAVObject * Get3D2() const
NiAVObject * GetNodeByName(const BSFixedString &a_nodeName)
virtual BGSAnimationSequencer * GetSequencer() const
std::int32_t GetInventoryCount()
virtual MagicCaster * GetMagicCaster(MagicSystem::CastingSource a_source)
LOCK_LEVEL GetLockLevel() const
virtual void SetStartingPosition(const NiPoint3 &a_pos)
virtual BGSScene * GetCurrentScene() const
ModelReferenceEffect * InstantiateHitArt(BGSArtObject *a_art, float a_dur, TESObjectREFR *a_facingRef, bool a_faceTarget, bool a_attachToCamera, NiAVObject *a_attachNode=nullptr, bool a_interfaceEffect=false)
virtual void Unk_67(void)
void PlayAnimation(stl::zstring a_from, stl::zstring a_to)
void SetCollision(bool a_enable)
virtual bool ProcessInWater(hkpCollidable *a_collidable, float a_waterHeight, float a_deltaTime)
void InitLoadGame(BGSLoadFormBuffer *a_buf) override
void SetDelete(bool a_set) override
float GetHeadingAngle(const RE::NiPoint3 &a_pos, bool a_abs)
virtual void SetExclusiveBranch(BGSDialogueBranch *a_branch)
virtual bool OnAddCellPerformQueueReference(TESObjectCELL &a_cell) const
virtual TESPackage * CheckForCurrentAliasPackage()
virtual void ModifyAnimationUpdateData(BSAnimationUpdateData &a_data)
BGSLocation * GetEditorLocation() const
ObjectRefHandle CreateRefHandle()
virtual void Unk_94(void)
bool HasCollision() const
bool GetObstacle() const override
virtual void SetParentCell(TESObjectCELL *a_cell)
virtual BSAnimNoteReceiver * GetAnimNoteReceiver()
NiAVObject * Get3D() const
virtual NiPoint3 GetBoundMax() const
virtual void SetObjectReference(TESBoundObject *a_object)
std::uint32_t pad94
Definition: TESObjectREFR.h:460
virtual bool Is3rdPersonVisible() const
float GetBaseHeight() const
virtual NiPoint3 GetStartingLocation() const
void InitializeData() override
virtual BGSDialogueBranch * GetExclusiveBranch() const
virtual NiPoint3 GetBoundMin() const
bool GetOnLocalMap() const override
virtual bool UpdateInDialogue(DialogueResponse *a_response, bool a_unused)
bool SetAnimationGraphManagerImpl(BSTSmartPointer< BSAnimationGraphManager > &a_in) override
virtual void Unk_82(void)
constexpr TESBoundObject * GetObjectReference() const noexcept
Definition: TESObjectREFR.h:398
ObjectRefHandle GetHandle()
bool HasKeywordInList(BGSListForm *a_keywordList, bool a_matchAll) const
bool InitInventoryIfRequired(bool a_ignoreContainerExtraData=false)
TESForm * GetOwner() const
bool IsMarkedForDeletion() const
bool ConstructAnimationGraph(BSTSmartPointer< BShkbAnimationGraph > &a_out) override
std::optional< double > GetEnchantmentCharge() const
virtual void TryMoveToMiddleLow()
TESContainer * GetContainer() const
const TESBoundObject * GetBaseObject() const
virtual bool TryChangeSkyCellActorsProcessLevel()
virtual bool InitNonNPCAnimation(NiNode &a_nodeForAnim)
REFR_LOCK * GetLock() const
void SetPosition(NiPoint3 a_pos)
bool IsAnOwner(const Actor *a_testOwner, bool a_useFaction, bool a_requiresOwner) const
void GetFormDetailedString(char *a_buf, std::uint32_t a_bufLen) override
InventoryChanges * GetInventoryChanges()
constexpr TESObjectCELL * GetParentCell() const noexcept
Definition: TESObjectREFR.h:400
virtual bool PopulateGraphProjectsToLoad(void) const
virtual ObjectRefHandle RemoveItem(TESBoundObject *a_item, std::int32_t a_count, ITEM_REMOVE_REASON a_reason, ExtraDataList *a_extraList, TESObjectREFR *a_moveToRef, const NiPoint3 *a_dropLoc=0, const NiPoint3 *a_rotate=0)
bool GetIgnoredBySandbox() const override
virtual void SetMovementComplete(bool a_set)
virtual void Unk_83(void)
virtual bool ShouldSaveAnimationOnSaving() const
const char * GetFormEditorID() const override
virtual bool ShouldBackgroundClone() const
constexpr float GetPositionZ() const noexcept
Definition: TESObjectREFR.h:404
static constexpr auto FORMTYPE
Definition: TESObjectREFR.h:114
void CreateGroupData(FORM *a_form, FORM_GROUP *a_group) override
void DoTrap(TrapData &a_data)
~TESObjectREFR() override
virtual NiPoint3 GetLookingAtLocation() const
TESFaction * GetFactionOwner()
virtual bool ShouldSaveAnimationOnUnloading() const
float GetWeightInContainer()
virtual const BSTSmartPointer< BipedAnim > & GetCurrentBiped() const
bool IsActivationBlocked() const
constexpr NiPoint3 GetPosition() const noexcept
Definition: TESObjectREFR.h:401
virtual bool AddWornItem(TESBoundObject *a_item, std::int32_t a_count, bool a_forceEquip, std::uint32_t a_arg4, std::uint32_t a_arg5)
virtual void SetFireNode(NiNode *a_fireNode)
bool HasQuestObject() const
virtual void ResetInventory(bool a_leveledOnly)
virtual bool DetachHavok(NiAVObject *a_obj3D)
static constexpr auto RTTI
Definition: TESObjectREFR.h:112
bool GetDangerous() const override
virtual void MoveHavok(bool a_forceRec)
bool SetDisplayName(const BSFixedString &a_name, bool a_force)
virtual MagicTarget * GetMagicTarget()
virtual void ForceEditorLocation(BGSLocation *a_location)
void PostChangeAnimationManager(const BSTSmartPointer< BShkbAnimationGraph > &a_arg1, const BSTSmartPointer< BShkbAnimationGraph > &a_arg2) override
static bool LookupByHandle(RefHandle a_refHandle, NiPointer< TESObjectREFR > &a_refrOut)
void SetAltered(bool a_set) override
bool PopulateGraphNodesToTarget(BSScrapArray< NiAVObject * > &a_nodes) override
ExtraDataList extraList
Definition: TESObjectREFR.h:455
std::uint16_t GetCalcLevel(bool a_adjustLevel) const
virtual void SetTemplateActorBase(TESActorBase *a_template)
BGSLocation * GetCurrentLocation() const
virtual void DoMoveToHigh()
void InitChildActivates(TESObjectREFR *a_actionRef)
void SetPosition(float a_x, float a_y, float a_z)
bool SetMotionType(MotionType a_motionType, bool a_allowActivate=true)
bool MoveToNode(TESObjectREFR *a_target, const BSFixedString &a_nodeName)
bool ActivateRef(TESObjectREFR *a_activator, uint8_t a_arg2, TESBoundObject *a_object, int32_t a_count, bool a_defaultProcessingOnly)
BSEventNotifyControl ProcessEvent(const BSAnimationGraphEvent *a_event, BSTEventSource< BSAnimationGraphEvent > *a_dispatcher) override
bool IsPointSubmergedMoreThan(const NiPoint3 &a_pos, TESObjectCELL *a_cell, float a_waterLevel) const
Definition: TESPackage.h:248
Definition: TESTopicInfo.h:42
Definition: TESWorldSpace.h:118
Definition: hkVector4.h:9
Definition: hkpCollidable.h:13
CastingSource
Definition: MagicSystem.h:21
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 4 > VTABLE_TESObjectREFR
Definition: Offsets_VTABLE.h:12868
LOCK_LEVEL
Definition: ExtraLock.h:10
FormType
Definition: FormTypes.h:139
constexpr REL::ID RTTI_TESObjectREFR(static_cast< std::uint64_t >(513899))
ITEM_REMOVE_REASON
Definition: TESObjectREFR.h:61
std::uint32_t RefHandle
Definition: BSCoreTypes.h:6
BSEventNotifyControl
Definition: BSTEvent.h:12
basic_zstring< char > zstring
Definition: PCH.h:78
Definition: BGSDecalGroup.h:61
Definition: BSAnimationGraphEvent.h:10
Definition: TESObjectREFR.h:81
std::uint64_t unk40
Definition: TESObjectREFR.h:93
BSTSmallArray< void * > unk00
Definition: TESObjectREFR.h:84
std::uint16_t flags
Definition: TESObjectREFR.h:88
std::uint64_t unk38
Definition: TESObjectREFR.h:92
std::uint64_t unk30
Definition: TESObjectREFR.h:91
std::uint64_t unk60
Definition: TESObjectREFR.h:97
float cachedRadius
Definition: TESObjectREFR.h:87
std::uint32_t pad2C
Definition: TESObjectREFR.h:90
NiPointer< NiAVObject > data3D
Definition: TESObjectREFR.h:98
TESWaterForm * currentWaterType
Definition: TESObjectREFR.h:85
float relevantWaterHeight
Definition: TESObjectREFR.h:86
std::uint64_t unk50
Definition: TESObjectREFR.h:95
std::int16_t underwaterCount
Definition: TESObjectREFR.h:89
void * unk70
Definition: TESObjectREFR.h:99
std::uint64_t unk48
Definition: TESObjectREFR.h:94
std::uint64_t unk58
Definition: TESObjectREFR.h:96
Definition: TESObjectREFR.h:71
TESBoundObject * objectReference
Definition: TESObjectREFR.h:74
NiPoint3 angle
Definition: TESObjectREFR.h:75
NiPoint3 location
Definition: TESObjectREFR.h:76
Definition: ExtraLock.h:21
Definition: TESObjectREFR.h:133
ChangeFlag
Definition: TESObjectREFR.h:135
@ kCellChanged
Definition: TESObjectREFR.h:138
@ kOwnershipExtra
Definition: TESObjectREFR.h:141
@ kBaseObject
Definition: TESObjectREFR.h:142
@ kLockExtra
Definition: TESObjectREFR.h:145
@ kHavokMoved
Definition: TESObjectREFR.h:137
@ kLeveledInventory
Definition: TESObjectREFR.h:151
@ kOpenDefaultState
Definition: TESObjectREFR.h:147
@ kEncZoneExtra
Definition: TESObjectREFR.h:153
@ kInventory
Definition: TESObjectREFR.h:140
@ kAmmoExtra
Definition: TESObjectREFR.h:144
@ kActivatingChildren
Definition: TESObjectREFR.h:150
@ kPromoted
Definition: TESObjectREFR.h:149
@ kEmpty
Definition: TESObjectREFR.h:146
@ kScale
Definition: TESObjectREFR.h:139
@ kItemExtraData
Definition: TESObjectREFR.h:143
@ kAnimation
Definition: TESObjectREFR.h:152
@ kOpenState
Definition: TESObjectREFR.h:148
@ kMoved
Definition: TESObjectREFR.h:136
@ kCreatedOnlyExtra
Definition: TESObjectREFR.h:154
@ kGameOnlyExtra
Definition: TESObjectREFR.h:155
Definition: TESObjectREFR.h:160
RecordFlag
Definition: TESObjectREFR.h:162
@ kInitiallyDisabled
Definition: TESObjectREFR.h:177
@ kLODRespectsEnableState
Definition: TESObjectREFR.h:171
@ kGround
Definition: TESObjectREFR.h:198
@ kIgnoreFriendlyHits
Definition: TESObjectREFR.h:189
@ kReflectedByAutoWater
Definition: TESObjectREFR.h:194
@ kTurnOffFire
Definition: TESObjectREFR.h:168
@ kCollisionGeometry_BoundingBox
Definition: TESObjectREFR.h:193
@ kPersistent
Definition: TESObjectREFR.h:176
@ kNoAIAcquire
Definition: TESObjectREFR.h:191
@ kStartUnconscious
Definition: TESObjectREFR.h:180
@ kStartsDead
Definition: TESObjectREFR.h:172
@ kMotionBlur
Definition: TESObjectREFR.h:175
@ kHiddenFromLocalMap
Definition: TESObjectREFR.h:167
@ kIgnored
Definition: TESObjectREFR.h:178
@ kIsFullLOD
Definition: TESObjectREFR.h:184
@ kInaccessible
Definition: TESObjectREFR.h:170
@ kCollisionsDisabled
Definition: TESObjectREFR.h:164
@ kDeleted
Definition: TESObjectREFR.h:166
@ kDontHavokSettle
Definition: TESObjectREFR.h:196
@ kIsGroundPiece
Definition: TESObjectREFR.h:163
@ kNeverFades
Definition: TESObjectREFR.h:185
@ kSkyMarker
Definition: TESObjectREFR.h:181
@ kDoesntLightLandscape
Definition: TESObjectREFR.h:187
@ kRespawns
Definition: TESObjectREFR.h:199
@ kMultibound
Definition: TESObjectREFR.h:201
@ kCollisionGeometry_Filter
Definition: TESObjectREFR.h:192
@ kHarvested
Definition: TESObjectREFR.h:182
@ kDoesntLightWater
Definition: TESObjectREFR.h:173