2022-10-09 01:13:17 -04:00
|
|
|
#ifndef _CPASDATABASE
|
|
|
|
|
#define _CPASDATABASE
|
2022-08-14 14:38:41 -04:00
|
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
|
|
2022-10-07 02:10:07 +03:00
|
|
|
#include "Kyoto/Animation/CPASAnimState.hpp"
|
2022-08-14 14:38:41 -04:00
|
|
|
|
2022-10-07 00:07:41 +03:00
|
|
|
#include "rstl/pair.hpp"
|
2022-10-09 01:13:17 -04:00
|
|
|
#include "rstl/vector.hpp"
|
2022-10-07 00:07:41 +03:00
|
|
|
|
|
|
|
|
class CPASAnimParmData;
|
|
|
|
|
class CRandom16;
|
2022-08-14 14:38:41 -04:00
|
|
|
|
|
|
|
|
class CPASDatabase {
|
2022-10-07 00:07:41 +03:00
|
|
|
|
|
|
|
|
public:
|
2022-10-28 13:49:33 +03:00
|
|
|
bool HasState(int id) const;
|
2022-10-09 01:03:50 +03:00
|
|
|
const CPASAnimState* GetAnimState(int) const;
|
2022-10-28 15:33:10 +03:00
|
|
|
|
|
|
|
|
rstl::pair< float, int > FindBestAnimation(const CPASAnimParmData& data, int ignoreAnim) const;
|
2022-10-09 01:13:17 -04:00
|
|
|
rstl::pair< float, int > FindBestAnimation(const CPASAnimParmData&, CRandom16&, int) const;
|
2022-10-25 18:43:42 +03:00
|
|
|
|
2022-10-28 15:33:10 +03:00
|
|
|
size_t GetNumAnimStates() const; // { return x0_states.size(); }
|
2022-10-25 18:43:42 +03:00
|
|
|
const CPASAnimState* GetAnimStateByIndex(int index) const; /* {
|
|
|
|
|
if (index >= x0_states.size()) {
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &x0_states[index];
|
|
|
|
|
}*/
|
|
|
|
|
|
2023-02-05 11:12:46 -08:00
|
|
|
int GetDefaultState() const { return x10_defaultState; }
|
2022-10-25 18:43:42 +03:00
|
|
|
private:
|
|
|
|
|
rstl::vector< CPASAnimState > x0_states;
|
|
|
|
|
int x10_defaultState;
|
2022-08-14 14:38:41 -04:00
|
|
|
};
|
|
|
|
|
CHECK_SIZEOF(CPASDatabase, 0x14)
|
|
|
|
|
|
2022-10-09 01:13:17 -04:00
|
|
|
#endif // _CPASDATABASE
|