/*==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 . 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==*/ #ifndef PL_COMPONENT_TOOLS_H #define PL_COMPONENT_TOOLS_H #include "hsTypes.h" #include "hsTemplates.h" #include "../pnKeyedObject/plKey.h" class INode; class plModifier; class plKey; class plLocation; class plResponderModifier; class plComponentBase; class plMaxNodeBase; typedef plKey (*PAddModFunc) (plMaxNodeBase *, plModifier *); typedef plKey (*PGetNewKeyFunc) (const char*, plModifier*, plLocation); typedef void (*PSetActivatorKeyFunc) (plMaxNodeBase*, plMaxNodeBase*, plMaxNodeBase*, plResponderModifier*); typedef plKey (*PGetAnimModKeyFunc) (plComponentBase*, plMaxNodeBase*); typedef const char* (*PGetAnimNameFunc) (plComponentBase*); typedef int (*PGetMaterialAnimModKeyFunc) (Mtl* mtl, plMaxNodeBase* node, const char *segName, hsTArray& keys); typedef int (*PGetSoundNameAndIndex) (plComponentBase*, plMaxNodeBase* node, const char*& name); // // A "toolbox" for external components to do their conversion with. The idea // is to give components the functions they need without pulling in every source // file. // class plComponentTools { protected: PAddModFunc fAddModFunc; PGetNewKeyFunc fNewKey; PSetActivatorKeyFunc fActivator; PGetAnimModKeyFunc fAnimKey; // PGetAnimModKeyFunc fAnimLightKey; PGetAnimNameFunc fAnimName; PGetMaterialAnimModKeyFunc fMatMod; PGetSoundNameAndIndex fSndNameAndIdx; plComponentTools() {} public: plComponentTools(PAddModFunc addMod, PGetNewKeyFunc NewKey, PSetActivatorKeyFunc activator, PGetAnimModKeyFunc animKey, // PGetAnimModKeyFunc animLightKey, PGetAnimNameFunc animName, PGetMaterialAnimModKeyFunc matMod, PGetSoundNameAndIndex sndNameAndIdx) : fAddModFunc(addMod), fNewKey(NewKey), fActivator(activator), fAnimKey(animKey), // fAnimLightKey(animLightKey), fAnimName(animName), fMatMod(matMod), fSndNameAndIdx(sndNameAndIdx) {} plKey AddModifier(plMaxNodeBase *node, plModifier *mod); plKey GetNewKey(const char *name, plModifier *mod, plLocation loc); void SetActivatorKey(plMaxNodeBase *activatorNode, plMaxNodeBase *responderNode, plMaxNodeBase *convertNode, plResponderModifier *responderLogic); const char *GetAnimCompAnimName(plComponentBase *comp); plKey GetAnimCompModKey(plComponentBase *comp, plMaxNodeBase *node); // plKey GetAnimCompLightModKey(plComponentBase *comp, plMaxNodeBase *node); int GetMaterialAnimModKey(Mtl* mtl, plMaxNodeBase* node, const char *segName, hsTArray& keys); int GetSoundNameAndIndex(plComponentBase* comp, plMaxNodeBase* node, const char*& name); }; #endif //PL_COMPONENT_TOOLS_H