/*==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==*/ ////////////////////////////////////////////////////////////////////////////// // // // plAnimObjInterface - Pure virtual interface class for providing a // // common gateway for accessing and converting // // animated objects (such as components and materials).// // // ////////////////////////////////////////////////////////////////////////////// #ifndef _plAnimObjInterface_h #define _plAnimObjInterface_h #include "hsTemplates.h" class plAnimObjInterface { public: // If the following function returns true, then it makes sense to restrict // the animation conversion to a specific node (i.e. PickTargetNode() makes // sense) virtual hsBool IsNodeRestricted( void ) = 0; // Allows the user to pick an INode that this animation is applied to // (ex. as a material or as a component) and stores it in the given ID // of the given ParamBlock virtual void PickTargetNode( IParamBlock2 *destPB, ParamID destParamID, ParamID typeID ) = 0; // The following is the node type enum for paramBlocks that store the above node-restricted // info (i.e. the values for the "typeID" param specified above) enum NodeTypes { kUseParamBlockNode, // Use the node stored in the ParamBlock kUseOwnerNode // Ignore the ParamBlock; use the node applied to (i.e. current node in convert process) }; // Given the optional INode to restrict to, return the list of keys to send messages to for conversion virtual hsBool GetKeyList( INode *restrictedNode, hsTArray &outKeys ) = 0; // Return the name of the segment/animation that this interface references. Pass "false" to get the // ENTIRE_ANIMATION_NAME string for entire animations, "true" for nil. virtual const char *GetIfaceSegmentName( hsBool allowNil ) = 0; // This animation would require (depending on the node restriction) a separate material (i.e. material anim) virtual hsBool MightRequireSeparateMaterial( void ) { return false; } }; // Strings for above NodeTypes enums #define kUseParamBlockNodeString "(All)" #define kUseOwnerNodeString "(Applied Node)" #endif // _plAnimObjInterface_h