/*==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 plPickNodeBase_h_inc #define plPickNodeBase_h_inc #include "max.h" #include class IParamBlock2; class plMaxNode; class plComponentBase; class plPickNodeBase { protected: IParamBlock2* fPB; int fNodeParamID; static BOOL CALLBACK IDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); void IInitDlg(HWND hDlg); void IGetNodesRecur(plMaxNode* node, HWND hList, plMaxNode* curSelNode); void ISetNodeValue(plMaxNode* node); void IGetSelNode(HWND hList); virtual bool ICheckNode(plMaxNode* node)=0; virtual void IAddUserType(HWND hList) {} virtual void ISetUserType(plMaxNode* node, const char* userType) {} public: plPickNodeBase(IParamBlock2* pb, int nodeParamID); virtual ~plPickNodeBase() {} bool DoPick(); }; class plPickNode : public plPickNodeBase { protected: std::vector fCIDs; bool fCanConvertToType; bool ICanConvertToType(Object *obj); virtual bool ICheckNode(plMaxNode* node); public: plPickNode(IParamBlock2* pb, int nodeParamID); }; // // Pick one of the nodes a material is attached to // class plPickMtlNode : public plPickNodeBase { protected: Mtl* fMtl; bool ICheckNode(plMaxNode* node); public: plPickMtlNode(IParamBlock2* pb, int nodeParamID, Mtl* mtl); }; // // Pick one of the nodes a component is attached to // class plPickCompNode : public plPickNodeBase { protected: plComponentBase* fComp; bool ICheckNode(plMaxNode* node); public: plPickCompNode(IParamBlock2* pb, int nodeParamID, plComponentBase* comp); }; #endif // plPickNodeBase_h_inc