1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-21 02:39:43 +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
{
std::shared_ptr<AnimSource> mSource;
float mStartTime;
float mLoopStartTime;
float mLoopStopTime;
float mStopTime;
float mStartTime = 0;
float mLoopStartTime = 0;
float mLoopStopTime = 0;
float mStopTime = 0;
typedef std::shared_ptr<float> TimePtr;
TimePtr mTime;
float mSpeedMult;
std::shared_ptr<float> mTime = std::make_shared<float>(0);
float mSpeedMult = 1;
bool mPlaying;
bool mLoopingEnabled;
uint32_t mLoopCount;
bool mPlaying = false;
bool mLoopingEnabled = true;
uint32_t mLoopCount = 0;
AnimPriority mPriority;
int mBlendMask;
bool mAutoDisable;
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;
AnimPriority mPriority{ 0 };
int mBlendMask = 0;
bool mAutoDisable = true;
float getTime() const { return *mTime; }
void setTime(float time) { *mTime = time; }
bool shouldLoop() const { return getTime() >= mLoopStopTime && mLoopingEnabled && mLoopCount > 0; }
};
typedef std::map<std::string, AnimState, std::less<>> AnimStateMap;
AnimStateMap mStates;