Fix AttributeInstance class

This commit is contained in:
Qiuzhizhe 2023-02-27 22:50:09 -08:00
parent dafaa3d8a5
commit 125df0725f
2 changed files with 48 additions and 7 deletions

View File

@ -2,27 +2,60 @@
#pragma once #pragma once
#define AUTO_GENERATED #define AUTO_GENERATED
#include "../Global.h" #include "../Global.h"
#include "AttributeInstanceDelegate.hpp"
#define BEFORE_EXTRA #define BEFORE_EXTRA
class BaseAttributeMap;
class Attribute;
#undef BEFORE_EXTRA #undef BEFORE_EXTRA
class AttributeInstance { class AttributeInstance {
public:
BaseAttributeMap *mAttributeMap;
const Attribute *mAttribute;
std::vector<AttributeModifier> mModifierList;
std::vector<TemporalAttributeBuff> mTemporalBuffs;
std::vector<AttributeInstanceHandle> mListeners;
std::shared_ptr<AttributeInstanceDelegate> mDelegate;
union{
float mDefaultValues[3];
struct
{
float mDefaultMinValue;
float mDefaultMaxValue;
float mDefaultValue;
} __s1;
} _anon_0;
union{
float mCurrentValues[3];
struct
{
float mCurrentMinValue;
float mCurrentMaxValue;
float mCurrentValue;
} __s1;
} _anon_1;
#define AFTER_EXTRA #define AFTER_EXTRA
public: public:
inline float getMinValue()const{ inline float getMinValue()const{
return dAccess<float>(this, 31); // return dAccess<float>(this, 124);
return _anon_1.__s1.mCurrentMinValue;
}; };
inline float getMaxValue()const{ inline float getMaxValue()const{
return dAccess<float>(this, 32); // return dAccess<float>(this, 128);
return _anon_1.__s1.mCurrentMaxValue;
}; };
inline float getCurrentValue()const{ inline float getCurrentValue()const{
return dAccess<float>(this, 33); // return dAccess<float>(this, 132);
return _anon_1.__s1.mCurrentValue;
}; };
//maybe error //maybe error
inline void setCurrentValue(float value)const{ inline void setCurrentValue(float value){
dAccess<float, 33>((void*)this)= value; //dAccess<float, 33>((void*)this)= value;
this->_anon_1.__s1.mCurrentValue = value;
//AttributeInstance::resetToMaxValue Line11~Line28 //AttributeInstance::resetToMaxValue Line11~Line28
// if (this + 3) // if (this + 3)
// { // {
@ -42,7 +75,8 @@ public:
// } // }
}; };
inline float getDefaultValue(int a)const{ inline float getDefaultValue(int a)const{
return dAccess<float>(this, 30); // return dAccess<float>(this, 120);
return _anon_0.__s1.mDefaultValue;
}; };
#undef AFTER_EXTRA #undef AFTER_EXTRA

View File

@ -4,13 +4,20 @@
#include "../Global.h" #include "../Global.h"
#define BEFORE_EXTRA #define BEFORE_EXTRA
class BaseAttributeMap;
struct AttributeInstanceHandle
{
unsigned int mAttributeID;
BaseAttributeMap *mAttributeMap;
};
#undef BEFORE_EXTRA #undef BEFORE_EXTRA
class AttributeInstanceDelegate { class AttributeInstanceDelegate {
#define AFTER_EXTRA #define AFTER_EXTRA
public:
AttributeInstanceHandle mAttributeHandle;
#undef AFTER_EXTRA #undef AFTER_EXTRA
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_ATTRIBUTEINSTANCEDELEGATE #ifndef DISABLE_CONSTRUCTOR_PREVENTION_ATTRIBUTEINSTANCEDELEGATE
public: public: