18#ifndef TRINITYCORE_WOWCS_ENTITY_DEFINITIONS_H
19#define TRINITYCORE_WOWCS_ENTITY_DEFINITIONS_H
114 std::array<EntityFragment, 8>
Ids =
122 static constexpr std::size_t
N = 4;
124 std::array<EntityFragment, N>
Ids =
129 std::array<void const*, N>
Data;
144 std::span<EntityFragment const>
GetIds()
const {
return std::span(
Ids.begin(),
Count); }
156 return std::addressof(*fragmentData);
159template <
typename FragmentData>
164 static_cast<FragmentData const*
>(rawFragmentData)->WriteCreate(
flags, data, target,
reinterpret_cast<typename FragmentData::OwnerObject const*
>(baseEntity));
169 static_cast<FragmentData const*
>(rawFragmentData)->WriteUpdate(
flags, data, target,
reinterpret_cast<typename FragmentData::OwnerObject const*
>(baseEntity));
174 return static_cast<FragmentData const*
>(rawFragmentData)->GetChangesMask().IsAnySet();
179 const_cast<FragmentData*
>(
static_cast<FragmentData const*
>(rawFragmentData))->ClearChangesMask();
193 std::array<EntityFragmentIsChangedFn, N>
IsChanged = { };
200 template <
typename SerializationTraits>
204 &SerializationTraits::IsChanged, &SerializationTraits::ClearChanged);
@ FJamHousingCornerstone_C
@ PlayerInitiativeComponent_C
@ Tag_HousingDecorProxyGameObject
@ FHousingRoomComponentMesh_C
@ FNeighborhoodMirrorData_C
@ Tag_AzeriteEmpoweredItem
@ FMirroredPositionData_C
@ PlayerHouseInfoComponent_C
bool(*)(void const *rawFragmentData) EntityFragmentIsChangedFn
void const * GetRawFragmentData(T const &fragmentData)
EntityFragmentInfos const * EntityFragmentInfo
constexpr bool IsUpdateableFragment(EntityFragment frag)
void(*)(void const *rawFragmentData) EntityFragmentClearChangedFn
void(*)(void const *rawFragmentData, UF::UpdateFieldFlag flags, ByteBuffer &data, Player const *target, BaseEntity const *baseEntity) EntityFragmentSerializeFn
constexpr bool IsIndirectFragment(EntityFragment frag)
EntityFragmentSerializationType
static constexpr std::size_t N
std::array< EntityFragmentSerializeFn, N > SerializeUpdate
std::array< EntityFragmentIsChangedFn, N > IsChanged
std::array< EntityFragmentClearChangedFn, N > ClearChanged
static void Register(EntityFragment fragment, SerializationTraits)
std::array< EntityFragmentSerializeFn, N > SerializeCreate
static void Register(EntityFragment fragment, EntityFragmentSerializeFn serializeCreate, EntityFragmentSerializeFn serializeUpdate, EntityFragmentIsChangedFn isChanged, EntityFragmentClearChangedFn clearChanged)
static constexpr std::size_t N
std::array< EntityFragment, N > Ids
std::array< uint8, N > Masks
std::array< void const *, N > Data
std::span< EntityFragment const > GetIds() const
uint8 ContentsChangedMask
UpdateableFragments Updateable
std::array< EntityFragment, 8 > Ids
void Add(EntityFragment fragment, bool update, void const *data=nullptr)
static bool IsChanged(void const *rawFragmentData)
static void BuildUpdate(void const *rawFragmentData, UF::UpdateFieldFlag flags, ByteBuffer &data, Player const *target, BaseEntity const *baseEntity)
static void ClearChanged(void const *rawFragmentData)
static void BuildCreate(void const *rawFragmentData, UF::UpdateFieldFlag flags, ByteBuffer &data, Player const *target, BaseEntity const *baseEntity)