Files
GTASource/game/Peds/PedIKSettings.cpp
expvintl 419f2e4752 init
2025-02-23 17:40:52 +08:00

116 lines
2.8 KiB
C++

// FILE : PedIKSettings.cpp
// PURPOSE : Load in ped ik info
// CREATED : 10-06-2011
// class header
#include "PedIKSettings.h"
// Framework headers
// Game headers
#include "ik/IkConfig.h"
// Parser headers
#include "PedIKSettings_parser.h"
// rage headers
#include "bank/bank.h"
#include "parser/manager.h"
AI_OPTIMISATIONS()
//////////////////////////////////////////////////////////////////////////
// CPedIKSettingsInfo
//////////////////////////////////////////////////////////////////////////
const bool CPedIKSettingsInfo::IsIKFlagDisabled( CBaseIkManager::eIkSolverType type ) const
{
#if IK_QUAD_LEG_SOLVER_ENABLE
if (type == IKManagerSolverTypes::ikSolverTypeQuadLeg)
{
// Disable ikSolverTypeQuadLeg by default for all peds.
// Solver will be enabled only for specific DLC peds elsewhere.
return true;
}
#endif // IK_QUAD_LEG_SOLVER_ENABLE
#if IK_QUAD_REACT_SOLVER_ENABLE
if (type == IKManagerSolverTypes::ikSolverTypeQuadrupedReact)
{
// Disable ikSolverTypeQuadrupedReact by default for all peds.
// Solver will be enabled only for specific DLC peds elsewhere.
return true;
}
#endif // IK_QUAD_REACT_SOLVER_ENABLE
return m_IKSolversDisabled.BitSet().IsSet(type);
}
//////////////////////////////////////////////////////////////////////////
// CPedIKSettingsInfoManager
//////////////////////////////////////////////////////////////////////////
// Static Manager object
CPedIKSettingsInfoManager CPedIKSettingsInfoManager::m_PedIKSettingsManagerInstance;
CPedIKSettingsInfoManager::CPedIKSettingsInfoManager() :
m_DefaultSet (NULL)
{
}
void CPedIKSettingsInfoManager::Init(const char* pFileName)
{
Load(pFileName);
}
void CPedIKSettingsInfoManager::Shutdown()
{
// Delete
Reset();
}
void CPedIKSettingsInfoManager::Load(const char* pFileName)
{
if(Verifyf(!m_PedIKSettingsManagerInstance.m_aPedIKSettings.GetCount(), "Ped IK info has already been loaded"))
{
// Reset/Delete the existing data before loading
Reset();
// Load
PARSER.LoadObject(pFileName, "meta", m_PedIKSettingsManagerInstance);
}
}
void CPedIKSettingsInfoManager::Reset()
{
m_PedIKSettingsManagerInstance.m_aPedIKSettings.Reset();
}
#if __BANK
void CPedIKSettingsInfoManager::AddWidgets(bkBank& bank)
{
bank.PushGroup("Ped IK Settings");
bank.AddButton("Save", Save);
bank.PushGroup("PedIKSettings");
for (s32 i = 0; i < m_PedIKSettingsManagerInstance.m_aPedIKSettings.GetCount(); i++)
{
bank.PushGroup(m_PedIKSettingsManagerInstance.m_aPedIKSettings[i].GetName() );
PARSER.AddWidgets(bank, &m_PedIKSettingsManagerInstance.m_aPedIKSettings[i] );
bank.PopGroup();
}
bank.PopGroup();
bank.PopGroup();
}
void CPedIKSettingsInfoManager::Save()
{
Verifyf(PARSER.SaveObject("common:/data/pediksettings", "meta", &m_PedIKSettingsManagerInstance, parManager::XML), "Failed to save ped ik settings");
}
#endif // __BANK