1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-21 22:39:41 +00:00

Fix AnimState initialization

Remove redundant user defined constructor and destructor, make sure all members
are properly initialized including mTime (new float does not initialize the
float).
This commit is contained in:
elsid 2024-04-27 14:44:44 +02:00
parent 55642650ea
commit 9d2f132aa7
No known key found for this signature in database
GPG key ID: 4DE04C198CBA7625

View file

@ -142,45 +142,28 @@ namespace MWRender
struct AnimState struct AnimState
{ {
std::shared_ptr<AnimSource> mSource; std::shared_ptr<AnimSource> mSource;
float mStartTime; float mStartTime = 0;
float mLoopStartTime; float mLoopStartTime = 0;
float mLoopStopTime; float mLoopStopTime = 0;
float mStopTime; float mStopTime = 0;
typedef std::shared_ptr<float> TimePtr; std::shared_ptr<float> mTime = std::make_shared<float>(0);
TimePtr mTime; float mSpeedMult = 1;
float mSpeedMult;
bool mPlaying; bool mPlaying = false;
bool mLoopingEnabled; bool mLoopingEnabled = true;
uint32_t mLoopCount; uint32_t mLoopCount = 0;
AnimPriority mPriority; AnimPriority mPriority{ 0 };
int mBlendMask; int mBlendMask = 0;
bool mAutoDisable; bool mAutoDisable = true;
AnimState()
: mStartTime(0.0f)
, mLoopStartTime(0.0f)
, mLoopStopTime(0.0f)
, mStopTime(0.0f)
, mTime(new float)
, mSpeedMult(1.0f)
, mPlaying(false)
, mLoopingEnabled(true)
, mLoopCount(0)
, mPriority(0)
, mBlendMask(0)
, mAutoDisable(true)
{
}
~AnimState() = default;
float getTime() const { return *mTime; } float getTime() const { return *mTime; }
void setTime(float time) { *mTime = time; } void setTime(float time) { *mTime = time; }
bool shouldLoop() const { return getTime() >= mLoopStopTime && mLoopingEnabled && mLoopCount > 0; } bool shouldLoop() const { return getTime() >= mLoopStopTime && mLoopingEnabled && mLoopCount > 0; }
}; };
typedef std::map<std::string, AnimState, std::less<>> AnimStateMap; typedef std::map<std::string, AnimState, std::less<>> AnimStateMap;
AnimStateMap mStates; AnimStateMap mStates;