1#include "KartObjectManager.hh"
3#include "game/kart/KartCollide.hh"
4#include "game/kart/KartParamFileManager.hh"
5#include "game/system/RaceConfig.hh"
7#include <abstract/g3d/ResFile.hh>
12void KartObjectManager::init() {
13 for (
size_t i = 0; i < m_count; ++i) {
14 m_objects[i]->initImpl();
20void KartObjectManager::calc() {
21 for (
size_t i = 0; i < m_count; ++i) {
22 KartObject *
object = m_objects[i];
23 object->collide()->setTangentOff(EGG::Vector3f::zero);
24 object->collide()->setMovement(EGG::Vector3f::zero);
27 for (
size_t i = 0; i < m_count; ++i) {
28 KartObject *
object = m_objects[i];
35KartObjectManager *KartObjectManager::CreateInstance() {
37 s_instance =
new KartObjectManager;
42void KartObjectManager::DestroyInstance() {
44 auto *instance = s_instance;
50KartObjectManager::KartObjectManager() {
51 const auto &raceScenario = System::RaceConfig::Instance()->raceScenario();
52 m_count = raceScenario.playerCount;
53 m_objects =
new KartObject *[m_count];
54 KartParamFileManager::CreateInstance();
56 loadScaleAnimations();
58 for (
size_t i = 0; i < m_count; ++i) {
59 const auto &player = raceScenario.players[i];
60 KartObject *
object = KartObject::Create(player.character, player.vehicle, i);
61 object->createModel();
62 m_objects[i] = object;
67KartObjectManager::~KartObjectManager() {
70 WARN(
"KartObjectManager instance not explicitly handled!");
73 KartParamFileManager::DestroyInstance();
75 for (
size_t i = 0; i < m_count; ++i) {
81 delete s_thunderScaleUpAnmChr;
82 delete s_thunderScaleDownAnmChr;
83 delete s_pressScaleUpAnmChr;
88 KartObjectProxy::proxyList().clear();
92void KartObjectManager::loadScaleAnimations() {
93 auto *resMgr = System::ResourceManager::Instance();
94 const void *file = resMgr->getFile(
"driver.brres",
nullptr, System::ArchiveId::Core);
98 auto resAnmChr = Abstract::g3d::ResFile(file).resAnmChr(
"thunder_scale_up");
99 s_thunderScaleUpAnmChr =
new Abstract::g3d::ResAnmChr(resAnmChr);
100 resAnmChr = Abstract::g3d::ResFile(file).resAnmChr(
"thunder_scale_down");
101 s_thunderScaleDownAnmChr =
new Abstract::g3d::ResAnmChr(resAnmChr);
102 resAnmChr = Abstract::g3d::ResFile(file).resAnmChr(
"press_scale_up");
103 s_pressScaleUpAnmChr =
new Abstract::g3d::ResAnmChr(resAnmChr);
106Abstract::g3d::ResAnmChr *KartObjectManager::s_thunderScaleUpAnmChr =
nullptr;
107Abstract::g3d::ResAnmChr *KartObjectManager::s_thunderScaleDownAnmChr =
nullptr;
108Abstract::g3d::ResAnmChr *KartObjectManager::s_pressScaleUpAnmChr =
nullptr;
109KartObjectManager *KartObjectManager::s_instance =
nullptr;
void prepare()
Sets the initial position and rotation of the kart based off the current track.
Pertains to kart-related functionality.