Files

40 lines
1.2 KiB
C++

#include "gamelib/animstack/animator_proxy.h"
// These allocator calls are owned by the idAnimStack/md6Allocator recovery.
// Keeping the boundary explicit allows the complete Proxy TU to compile now
// without inventing an allocator layout or a temporary allocation policy.
idMD6Branch* GameLib_AllocMD6Branch(idAnimStack* stack);
void GameLib_FreeMD6Branch(idAnimStack* stack, idMD6Branch* branch);
idAnimator_Proxy::idAnimator_Proxy()
: idAnimator_Base()
, mergeBranch(nullptr) {
}
idAnimator_Proxy::~idAnimator_Proxy() {
mergeBranch = nullptr;
}
void idAnimator_Proxy::SetTree(idMD6Node* const tree) {
if (mergeBranch != nullptr) {
mergeBranch->right = tree;
}
}
bool idAnimator_Proxy::InternalInit(
const idAnimatorParms_Base& parameters) {
mergeBranch = GameLib_AllocMD6Branch(parameters.animStack);
return true;
}
void idAnimator_Proxy::InternalShutdown(idAnimStack* const stack) {
if (stack != nullptr && mergeBranch != nullptr) {
GameLib_FreeMD6Branch(stack, mergeBranch);
mergeBranch = nullptr;
}
}
bool idAnimator_Proxy::InternalIsContributing() const {
return mergeBranch != nullptr && mergeBranch->right != nullptr;
}