40 lines
1.2 KiB
C++
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;
|
|
}
|