mirror of https://github.com/AxioDL/metaforce.git
commit
e7de5311c2
|
@ -87,7 +87,7 @@ s32 CPASAnimState::PickRandomAnimation(CRandom16& rand) const {
|
|||
|
||||
std::pair<float, s32> CPASAnimState::FindBestAnimation(const rstl::reserved_vector<CPASAnimParm, 8>& parms,
|
||||
CRandom16& rand, s32 ignoreAnim) const {
|
||||
const_cast<std::vector<s32>*>(&x24_selectionCache)->clear();
|
||||
x24_selectionCache.clear();
|
||||
float weight = -1.f;
|
||||
|
||||
for (const CPASAnimInfo& info : x14_anims) {
|
||||
|
@ -130,11 +130,11 @@ std::pair<float, s32> CPASAnimState::FindBestAnimation(const rstl::reserved_vect
|
|||
calcWeight = 1.0f;
|
||||
|
||||
if (calcWeight > weight) {
|
||||
const_cast<std::vector<s32>*>(&x24_selectionCache)->clear();
|
||||
const_cast<std::vector<s32>*>(&x24_selectionCache)->push_back(info.GetAnimId());
|
||||
x24_selectionCache.clear();
|
||||
x24_selectionCache.push_back(info.GetAnimId());
|
||||
weight = calcWeight;
|
||||
} else if (weight == calcWeight) {
|
||||
const_cast<std::vector<s32>*>(&x24_selectionCache)->push_back(info.GetAnimId());
|
||||
x24_selectionCache.push_back(info.GetAnimId());
|
||||
weight = calcWeight;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,11 +14,11 @@ class CPASAnimState {
|
|||
s32 x0_id;
|
||||
std::vector<CPASParmInfo> x4_parms;
|
||||
std::vector<CPASAnimInfo> x14_anims;
|
||||
std::vector<s32> x24_selectionCache;
|
||||
mutable std::vector<s32> x24_selectionCache;
|
||||
|
||||
public:
|
||||
CPASAnimState(CInputStream& in);
|
||||
CPASAnimState(int stateId);
|
||||
explicit CPASAnimState(CInputStream& in);
|
||||
explicit CPASAnimState(int stateId);
|
||||
s32 GetStateId() const { return x0_id; }
|
||||
s32 GetNumAnims() const { return x14_anims.size(); }
|
||||
CPASAnimParm GetAnimParmData(s32, u32) const;
|
||||
|
|
|
@ -18,7 +18,7 @@ class CPASDatabase {
|
|||
void SetDefaultState(s32 state) { x10_defaultState = state; }
|
||||
|
||||
public:
|
||||
CPASDatabase(CInputStream& in);
|
||||
explicit CPASDatabase(CInputStream& in);
|
||||
|
||||
std::pair<float, s32> FindBestAnimation(const CPASAnimParmData&, s32) const;
|
||||
std::pair<float, s32> FindBestAnimation(const CPASAnimParmData&, CRandom16&, s32) const;
|
||||
|
|
|
@ -9,6 +9,7 @@ class CPASParmInfo {
|
|||
public:
|
||||
enum class EWeightFunction { ExactMatch, PercentError, AngularPercent, NoWeight };
|
||||
|
||||
private:
|
||||
CPASAnimParm::EParmType x0_type;
|
||||
EWeightFunction x4_weightFunction;
|
||||
float x8_weight;
|
||||
|
@ -16,7 +17,7 @@ public:
|
|||
CPASAnimParm::UParmValue x10_max;
|
||||
|
||||
public:
|
||||
CPASParmInfo(CInputStream& in);
|
||||
explicit CPASParmInfo(CInputStream& in);
|
||||
CPASAnimParm::EParmType GetParameterType() const { return x0_type; }
|
||||
EWeightFunction GetWeightFunction() const { return x4_weightFunction; }
|
||||
float GetParameterWeight() const { return x8_weight; }
|
||||
|
|
Loading…
Reference in New Issue