You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
2.9 KiB

/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
// singular
#include "plAvTaskBrain.h"
// local
#include "plArmatureMod.h"
#include "plAvBrain.h"
// other
#include "plPipeline/plDebugText.h"
/////////////////////////////////////////////////////////////////////////////////////////
//
// PLAVTASKBRAIN
//
/////////////////////////////////////////////////////////////////////////////////////////
// CTOR default
plAvTaskBrain::plAvTaskBrain()
: fBrain(nil)
{
}
// CTOR brain
plAvTaskBrain::plAvTaskBrain(plArmatureBrain *brain)
: fBrain(brain)
{
}
plAvTaskBrain::~plAvTaskBrain()
{
delete fBrain;
}
// Start ------------------------------------------------------------------------------------------
// ------
hsBool plAvTaskBrain::Start(plArmatureMod *avatar, plArmatureBrain *brain, double time, hsScalar elapsed)
{
if(fBrain)
avatar->PushBrain(fBrain);
else
avatar->PopBrain();
fBrain = nil; // We've passed it on the the avatar, set our pointer to nil so we don't destroy it
return true;
}
void plAvTaskBrain::Finish(plArmatureMod *avatar, plArmatureBrain *brain, double time, hsScalar elapsed)
{
}
// DumpDebug ------------------------------------------------------------------------------------------------------
// ----------
void plAvTaskBrain::DumpDebug(const char *name, int &x, int&y, int lineHeight, char *strBuf, plDebugText &debugTxt)
{
if(fBrain)
{
debugTxt.DrawString(x, y, "Brain task -- Push New Brain.");
} else {
debugTxt.DrawString(x, y, "Brain task -- Pop Current Brain.");
}
y += lineHeight;
}
// GetBrain ------------------------
// ---------
plArmatureBrain *plAvTaskBrain::GetBrain()
{
return fBrain;
}
// Read ------------------------------------------
// -----
void plAvTaskBrain::Read(hsStream *stream, hsResMgr *mgr)
{
plAvTask::Read(stream, mgr);
fBrain = plArmatureBrain::ConvertNoRef(mgr->ReadCreatable(stream));
}
// Write ------------------------------------------
// ------
void plAvTaskBrain::Write(hsStream *stream, hsResMgr *mgr)
{
plAvTask::Write(stream, mgr);
mgr->WriteCreatable(stream, fBrain);
}