1 #ifndef CSM_WOLRD_ACTORADAPTER_H
2 #define CSM_WOLRD_ACTORADAPTER_H
6 #include <unordered_set>
35 using ActorPartList = std::map<ESM::PartReferenceType, std::pair<std::string, int>>;
37 using RacePartList = std::array<std::string, ESM::BodyPart::MP_Count>;
47 const std::string&
getId()
const;
66 void reset_data(
const std::string& raceId,
bool isBeast=
false);
84 const std::string&
getId()
const;
101 void reset_data(
const std::string& actorId,
const std::string& skeleton=
"",
bool isCreature=
false,
bool female=
true,
RaceDataPtr raceData=
nullptr);
MeshPart
Definition: loadbody.hpp:18
RacePartList mMaleParts
Definition: actoradapter.hpp:73
std::string mId
Definition: actoradapter.hpp:70
std::map< ESM::PartReferenceType, std::pair< std::string, int >> ActorPartList
A list indexed by ESM::PartReferenceType.
Definition: actoradapter.hpp:35
void setupCreature(const std::string &id, ActorDataPtr data)
Definition: actoradapter.cpp:632
std::string mSkeletonOverride
Definition: actoradapter.hpp:107
PartReferenceType
Definition: loadarmo.hpp:13
bool mCreature
Definition: actoradapter.hpp:105
std::shared_ptr< RaceData > RaceDataPtr
Definition: actoradapter.hpp:76
Contains base race data shared between actors.
Definition: actoradapter.hpp:43
const std::string & getFemalePart(ESM::PartReferenceType index) const
Retrieves the associated body part.
Definition: actoradapter.cpp:39
static const struct @8 signals[]
void updateDirty()
Definition: actoradapter.cpp:655
void setupNpc(const std::string &id, ActorDataPtr data)
Definition: actoradapter.cpp:508
void markDirtyDependency(const std::string &dependency)
Definition: actoradapter.cpp:641
Misc::WeakCache< std::string, ActorData > mCachedActors
Definition: actoradapter.hpp:166
const std::string & getId() const
Retrieves the id of the actor represented.
Definition: actoradapter.cpp:86
QModelIndex getHighestIndex(QModelIndex) const
Definition: actoradapter.cpp:397
void handleRacesInserted(const QModelIndex &, int, int)
Definition: actoradapter.cpp:274
std::array< std::string, ESM::BodyPart::MP_Count > RacePartList
A list indexed by ESM::BodyPart::MeshPart.
Definition: actoradapter.hpp:37
void handleBodyPartsRemoved(const QModelIndex &, int, int)
Definition: actoradapter.cpp:391
const std::string & getMalePart(ESM::PartReferenceType index) const
Retrieves the associated body part.
Definition: actoradapter.cpp:44
void handleReferenceableChanged(const QModelIndex &, const QModelIndex &)
Definition: actoradapter.cpp:235
void reset_data(const std::string &actorId, const std::string &skeleton="", bool isCreature=false, bool female=true, RaceDataPtr raceData=nullptr)
Clears race, parts, and dependencies.
Definition: actoradapter.cpp:156
void handleReferenceablesAboutToBeRemoved(const QModelIndex &, int, int)
Definition: actoradapter.cpp:255
bool hasDependency(const std::string &id) const
Checks if the actor has a data dependency.
Definition: actoradapter.cpp:133
bool mIsBeast
Definition: actoradapter.hpp:71
void reset_data(const std::string &raceId, bool isBeast=false)
Clears parts and dependencies.
Definition: actoradapter.cpp:71
bool isFemale() const
Checks if the actor is female.
Definition: actoradapter.cpp:96
Definition: actoradapter.hpp:80
void handleBodyPartsAboutToBeRemoved(const QModelIndex &, int, int)
Definition: actoradapter.cpp:378
const std::string getPart(ESM::PartReferenceType index) const
Retrieves the associated actor part.
Definition: actoradapter.cpp:113
bool is1stPersonPart(const std::string &id) const
Definition: actoradapter.cpp:404
IdCollection< ESM::Race > & mRaces
Definition: actoradapter.hpp:163
std::string getSkeleton() const
Returns the skeleton the actor should use for attaching parts to.
Definition: actoradapter.cpp:101
Definition: weakcache.hpp:13
std::shared_ptr< ActorData > ActorDataPtr
Definition: actoradapter.hpp:112
bool handles(ESM::PartReferenceType type) const
Definition: refidcollection.hpp:40
void setPart(ESM::PartReferenceType partIndex, const std::string &partId, int priority)
Sets the actor part used and marks a dependency.
Definition: actoradapter.cpp:138
ActorAdapter(Data &data)
Definition: actoradapter.cpp:172
RacePartList mFemaleParts
Definition: actoradapter.hpp:72
StringSet mDependencies
Definition: actoradapter.hpp:110
bool isCreature() const
Checks if the actor is a creature.
Definition: actoradapter.cpp:91
std::unordered_set< std::string > StringSet
Tracks unique strings.
Definition: actoradapter.hpp:39
Misc::WeakCache< std::string, RaceData > mCachedRaces
Definition: actoradapter.hpp:167
StringSet mDirtyRaces
Definition: actoradapter.hpp:170
void handleReferenceablesRemoved(const QModelIndex &, int, int)
Definition: actoradapter.cpp:268
void handleRacesAboutToBeRemoved(const QModelIndex &, int, int)
Definition: actoradapter.cpp:309
std::string mId
Definition: actoradapter.hpp:104
bool hasDependency(const std::string &id) const
Checks if the race has a data dependency.
Definition: actoradapter.cpp:49
void handleBodyPartsInserted(const QModelIndex &, int, int)
Definition: actoradapter.cpp:328
void setFemalePart(ESM::BodyPart::MeshPart partIndex, const std::string &partId)
Sets the associated part if it's empty and marks a dependency.
Definition: actoradapter.cpp:54
void handleReferenceablesInserted(const QModelIndex &, int, int)
Definition: actoradapter.cpp:219
StringSet mDependencies
Definition: actoradapter.hpp:74
void addOtherDependency(const std::string &id)
Marks an additional dependency for the actor.
Definition: actoradapter.cpp:151
void setupActor(const std::string &id, ActorDataPtr data)
Definition: actoradapter.cpp:422
void setMalePart(ESM::BodyPart::MeshPart partIndex, const std::string &partId)
Sets the associated part if it's empty and marks a dependency.
Definition: actoradapter.cpp:60
void actorChanged(const std::string &refId)
void handleBodyPartChanged(const QModelIndex &, const QModelIndex &)
Definition: actoradapter.cpp:351
IdCollection< ESM::BodyPart > & mBodyParts
Definition: actoradapter.hpp:164
StringSet mDirtyActors
Definition: actoradapter.hpp:169
Definition: actoradapter.hpp:29
const std::string & getId() const
Retrieves the id of the race represented.
Definition: actoradapter.cpp:14
void addNpcItem(const std::string &itemId, ActorDataPtr data)
Definition: actoradapter.cpp:530
RefIdCollection & mReferenceables
Definition: actoradapter.hpp:162
ActorDataPtr getActorData(const std::string &refId)
Obtains the shared data for a given actor.
Definition: actoradapter.cpp:203
RaceDataPtr getRaceData(const std::string &raceId)
Definition: actoradapter.cpp:409
void setupRace(const std::string &id, RaceDataPtr data)
Definition: actoradapter.cpp:464
bool handlesPart(ESM::PartReferenceType type) const
Checks if a part could exist for the given type.
Definition: actoradapter.cpp:24
void handleRacesRemoved(const QModelIndex &, int, int)
Definition: actoradapter.cpp:322
void addOtherDependency(const std::string &id)
Marks an additional dependency.
Definition: actoradapter.cpp:66
void handleRaceChanged(const QModelIndex &, const QModelIndex &)
Definition: actoradapter.cpp:290
bool mFemale
Definition: actoradapter.hpp:106
bool isBeast() const
Checks if it's a beast race.
Definition: actoradapter.cpp:19
ActorAdapter & operator=(const ActorAdapter &)=delete
ActorPartList mParts
Definition: actoradapter.hpp:109
RaceDataPtr mRaceData
Definition: actoradapter.hpp:108